zhoulisky 9 months ago
parent
commit
b6a5084f14

BIN
doc/加计扣除研发支出辅助汇总表P095.xls


+ 51 - 0
kd-service-api/kd-scientific-api/src/main/java/org/sky/scientific/pojo/entity/DeductionCostQt.java

@@ -0,0 +1,51 @@
+
+package org.sky.scientific.pojo.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.sky.core.tenant.mp.TenantEntity;
+
+import java.math.BigDecimal;
+
+/**
+ * 加计扣除研发支出辅助汇总表-其他事项 实体类
+ *
+ * @author Kd
+ * @since 2025-06-19
+ */
+@Data
+@TableName("kd_deduction_cost_qt")
+ @EqualsAndHashCode(callSuper = true)
+public class DeductionCostQt extends TenantEntity {
+
+	@Schema(description = "所属年月,如:2025")
+	private String yearAndMonth;
+
+	@Schema(description = "人员人工费用")
+	private BigDecimal ryrgfyQt = new BigDecimal("0.00");
+
+	@Schema(description = "直接投入费用")
+	private BigDecimal zjtrfyQt = new BigDecimal("0.00");
+
+	@Schema(description = "折旧费用")
+	private BigDecimal zjfyQt = new BigDecimal("0.00");
+
+	@Schema(description = "无形资产摊销")
+	private BigDecimal wxzctxQt = new BigDecimal("0.00");
+
+	@Schema(description = "新产品设计费等")
+	private BigDecimal xcpsjfdQt = new BigDecimal("0.00");
+
+
+	@Schema(description = "其他相关费用合计")
+	private BigDecimal qtxgfyhjQt = new BigDecimal("0.00");
+
+	@Schema(description = "委托境内机构或个人进行研发活动所发生的费用")
+	private BigDecimal wtjnjgfyQt = new BigDecimal("0.00");
+
+	@Schema(description = "委托境外机构进行研发活动所发生的费用")
+	private BigDecimal wtjwjgfyQt = new BigDecimal("0.00");
+
+}

+ 12 - 0
kd-service-api/kd-scientific-api/src/main/java/org/sky/scientific/pojo/vo/DeductionCostDetailVO.java

@@ -1,8 +1,12 @@
 package org.sky.scientific.pojo.vo;
 
+import com.fasterxml.jackson.annotation.JsonIgnore;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
+import org.sky.core.tool.utils.DateUtil;
+import org.springframework.format.annotation.DateTimeFormat;
 
+import java.util.Date;
 import java.util.List;
 
 @Data
@@ -20,6 +24,14 @@ public class DeductionCostDetailVO {
 	@Schema(description = "项目名称")
 	private String xmmc;
 
+	@Schema(description = "项目结束时间", hidden = true)
+	@DateTimeFormat(pattern = DateUtil.PATTERN_DATE)
+	@JsonIgnore
+	private Date xmjssj;
+
+	@Schema(description = "完成情况")
+	private String wcqk;
+
 	@Schema(description = "")
 	private List<DeductionCostItemVO> costList;
 

+ 225 - 93
kd-service-api/kd-scientific-api/src/main/java/org/sky/scientific/pojo/vo/DeductionCostSummary.java

@@ -3,102 +3,234 @@ package org.sky.scientific.pojo.vo;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 
+import java.math.BigDecimal;
+import java.util.List;
+
 
 @Data
 @Schema(description = "研发费用辅助账汇总表")
 public class DeductionCostSummary {
 
-	@Schema(description = "项目id")
-	private Long xmId;
-
-	@Schema(description = "项目编号")
-	private String xmbh;
-
-	@Schema(description = "项目名称")
-	private String xmmc;
-
-	@Schema(description = "1、人员人工费用")
-	private double ryrgTotal;
-	@Schema(description = "1、人员人工费用-费用化")
-	private double ryrgTotal_fyh;
-	@Schema(description = "1、人员人工费用-资本化")
-	private double ryrgTotal_zbh;
-
-	@Schema(description = "2、直接投入费用")
-	private double zjtrTotal;
-	@Schema(description = "2、直接投入费用-费用化")
-	private double zjtrTotal_fyh;
-	@Schema(description = "2、直接投入费用-资本化")
-	private double zjtrTotal_zbh;
-
-	@Schema(description = "3、折旧费用")
-	private double zjfyTotal;
-	@Schema(description = "3、折旧费用-费用化")
-	private double zjfyTotal_fyh;
-	@Schema(description = "3、折旧费用-资本化")
-	private double zjfyTotal_zbh;
-
-
-	@Schema(description = "4、无形资产摊销")
-	private double wxzctxTotal;
-	@Schema(description = "4、无形资产摊销-费用化")
-	private double wxzctxTotal_fyh;
-	@Schema(description = "4、无形资产摊销-资本化")
-	private double wxzctxTotal_zbh;
-
-	@Schema(description = "5、新产品设计费等")
-	private double xcpsjfd;
-	@Schema(description = "5、新产品设计费等-费用化")
-	private double xcpsjfd_fyh;
-	@Schema(description = "5、新产品设计费等-资本化")
-	private double xcpsjfd_zbh;
-
-	@Schema(description = "6、前五项小计")
-	private double total;
-	@Schema(description = "6、前五项小计-费用化")
-	private double total_fyh;
-	@Schema(description = "6、前五项小计-资本化")
-	private double total_zbh;
-
-	@Schema(description = "7.1、其他相关费用合计")
-	private double qtxgfyTotal;
-	@Schema(description = "7.1、其他相关费用合计-费用化")
-	private double qtxgfyTotal_fyh;
-	@Schema(description = "7.1、其他相关费用合计-资本化")
-	private double qtxgfyTotal_zbh;
-
-	@Schema(description = "7.2、经限额调整后的其他相关费用")
-	private double qtxgfyAdjustTotal;
-	@Schema(description = "7.2、经限额调整后的其他相关费用-费用化")
-	private double qtxgfyAdjustTotal_fyh;
-	@Schema(description = "7.2、经限额调整后的其他相关费用-资本化")
-	private double qtxgfyAdjustTotal_zbh;
-
-	@Schema(description = "8.1、委托境内机构或个人进行研发活动所发生的费用")
-	private double wtjnfy;
-	@Schema(description = "8.1、委托境内机构或个人进行研发活动所发生的费用-费用化")
-	private double wtjnfy_fyh;
-	@Schema(description = "8.1、委托境内机构或个人进行研发活动所发生的费用-资本化")
-	private double wtjnfy_zbh;
-
-	@Schema(description = "8.2、允许加计扣除的委托境内机构或个人进行研发活动所发生的费用")
-	private double wtjnfyRate;
-	@Schema(description = "8.2、允许加计扣除的委托境内机构或个人进行研发活动所发生的费用-费用化")
-	private double wtjnfyRate_fyh;
-	@Schema(description = "8.2、允许加计扣除的委托境内机构或个人进行研发活动所发生的费用-资本化")
-	private double wtjnfyRate_zbh;
-
-	@Schema(description = "8.3、委托境外机构进行研发活动所发生的费用")
-	private double wtjwfy;
-	@Schema(description = "8.3、委托境外机构进行研发活动所发生的费用-费用化")
-	private double wtjwfy_fyh;
-	@Schema(description = "8.3、委托境外机构进行研发活动所发生的费用-资本化")
-	private double wtjwfy_zbh;
-
-	@Schema(description = "8.4、经限额调整后的委托境外机构进行研发活动所发生的费用")
-	private double wtjwfyRate;
-	@Schema(description = "8.4、经限额调整后的委托境外机构进行研发活动所发生的费用-费用化")
-	private double wtjwfyRate_fyh;
-	@Schema(description = "8.4、经限额调整后的委托境外机构进行研发活动所发生的费用-资本化")
-	private double wtjwfyRate_zbh;
+	@Schema(description = "资本化金额小计-允许加计扣除金额合计")
+	private BigDecimal yxjjkcjehj_zbh = new BigDecimal("0.00");
+	;
+
+	@Schema(description = "费用化金额小计-允许加计扣除金额合计")
+	private BigDecimal yxjjkcjehj_fyh = new BigDecimal("0.00");
+	;
+
+	@Schema(description = "其中:其他事项-允许加计扣除金额合计")
+	private BigDecimal yxjjkcjehj_qt = new BigDecimal("0.00");
+	;
+
+	@Schema(description = "金额合计-允许加计扣除金额合计")
+	private BigDecimal yxjjkcjehj_hjje = new BigDecimal("0.00");
+	;
+
+
+	@Schema(description = "资本化金额小计-人员人工费用")
+	private BigDecimal ryrgfy_zbh = new BigDecimal("0.00");
+	;
+
+	@Schema(description = "费用化金额小计-人员人工费用")
+	private BigDecimal ryrgfy_fyh = new BigDecimal("0.00");
+	;
+
+	@Schema(description = "其中:其他事项-人员人工费用")
+	private BigDecimal ryrgfy_qt = new BigDecimal("0.00");
+	;
+
+	@Schema(description = "金额合计-人员人工费用")
+	private BigDecimal ryrgfy_hjje = new BigDecimal("0.00");
+	;
+
+
+	@Schema(description = "资本化金额小计-直接投入费用")
+	private BigDecimal zjtrfy_zbh = new BigDecimal("0.00");
+	;
+
+	@Schema(description = "费用化金额小计-直接投入费用")
+	private BigDecimal zjtrfy_fyh = new BigDecimal("0.00");
+	;
+
+	@Schema(description = "其中:其他事项-直接投入费用")
+	private BigDecimal zjtrfy_qt = new BigDecimal("0.00");
+	;
+
+	@Schema(description = "金额合计-直接投入费用")
+	private BigDecimal zjtrfy_hjje = new BigDecimal("0.00");
+	;
+
+
+	@Schema(description = "资本化金额小计-折旧费用")
+	private BigDecimal zjfy_zbh = new BigDecimal("0.00");
+	;
+
+	@Schema(description = "费用化金额小计-折旧费用")
+	private BigDecimal zjfy_fyh = new BigDecimal("0.00");
+	;
+
+	@Schema(description = "其中:其他事项-折旧费用")
+	private BigDecimal zjfy_qt = new BigDecimal("0.00");
+	;
+
+	@Schema(description = "金额合计-折旧费用")
+	private BigDecimal zjfy_hjje = new BigDecimal("0.00");
+	;
+
+
+	@Schema(description = "资本化金额小计-无形资产摊销")
+	private BigDecimal wxzctx_zbh = new BigDecimal("0.00");
+	;
+
+	@Schema(description = "费用化金额小计-无形资产摊销")
+	private BigDecimal wxzctx_fyh = new BigDecimal("0.00");
+	;
+
+	@Schema(description = "其中:其他事项-无形资产摊销")
+	private BigDecimal wxzctx_qt = new BigDecimal("0.00");
+	;
+
+	@Schema(description = "金额合计-无形资产摊销")
+	private BigDecimal wxzctx_hjje = new BigDecimal("0.00");
+	;
+
+
+	@Schema(description = "资本化金额小计-新产品设计费等")
+	private BigDecimal xcpsjfd_zbh = new BigDecimal("0.00");
+	;
+
+	@Schema(description = "费用化金额小计-新产品设计费等")
+	private BigDecimal xcpsjfd_fyh = new BigDecimal("0.00");
+	;
+
+	@Schema(description = "其中:其他事项-新产品设计费等")
+	private BigDecimal xcpsjfd_qt = new BigDecimal("0.00");
+	;
+
+	@Schema(description = "金额合计-新产品设计费等")
+	private BigDecimal xcpsjfd_hjje = new BigDecimal("0.00");
+	;
+
+
+	@Schema(description = "资本化金额小计-前五项小计")
+	private BigDecimal total_zbh = new BigDecimal("0.00");
+	;
+
+	@Schema(description = "费用化金额小计-前五项小计")
+	private BigDecimal total_fyh = new BigDecimal("0.00");
+	;
+
+	@Schema(description = "其中:其他事项-前五项小计")
+	private BigDecimal total_qt = new BigDecimal("0.00");
+	;
+
+	@Schema(description = "金额合计-前五项小计")
+	private BigDecimal total_hjje = new BigDecimal("0.00");
+	;
+
+
+	@Schema(description = "资本化金额小计-其他相关费用合计")
+	private BigDecimal qtxgfyhj_zbh = new BigDecimal("0.00");
+	;
+
+	@Schema(description = "费用化金额小计-其他相关费用合计")
+	private BigDecimal qtxgfyhj_fyh = new BigDecimal("0.00");
+	;
+
+	@Schema(description = "其中:其他事项-其他相关费用合计")
+	private BigDecimal qtxgfyhj_qt = new BigDecimal("0.00");
+	;
+
+	@Schema(description = "金额合计-其他相关费用合计")
+	private BigDecimal qtxgfyhj_hjje = new BigDecimal("0.00");
+	;
+
+
+	@Schema(description = "资本化金额小计-经限额调整后的其他相关费用")
+	private BigDecimal qtxgfyhj_adjust_zbh = new BigDecimal("0.00");
+	;
+
+	@Schema(description = "费用化金额小计-经限额调整后的其他相关费用")
+	private BigDecimal qtxgfyhj_adjust_fyh = new BigDecimal("0.00");
+	;
+
+	@Schema(description = "其中:其他事项-经限额调整后的其他相关费用")
+	private BigDecimal qtxgfyhj_adjust_qt = new BigDecimal("0.00");
+	;
+
+	@Schema(description = "金额合计-经限额调整后的其他相关费用")
+	private BigDecimal qtxgfyhj_adjust_hjje = new BigDecimal("0.00");
+	;
+
+
+	@Schema(description = "资本化金额小计-委托境内机构或个人进行研发活动所发生的费用")
+	private BigDecimal wtjnjgfy_zbh = new BigDecimal("0.00");
+	;
+
+	@Schema(description = "费用化金额小计-委托境内机构或个人进行研发活动所发生的费用")
+	private BigDecimal wtjnjgfy_fyh = new BigDecimal("0.00");
+	;
+
+	@Schema(description = "其中:其他事项-委托境内机构或个人进行研发活动所发生的费用")
+	private BigDecimal wtjnjgfy_qt = new BigDecimal("0.00");
+	;
+
+	@Schema(description = "金额合计-委托境内机构或个人进行研发活动所发生的费用")
+	private BigDecimal wtjnjgfy_hjje = new BigDecimal("0.00");
+	;
+
+
+	@Schema(description = "资本化金额小计-允许加计扣除的委托境内机构或个人进行研发活动所发生的费用")
+	private BigDecimal yxwtjnjgfy_zbh = new BigDecimal("0.00");
+	;
+
+	@Schema(description = "费用化金额小计-允许加计扣除的委托境内机构或个人进行研发活动所发生的费用")
+	private BigDecimal yxwtjnjgfy_fyh = new BigDecimal("0.00");
+	;
+
+	@Schema(description = "其中:其他事项-允许加计扣除的委托境内机构或个人进行研发活动所发生的费用")
+	private BigDecimal yxwtjnjgfy_qt = new BigDecimal("0.00");
+	;
+
+	@Schema(description = "金额合计-允许加计扣除的委托境内机构或个人进行研发活动所发生的费用")
+	private BigDecimal yxwtjnjgfy_hjje = new BigDecimal("0.00");
+	;
+
+
+	@Schema(description = "资本化金额小计-委托境外机构进行研发活动所发生的费用")
+	private BigDecimal wtjwjgfy_zbh = new BigDecimal("0.00");
+	;
+
+	@Schema(description = "费用化金额小计-委托境外机构进行研发活动所发生的费用")
+	private BigDecimal wtjwjgfy_fyh = new BigDecimal("0.00");
+	;
+
+	@Schema(description = "其中:其他事项-委托境外机构进行研发活动所发生的费用")
+	private BigDecimal wtjwjgfy_qt = new BigDecimal("0.00");
+	;
+
+	@Schema(description = "金额合计-委托境外机构进行研发活动所发生的费用")
+	private BigDecimal wtjwjgfy_hjje = new BigDecimal("0.00");
+	;
+
+
+	@Schema(description = "资本化金额小计-经限额调整后的委托境外机构进行研发活动所发生的费用")
+	private BigDecimal wtjwjgfy_adjust_zbh = new BigDecimal("0.00");
+	;
+
+	@Schema(description = "费用化金额小计-经限额调整后的委托境外机构进行研发活动所发生的费用")
+	private BigDecimal wtjwjgfy_adjust_fyh = new BigDecimal("0.00");
+	;
+
+	@Schema(description = "其中:其他事项-经限额调整后的委托境外机构进行研发活动所发生的费用")
+	private BigDecimal wtjwjgfy_adjust_qt = new BigDecimal("0.00");
+	;
+
+	@Schema(description = "金额合计-经限额调整后的委托境外机构进行研发活动所发生的费用")
+	private BigDecimal wtjwjgfy_adjust_hjje = new BigDecimal("0.00");
+	;
+
+	@Schema(description = "表格内的数据,每个项目有资本化和费用化两条数据")
+	List<DeductionCostSummaryItem> itemList;
 }

+ 74 - 0
kd-service-api/kd-scientific-api/src/main/java/org/sky/scientific/pojo/vo/DeductionCostSummaryItem.java

@@ -0,0 +1,74 @@
+package org.sky.scientific.pojo.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+
+@Data
+@Schema(description = "研发费用辅助账汇总表-项目费用")
+public class DeductionCostSummaryItem {
+
+	@Schema(description = "项目id")
+	private Long xmId;
+
+	@Schema(description = "项目编号")
+	private String xmbh;
+
+	@Schema(description = "项目名称")
+	private String xmmc;
+
+	@Schema(description = "完成情况")
+	private String wcqk;
+
+	@Schema(description = "支出类型,1:费用化,2:资本化")
+	private Integer type;
+
+	public DeductionCostSummaryItem(Long xmId, String xmbh, String xmmc, String wcqk, Integer type) {
+		this.xmId = xmId;
+		this.xmbh = xmbh;
+		this.xmmc = xmmc;
+		this.wcqk = wcqk;
+		this.type = type;
+	}
+
+	@Schema(description = "允许加计扣除金额合计")
+	private BigDecimal yxjjkcjehj = new BigDecimal("0.00");
+
+	@Schema(description = "1、人员人工费用")
+	private BigDecimal ryrgTotal = new BigDecimal("0.00");
+
+	@Schema(description = "2、直接投入费用")
+	private BigDecimal zjtrTotal = new BigDecimal("0.00");
+
+	@Schema(description = "3、折旧费用")
+	private BigDecimal zjfyTotal = new BigDecimal("0.00");
+
+	@Schema(description = "4、无形资产摊销")
+	private BigDecimal wxzctxTotal = new BigDecimal("0.00");
+
+	@Schema(description = "5、新产品设计费等")
+	private BigDecimal xcpsjfd = new BigDecimal("0.00");
+
+	@Schema(description = "6、前五项小计")
+	private BigDecimal total = new BigDecimal("0.00");;
+
+	@Schema(description = "7.1、其他相关费用合计")
+	private BigDecimal qtxgfyTotal = new BigDecimal("0.00");
+
+	@Schema(description = "7.2、经限额调整后的其他相关费用")
+	private BigDecimal qtxgfyAdjustTotal = new BigDecimal("0.00");;
+
+	@Schema(description = "8.1、委托境内机构或个人进行研发活动所发生的费用")
+	private BigDecimal wtjnfy = new BigDecimal("0.00");
+
+	@Schema(description = "8.2、允许加计扣除的委托境内机构或个人进行研发活动所发生的费用")
+	private BigDecimal wtjnfyAdjust = new BigDecimal("0.00");
+
+	@Schema(description = "8.3、委托境外机构进行研发活动所发生的费用")
+	private BigDecimal wtjwfy = new BigDecimal("0.00");
+
+	@Schema(description = "8.4、经限额调整后的委托境外机构进行研发活动所发生的费用")
+	private BigDecimal wtjwfyAdjust = new BigDecimal("0.00");
+}

+ 10 - 2
kd-service/kd-scientific/src/main/java/org/sky/scientific/controller/XmCostDetailsController.java

@@ -16,6 +16,7 @@ import org.sky.core.secure.annotation.IsAdmin;
 import org.sky.core.tool.api.R;
 import org.sky.core.tool.utils.Func;
 import org.sky.scientific.pojo.dto.XmCostDetailsDTO;
+import org.sky.scientific.pojo.entity.DeductionCostQt;
 import org.sky.scientific.pojo.entity.XmCostDetailsEntity;
 import org.sky.scientific.pojo.vo.*;
 import org.sky.scientific.service.IXmCostDetailsService;
@@ -113,7 +114,14 @@ public class XmCostDetailsController extends KdController {
 	@GetMapping("/deduction-summary")
 	@ApiOperationSupport(order = 32)
 	@Operation(summary = "加计扣除-研发支出辅助汇总表")
-	public R<IPage<DeductionCostSummary>>deductionCostSummary(Query query, XmCostDetailsDTO dto) {
-		return R.data(service.deductionCostSummary(Condition.getPage(query), dto));
+	public R<DeductionCostSummary>deductionCostSummary(XmCostDetailsDTO dto) {
+		return R.data(service.deductionCostSummary(dto));
+	}
+
+	@PostMapping("/deduction-qt")
+	@ApiOperationSupport(order = 33)
+	@Operation(summary = "加计扣除-研发支出辅助汇总表-其中:其他事项-提交")
+	public R<Boolean> updateDeductionQt(DeductionCostQt dto) {
+		return R.status(service.updateDeductionQt(dto));
 	}
 }

+ 14 - 0
kd-service/kd-scientific/src/main/java/org/sky/scientific/mapper/DeductionCostQtMapper.java

@@ -0,0 +1,14 @@
+package org.sky.scientific.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.sky.scientific.pojo.entity.DeductionCostQt;
+
+/**
+ * 加计扣除研发支出辅助汇总表-其他事项 Mapper 接口
+ *
+ * @author Kd
+ * @since 2025-07-30
+ */
+public interface DeductionCostQtMapper extends BaseMapper<DeductionCostQt> {
+
+}

+ 33 - 0
kd-service/kd-scientific/src/main/java/org/sky/scientific/mapper/DeductionCostQtMapper.xml

@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.sky.scientific.mapper.DeductionCostQtMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="ResultMap" type="org.sky.scientific.pojo.entity.DeductionCostQt">
+        <result column="id" property="id"/>
+        <result column="tenant_id" property="tenantId"/>
+        <result column="year_and_month" property="yearAndMonth"/>
+
+        <result column="yxjjkcjehj_qt" property="yxjjkcjehjQt"/>
+        <result column="ryrgfy_qt" property="ryrgfyQt"/>
+        <result column="zjtrfy_qt" property="zjtrfyQt"/>
+        <result column="zjfy_qt" property="zjfyQt"/>
+        <result column="wxzctx_qt" property="wxzctxQt"/>
+        <result column="xcpsjfd_qt" property="xcpsjfdQt"/>
+        <result column="total_qt" property="totalQt"/>
+        <result column="qtxgfyhj_qt" property="qtxgfyhjQt"/>
+        <result column="qtxgfyhj_adjust_qt" property="qtxgfyhjAdjustQt"/>
+        <result column="wtjnjgfy_qt" property="wtjnjgfyQt"/>
+        <result column="yxwtjnjgfy_qt" property="yxwtjnjgfyQt"/>
+        <result column="wtjwjgfy_qt" property="wtjwjgfyQt"/>
+        <result column="wtjwjgfy_adjust_qt" property="wtjwjgfyAdjustQt"/>
+
+        <result column="create_user" property="createUser"/>
+        <result column="create_dept" property="createDept"/>
+        <result column="create_time" property="createTime"/>
+        <result column="update_user" property="updateUser"/>
+        <result column="update_time" property="updateTime"/>
+        <result column="status" property="status"/>
+        <result column="is_deleted" property="isDeleted"/>
+    </resultMap>
+</mapper>

+ 0 - 15
kd-service/kd-scientific/src/main/java/org/sky/scientific/mapper/XmCostDetailsMapper.java

@@ -66,15 +66,6 @@ public interface XmCostDetailsMapper extends BaseMapper<XmCostDetailsEntity> {
 	@TenantIgnore
 	List<DeductionCostDetailVO> deductionCostDetail(XmCostDetailsDTO dto);
 
-//	/**
-//	 * 高新口径-研发费用辅助账汇总表
-//	 * @param dto
-//	 * @return
-//	 */
-//	@TenantIgnore
-//	List<HighTechCostSummary> highTechCostSummary(IPage<HighTechCostSummary> page, @Param("ew") XmCostDetailsDTO dto);
-
-
 	/**
 	 * 会计/高新/加计扣除口径-研发费用辅助账汇总表
 	 * @param page
@@ -87,10 +78,4 @@ public interface XmCostDetailsMapper extends BaseMapper<XmCostDetailsEntity> {
 	@TenantIgnore
 	List<CostItemVO> selectCostItemByCondition(@Param("yearAndMonth") String yearAndMonth, @Param("xmId") Long xmId);
 
-//	/**
-//	 * 加计扣除-研发支出辅助汇总表
-//	 * @param dto
-//	 * @return
-//	 */
-//	List<DeductionCostSummary> deductionCostSummary(XmCostDetailsDTO dto);
 }

+ 15 - 14
kd-service/kd-scientific/src/main/java/org/sky/scientific/mapper/XmCostDetailsMapper.xml

@@ -168,6 +168,7 @@
         <result column="xm_id" property="xmId"/>
         <result column="XMBH" property="xmbh"/>
         <result column="XMMC" property="xmmc"/>
+        <result column="XMJSSJ" property="xmjssj"/>
 
         <collection property="costList" ofType="org.sky.scientific.pojo.vo.DeductionCostItemVO">
             <result column="record_date" property="recordDate"/>
@@ -184,28 +185,28 @@
     </resultMap>
     <select id="deductionCostDetail" resultMap="DeductionCostDetailVO">
         SELECT
-        xm.id as XMID, xm.XMBH,xm.XMMC,kxcd.record_date,kxcd.voucher_number,kxcd.digest,kxcd.amount,kxcd.cashbook,
+        xm.id as xm_id, xm.XMBH,xm.XMMC,xm.XMJSSJ,kxcd.record_date,kxcd.voucher_number,kxcd.digest,kxcd.amount,kxcd.cashbook,
         kxcd.e_subject_id, s.ad_subject_enable,s.L4Code, s.L3Code, s.L2Code
         FROM kd_xm_cost_details kxcd
         LEFT JOIN
         (
-        SELECT se.id,sub4.code as L4Code, sub4.ad_subject_enable,sub3.code as L3Code, sub2.code as L2Code
-        FROM kd_subject_enterprise se
-        LEFT JOIN kd_subject sub4 on sub4.id = se.subject_id
-        LEFT JOIN kd_subject sub3 on sub3.id = sub4.parent_id
-        LEFT JOIN kd_subject sub2 on sub2.id = sub3.parent_id
+            SELECT
+                se.id,sub4.code as L4Code, sub4.ad_subject_enable,sub3.code as L3Code, sub2.code as L2Code
+            FROM kd_subject_enterprise se
+            LEFT JOIN kd_subject sub4 on sub4.id = se.subject_id
+            LEFT JOIN kd_subject sub3 on sub3.id = sub4.parent_id
+            LEFT JOIN kd_subject sub2 on sub2.id = sub3.parent_id
         )s ON s.id = kxcd.e_subject_id
         LEFT JOIN
         (
-        SELECT
-        xm.id, xm.XMBH,
-        COALESCE( (SELECT bgrz.BGHDZ FROM kd_xm_bgrz bgrz WHERE bgrz.XM_ID = xm.id AND bgrz.ZDMC = 'XMMC' AND
-        DATE_FORMAT(bgrz.BGSXSJ,'%Y%m') <![CDATA[<=]]> #{yearAndMonth} ORDER BY bgrz.BGSXSJ DESC LIMIT 1),XMMC) AS XMMC
-        FROM kd_xm xm
-        WHERE xm.is_deleted = 0
+            SELECT
+                xm.id, xm.XMBH,
+                COALESCE( (SELECT bgrz.BGHDZ FROM kd_xm_bgrz bgrz WHERE bgrz.XM_ID = xm.id AND bgrz.ZDMC = 'XMMC' AND DATE_FORMAT(bgrz.BGSXSJ,'%Y%m') <![CDATA[<=]]> #{yearAndMonth} ORDER BY bgrz.BGSXSJ DESC LIMIT 1),XMMC) AS XMMC,
+                COALESCE( (SELECT bgrz.BGHDZ FROM kd_xm_bgrz bgrz WHERE bgrz.XM_ID = xm.id AND bgrz.ZDMC = 'XMJSSJ' AND DATE_FORMAT(bgrz.BGSXSJ,'%Y%m') <![CDATA[<=]]> #{yearAndMonth} ORDER BY bgrz.BGSXSJ DESC LIMIT 1),XMJSSJ) AS XMJSSJ
+            FROM kd_xm xm
+            WHERE xm.is_deleted = 0
         ) xm on xm.id = kxcd.xm_id
-        WHERE kxcd.tenant_id = #{tenantId} and kxcd.year_and_month between concat(left(#{yearAndMonth},4),'01') and
-        #{yearAndMonth}
+        WHERE kxcd.tenant_id = #{tenantId} and kxcd.year_and_month between concat(left(#{yearAndMonth},4),'01') and #{yearAndMonth}
         <if test="type==1">and s.L2Code = '530101'</if>
         <if test="type==2">and s.L2Code = '530102'</if>
         <if test="xmmc!=null and xmmc!=''">and xm.XMMC like concat('%',#{xmmc},'%')</if>

+ 3 - 3
kd-service/kd-scientific/src/main/java/org/sky/scientific/mapper/XmIntangibleAssetMapper.xml

@@ -22,7 +22,7 @@
 
     <select id="selectListByYearAndMonth"
             resultMap="ResultMap">
-        SELECT xa.*,asset.zcbm,t.user_name as user_name
+        SELECT xa.*,asset.zcbm,t.name as user_name
         FROM kd_xm_intangible_asset xa
         inner JOIN kd_asset asset ON xa.ZCBM=asset.ZCBM and asset.year_and_month = #{yearAndMonth}
         LEFT JOIN kd_technician t on t.unicode=xa.user_unicode and t.year_and_month = #{ew.yearAndMonth}
@@ -39,7 +39,7 @@
      </select>
 
     <select id="selectPageByYearAndMonth" resultMap="ResultMap">
-        SELECT xa.*,xm.xmmc, xm.xmbh,t.user_name as user_name,
+        SELECT xa.*,xm.xmmc, xm.xmbh,t.name as user_name,
         <include refid="org.sky.scientific.mapper.AssetMapper.basicColumns"/>
         FROM kd_xm_intangible_asset xa
         LEFT JOIN kd_asset asset ON xa.asset_id = asset.id
@@ -65,7 +65,7 @@
     </select>
 
     <select id="selectPageByYear" resultMap="ResultMap">
-        SELECT xa.xm_id, xa.asset_id, t.user_name as user_name,<include refid="org.sky.scientific.mapper.AssetMapper.basicColumns"/>
+        SELECT xa.xm_id, xa.asset_id, t.name as user_name,<include refid="org.sky.scientific.mapper.AssetMapper.basicColumns"/>
         FROM kd_xm_intangible_asset xa
         LEFT JOIN kd_asset asset ON xa.asset_id = asset.id
         LEFT JOIN kd_technician t on t.unicode=xa.user_unicode and t.year_and_month = #{ew.yearAndMonth}

+ 2 - 2
kd-service/kd-scientific/src/main/java/org/sky/scientific/mapper/XmMapper.xml

@@ -112,9 +112,9 @@
             COALESCE( (SELECT bgrz.BGHDZ FROM kd_xm_bgrz bgrz WHERE bgrz.XM_ID = xm.id AND bgrz.ZDMC = 'XMJSSJ' and bgrz.BGSXSJ <![CDATA[<=]]> now() ORDER BY bgrz.BGSXSJ DESC LIMIT 1),xm.XMJSSJ) AS xmjssj,
             COALESCE( (SELECT bgrz.BGHDZ FROM kd_xm_bgrz bgrz WHERE bgrz.XM_ID = xm.id AND bgrz.ZDMC = 'XMYSZEMX' and bgrz.BGSXSJ <![CDATA[<=]]> now() ORDER BY bgrz.BGSXSJ DESC LIMIT 1),xm.XMYSZEMX) AS XMYSZEMX,
             (select sum(ZZSC*PJRGFY) from kd_ys_ryrgfy where XM_ID = #{xmId}) as ryrgfy,
-            (select sum(yong_liang*dan_jia) from kd_ys_zjtrfy where XM_ID = #{xmId}) as zjtrfy,
+            (select sum(yong_liang*dan_jia+YSJE+ZLFYYS) from kd_ys_zjtrfy where XM_ID = #{xmId}) as zjtrfy,
             (select sum(ZZSC*YZJE+CQDTFYYSJE) from kd_ys_zjfyycqdtfy t where XM_ID = #{xmId}) as zjfyycqdtfy,
-            (select sum(ZZSC*YZJE) from kd_ys_wxzctxfy where XM_ID = #{xmId}) as wxzctxfy,
+            (select sum(ZZSC*(select ifnull(YZJE,0) from kd_asset where id = asset_id)) from kd_ys_wxzctxfy where XM_ID = #{xmId}) as wxzctxfy,
             (select sum(YSJE) from kd_ys_sjfy where XM_ID = #{xmId}) as sjfy,
             (select sum(YSJE) from kd_ys_zbtsysyfy where XM_ID = #{xmId}) as zbtsysyfy,
             (select sum(WWFY) from kd_ys_wtwbyjkffy where XM_ID = #{xmId}) as wtwbyjkffy,

+ 9 - 2
kd-service/kd-scientific/src/main/java/org/sky/scientific/service/IXmCostDetailsService.java

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import jakarta.servlet.http.HttpServletResponse;
 import org.sky.core.mp.base.BaseService;
 import org.sky.scientific.pojo.dto.XmCostDetailsDTO;
+import org.sky.scientific.pojo.entity.DeductionCostQt;
 import org.sky.scientific.pojo.entity.XmCostDetailsEntity;
 import org.sky.scientific.pojo.vo.*;
 import org.springframework.web.multipart.MultipartFile;
@@ -96,9 +97,15 @@ public interface IXmCostDetailsService extends BaseService<XmCostDetailsEntity>
 
 	/**
 	 * 加计扣除-研发支出辅助汇总表
-	 * @param page
+ 	 * @param dto
+	 * @return
+	 */
+	DeductionCostSummary deductionCostSummary(XmCostDetailsDTO dto);
+
+	/**
+	 * 加计扣除-研发支出辅助汇总表 修改    其中:其他事项
 	 * @param dto
 	 * @return
 	 */
-	IPage<DeductionCostSummary> deductionCostSummary(IPage<DeductionCostSummary> page, XmCostDetailsDTO dto);
+	boolean updateDeductionQt(DeductionCostQt dto);
 }

+ 210 - 48
kd-service/kd-scientific/src/main/java/org/sky/scientific/service/impl/XmCostDetailsServiceImpl.java

@@ -3,6 +3,7 @@ package org.sky.scientific.service.impl;
 
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import jakarta.servlet.http.HttpServletResponse;
@@ -15,11 +16,12 @@ import org.sky.core.mp.support.Query;
 import org.sky.core.secure.utils.SecureUtil;
 import org.sky.core.tool.utils.*;
 import org.sky.scientific.excel.XmCostDetailsExcel;
+import org.sky.scientific.mapper.DeductionCostQtMapper;
 import org.sky.scientific.mapper.SubjectEnterpriseMapper;
-import org.sky.scientific.mapper.SubjectMapper;
 import org.sky.scientific.mapper.XmCostDetailsMapper;
 import org.sky.scientific.mapper.XmMapper;
 import org.sky.scientific.pojo.dto.XmCostDetailsDTO;
+import org.sky.scientific.pojo.entity.DeductionCostQt;
 import org.sky.scientific.pojo.entity.SubjectEnterprise;
 import org.sky.scientific.pojo.entity.XmCostDetailsEntity;
 import org.sky.scientific.pojo.vo.*;
@@ -27,6 +29,8 @@ import org.sky.scientific.service.IXmCostDetailsService;
 import org.springframework.stereotype.Service;
 import org.springframework.web.multipart.MultipartFile;
 
+import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.util.*;
 
 /**
@@ -40,8 +44,8 @@ import java.util.*;
 public class XmCostDetailsServiceImpl extends BaseServiceImpl<XmCostDetailsMapper, XmCostDetailsEntity> implements IXmCostDetailsService {
 
 	private final XmMapper xmMapper;
-	private final SubjectMapper subjectMapper;
 	private final SubjectEnterpriseMapper subjectEnterpriseMapper;
+	private final DeductionCostQtMapper qtMapper;
 
 	@Override
 	public IPage<XmCostDetailsEntity> selectXmCostDetailsPage(IPage<XmCostDetailsEntity> page, XmCostDetailsDTO dto) {
@@ -360,6 +364,7 @@ public class XmCostDetailsServiceImpl extends BaseServiceImpl<XmCostDetailsMappe
 		dto.setTenantId(SecureUtil.getTenantId());
 		List<DeductionCostDetailVO> list = baseMapper.deductionCostDetail(dto);
 		for (DeductionCostDetailVO tmp : list) {
+			tmp.setWcqk(DateUtil.now().before(tmp.getXmjssj()) ? "进行中" : "已完成");
 			List<DeductionCostItemVO> vos = tmp.getCostList();
 			for (DeductionCostItemVO vo : vos) {
 				if (vo.getAdSubjectEnable() == 0) {
@@ -427,113 +432,270 @@ public class XmCostDetailsServiceImpl extends BaseServiceImpl<XmCostDetailsMappe
 						throw new ServiceException("费用归集出错啦");
 					}
 				}
-
 			}
 		}
 		return list;
 	}
 
 	@Override
-	public IPage<DeductionCostSummary> deductionCostSummary(IPage<DeductionCostSummary> page, XmCostDetailsDTO dto) {
+	public DeductionCostSummary deductionCostSummary(XmCostDetailsDTO dto) {
 		if (Func.isBlank(dto.getYearAndMonth())) {
 			throw new ServiceException("参数yearAndMonth不能为空");
 		}
 		dto.setTenantId(SecureUtil.getTenantId());
+		List<DeductionCostDetailVO> list = baseMapper.deductionCostDetail(dto);
+		DeductionCostSummary summary = new DeductionCostSummary();
 
-		Query query = new Query();
-		query.setCurrent((int) page.getCurrent());
-		query.setSize((int) page.getSize());
-		IPage<JSONObject> p1 = Condition.getPage(query);
 
-		List<JSONObject> tmpList = baseMapper.costSummary(p1, dto);
+		DeductionCostQt qt = qtMapper.selectOne(Wrappers.<DeductionCostQt>lambdaQuery().eq(DeductionCostQt::getYearAndMonth, dto.getYearAndMonth()));
+
+		if (Func.notNull(qt)) {
+			//先将“其中:其他事项”加入到 对应的费用化金额小计
+			summary.setRyrgfy_fyh(summary.getRyrgfy_fyh().add(qt.getRyrgfyQt()));
+			summary.setZjtrfy_fyh(summary.getZjtrfy_fyh().add(qt.getZjtrfyQt()));
+			summary.setZjfy_fyh(summary.getZjfy_fyh().add(qt.getZjfyQt()));
+			summary.setWxzctx_fyh(summary.getWxzctx_fyh().add(qt.getWxzctxQt()));
+			summary.setXcpsjfd_fyh(summary.getXcpsjfd_fyh().add(qt.getXcpsjfdQt()));
+			summary.setQtxgfyhj_fyh(summary.getQtxgfyhj_fyh().add(qt.getQtxgfyhjQt()));
+			summary.setWtjnjgfy_fyh(summary.getWtjnjgfy_fyh().add(qt.getWtjnjgfyQt()));
+			summary.setWtjwjgfy_fyh(summary.getWtjwjgfy_fyh().add(qt.getWtjwjgfyQt()));
+
+			//其中:其他事项-前五项 小计
+			summary.setTotal_qt(qt.getRyrgfyQt().add(qt.getZjtrfyQt()).add(qt.getZjfyQt()).add(qt.getWxzctxQt()).add(qt.getXcpsjfdQt()));
+
+		}
 
-		page.setTotal(p1.getTotal()).setCurrent(p1.getCurrent()).setSize(p1.getSize());
 
-		List<DeductionCostSummary> summaryList = JSON.parseArray(JSON.toJSONString(tmpList), DeductionCostSummary.class);
+		List<DeductionCostSummaryItem> summaryList = new ArrayList<>();
+		for (DeductionCostDetailVO cost : list) {
 
-		for (DeductionCostSummary summary : summaryList) {
-			List<CostItemVO> itemList = baseMapper.selectCostItemByCondition(dto.getYearAndMonth(), summary.getXmId());
-			for (CostItemVO vo : itemList) {
+			String wcqk = DateUtil.now().before(cost.getXmjssj()) ? "进行中" : "已完成";
+
+			DeductionCostSummaryItem fyhSummary = new DeductionCostSummaryItem(cost.getXmId(), cost.getXmbh(), cost.getXmmc(), wcqk, 1);
+			DeductionCostSummaryItem zbhSummary = new DeductionCostSummaryItem(cost.getXmId(), cost.getXmbh(), cost.getXmmc(), wcqk, 2);
+			summaryList.add(fyhSummary);
+			summaryList.add(zbhSummary);
+
+
+			for (DeductionCostItemVO vo : cost.getCostList()) {
 				if (vo.getAdSubjectEnable() == 0) {
 					//四级科目 不是加计扣除研发费用科目,费用不归集
 					continue;
 				}
 				if (Func.equals(vo.getL3Code(), "53010101")) {
 					//1、人员人工费用-费用化
-					summary.setRyrgTotal(summary.getRyrgTotal() + vo.getAmount().doubleValue());
-					summary.setRyrgTotal_fyh(summary.getRyrgTotal_fyh() + vo.getAmount().doubleValue());
+					fyhSummary.setRyrgTotal(fyhSummary.getRyrgTotal().add(vo.getAmount()));
 				} else if (Func.equals(vo.getL3Code(), "53010201")) {
 					//人员人工费用-资本化
-					summary.setRyrgTotal(summary.getRyrgTotal() + vo.getAmount().doubleValue());
-					summary.setRyrgTotal_zbh(summary.getRyrgTotal_zbh() + vo.getAmount().doubleValue());
+					zbhSummary.setRyrgTotal(zbhSummary.getRyrgTotal().add(vo.getAmount()));
 				} else if (Func.equals(vo.getL3Code(), "53010102")) {
 					//2、直接投入费用费用-费用化
-					summary.setZjtrTotal(summary.getZjtrTotal() + vo.getAmount().doubleValue());
-					summary.setZjtrTotal_fyh(summary.getZjtrTotal_fyh() + vo.getAmount().doubleValue());
+					fyhSummary.setZjtrTotal(fyhSummary.getZjtrTotal().add(vo.getAmount()));
 				} else if (Func.equals(vo.getL3Code(), "53010202")) {
 					//直接投入费用-资本化
-					summary.setZjtrTotal(summary.getZjtrTotal() + vo.getAmount().doubleValue());
-					summary.setZjtrTotal_zbh(summary.getZjtrTotal_zbh() + vo.getAmount().doubleValue());
+					zbhSummary.setZjtrTotal(zbhSummary.getZjtrTotal().add(vo.getAmount()));
 				} else if (Func.equals(vo.getL3Code(), "53010103")) {
 					//3、折旧费用-费用化
-					summary.setZjfyTotal(summary.getZjfyTotal() + vo.getAmount().doubleValue());
-					summary.setZjfyTotal_fyh(summary.getZjfyTotal_fyh() + vo.getAmount().doubleValue());
+					fyhSummary.setZjfyTotal(fyhSummary.getZjfyTotal().add(vo.getAmount()));
 				} else if (Func.equals(vo.getL3Code(), "53010203")) {
 					//3、折旧费用-资本化
-					summary.setZjfyTotal(summary.getZjfyTotal() + vo.getAmount().doubleValue());
-					summary.setZjfyTotal_zbh(summary.getZjfyTotal_zbh() + vo.getAmount().doubleValue());
+					zbhSummary.setZjfyTotal(zbhSummary.getZjfyTotal().add(vo.getAmount()));
 				} else if (Func.equals(vo.getL3Code(), "53010104")) {
 					//4、无形资产摊销-费用化
-					summary.setWxzctxTotal(summary.getWxzctxTotal() + vo.getAmount().doubleValue());
-					summary.setWxzctxTotal_fyh(summary.getWxzctxTotal_fyh() + vo.getAmount().doubleValue());
+					fyhSummary.setWxzctxTotal(fyhSummary.getWxzctxTotal().add(vo.getAmount()));
 				} else if (Func.equals(vo.getL3Code(), "53010204")) {
 					//4、无形资产摊销-资本化
-					summary.setWxzctxTotal(summary.getWxzctxTotal() + vo.getAmount().doubleValue());
-					summary.setWxzctxTotal_zbh(summary.getWxzctxTotal_zbh() + vo.getAmount().doubleValue());
+					zbhSummary.setWxzctxTotal(zbhSummary.getWxzctxTotal().add(vo.getAmount()));
 				} else if (Arrays.asList("5301010501", "5301010502", "5301010602", "5301010603").contains(vo.getL4Code())) {
 					//5、新产品设计费等-费用化
 					//三级科目中的“设计费用”-新产品设计费,新工艺规程制定费;和"装备调试费用与试验费用"-新药研制的临床试验费,勘探开发的现场试验费;归集到新产品设计费等
-					summary.setXcpsjfd(summary.getXcpsjfd() + vo.getAmount().doubleValue());
-					summary.setXcpsjfd_fyh(summary.getXcpsjfd_fyh() + vo.getAmount().doubleValue());
+					fyhSummary.setXcpsjfd(fyhSummary.getXcpsjfd().add(vo.getAmount()));
 				} else if (Arrays.asList("5301020501", "5301020502", "5301020602", "5301020603").contains(vo.getL4Code())) {
 					//5、新产品设计费等-资本化
 					//三级科目中的“设计费用”-新产品设计费,新工艺规程制定费;和"装备调试费用与试验费用"-新药研制的临床试验费,勘探开发的现场试验费;归集到新产品设计费等
-					summary.setXcpsjfd(summary.getXcpsjfd() + vo.getAmount().doubleValue());
-					summary.setXcpsjfd_zbh(summary.getXcpsjfd_zbh() + vo.getAmount().doubleValue());
+					zbhSummary.setXcpsjfd(zbhSummary.getXcpsjfd().add(vo.getAmount()));
 				} else if (Func.equals(vo.getL3Code(), "53010108")) {
 					//7.1、其他相关费用-费用化
-					summary.setQtxgfyTotal(summary.getQtxgfyTotal() + vo.getAmount().doubleValue());
-					summary.setQtxgfyTotal_fyh(summary.getQtxgfyTotal_fyh() + vo.getAmount().doubleValue());
+					fyhSummary.setQtxgfyTotal(fyhSummary.getQtxgfyTotal().add(vo.getAmount()));
 				} else if (Func.equals(vo.getL3Code(), "53010208")) {
 					//7.1、其他相关费用-资本化
-					summary.setQtxgfyTotal(summary.getQtxgfyTotal() + vo.getAmount().doubleValue());
-					summary.setQtxgfyTotal_zbh(summary.getQtxgfyTotal_zbh() + vo.getAmount().doubleValue());
+					zbhSummary.setQtxgfyTotal(zbhSummary.getQtxgfyTotal().add(vo.getAmount()));
 				} else if (Func.equals(vo.getL4Code(), "5301010701")) {
 					//8.1、委托境内机构或个人进行研发活动所发生的费用-费用化
-					summary.setWtjnfy(summary.getWtjnfy() + vo.getAmount().doubleValue());
-					summary.setWtjnfy_fyh(summary.getWtjnfy_fyh() + vo.getAmount().doubleValue());
+					fyhSummary.setWtjnfy(fyhSummary.getWtjnfy().add(vo.getAmount()));
 				} else if (Func.equals(vo.getL4Code(), "5301020701")) {
 					//8.1、委托境内机构或个人进行研发活动所发生的费用-资本化
-					summary.setWtjnfy(summary.getWtjnfy() + vo.getAmount().doubleValue());
-					summary.setWtjnfy_zbh(summary.getWtjnfy_zbh() + vo.getAmount().doubleValue());
+					zbhSummary.setWtjnfy(zbhSummary.getWtjnfy().add(vo.getAmount()));
 				} else if (Func.equals(vo.getL4Code(), "5301010702")) {
 					//8.3、委托境外机构进行研发活动所发生的费用-费用化
-					summary.setWtjwfy(summary.getWtjwfy() + vo.getAmount().doubleValue());
-					summary.setWtjwfy_fyh(summary.getWtjwfy_fyh() + vo.getAmount().doubleValue());
+					fyhSummary.setWtjwfy(fyhSummary.getWtjwfy().add(vo.getAmount()));
 				} else if (Func.equals(vo.getL4Code(), "5301020702")) {
 					//8.3、委托境外机构进行研发活动所发生的费用-资本化
-					summary.setWtjwfy(summary.getWtjwfy() + vo.getAmount().doubleValue());
-					summary.setWtjwfy_zbh(summary.getWtjwfy_zbh() + vo.getAmount().doubleValue());
+					zbhSummary.setWtjwfy(zbhSummary.getWtjwfy().add(vo.getAmount()));
 				} else {
 					throw new ServiceException("费用归集出错啦");
 				}
 			}
 
 			//前五项小计=1、人员人工费用+2、直接投入费用+3、折旧费用+4、无形资产摊销+5、新产品设计费等
-			summary.setTotal(summary.getRyrgTotal() + summary.getZjtrTotal() + summary.getZjfyTotal() + summary.getWxzctxTotal() + summary.getXcpsjfd());
+			fyhSummary.setTotal(fyhSummary.getRyrgTotal().add(fyhSummary.getZjtrTotal()).add(fyhSummary.getZjfyTotal()).add(fyhSummary.getWxzctxTotal()).add(fyhSummary.getXcpsjfd()));
+			zbhSummary.setTotal(zbhSummary.getRyrgTotal().add(zbhSummary.getZjtrTotal()).add(zbhSummary.getZjfyTotal()).add(zbhSummary.getWxzctxTotal()).add(zbhSummary.getXcpsjfd()));
+
+			zbhSummary.setWtjnfyAdjust(zbhSummary.getWtjnfyAdjust().multiply(new BigDecimal("0.8")));
+			fyhSummary.setWtjnfyAdjust(fyhSummary.getWtjnfyAdjust().multiply(new BigDecimal("0.8")));
+
+
+			//资本化金额小计----------------begin
+			//资本化金额小计-人员人工费用
+			summary.setRyrgfy_zbh(summary.getRyrgfy_zbh().add(zbhSummary.getRyrgTotal()));
+			//费用化金额小计-人员人工费用
+			summary.setRyrgfy_fyh(summary.getRyrgfy_fyh().add(fyhSummary.getRyrgTotal()));
+			//金额合计-人员人工费用
+			summary.setRyrgfy_hjje(summary.getRyrgfy_hjje().add(summary.getRyrgfy_zbh()).add(summary.getRyrgfy_fyh()));
+
+			//资本化金额小计-直接投入费用
+			summary.setZjtrfy_zbh(summary.getZjtrfy_zbh().add(zbhSummary.getZjtrTotal()));
+			//费用化金额小计-直接投入费用
+			summary.setZjtrfy_fyh(summary.getZjtrfy_fyh().add(fyhSummary.getZjtrTotal()));
+			//金额合计-直接投入费用
+			summary.setZjtrfy_hjje(summary.getZjtrfy_hjje().add(summary.getZjtrfy_zbh()).add(summary.getZjtrfy_fyh()));
+
+			//资本化金额小计-折旧费用
+			summary.setZjfy_zbh(summary.getZjfy_zbh().add(zbhSummary.getZjfyTotal()));
+			//费用化金额小计-折旧费用
+			summary.setZjfy_fyh(summary.getZjfy_fyh().add(fyhSummary.getZjfyTotal()));
+			//金额合计-折旧费用
+			summary.setZjfy_hjje(summary.getZjfy_hjje().add(summary.getZjfy_zbh()).add(summary.getZjfy_fyh()));
+
+			//资本化金额小计-无形资产摊销
+			summary.setWxzctx_zbh(summary.getWxzctx_zbh().add(zbhSummary.getWxzctxTotal()));
+			//费用化金额小计-无形资产摊销
+			summary.setWxzctx_fyh(summary.getWxzctx_fyh().add(fyhSummary.getWxzctxTotal()));
+			//金额合计-无形资产摊销
+			summary.setWxzctx_hjje(summary.getWxzctx_hjje().add(summary.getWxzctx_zbh()).add(summary.getWxzctx_fyh()));
+
+			//资本化金额小计-新产品设计费等
+			summary.setXcpsjfd_zbh(summary.getXcpsjfd_zbh().add(zbhSummary.getXcpsjfd()));
+			//费用化金额小计-新产品设计费等
+			summary.setXcpsjfd_fyh(summary.getXcpsjfd_fyh().add(fyhSummary.getXcpsjfd()));
+			//金额合计-新产品设计费等
+			summary.setXcpsjfd_hjje(summary.getXcpsjfd_hjje().add(summary.getXcpsjfd_zbh()).add(summary.getXcpsjfd_fyh()));
+
+
+			//资本化金额小计-前五项小计
+			summary.setTotal_zbh(summary.getTotal_zbh().add(zbhSummary.getTotal()));
+			//费用化金额小计-前五项小计
+			summary.setTotal_fyh(summary.getTotal_fyh().add(fyhSummary.getTotal()));
+			//金额合计-前五项 小计
+			summary.setTotal_hjje(summary.getTotal_hjje().add(summary.getTotal_zbh()).add(summary.getTotal_fyh()));
+
+			//资本化金额小计-其他相关费用合计
+			summary.setQtxgfyhj_zbh(summary.getQtxgfyhj_zbh().add(zbhSummary.getQtxgfyTotal()));
+			//费用化金额小计-其他相关费用合计
+			summary.setQtxgfyhj_fyh(summary.getQtxgfyhj_fyh().add(fyhSummary.getQtxgfyTotal()));
+			//金额合计-其他相关费用合计
+			summary.setQtxgfyhj_hjje(summary.getQtxgfyhj_hjje().add(summary.getQtxgfyhj_zbh()).add(summary.getQtxgfyhj_fyh()));
+
+			//资本化金额小计-委托境内机构或个人进行研发活动所发生的费用
+			summary.setWtjnjgfy_zbh(summary.getWtjnjgfy_zbh().add(zbhSummary.getWtjnfy()));
+			//费用化金额小计-委托境内机构或个人进行研发活动所发生的费用
+			summary.setWtjnjgfy_fyh(summary.getWtjnjgfy_fyh().add(fyhSummary.getWtjnfy()));
+			//金额合计-委托境内机构或个人进行研发活动所发生的费用
+			summary.setWtjnjgfy_hjje(summary.getWtjnjgfy_hjje().add(summary.getWtjnjgfy_zbh()).add(summary.getWtjnjgfy_fyh()));
+
+
+			//资本化金额小计-允许加计扣除的委托境内机构或个人进行研发活动所发生的费用
+			summary.setWtjnjgfy_zbh(summary.getWtjnjgfy_zbh().add(zbhSummary.getWtjnfyAdjust()));
+			//费用化金额小计-允许加计扣除的委托境内机构或个人进行研发活动所发生的费用
+			summary.setWtjnjgfy_fyh(summary.getWtjnjgfy_fyh().add(fyhSummary.getWtjnfyAdjust()));
+			//金额合计-允许加计扣除的委托境内机构或个人进行研发活动所发生的费用
+			summary.setWtjnjgfy_hjje(summary.getWtjnjgfy_hjje().add(summary.getWtjnjgfy_zbh()).add(summary.getWtjnjgfy_fyh()));
+
+
+			//资本化金额小计-委托境外机构进行研发活动所发生的费用
+			summary.setWtjwjgfy_zbh(summary.getWtjwjgfy_zbh().add(zbhSummary.getWtjwfy()));
+			//费用化金额小计-委托境外机构进行研发活动所发生的费用
+			summary.setWtjwjgfy_fyh(summary.getWtjwjgfy_fyh().add(fyhSummary.getWtjwfy()));
+			//金额合计-委托境外机构进行研发活动所发生的费用
+			summary.setWtjwjgfy_hjje(summary.getWtjwjgfy_hjje().add(summary.getWtjwjgfy_zbh()).add(summary.getWtjwjgfy_fyh()));
+
+
+			//允许加计扣除金额合计=前五项 小计 + 经限额调整后的其他相关费用 + 允许加计扣除的委托境内机构或个人进行研发活动所发生的费用 + 经限额调整后的委托境外机构进行研发活动所发生的费用
+			fyhSummary.setYxjjkcjehj(fyhSummary.getYxjjkcjehj().add(fyhSummary.getTotal()));
+			zbhSummary.setYxjjkcjehj(zbhSummary.getYxjjkcjehj().add(zbhSummary.getTotal()));
+
 
 		}
-		return page.setRecords(summaryList);
+
+		summary.setTotal_hjje(summary.getTotal_zbh().add(summary.getTotal_fyh()));
+
+		//=IF(K20*0.1/0.9<L20,K20*0.1/0.9,L20)
+		BigDecimal divide = summary.getTotal_hjje().multiply(new BigDecimal("0.1")).divide(new BigDecimal("0.9"),2, RoundingMode.HALF_UP);
+		summary.setQtxgfyhj_adjust_hjje(divide.compareTo(summary.getQtxgfyhj_hjje()) < 0 ? divide : summary.getQtxgfyhj_hjje());
+
+
+
+		//金额合计-经限额调整后的委托境外机构进行研发活动所发生的费用
+		//(K20+M20+O20)*2/3
+		BigDecimal d1 = summary.getTotal_hjje().add(summary.getQtxgfyhj_hjje()).add(summary.getWtjnjgfy_hjje()).multiply(new BigDecimal("2")).divide(new BigDecimal("3"),2, RoundingMode.HALF_UP);
+		//P20*0.8
+		BigDecimal d2 = summary.getWtjwjgfy_hjje().multiply(new BigDecimal("0.8"));
+		summary.setWtjwjgfy_adjust_hjje(d1.compareTo(d2) < 0 ? d1 : d2);
+
+		for (DeductionCostSummaryItem item : summaryList) {
+
+			//=$Q$20/$P$20*P8 经限额调整后的委托境外机构进行研发活动所发生的费用
+			if(BigDecimal.ZERO.compareTo(summary.getWtjwjgfy_hjje()) != 0){
+				item.setWtjwfyAdjust(summary.getWtjwjgfy_adjust_hjje().multiply(item.getWtjwfy()).divide(summary.getWtjwjgfy_hjje(), 2, RoundingMode.HALF_UP));
+			}
+
+			//=M20/L20*L9
+			if(BigDecimal.ZERO.compareTo(summary.getQtxgfyhj_hjje()) != 0){
+				item.setQtxgfyAdjustTotal(summary.getQtxgfyhj_adjust_hjje().multiply(item.getQtxgfyTotal()).divide(summary.getQtxgfyhj_hjje(), 2, RoundingMode.HALF_UP));
+			}
+
+			//允许加计扣除金额合计 = 前五项 小计 + 经限额调整后的其他相关费用 + 允许加计扣除的委托境内机构或个人进行研发活动所发生的费用 + 经限额调整后的委托境外机构进行研发活动所发生的费用
+			item.setYxjjkcjehj(item.getRyrgTotal().add(item.getQtxgfyAdjustTotal()).add(item.getWtjnfyAdjust()).add(item.getWtjwfyAdjust()));
+
+			if (item.getType() == 1) {
+				summary.setQtxgfyhj_adjust_fyh(summary.getQtxgfyhj_adjust_fyh().add(item.getQtxgfyAdjustTotal()));
+ 				summary.setWtjwjgfy_adjust_fyh(summary.getWtjwjgfy_adjust_fyh().add(item.getWtjwfyAdjust()));
+
+				 summary.setYxjjkcjehj_fyh(summary.getYxjjkcjehj_fyh().add(item.getYxjjkcjehj()));
+
+			} else if (item.getType() == 2) {
+				summary.setQtxgfyhj_adjust_zbh(summary.getQtxgfyhj_adjust_zbh().add(item.getQtxgfyAdjustTotal()));
+				summary.setWtjwjgfy_adjust_zbh(summary.getWtjwjgfy_adjust_zbh().add(item.getWtjwfyAdjust()));
+
+				summary.setYxjjkcjehj_zbh(summary.getYxjjkcjehj_zbh().add(item.getYxjjkcjehj()));
+			}
+
+		}
+
+		summary.setYxjjkcjehj_hjje(summary.getYxjjkcjehj_hjje().add(summary.getYxjjkcjehj_fyh()).add(summary.getYxjjkcjehj_zbh()));
+
+
+
+
+		summary.setItemList(summaryList);
+		return summary;
+	}
+
+	@Override
+	public boolean updateDeductionQt(DeductionCostQt dto) {
+		if(Func.isBlank(dto.getYearAndMonth())){
+			throw new ServiceException("参数yearAndMonth不能为空");
+		}
+		LambdaQueryWrapper<DeductionCostQt> eq = Wrappers.<DeductionCostQt>lambdaQuery()
+			.eq(DeductionCostQt::getYearAndMonth, dto.getYearAndMonth())
+			.eq(DeductionCostQt::getTenantId, SecureUtil.getTenantId());
+		DeductionCostQt dbQt = qtMapper.selectOne(eq);
+		if(Func.isNull(dbQt)){
+			return qtMapper.insert(dto) == 1;
+		}else {
+			dto.setId(dbQt.getId());
+			return qtMapper.updateById(dto) == 1;
+		}
 	}
 
 	public static void judgeDate(Date date, String yearAndMonth) {