zhoulisky месяцев назад: 9
Родитель
Сommit
005f35361f
16 измененных файлов с 285 добавлено и 52 удалено
  1. BIN
      doc/xls导入模板/长期待摊费用分配表-导入模板.xlsx
  2. 17 0
      kd-common/src/main/java/org/sky/common/utils/CommonUtil.java
  3. 91 0
      kd-service-api/kd-scientific-api/src/main/java/org/sky/scientific/pojo/vo/XmAnnualSituationVO.java
  4. 34 0
      kd-service-api/kd-scientific-api/src/main/java/org/sky/scientific/pojo/vo/XmCGSummary.java
  5. 2 2
      kd-service-api/kd-scientific-api/src/main/java/org/sky/scientific/pojo/vo/XmFixedAssetCostVo.java
  6. 7 0
      kd-service/kd-scientific/src/main/java/org/sky/scientific/controller/KYCGController.java
  7. 2 0
      kd-service/kd-scientific/src/main/java/org/sky/scientific/controller/XmController.java
  8. 4 0
      kd-service/kd-scientific/src/main/java/org/sky/scientific/mapper/AssetMapper.xml
  9. 9 0
      kd-service/kd-scientific/src/main/java/org/sky/scientific/mapper/CgQtMapper.java
  10. 12 0
      kd-service/kd-scientific/src/main/java/org/sky/scientific/mapper/CgQtMapper.xml
  11. 54 25
      kd-service/kd-scientific/src/main/java/org/sky/scientific/mapper/XmFixedAssetMapper.xml
  12. 10 0
      kd-service/kd-scientific/src/main/java/org/sky/scientific/service/ICgQtService.java
  13. 12 0
      kd-service/kd-scientific/src/main/java/org/sky/scientific/service/impl/CgQtServiceImpl.java
  14. 17 17
      kd-service/kd-scientific/src/main/java/org/sky/scientific/service/impl/EnterpriseInfoServiceImpl.java
  15. 5 7
      kd-service/kd-scientific/src/main/java/org/sky/scientific/service/impl/XmFixedAssetServiceImpl.java
  16. 9 1
      kd-service/kd-scientific/src/main/java/org/sky/scientific/service/impl/XmIntangibleAssetServiceImpl.java

BIN
doc/xls导入模板/长期待摊费用分配表-导入模板.xlsx


+ 17 - 0
kd-common/src/main/java/org/sky/common/utils/CommonUtil.java

@@ -7,4 +7,21 @@ package org.sky.common.utils;
  */
  */
 public class CommonUtil {
 public class CommonUtil {
 
 
+	/**
+	 * 两个double类型的数相除后保留两位小数
+	 */
+
+	public static Double divide(Double a, Double b) {
+		if (b == 0) {
+			return 0.0;
+		}
+		return Double.parseDouble(String.format("%.2f", a / b));
+	}
+
+	/**
+	 * 两个double类型的数相乘后保留两位小数
+	 */
+	public static Double multiply(Double a, Double b) {
+		return Double.parseDouble(String.format("%.2f", a * b));
+	}
 }
 }

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

@@ -0,0 +1,91 @@
+
+package org.sky.scientific.pojo.vo;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.NotBlank;
+import lombok.Data;
+import org.sky.core.tool.utils.DateUtil;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 企业研究开发项目情况 实体类
+ *
+ * @author Kd
+ * @since 2025-06-29
+ */
+@Data
+public class XmAnnualSituationVO implements Serializable {
+
+
+	@Schema(description = "研发项目名称")
+	private String xmmc;
+
+	@Schema(description = "研发项目来源")
+	private String xmly;
+
+	@Schema(description = "项目开展形式")
+	private String xmkzxs;
+
+ 	@Schema(description = "项目当年成果形式")
+	private String yqcgxs;
+
+	@Schema(description = "项目技术经济目标")
+	private String xmjsjjmb;
+
+ 	@Schema(description = "项目起始日期")
+	@DateTimeFormat(pattern = DateUtil.PATTERN_YYYYMM)
+	@JsonFormat(pattern = DateUtil.PATTERN_YYYYMM)
+	private Date xmkssj;
+
+ 	@Schema(description = "项目完成日期")
+	@DateTimeFormat(pattern = DateUtil.PATTERN_YYYYMM)
+	@JsonFormat(pattern = DateUtil.PATTERN_YYYYMM)
+	private Date xmjssj;
+
+
+
+
+	//	@NotNull(message = "请选择项目负责人")
+	@Schema(description = "项目负责人,kd_technician的主键")
+	private Long xmfzr;
+
+	@Schema(description = "项目申请单位id")
+	//	@NotBlank(message = "项目申请单位不能为空")
+	private String xmsqdwid;
+
+	@Schema(description = "项目申请单位")
+	@TableField(exist = false)
+	private String xmsqdw;
+
+	//	@NotBlank(message = "请选择研究类型")
+	@Schema(description = "研究类型")
+	private String yjlx;
+
+
+
+
+
+
+	@Schema(description = "项目预算总额(万元)")
+	private BigDecimal xmysze;
+
+	@Schema(description = "项目预算明细")
+	private String xmyszemx;
+
+	@NotBlank(message = "请上传立项批文")
+	@Schema(description = "立项批文")
+	private String lxpw;
+
+	@NotBlank(message = "请上传立项报告")
+	@Schema(description = "立项报告")
+	private String lxbg;
+
+	@Schema(description = "其他资料")
+	private String qtzl;
+}

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

@@ -0,0 +1,34 @@
+package org.sky.scientific.pojo.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+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;
+
+@Data
+@Schema(description = "研发项目成果")
+public class XmCGSummary {
+
+	@Schema(description = "成果名称")
+	private String cgmc;
+
+	@Schema(description = "成果编号")
+	private String cgbh;
+
+	@Schema(description = "申请日/完成日")
+	@DateTimeFormat(pattern = DateUtil.PATTERN_DATE)
+	@JsonFormat(pattern = DateUtil.PATTERN_DATE)
+	private Date date1;
+
+	@Schema(description = "授权日/生效日")
+	@DateTimeFormat(pattern = DateUtil.PATTERN_DATE)
+	@JsonFormat(pattern = DateUtil.PATTERN_DATE)
+	private Date date2;
+
+	@Schema(description = "成果类型")
+	private String cglx;
+
+}

+ 2 - 2
kd-service-api/kd-scientific-api/src/main/java/org/sky/scientific/pojo/vo/XmFixedAssetCostVo.java

@@ -7,8 +7,8 @@ import org.sky.scientific.pojo.entity.XmFixedAsset;
 @Data
 @Data
 public class XmFixedAssetCostVo extends XmFixedAsset {
 public class XmFixedAssetCostVo extends XmFixedAsset {
 
 
-	@Schema(description = "月使用工时(L),使用人当月考勤总时长")
-	private Double attendanceHours;
+//	@Schema(description = "月使用工时(L),使用人当月考勤总时长")
+//	private Double attendanceHours;
 
 
 	@Schema(description = "月研发工时(M),使用人当月该项目的研发总工时")
 	@Schema(description = "月研发工时(M),使用人当月该项目的研发总工时")
 	private Double workHours;
 	private Double workHours;

+ 7 - 0
kd-service/kd-scientific/src/main/java/org/sky/scientific/controller/KYCGController.java

@@ -322,4 +322,11 @@ public class KYCGController extends KdController {
 		ExcelUtil.export(response, "科研成果-其他成果数据" + DateUtil.time(), "科研成果-其他成果数据表", list, CgQtExcel.class);
 		ExcelUtil.export(response, "科研成果-其他成果数据" + DateUtil.time(), "科研成果-其他成果数据表", list, CgQtExcel.class);
 	}
 	}
 
 
+	@GetMapping("/summary")
+	@ApiOperationSupport(order = 80)
+	@Operation(summary = "研发项目成果")
+	public R<IPage<XmCGSummary>>  xmCgSummary(Query query, Long xmId){
+		IPage<XmCGSummary> page =  qtService.xmCgSummary(Condition.getPage(query), xmId);
+		return R.data(page);
+	}
 }
 }

+ 2 - 0
kd-service/kd-scientific/src/main/java/org/sky/scientific/controller/XmController.java

@@ -153,4 +153,6 @@ public class XmController extends KdController {
 		return R.data(service.selectAnnualSituation(year));
 		return R.data(service.selectAnnualSituation(year));
 	}
 	}
 
 
+
+
 }
 }

+ 4 - 0
kd-service/kd-scientific/src/main/java/org/sky/scientific/mapper/AssetMapper.xml

@@ -85,4 +85,8 @@
         </if>
         </if>
     </select>
     </select>
 
 
+    <select id="zjCqdtWxzctxFyHzb" resultType="org.sky.scientific.pojo.vo.XmAssetCostSummary">
+
+    </select>
+
 </mapper>
 </mapper>

+ 9 - 0
kd-service/kd-scientific/src/main/java/org/sky/scientific/mapper/CgQtMapper.java

@@ -8,6 +8,8 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.conditions.Wrapper;
 import com.baomidou.mybatisplus.core.conditions.Wrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Param;
+import org.sky.scientific.pojo.vo.XmCGSummary;
+
 import java.util.List;
 import java.util.List;
 
 
 /**
 /**
@@ -38,4 +40,11 @@ public interface CgQtMapper extends BaseMapper<CgQtEntity> {
 
 
 	boolean physicalDeleteByIds(List<Long> ids);
 	boolean physicalDeleteByIds(List<Long> ids);
 
 
+	/**
+	 * 研发项目成果
+	 * @param page
+	 * @param xmId
+	 * @return
+	 */
+    List<XmCGSummary> xmCgSummary(IPage<XmCGSummary> page, @Param("xmId") Long xmId);
 }
 }

+ 12 - 0
kd-service/kd-scientific/src/main/java/org/sky/scientific/mapper/CgQtMapper.xml

@@ -38,6 +38,18 @@
         SELECT * FROM kd_cg_qt ${ew.customSqlSegment}
         SELECT * FROM kd_cg_qt ${ew.customSqlSegment}
     </select>
     </select>
 
 
+    <select id="xmCgSummary" resultType="org.sky.scientific.pojo.vo.XmCGSummary">
+        SELECT ZBMC as cgmc,ZBH as cgbh,SSRQ as date1,SSRQ as date2, '技术标准' as cglx FROM kd_cg_jsbz WHERE XM_ID = #{xmId}
+        UNION
+        SELECT QKMC as cgmc,KJH as cgbh,FBRQ as date1,FBRQ as date2, '科研论文' as cglx FROM kd_cg_kylw  WHERE XM_ID = #{xmId}
+        UNION
+        SELECT CGMC as cgmc,CGBH as cgbh,SHENQING_RQ as date1,SHOUQUAN_RQ as date2, '其他成果' as cglx FROM kd_cg_qt WHERE XM_ID = #{xmId}
+        UNION
+        SELECT RJMC as cgmc,DJH as cgbh,SCFBRQ as date1,DJPZRQ as date2, '软件著作' as cglx FROM kd_cg_rjzzq WHERE XM_ID = #{xmId}
+        UNION
+        SELECT ZLMC as cgmc,ZLH as cgbh,SHENQING_RQ as date1,SHOUQUAN_RQ as date2, ZLLX as cglx FROM kd_cg_zl WHERE XM_ID = #{xmId}
+    </select>
+
     <delete id="physicalDeleteByIds">
     <delete id="physicalDeleteByIds">
         DELETE FROM kd_cg_qt WHERE id IN
         DELETE FROM kd_cg_qt WHERE id IN
         <foreach item="id" collection="list" separator="," open="(" close=")">
         <foreach item="id" collection="list" separator="," open="(" close=")">

+ 54 - 25
kd-service/kd-scientific/src/main/java/org/sky/scientific/mapper/XmFixedAssetMapper.xml

@@ -87,24 +87,52 @@
     </select>
     </select>
 
 
     <resultMap id="XmFixedAssetCostVo" type="org.sky.scientific.pojo.vo.XmFixedAssetCostVo" extends="ResultMap">
     <resultMap id="XmFixedAssetCostVo" type="org.sky.scientific.pojo.vo.XmFixedAssetCostVo" extends="ResultMap">
-        <result column="attendanceHours" property="attendanceHours"/>
-        <result column="workHours" property="workHours"/>
-        <result column="yanfaTanXiao" property="yanfaTanXiao"/>
+        <result column="work_hours" property="workHours"/>
+        <result column="yanfa_fen_tan_lv" property="yanfaFenTanLv"/>
+        <result column="yanfa_tan_xiao" property="yanfaTanXiao"/>
     </resultMap>
     </resultMap>
+<!--    <select id="keyanyiqishebeizhejiufeiyongfenpeibiao"-->
+<!--            resultMap="XmFixedAssetCostVo">-->
+<!--        SELECT xa.xm_id, xa.asset_id, xm.XMBH, xm.XMMC,-->
+<!--               asset.ZCBM as 'asset.ZCBM' ,asset.ZCMC as 'asset.ZCMC' ,asset.ZCLB as 'asset.ZCLB',-->
+<!--               asset.YT as 'asset.YT', asset.ZCYZ as 'asset.ZCYZ',asset.JCZ as 'asset.JCZ',asset.YZJE as 'asset.YZJE',ifnull(asset.ZGS,0) as 'asset.ZGS',asset.KSSJ as 'asset.KSSJ',-->
+<!--               ifnull(kxah.work_hours,0) as work_hours-->
+<!--        FROM kd_xm_fixed_asset xa-->
+<!--        LEFT JOIN kd_asset asset ON xa.asset_id = asset.id-->
+<!--        LEFT JOIN-->
+<!--        (-->
+<!--            select xm_id, asset_id, left(work_date, 6) as year_and_month,  sum(work_hours)  as work_hours-->
+<!--            from kd_xm_asset_hours-->
+<!--            group by xm_id, asset_id, left(work_date, 6)-->
+<!--        )as kxah on kxah.xm_id = xa.xm_id and kxah.asset_id = xa.asset_id and kxah.year_and_month= #{ew.yearAndMonth}-->
+<!--        LEFT JOIN-->
+<!--        (-->
+<!--            SELECT-->
+<!--                xm.id,-->
+<!--                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[<=]]> #{ew.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 = 'XMBH' AND DATE_FORMAT(bgrz.BGSXSJ,'%Y%m') <![CDATA[<=]]> #{ew.yearAndMonth} ORDER BY bgrz.BGSXSJ DESC LIMIT 1),XMBH) AS XMBH-->
+<!--            FROM kd_xm xm-->
+<!--            WHERE xm.is_deleted = 0-->
+<!--        ) xm on xm.id = xa.xm_id-->
+<!--        WHERE xa.tenant_id = #{ew.tenantId} AND xa.year_and_month = #{ew.yearAndMonth} and asset.ZCLB = '仪器设备'-->
+<!--        <if test="ew.xmmc!=null and ew.xmmc!=''">and xm.xmmc like concat('%',#{ew.xmmc},'%')</if>-->
+<!--        <if test="ew.zcmc!=null and ew.zcmc!=''">and asset.zcmc like concat('%',#{ew.zcmc},'%')</if>-->
+<!--        <if test="ew.zclb!=null and ew.zclb!=''">and asset.zclb like concat('%',#{ew.zclb},'%')</if>-->
+<!--        <if test="ew.yt!=null and ew.yt!=''">and asset.yt like concat('%',#{ew.yt},'%')</if>-->
+<!--        <if test="ew.kssjMin!=null and ew.kssjMax!=''">and asset.kssj between #{ew.kssjMin} and #{ew.jssjEnd}</if>-->
+<!--        <if test="ew.zcyzMin!=null and ew.zcyzMax!=null">and asset.zcyz between #{ew.zcyzMin} and #{ew.zcyzMax}</if>-->
+<!--        <if test="ew.jczMin!=null and ew.jczMax!=null">and asset.jcz between #{ew.jczMin} and #{ew.jczMax}</if>-->
+<!--        <if test="ew.yzjeMin!=null and ew.yzjeMax!=null">and asset.jzje between #{ew.yzjeMin} and #{ew.yzjeMax}</if>-->
+<!--    </select>-->
+
     <select id="keyanyiqishebeizhejiufeiyongfenpeibiao"
     <select id="keyanyiqishebeizhejiufeiyongfenpeibiao"
             resultMap="XmFixedAssetCostVo">
             resultMap="XmFixedAssetCostVo">
-        SELECT xa.xm_id, xa.asset_id, xm.XMBH, xm.XMMC,
-               asset.ZCBM as 'asset.ZCBM' ,asset.ZCMC as 'asset.ZCMC' ,asset.ZCLB as 'asset.ZCLB',
-               asset.YT as 'asset.YT', asset.ZCYZ as 'asset.ZCYZ',asset.JCZ as 'asset.JCZ',asset.YZJE as 'asset.YZJE',asset.ZGS as 'asset.ZGS',asset.KSSJ as 'asset.KSSJ',
-               kxah.work_hours
-        FROM kd_xm_fixed_asset xa
-        LEFT JOIN kd_asset asset ON xa.asset_id = asset.id
-        LEFT JOIN
-        (
-            select xm_id, asset_id, left(work_date, 6) as year_and_month, ifnull(sum(work_hours),0) as work_hours
-            from kd_xm_asset_hours
-            group by xm_id, asset_id, left(work_date, 6)
-        )as kxah on kxah.xm_id = xa.xm_id and kxah.asset_id = xa.asset_id and kxah.year_and_month= #{ew.yearAndMonth}
+        SELECT xm.XMBH, xm.XMMC,
+            v1.xm_id, v1.asset_id, v1.year_and_month,
+            v1.ZCBM as 'asset.ZCBM' , v1.ZCMC as 'asset.ZCMC', v1.ZCLB as 'asset.ZCLB' , v1.YT as 'asset.YT',  v1.ZCYZ as 'asset.ZCYZ', v1.JCZ as 'asset.JCZ' , v1.YZJE as 'asset.YZJE', v1.zgs as 'asset.ZGS',
+            v1.work_hours,
+            v1.yanfa_fen_tan_lv, v1.yanfa_tan_xiao
+        from yisishebeiAssetCostView v1
         LEFT JOIN
         LEFT JOIN
         (
         (
             SELECT
             SELECT
@@ -113,16 +141,16 @@
                 COALESCE( (SELECT bgrz.BGHDZ FROM kd_xm_bgrz bgrz WHERE bgrz.XM_ID = xm.id AND bgrz.ZDMC = 'XMBH' AND DATE_FORMAT(bgrz.BGSXSJ,'%Y%m') <![CDATA[<=]]> #{ew.yearAndMonth} ORDER BY bgrz.BGSXSJ DESC LIMIT 1),XMBH) AS XMBH
                 COALESCE( (SELECT bgrz.BGHDZ FROM kd_xm_bgrz bgrz WHERE bgrz.XM_ID = xm.id AND bgrz.ZDMC = 'XMBH' AND DATE_FORMAT(bgrz.BGSXSJ,'%Y%m') <![CDATA[<=]]> #{ew.yearAndMonth} ORDER BY bgrz.BGSXSJ DESC LIMIT 1),XMBH) AS XMBH
             FROM kd_xm xm
             FROM kd_xm xm
             WHERE xm.is_deleted = 0
             WHERE xm.is_deleted = 0
-        ) xm on xm.id = xa.xm_id
-        WHERE xa.tenant_id = #{ew.tenantId} AND xa.year_and_month = #{ew.yearAndMonth} and asset.ZCLB = '仪器设备'
+        ) xm on xm.id = v1.xm_id
+        WHERE v1.tenant_id = #{ew.tenantId} AND v1.year_and_month = #{ew.yearAndMonth}
         <if test="ew.xmmc!=null and ew.xmmc!=''">and xm.xmmc like concat('%',#{ew.xmmc},'%')</if>
         <if test="ew.xmmc!=null and ew.xmmc!=''">and xm.xmmc like concat('%',#{ew.xmmc},'%')</if>
-        <if test="ew.zcmc!=null and ew.zcmc!=''">and asset.zcmc like concat('%',#{ew.zcmc},'%')</if>
-        <if test="ew.zclb!=null and ew.zclb!=''">and asset.zclb like concat('%',#{ew.zclb},'%')</if>
-        <if test="ew.yt!=null and ew.yt!=''">and asset.yt like concat('%',#{ew.yt},'%')</if>
-        <if test="ew.kssjMin!=null and ew.kssjMax!=''">and asset.kssj between #{ew.kssjMin} and #{ew.jssjEnd}</if>
-        <if test="ew.zcyzMin!=null and ew.zcyzMax!=null">and asset.zcyz between #{ew.zcyzMin} and #{ew.zcyzMax}</if>
-        <if test="ew.jczMin!=null and ew.jczMax!=null">and asset.jcz between #{ew.jczMin} and #{ew.jczMax}</if>
-        <if test="ew.yzjeMin!=null and ew.yzjeMax!=null">and asset.jzje between #{ew.yzjeMin} and #{ew.yzjeMax}</if>
+        <if test="ew.zcmc!=null and ew.zcmc!=''">and zcmc like concat('%',#{ew.zcmc},'%')</if>
+        <if test="ew.zclb!=null and ew.zclb!=''">and zclb like concat('%',#{ew.zclb},'%')</if>
+        <if test="ew.yt!=null and ew.yt!=''">and yt like concat('%',#{ew.yt},'%')</if>
+        <if test="ew.kssjMin!=null and ew.kssjMax!=''">and kssj between #{ew.kssjMin} and #{ew.jssjEnd}</if>
+        <if test="ew.zcyzMin!=null and ew.zcyzMax!=null">and zcyz between #{ew.zcyzMin} and #{ew.zcyzMax}</if>
+        <if test="ew.jczMin!=null and ew.jczMax!=null">and jcz between #{ew.jczMin} and #{ew.jczMax}</if>
+        <if test="ew.yzjeMin!=null and ew.yzjeMax!=null">and jzje between #{ew.yzjeMin} and #{ew.yzjeMax}</if>
     </select>
     </select>
 
 
     <select id="keyanfangwujianzhuwuzhejiufeiyongfenpeibiao"
     <select id="keyanfangwujianzhuwuzhejiufeiyongfenpeibiao"
@@ -131,7 +159,8 @@
             xa.id,xa.xm_id, xa.asset_id, xm.XMBH, xm.XMMC,
             xa.id,xa.xm_id, xa.asset_id, xm.XMBH, xm.XMMC,
             asset.ZCBM as 'asset.ZCBM' ,asset.ZCMC as 'asset.ZCMC' ,asset.ZCLB as 'asset.ZCLB',
             asset.ZCBM as 'asset.ZCBM' ,asset.ZCMC as 'asset.ZCMC' ,asset.ZCLB as 'asset.ZCLB',
             asset.YT as 'asset.YT', asset.ZCYZ as 'asset.ZCYZ',asset.JCZ as 'asset.JCZ',asset.YZJE as 'asset.YZJE', asset.KSSJ as 'asset.KSSJ',
             asset.YT as 'asset.YT', asset.ZCYZ as 'asset.ZCYZ',asset.JCZ as 'asset.JCZ',asset.YZJE as 'asset.YZJE', asset.KSSJ as 'asset.KSSJ',
-            xa.yfftv,xa.ftvqdyj
+            xa.yfftv as yanfa_fen_tan_lv,
+            xa.ftvqdyj
         FROM kd_xm_fixed_asset xa
         FROM kd_xm_fixed_asset xa
         LEFT JOIN kd_asset asset ON xa.asset_id = asset.id
         LEFT JOIN kd_asset asset ON xa.asset_id = asset.id
         LEFT JOIN
         LEFT JOIN

+ 10 - 0
kd-service/kd-scientific/src/main/java/org/sky/scientific/service/ICgQtService.java

@@ -2,9 +2,11 @@
 package org.sky.scientific.service;
 package org.sky.scientific.service;
 
 
 import com.baomidou.mybatisplus.core.conditions.Wrapper;
 import com.baomidou.mybatisplus.core.conditions.Wrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import org.sky.core.mp.base.BaseService;
 import org.sky.core.mp.base.BaseService;
 import org.sky.scientific.excel.CgQtExcel;
 import org.sky.scientific.excel.CgQtExcel;
 import org.sky.scientific.pojo.entity.CgQtEntity;
 import org.sky.scientific.pojo.entity.CgQtEntity;
+import org.sky.scientific.pojo.vo.XmCGSummary;
 import org.springframework.web.multipart.MultipartFile;
 import org.springframework.web.multipart.MultipartFile;
 
 
 import java.util.List;
 import java.util.List;
@@ -32,4 +34,12 @@ public interface ICgQtService extends BaseService<CgQtEntity> {
 	boolean update(CgQtEntity cgQt);
 	boolean update(CgQtEntity cgQt);
 
 
 	boolean physicalDeleteByIds(List<Long> ids);
 	boolean physicalDeleteByIds(List<Long> ids);
+
+	/**
+	 * 研发项目成果
+	 * @param page
+	 * @param xmId
+	 * @return
+	 */
+	IPage<XmCGSummary> xmCgSummary(IPage<XmCGSummary> page, Long xmId);
 }
 }

+ 12 - 0
kd-service/kd-scientific/src/main/java/org/sky/scientific/service/impl/CgQtServiceImpl.java

@@ -2,6 +2,7 @@
 package org.sky.scientific.service.impl;
 package org.sky.scientific.service.impl;
 
 
 import com.baomidou.mybatisplus.core.conditions.Wrapper;
 import com.baomidou.mybatisplus.core.conditions.Wrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import jakarta.annotation.Resource;
 import jakarta.annotation.Resource;
 import org.sky.core.excel.util.ExcelUtil;
 import org.sky.core.excel.util.ExcelUtil;
@@ -9,6 +10,7 @@ import org.sky.core.log.exception.ServiceException;
 import org.sky.core.mp.base.BaseServiceImpl;
 import org.sky.core.mp.base.BaseServiceImpl;
 import org.sky.core.tool.utils.BeanUtil;
 import org.sky.core.tool.utils.BeanUtil;
 import org.sky.core.tool.utils.CollectionUtil;
 import org.sky.core.tool.utils.CollectionUtil;
+import org.sky.core.tool.utils.Func;
 import org.sky.core.tool.utils.StringUtil;
 import org.sky.core.tool.utils.StringUtil;
 import org.sky.scientific.excel.CgQtExcel;
 import org.sky.scientific.excel.CgQtExcel;
 import org.sky.scientific.mapper.CgQtMapper;
 import org.sky.scientific.mapper.CgQtMapper;
@@ -16,6 +18,7 @@ import org.sky.scientific.mapper.XmMapper;
 import org.sky.scientific.pojo.dto.CgQtDTO;
 import org.sky.scientific.pojo.dto.CgQtDTO;
 import org.sky.scientific.pojo.entity.CgQtEntity;
 import org.sky.scientific.pojo.entity.CgQtEntity;
 import org.sky.scientific.pojo.entity.XmEntity;
 import org.sky.scientific.pojo.entity.XmEntity;
+import org.sky.scientific.pojo.vo.XmCGSummary;
 import org.sky.scientific.service.ICgQtService;
 import org.sky.scientific.service.ICgQtService;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.annotation.Transactional;
@@ -87,4 +90,13 @@ public class CgQtServiceImpl extends BaseServiceImpl<CgQtMapper, CgQtEntity> imp
 		return baseMapper.physicalDeleteByIds(ids);
 		return baseMapper.physicalDeleteByIds(ids);
 	}
 	}
 
 
+    @Override
+    public IPage<XmCGSummary> xmCgSummary(IPage<XmCGSummary> page, Long xmId) {
+		if(Func.isNull(xmId)){
+			throw new ServiceException("参数xmId不能为空");
+		}
+		List<XmCGSummary> list = baseMapper.xmCgSummary(page, xmId);
+        return page.setRecords(list);
+    }
+
 }
 }

+ 17 - 17
kd-service/kd-scientific/src/main/java/org/sky/scientific/service/impl/EnterpriseInfoServiceImpl.java

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import org.sky.core.log.exception.ServiceException;
 import org.sky.core.log.exception.ServiceException;
 import org.sky.core.mp.base.BaseServiceImpl;
 import org.sky.core.mp.base.BaseServiceImpl;
+import org.sky.core.secure.utils.SecureUtil;
 import org.sky.core.tool.utils.DateUtil;
 import org.sky.core.tool.utils.DateUtil;
 import org.sky.core.tool.utils.Func;
 import org.sky.core.tool.utils.Func;
 import org.sky.scientific.mapper.EnterpriseInfoMapper;
 import org.sky.scientific.mapper.EnterpriseInfoMapper;
@@ -35,7 +36,7 @@ public class EnterpriseInfoServiceImpl extends BaseServiceImpl<EnterpriseInfoMap
 		}
 		}
 		one.setId(null);
 		one.setId(null);
 		one.setYearAndMonth(enterpriseInfo.getYearAndMonth());
 		one.setYearAndMonth(enterpriseInfo.getYearAndMonth());
-		return this.save(one) ? one : null;
+		return one;
 	}
 	}
 
 
 	@Override
 	@Override
@@ -43,23 +44,22 @@ public class EnterpriseInfoServiceImpl extends BaseServiceImpl<EnterpriseInfoMap
 		if (Func.isBlank(enterpriseInfo.getYearAndMonth())) {
 		if (Func.isBlank(enterpriseInfo.getYearAndMonth())) {
 			throw new ServiceException("参数yearAndMonth不能为空");
 			throw new ServiceException("参数yearAndMonth不能为空");
 		}
 		}
-		boolean result = this.saveOrUpdate(enterpriseInfo);
 
 
-//		LambdaQueryWrapper<EnterpriseInfoEntity> eq = Wrappers.<EnterpriseInfoEntity>lambdaQuery()
-//			.eq(EnterpriseInfoEntity::getYearAndMonth, enterpriseInfo.getYearAndMonth());
-//		EnterpriseInfoEntity one = this.getOne(eq);
-//
-//		if (Func.isNull(enterpriseInfo.getId())) {
-//			//新增
-//
-//
-//		} else {
-//			//修改
-//			if(Func.equals(enterpriseInfo.getId(), one.getId())){
-//				result = this.updateById(enterpriseInfo);
-//			}
-//
-//		}
+		boolean result = false;
+
+		LambdaQueryWrapper<EnterpriseInfoEntity> eq = Wrappers.<EnterpriseInfoEntity>lambdaQuery()
+			.eq(EnterpriseInfoEntity::getYearAndMonth, enterpriseInfo.getYearAndMonth())
+			.eq(EnterpriseInfoEntity::getTenantId, SecureUtil.getTenantId());
+		EnterpriseInfoEntity one = this.getOne(eq);
+
+		if (Func.isNull(one)) {
+			//新增
+			this.save(enterpriseInfo);
+		} else {
+			//修改
+			enterpriseInfo.setId(one.getId());
+			result = this.updateById(enterpriseInfo);
+		}
 		return result;
 		return result;
 	}
 	}
 }
 }

+ 5 - 7
kd-service/kd-scientific/src/main/java/org/sky/scientific/service/impl/XmFixedAssetServiceImpl.java

@@ -207,12 +207,12 @@ public class XmFixedAssetServiceImpl extends BaseServiceImpl<XmFixedAssetMapper,
 		}
 		}
 		dto.setTenantId(SecureUtil.getTenantId());
 		dto.setTenantId(SecureUtil.getTenantId());
 		List<XmFixedAssetCostVo> list = baseMapper.keyanyiqishebeizhejiufeiyongfenpeibiao(page, dto);
 		List<XmFixedAssetCostVo> list = baseMapper.keyanyiqishebeizhejiufeiyongfenpeibiao(page, dto);
-		for (XmFixedAssetCostVo vo : list) {
+//		for (XmFixedAssetCostVo vo : list) {
 //			//研发分摊率=月研发工时/月总工时
 //			//研发分摊率=月研发工时/月总工时
-//			vo.setYanfaFenTanLv(vo.getWorkHours() / vo.getAttendanceHours());
-//			//研发摊销=(月折旧额/月摊销额(元)) * 研发分摊率
-//			vo.setYanfaTanXiao(vo.getAsset().getYzje().doubleValue() * vo.getYanfaFenTanLv());
-		}
+//			vo.setYanfaFenTanLv(CommonUtil.divide(vo.getWorkHours(), vo.getAsset().getZgs()));
+//			//研发摊销=(月折旧额月摊销额(元)) * 研发分摊率
+//			vo.setYanfaTanXiao(CommonUtil.multiply(vo.getWorkHours(), 1.0 / vo.getAsset().getZgs()));
+//		}
 		return page.setRecords(list);
 		return page.setRecords(list);
 	}
 	}
 
 
@@ -223,9 +223,7 @@ public class XmFixedAssetServiceImpl extends BaseServiceImpl<XmFixedAssetMapper,
 		}
 		}
 		dto.setTenantId(SecureUtil.getTenantId());
 		dto.setTenantId(SecureUtil.getTenantId());
 		List<XmFixedAssetCostVo> list = baseMapper.keyanfangwujianzhuwuzhejiufeiyongfenpeibiao(page, dto);
 		List<XmFixedAssetCostVo> list = baseMapper.keyanfangwujianzhuwuzhejiufeiyongfenpeibiao(page, dto);
-		for (XmFixedAssetCostVo vo : list) {
 
 
-		}
 		return page.setRecords(list);
 		return page.setRecords(list);
 	}
 	}
 
 

+ 9 - 1
kd-service/kd-scientific/src/main/java/org/sky/scientific/service/impl/XmIntangibleAssetServiceImpl.java

@@ -220,10 +220,18 @@ public class XmIntangibleAssetServiceImpl extends BaseServiceImpl<XmIntangibleAs
 		List<XmIntangibleAssetCostVo> list = baseMapper.keyanwuxingzichantanxiaofeiyongfenpeibiao(page,dto);
 		List<XmIntangibleAssetCostVo> list = baseMapper.keyanwuxingzichantanxiaofeiyongfenpeibiao(page,dto);
 		for (XmIntangibleAssetCostVo vo : list) {
 		for (XmIntangibleAssetCostVo vo : list) {
 			//研发分摊率=月研发工时/月总工时
 			//研发分摊率=月研发工时/月总工时
-			vo.setYanfaFenTanLv(vo.getWorkHours() / vo.getAttendanceHours());
+			if(vo.getAttendanceHours()==0 || vo.getWorkHours()==0){
+				vo.setYanfaFenTanLv(0);
+			}else {
+				vo.setYanfaFenTanLv(vo.getWorkHours() / vo.getAttendanceHours());
+			}
 			//研发摊销=(月折旧额/月摊销额(元)) * 研发分摊率
 			//研发摊销=(月折旧额/月摊销额(元)) * 研发分摊率
 			vo.setYanfaTanXiao(vo.getAsset().getYzje().doubleValue() * vo.getYanfaFenTanLv());
 			vo.setYanfaTanXiao(vo.getAsset().getYzje().doubleValue() * vo.getYanfaFenTanLv());
 		}
 		}
         return page.setRecords(list);
         return page.setRecords(list);
     }
     }
+
+	public static void main(String[] args) {
+		System.out.println("dd"+(0/1));
+	}
 }
 }