Browse Source

设计费用、装备调试费用与试验费用基本信息台账

zhoulisky 10 months ago
parent
commit
a8ca8bce7f
16 changed files with 528 additions and 6 deletions
  1. 1 1
      kd-common/src/main/java/org/sky/common/constant/LauncherConstant.java
  2. 38 0
      kd-service-api/kd-scientific-api/src/main/java/org/sky/scientific/pojo/dto/XmDesignCostQuery.java
  3. 52 0
      kd-service-api/kd-scientific-api/src/main/java/org/sky/scientific/pojo/entity/XmDesignCostEntity.java
  4. 5 0
      kd-service-api/kd-scientific-api/src/main/java/org/sky/scientific/pojo/entity/XmIntangibleAsset.java
  5. 21 0
      kd-service-api/kd-scientific-api/src/main/java/org/sky/scientific/pojo/vo/XmDesignCostVO.java
  6. 7 0
      kd-service/kd-scientific/src/main/java/org/sky/scientific/controller/AssetController.java
  7. 91 0
      kd-service/kd-scientific/src/main/java/org/sky/scientific/controller/XmDesignCostController.java
  8. 57 0
      kd-service/kd-scientific/src/main/java/org/sky/scientific/excel/XmDesignCostExcel.java
  9. 40 0
      kd-service/kd-scientific/src/main/java/org/sky/scientific/mapper/XmDesignCostMapper.java
  10. 61 0
      kd-service/kd-scientific/src/main/java/org/sky/scientific/mapper/XmDesignCostMapper.xml
  11. 1 0
      kd-service/kd-scientific/src/main/java/org/sky/scientific/mapper/XmIntangibleAssetMapper.xml
  12. 11 3
      kd-service/kd-scientific/src/main/java/org/sky/scientific/mapper/YsZjfyycqdtfyMapper.xml
  13. 40 0
      kd-service/kd-scientific/src/main/java/org/sky/scientific/service/IXmDesignCostService.java
  14. 2 0
      kd-service/kd-scientific/src/main/java/org/sky/scientific/service/IXmIntangibleAssetService.java
  15. 91 0
      kd-service/kd-scientific/src/main/java/org/sky/scientific/service/impl/XmDesignCostServiceImpl.java
  16. 10 2
      kd-service/kd-scientific/src/main/java/org/sky/scientific/service/impl/XmIntangibleAssetServiceImpl.java

+ 1 - 1
kd-common/src/main/java/org/sky/common/constant/LauncherConstant.java

@@ -23,7 +23,7 @@ public interface LauncherConstant {
 	/**
 	 * nacos dev 地址
 	 */
-	String NACOS_DEV_ADDR = "127.0.0.1:8848";
+	String NACOS_DEV_ADDR = "47.99.150.200:8848";
 
 	String NACOS_DEV_NAMESPACE = "bc98aa53-bc32-4e17-bb82-605c8e95d336";
 

+ 38 - 0
kd-service-api/kd-scientific-api/src/main/java/org/sky/scientific/pojo/dto/XmDesignCostQuery.java

@@ -0,0 +1,38 @@
+
+package org.sky.scientific.pojo.dto;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * 项目-设计费用、装备调试费用与试验费用基本信息台账 数据传输对象实体类
+ *
+ * @author Kd
+ * @since 2025-07-28
+ */
+@Data
+public class XmDesignCostQuery{
+
+	@Schema(description = "研发项目名称")
+	private String xmmc;
+
+	@Schema(description = "合同名称")
+	private String contractName;
+
+	@Schema(description = "费用类型")
+	private String costType;
+
+	@Schema(description = "金额区间-小")
+	private Double amountMin;
+
+	@Schema(description = "金额区间-大")
+	private Double amountMax;
+
+	@Schema(description = "日期区间-小")
+	private Date recordDateMin;
+
+	@Schema(description = "日期区间-大")
+	private Date recordDateMax;
+}

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

@@ -0,0 +1,52 @@
+
+package org.sky.scientific.pojo.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.sky.core.tenant.mp.TenantEntity;
+import org.sky.core.tool.utils.DateUtil;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serial;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 项目-设计费用、装备调试费用与试验费用基本信息台账 实体类
+ *
+ * @author Kd
+ * @since 2025-07-28
+ */
+@Data
+@TableName("kd_xm_design_cost")
+@Schema(description = "XmDesignCost对象")
+@EqualsAndHashCode(callSuper = true)
+public class XmDesignCostEntity extends TenantEntity {
+
+	@Serial
+	private static final long serialVersionUID = 1L;
+
+	@Schema(description = "所属年月,如:202505")
+	private String yearAndMonth;
+
+	@Schema(description = "项目ID")
+	private Long xmId;
+
+	@Schema(description = "费用类型")
+	private String costType;
+
+	@Schema(description = "日期")
+	@DateTimeFormat(pattern = DateUtil.PATTERN_DATE)
+	@JsonFormat(pattern = DateUtil.PATTERN_DATE)
+	private Date recordDate;
+
+	@Schema(description = "合同名称")
+	private String contractName;
+
+	@Schema(description = "金额")
+	private BigDecimal amount;
+
+}

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

@@ -54,8 +54,13 @@ public class XmIntangibleAsset extends TenantEntity {
 	private String zcbm;
 
 	@Schema(description = "使用人")
+	@NotNull(message = "请选择使用人")
 	private String userUnicode;
 
+	@Schema(description = "使用人名称")
+	@NotNull(message = "使用人名称不能为空")
+	private String userName;
+
 	@TableField(exist = false)
 	@Schema(description = "资产信息",hidden = true)
 	private AssetEntity asset;

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

@@ -0,0 +1,21 @@
+
+package org.sky.scientific.pojo.vo;
+
+import org.sky.scientific.pojo.entity.XmDesignCostEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import java.io.Serial;
+
+/**
+ * 项目-设计费用、装备调试费用与试验费用基本信息台账 视图实体类
+ *
+ * @author Kd
+ * @since 2025-07-28
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class XmDesignCostVO extends XmDesignCostEntity {
+	@Serial
+	private static final long serialVersionUID = 1L;
+
+}

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

@@ -248,6 +248,13 @@ public class AssetController extends KdController {
 		return R.status(intangibleAssetService.saveXmIntangibleAsset(xmAsset));
 	}
 
+	@PostMapping("/intangible/update")
+	@ApiOperationSupport(order = 52)
+	@Operation(summary = "科研无形资产明细表-修改")
+	public R updateIntangibleAsset(@Valid @RequestBody XmIntangibleAsset xmAsset) {
+		return R.status(intangibleAssetService.updateXmIntangibleAsset(xmAsset));
+	}
+
 	@PostMapping("/intangible/import")
 	@ApiOperationSupport(order = 53)
 	@Operation(summary = "科研无形资产明细表-导入")

+ 91 - 0
kd-service/kd-scientific/src/main/java/org/sky/scientific/controller/XmDesignCostController.java

@@ -0,0 +1,91 @@
+
+package org.sky.scientific.controller;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.validation.Valid;
+import lombok.AllArgsConstructor;
+import org.sky.core.boot.ctrl.KdController;
+import org.sky.core.excel.util.ExcelUtil;
+import org.sky.core.mp.support.Condition;
+import org.sky.core.mp.support.Query;
+import org.sky.core.secure.KdUser;
+import org.sky.core.secure.annotation.IsAdmin;
+import org.sky.core.tool.api.R;
+import org.sky.core.tool.utils.DateUtil;
+import org.sky.core.tool.utils.Func;
+import org.sky.scientific.excel.XmDesignCostExcel;
+import org.sky.scientific.pojo.dto.XmDesignCostQuery;
+import org.sky.scientific.pojo.entity.XmDesignCostEntity;
+import org.sky.scientific.pojo.vo.XmDesignCostVO;
+import org.sky.scientific.service.IXmDesignCostService;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 项目-设计费用、装备调试费用与试验费用基本信息台账 控制器
+ *
+ * @author Kd
+ * @since 2025-07-28
+ */
+@RestController
+@AllArgsConstructor
+@RequestMapping("/xm/design-cost")
+@Tag(name = "项目-设计费用、装备调试费用与试验费用基本信息台账")
+public class XmDesignCostController extends KdController {
+
+	private final IXmDesignCostService service;
+
+	@GetMapping("/page")
+	@ApiOperationSupport(order = 1)
+	@Operation(summary = "分页")
+	public R<IPage<XmDesignCostVO>> page(XmDesignCostQuery param, Query query) {
+		IPage<XmDesignCostVO> pages = service.selectXmDesignCostPage(Condition.getPage(query), param);
+		return R.data(pages);
+	}
+
+	@PostMapping("import")
+	@ApiOperationSupport(order = 2)
+	@Operation(summary = "导入")
+	public R importCost(MultipartFile file, String yearAndMonth) {
+		service.importData(file, yearAndMonth);
+		return R.success("操作成功");
+	}
+
+	@PostMapping("/submit")
+	@ApiOperationSupport(order = 6)
+	@Operation(summary = "新增或修改")
+	public R submit(@Valid @RequestBody XmDesignCostEntity xmDesignCost) {
+		return R.status(service.saveOrUpdate(xmDesignCost));
+	}
+
+	@PostMapping("/remove")
+	@ApiOperationSupport(order = 7)
+	@Operation(summary = "删除", description  = "传入ids")
+	public R remove(@Parameter(description = "主键集合", required = true) @RequestParam String ids) {
+		return R.status(service.deleteLogic(Func.toLongList(ids)));
+	}
+
+	@IsAdmin
+	@GetMapping("/export-xmDesignCost")
+	@ApiOperationSupport(order = 9)
+	@Operation(summary = "导出数据", description  = "传入xmDesignCost")
+	public void exportXmDesignCost(@Parameter(hidden = true) @RequestParam Map<String, Object> xmDesignCost, KdUser kdUser, HttpServletResponse response) {
+		QueryWrapper<XmDesignCostEntity> queryWrapper = Condition.getQueryWrapper(xmDesignCost, XmDesignCostEntity.class);
+		//if (!AuthUtil.isAdministrator()) {
+		//	queryWrapper.lambda().eq(XmDesignCost::getTenantId, kdUser.getTenantId());
+		//}
+		//queryWrapper.lambda().eq(XmDesignCostEntity::getIsDeleted, KdConstant.DB_NOT_DELETED);
+		List<XmDesignCostExcel> list = service.exportXmDesignCost(queryWrapper);
+		ExcelUtil.export(response, "项目-设计费用、装备调试费用与试验费用基本信息台账数据" + DateUtil.time(), "项目-设计费用、装备调试费用与试验费用基本信息台账数据表", list, XmDesignCostExcel.class);
+	}
+
+}

+ 57 - 0
kd-service/kd-scientific/src/main/java/org/sky/scientific/excel/XmDesignCostExcel.java

@@ -0,0 +1,57 @@
+
+package org.sky.scientific.excel;
+
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import com.alibaba.excel.annotation.write.style.ContentRowHeight;
+import com.alibaba.excel.annotation.write.style.HeadRowHeight;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import org.sky.core.tool.utils.DateUtil;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+
+
+/**
+ * 项目-设计费用、装备调试费用与试验费用基本信息台账 Excel实体类
+ *
+ * @author Kd
+ * @since 2025-07-28
+ */
+@Data
+@ColumnWidth(25)
+@HeadRowHeight(20)
+@ContentRowHeight(18)
+public class XmDesignCostExcel implements Serializable {
+
+	@Serial
+	private static final long serialVersionUID = 1L;
+
+	@ExcelProperty("序号")
+	private Integer xh;
+	
+	@ExcelProperty("研发项目编号")
+	private String xmbh;
+
+	@ExcelProperty("研发项目名称")
+	private String xmmc;
+
+	@ExcelProperty("费用类型")
+	private String costType;
+
+ 	@ExcelProperty("日期")
+	@DateTimeFormat(pattern = DateUtil.PATTERN_DATE)
+	@JsonFormat(pattern = DateUtil.PATTERN_DATE)
+	private Date recordDate;
+
+ 	@ExcelProperty("合同名称")
+	private String contractName;
+
+ 	@ExcelProperty("金额")
+	private BigDecimal amount;
+}

+ 40 - 0
kd-service/kd-scientific/src/main/java/org/sky/scientific/mapper/XmDesignCostMapper.java

@@ -0,0 +1,40 @@
+
+package org.sky.scientific.mapper;
+
+import org.sky.scientific.pojo.dto.XmDesignCostQuery;
+import org.sky.scientific.pojo.entity.XmDesignCostEntity;
+import org.sky.scientific.pojo.vo.XmDesignCostVO;
+import org.sky.scientific.excel.XmDesignCostExcel;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.apache.ibatis.annotations.Param;
+import java.util.List;
+
+/**
+ * 项目-设计费用、装备调试费用与试验费用基本信息台账 Mapper 接口
+ *
+ * @author Kd
+ * @since 2025-07-28
+ */
+public interface XmDesignCostMapper extends BaseMapper<XmDesignCostEntity> {
+
+	/**
+	 * 自定义分页
+	 *
+	 * @param page 分页参数
+	 * @param xmDesignCost 查询参数
+	 * @return List<XmDesignCostVO>
+	 */
+	List<XmDesignCostVO> selectXmDesignCostPage(IPage page, @Param("ew") XmDesignCostQuery param);
+
+
+	/**
+	 * 获取导出数据
+	 *
+	 * @param queryWrapper 查询条件
+	 * @return List<XmDesignCostExcel>
+	 */
+	List<XmDesignCostExcel> exportXmDesignCost(@Param("ew") Wrapper<XmDesignCostEntity> queryWrapper);
+
+}

+ 61 - 0
kd-service/kd-scientific/src/main/java/org/sky/scientific/mapper/XmDesignCostMapper.xml

@@ -0,0 +1,61 @@
+<?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.XmDesignCostMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="ResultMap" type="org.sky.scientific.pojo.entity.XmDesignCostEntity">
+        <result column="id" property="id"/>
+        <result column="tenant_id" property="tenantId"/>
+        <result column="year_and_month" property="yearAndMonth"/>
+        <result column="xm_id" property="xmId"/>
+        <result column="cost_type" property="costType"/>
+        <result column="record_date" property="recordDate"/>
+        <result column="contract_name" property="contractName"/>
+        <result column="amount" property="amount"/>
+        <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>
+
+
+    <select id="selectXmDesignCostPage" resultMap="ResultMap" resultType="org.sky.scientific.pojo.dto.XmDesignCostQuery">
+        select dc,*, xm.XMMC, xm.XMBH
+        from kd_xm_design_cost dc
+        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>
+            <if test="ew.xmmc != null and ew.xmmc!=''">
+                and xm.XMMC like concat('%',#{ew.xmmc},'%')
+            </if>
+            <if test="ew.contractName!=null and ew.contractName!=''">
+                and dc.contract_name like concat('%',#{ew.contractName},'%')
+            </if>
+            <if test="ew.costType!=null and ew.costType!=''">
+                and dc.cost_type = #{ew.costType}
+            </if>
+            <if test="ew.amountMin!=null and ew.amountMax!=null">
+                and dc.amount between #{ew.amountMin} and #{ew.amountMax}
+            </if>
+            <if test="ew.recordDateMin!=null and ew.recordDateMax!=null">
+                and dc.record_date between #{ew.recordDateMin} and #{ew.recordDateMax}
+            </if>
+        </where>
+    </select>
+
+
+    <select id="exportXmDesignCost" resultType="org.sky.scientific.excel.XmDesignCostExcel">
+        SELECT * FROM kd_xm_design_cost ${ew.customSqlSegment}
+    </select>
+
+</mapper>

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

@@ -10,6 +10,7 @@
         <result column="asset_id" property="assetId"/>
         <result column="zcbm" property="zcbm"/>
         <result column="user_unicode" property="userUnicode"/>
+        <result column="user_name" property="userName"/>
         <result column="create_user" property="createUser"/>
         <result column="create_dept" property="createDept"/>
         <result column="create_time" property="createTime"/>

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

@@ -67,9 +67,17 @@
         WHERE xm.is_deleted = 0 and DATE_FORMAT(XMKSSJ, '%Y%m') <![CDATA[<=]]> #{yearAndMonth}
         ) xm on xm.id = xa.xm_id
         WHERE #{yearAndMonth} between DATE_FORMAT(xm.XMKSSJ, '%Y%m') and DATE_FORMAT(xm.XMJSSJ,'%Y%m')
-        <if test="zclb!=null">
-            and s.ZCLB= #{zclb}
-        </if>
+        <choose>
+            <when test="zclb=='无形资产'">
+                and s.ZCLB not in ('仪器设备','房屋建筑物')
+            </when>
+            <when test="zclb=='仪器设备'">
+                and s.ZCLB= #{zclb}
+            </when>
+            <when test="zclb=='房屋建筑物'">
+                and s.ZCLB= #{zclb}
+            </when>
+        </choose>
     </select>
 
 </mapper>

+ 40 - 0
kd-service/kd-scientific/src/main/java/org/sky/scientific/service/IXmDesignCostService.java

@@ -0,0 +1,40 @@
+package org.sky.scientific.service;
+
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.sky.core.mp.base.BaseService;
+import org.sky.scientific.excel.XmDesignCostExcel;
+import org.sky.scientific.pojo.dto.XmDesignCostQuery;
+import org.sky.scientific.pojo.entity.XmDesignCostEntity;
+import org.sky.scientific.pojo.vo.XmDesignCostVO;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.util.List;
+
+/**
+ * 项目-设计费用、装备调试费用与试验费用基本信息台账 服务类
+ *
+ * @author Kd
+ * @since 2025-07-28
+ */
+public interface IXmDesignCostService extends BaseService<XmDesignCostEntity> {
+	/**
+	 * 自定义分页
+	 *
+	 * @param page 分页参数
+	 * @param xmDesignCost 查询参数
+	 * @return IPage<XmDesignCostVO>
+	 */
+	IPage<XmDesignCostVO> selectXmDesignCostPage(IPage<XmDesignCostVO> page, XmDesignCostQuery param);
+
+
+	/**
+	 * 导出数据
+	 *
+	 * @param queryWrapper 查询条件
+	 * @return List<XmDesignCostExcel>
+	 */
+	List<XmDesignCostExcel> exportXmDesignCost(Wrapper<XmDesignCostEntity> queryWrapper);
+
+    void importData(MultipartFile file, String yearAndMonth);
+}

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

@@ -35,4 +35,6 @@ public interface IXmIntangibleAssetService extends BaseService<XmIntangibleAsset
 	boolean physicalDeleteByIds(List<Long> ids);
 
 	boolean saveXmIntangibleAsset(XmIntangibleAsset xmAsset);
+
+	boolean updateXmIntangibleAsset(XmIntangibleAsset xmAsset);
 }

+ 91 - 0
kd-service/kd-scientific/src/main/java/org/sky/scientific/service/impl/XmDesignCostServiceImpl.java

@@ -0,0 +1,91 @@
+
+package org.sky.scientific.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import lombok.AllArgsConstructor;
+import org.sky.core.excel.util.ExcelUtil;
+import org.sky.core.log.exception.ServiceException;
+import org.sky.core.mp.base.BaseServiceImpl;
+import org.sky.core.tool.utils.*;
+import org.sky.scientific.excel.XmDesignCostExcel;
+import org.sky.scientific.mapper.XmDesignCostMapper;
+import org.sky.scientific.mapper.XmMapper;
+import org.sky.scientific.pojo.dto.XmDesignCostQuery;
+import org.sky.scientific.pojo.entity.XmDesignCostEntity;
+import org.sky.scientific.pojo.vo.XmDesignCostVO;
+import org.sky.scientific.service.IXmDesignCostService;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Objects;
+
+/**
+ * 项目-设计费用、装备调试费用与试验费用基本信息台账 服务实现类
+ *
+ * @author Kd
+ * @since 2025-07-28
+ */
+@Service
+@AllArgsConstructor
+public class XmDesignCostServiceImpl extends BaseServiceImpl<XmDesignCostMapper, XmDesignCostEntity> implements IXmDesignCostService {
+
+	private final XmMapper xmMapper;
+
+	@Override
+	public IPage<XmDesignCostVO> selectXmDesignCostPage(IPage<XmDesignCostVO> page, XmDesignCostQuery param) {
+		return page.setRecords(baseMapper.selectXmDesignCostPage(page, param));
+	}
+
+
+	@Override
+	public List<XmDesignCostExcel> exportXmDesignCost(Wrapper<XmDesignCostEntity> queryWrapper) {
+		List<XmDesignCostExcel> xmDesignCostList = baseMapper.exportXmDesignCost(queryWrapper);
+		//xmDesignCostList.forEach(xmDesignCost -> {
+		//	xmDesignCost.setTypeName(DictCache.getValue(DictEnum.YES_NO, XmDesignCost.getType()));
+		//});
+		return xmDesignCostList;
+	}
+
+	@Override
+	@Transactional
+	public void importData(MultipartFile file, String yearAndMonth) {
+		if (StringUtil.isBlank(yearAndMonth)) {
+			throw new ServiceException("参数yearAndMonth不能为空");
+		}
+
+		List<XmDesignCostExcel> dataList = ExcelUtil.read(file, XmDesignCostExcel.class);
+		if (CollectionUtil.isEmpty(dataList)) {
+			throw new ServiceException("导入数据为空");
+		}
+
+		List<XmDesignCostEntity> insertList = new ArrayList<>();
+		for (XmDesignCostExcel data : dataList) {
+
+			if(!Func.equals(yearAndMonth,DateUtil.format(data.getRecordDate(), DateUtil.PATTERN_YYYYMM))){
+				throw new ServiceException("日期["+data.getRecordDate()+"]不属于["+yearAndMonth+"]");
+			}
+
+			if (StringUtil.isAllBlank(data.getXmmc(), data.getXmbh())) {
+				throw new ServiceException("序号[" + data.getXh() + "]的研发项目编号和名称都为空,请重新填写数据");
+			}
+			//根据项目名称或编号查询xmId
+			Long xmId = xmMapper.getXmIdByXmmcOrXmbh(yearAndMonth, data.getXmmc(), data.getXmbh());
+			if (xmId == null) {
+				throw new ServiceException("序号[" + data.getXh() + "]的研发项目不存在,请检查模板数据");
+			}
+
+			XmDesignCostEntity entity = Objects.requireNonNull(BeanUtil.copyProperties(data, XmDesignCostEntity.class));
+			entity.setXmId(xmId);
+			entity.setYearAndMonth(yearAndMonth);
+
+			insertList.add(entity);
+		}
+
+		this.saveBatch(insertList);
+	}
+
+}

+ 10 - 2
kd-service/kd-scientific/src/main/java/org/sky/scientific/service/impl/XmIntangibleAssetServiceImpl.java

@@ -91,9 +91,9 @@ public class XmIntangibleAssetServiceImpl extends BaseServiceImpl<XmIntangibleAs
 			}
 		} else {
 			//若无,则获取预算表中的无形资产,研发项目周期(含变更)包含本月的
-			List<YsZjfyycqdtfyEntity> ysList = ysZjfyycqdtfyMapper.selectByYearAndMonth(yearAndMonth, null);
+			List<YsZjfyycqdtfyEntity> ysList = ysZjfyycqdtfyMapper.selectByYearAndMonth(yearAndMonth, "无形资产");
 			if (CollectionUtil.isEmpty(ysList)) {
-				throw new ServiceException("项目预算表中无科研仪器设备");
+				throw new ServiceException("项目预算表中没有无形资产");
 			}
 			List<XmIntangibleAsset> insertList = new ArrayList<>();
 			for (YsZjfyycqdtfyEntity ys : ysList) {
@@ -196,4 +196,12 @@ public class XmIntangibleAssetServiceImpl extends BaseServiceImpl<XmIntangibleAs
 		}
 		return this.save(xmAsset);
 	}
+
+	@Override
+	public boolean updateXmIntangibleAsset(XmIntangibleAsset xmAsset) {
+		if(null == xmAsset.getId()){
+			throw new ServiceException("参数id不能为空");
+		}
+		return this.updateById(xmAsset);
+	}
 }