Browse Source

232323...3

zhoulisky 10 months ago
parent
commit
ce0becbad6
22 changed files with 556 additions and 295 deletions
  1. 2 2
      kd-service-api/kd-scientific-api/src/main/java/org/sky/scientific/pojo/dto/ZcDTO.java
  2. 14 39
      kd-service-api/kd-scientific-api/src/main/java/org/sky/scientific/pojo/entity/ZcEntity.java
  3. 55 0
      kd-service-api/kd-scientific-api/src/main/java/org/sky/scientific/pojo/entity/XmAssetEntity.java
  4. 10 6
      kd-service-api/kd-scientific-api/src/main/java/org/sky/scientific/pojo/entity/YsZjfyycqdtfyEntity.java
  5. 2 2
      kd-service-api/kd-scientific-api/src/main/java/org/sky/scientific/pojo/vo/ZcVO.java
  6. 2 2
      kd-service-api/kd-scientific-api/src/main/java/org/sky/scientific/pojo/vo/YsWxzctxfyVO.java
  7. 2 2
      kd-service-api/kd-scientific-api/src/main/java/org/sky/scientific/pojo/vo/YsZjfyycqdtfyVO.java
  8. 46 34
      kd-service/kd-scientific/src/main/java/org/sky/scientific/controller/ZcController.java
  9. 1 1
      kd-service/kd-scientific/src/main/java/org/sky/scientific/excel/ZcExcel.java
  10. 17 9
      kd-service/kd-scientific/src/main/java/org/sky/scientific/mapper/ZcMapper.java
  11. 27 22
      kd-service/kd-scientific/src/main/java/org/sky/scientific/mapper/ZcMapper.xml
  12. 24 0
      kd-service/kd-scientific/src/main/java/org/sky/scientific/mapper/XmAssetMapper.java
  13. 37 0
      kd-service/kd-scientific/src/main/java/org/sky/scientific/mapper/XmAssetMapper.xml
  14. 1 1
      kd-service/kd-scientific/src/main/java/org/sky/scientific/mapper/YsWxzctxfyMapper.xml
  15. 4 2
      kd-service/kd-scientific/src/main/java/org/sky/scientific/mapper/YsZjfyycqdtfyMapper.xml
  16. 77 0
      kd-service/kd-scientific/src/main/java/org/sky/scientific/service/IAssetService.java
  17. 30 0
      kd-service/kd-scientific/src/main/java/org/sky/scientific/service/IXmAssetService.java
  18. 0 59
      kd-service/kd-scientific/src/main/java/org/sky/scientific/service/IZcService.java
  19. 137 0
      kd-service/kd-scientific/src/main/java/org/sky/scientific/service/impl/AssetServiceImpl.java
  20. 63 0
      kd-service/kd-scientific/src/main/java/org/sky/scientific/service/impl/XmAssetServiceImpl.java
  21. 0 109
      kd-service/kd-scientific/src/main/java/org/sky/scientific/service/impl/ZcServiceImpl.java
  22. 5 5
      kd-service/kd-scientific/src/main/java/org/sky/scientific/wrapper/ZcWrapper.java

+ 2 - 2
kd-service-api/kd-scientific-api/src/main/java/org/sky/scientific/pojo/dto/ZcDTO.java

@@ -1,7 +1,7 @@
 
 package org.sky.scientific.pojo.dto;
 
-import org.sky.scientific.pojo.entity.ZcEntity;
+import org.sky.scientific.pojo.entity.AssetEntity;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import java.io.Serial;
@@ -14,7 +14,7 @@ import java.io.Serial;
  */
 @Data
 @EqualsAndHashCode(callSuper = true)
-public class ZcDTO extends ZcEntity {
+public class AssetDTO extends AssetEntity {
 	@Serial
 	private static final long serialVersionUID = 1L;
 

+ 14 - 39
kd-service-api/kd-scientific-api/src/main/java/org/sky/scientific/pojo/entity/ZcEntity.java

@@ -20,74 +20,49 @@ import java.util.Date;
  * @since 2025-06-29
  */
 @Data
-@TableName("kd_zc")
-@Schema(description = "Zc对象")
+@TableName("kd_asset")
+@Schema(description = "Asset对象")
 @EqualsAndHashCode(callSuper = true)
-public class ZcEntity extends TenantEntity {
+public class AssetEntity extends TenantEntity {
 
 	@Serial
 	private static final long serialVersionUID = 1L;
 
-	/**
-	 * 资产编码
-	 */
 	@Schema(description = "资产编码")
 	private String zcbm;
-	/**
-	 * 资产名称
-	 */
+
 	@Schema(description = "资产名称")
 	private String zcmc;
-	/**
-	 * 所属年月
-	 */
+
 	@Schema(description = "所属年月")
 	private String yearAndMonth;
-	/**
-	 * 资产类别
-	 */
+
 	@Schema(description = "资产类别")
 	private String zclb;
-	/**
-	 * 功率
-	 */
+
 	@Schema(description = "功率")
 	private String gl;
-	/**
-	 * 用途
-	 */
+
 	@Schema(description = "用途")
 	private String yt;
-	/**
-	 * 开始日期
-	 */
+
 	@Schema(description = "开始日期")
 	@DateTimeFormat(pattern = DateUtil.PATTERN_DATE)
 	@JsonFormat(pattern = DateUtil.PATTERN_DATE)
 	private Date kssj;
-	/**
-	 * 使用寿命/月
-	 */
+
 	@Schema(description = "使用寿命/月")
 	private Integer sysm;
-	/**
-	 * 已使用月数
-	 */
+
 	@Schema(description = "已使用月数")
 	private Integer ysysm;
-	/**
-	 * 资产原值(元)
-	 */
+
 	@Schema(description = "资产原值(元)")
 	private Integer zcyz;
-	/**
-	 * 净残值(%)
-	 */
+
 	@Schema(description = "净残值(%)")
 	private Double jcz;
-	/**
-	 * 月折旧额/月摊销额(元)
-	 */
+	 
 	@Schema(description = "月折旧额/月摊销额(元)")
 	private Integer yzje;
 

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

@@ -0,0 +1,55 @@
+
+package org.sky.scientific.pojo.entity;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
+import jakarta.validation.constraints.Size;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.sky.core.tenant.mp.TenantEntity;
+
+import java.io.Serial;
+
+/**
+ * 研发项目固定资产清单
+ *
+ * @author Kd
+ * @since 2025-06-29
+ */
+@Data
+@TableName("kd_xm_asset")
+@EqualsAndHashCode(callSuper = true)
+@Schema
+public class XmAssetEntity extends TenantEntity {
+
+	@Serial
+	private static final long serialVersionUID = 1L;
+
+	@Schema(description = "所属年月,如:202505")
+	@NotBlank(message = "请选择所属年月")
+	@Size(min = 6, max = 6)
+	private String yearAndMonth;
+
+	@Schema(description = "研发项目ID")
+	@NotNull(message = "请选择研发项目")
+	private Long xmId;
+
+	@Schema(description = "项目编号")
+	@TableField(exist = false)
+	private String xmbh;
+
+	@Schema(description = "项目名称")
+	@TableField(exist = false)
+	private String xmmc;
+
+	@NotNull(message = "请选择资产")
+	@Schema(description = "资产ID")
+	private Long assetId;
+
+	@Schema(description = "资产信息")
+	@TableField(exist = false)
+	private AssetEntity asset;
+}

+ 10 - 6
kd-service-api/kd-scientific-api/src/main/java/org/sky/scientific/pojo/entity/YsZjfyycqdtfyEntity.java

@@ -1,13 +1,13 @@
 
 package org.sky.scientific.pojo.entity;
 
-import jakarta.validation.constraints.NotBlank;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.v3.oas.annotations.media.Schema;
 import jakarta.validation.constraints.NotNull;
 import lombok.Data;
-import io.swagger.v3.oas.annotations.media.Schema;
-import com.baomidou.mybatisplus.annotation.TableName;
 import lombok.EqualsAndHashCode;
 import org.sky.core.tenant.mp.TenantEntity;
+
 import java.io.Serial;
 
 /**
@@ -29,9 +29,13 @@ public class YsZjfyycqdtfyEntity extends TenantEntity {
 	@NotNull(message = "请选择研发项目")
 	private Long xmId;
 
-	@Schema(description = "资产编码")
-	@NotBlank(message = "请选择资产")
-	private String zcbm;
+	@Schema(description = "资产id,kd_asset的主键")
+	@NotNull(message = "请选择资产")
+	private Long assetId;
+
+//	@Schema(description = "资产编码")
+//	@NotBlank(message = "请选择资产")
+//	private String zcbm;
 
 	@Schema(description = "在项目中的工作时长(月)")
 	private Integer zzsc;

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

@@ -1,7 +1,7 @@
 
 package org.sky.scientific.pojo.vo;
 
-import org.sky.scientific.pojo.entity.ZcEntity;
+import org.sky.scientific.pojo.entity.AssetEntity;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import java.io.Serial;
@@ -14,7 +14,7 @@ import java.io.Serial;
  */
 @Data
 @EqualsAndHashCode(callSuper = true)
-public class ZcVO extends ZcEntity {
+public class AssetVO extends AssetEntity {
 	@Serial
 	private static final long serialVersionUID = 1L;
 

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

@@ -5,7 +5,7 @@ import io.swagger.v3.oas.annotations.media.Schema;
 import org.sky.scientific.pojo.entity.YsWxzctxfyEntity;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
-import org.sky.scientific.pojo.entity.ZcEntity;
+import org.sky.scientific.pojo.entity.AssetEntity;
 
 import java.io.Serial;
 
@@ -22,5 +22,5 @@ public class YsWxzctxfyVO extends YsWxzctxfyEntity {
 	private static final long serialVersionUID = 1L;
 
 	@Schema(description = "资产信息")
-	private ZcEntity zcEntity;
+	private AssetEntity zcEntity;
 }

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

@@ -5,7 +5,7 @@ import io.swagger.v3.oas.annotations.media.Schema;
 import org.sky.scientific.pojo.entity.YsZjfyycqdtfyEntity;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
-import org.sky.scientific.pojo.entity.ZcEntity;
+import org.sky.scientific.pojo.entity.AssetEntity;
 
 import java.io.Serial;
 
@@ -22,6 +22,6 @@ public class YsZjfyycqdtfyVO extends YsZjfyycqdtfyEntity {
 	private static final long serialVersionUID = 1L;
 
 	@Schema(description = "资产信息")
-	private ZcEntity zcEntity;
+	private AssetEntity zcEntity;
 
 }

+ 46 - 34
kd-service/kd-scientific/src/main/java/org/sky/scientific/controller/ZcController.java

@@ -15,15 +15,16 @@ 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.ZcExcel;
-import org.sky.scientific.pojo.dto.ZcDTO;
-import org.sky.scientific.pojo.entity.ZcEntity;
-import org.sky.scientific.pojo.vo.ZcVO;
-import org.sky.scientific.service.IZcService;
+import org.sky.scientific.excel.AssetExcel;
+import org.sky.scientific.pojo.dto.AssetDTO;
+import org.sky.scientific.pojo.entity.AssetEntity;
+import org.sky.scientific.pojo.entity.XmAssetEntity;
+import org.sky.scientific.pojo.vo.AssetVO;
+import org.sky.scientific.service.IAssetService;
+import org.sky.scientific.service.IXmAssetService;
 import org.sky.scientific.wrapper.ZcWrapper;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
@@ -39,83 +40,94 @@ import java.util.Map;
  */
 @RestController
 @AllArgsConstructor
-@RequestMapping("/zc")
+@RequestMapping("/asset")
 @Tag(name = "科研资产管理", description = "资产表接口")
-public class ZcController extends KdController {
+public class AssetController extends KdController {
 
-	private final IZcService service;
+	private final IAssetService service;
+	private final IXmAssetService xmAssetService;
 
-	/**
-	 * 资产表 详情
-	 */
 	@GetMapping("/detail")
 	@ApiOperationSupport(order = 1)
 	@Operation(summary = "详情", description  = "传入zc")
-	public R<ZcVO> detail(ZcEntity zc) {
-		ZcEntity detail = service.getOne(Condition.getQueryWrapper(zc));
+	public R<AssetVO> detail(AssetEntity zc) {
+		AssetEntity detail = service.getOne(Condition.getQueryWrapper(zc));
 		return R.data(ZcWrapper.build().entityVO(detail));
 	}
 
 	@GetMapping("/simple/list")
 	@ApiOperationSupport(order = 2)
 	@Operation(summary = "列表-所有不分页", description  = "")
-	public R<List<ZcEntity>> list() {
-		List<ZcEntity> list = service.selectZcList();
+	public R<List<AssetEntity>> list() {
+		List<AssetEntity> list = service.selectAssetList();
 		return R.data(list);
 	}
 
 	@GetMapping("/page")
 	@ApiOperationSupport(order = 3)
 	@Operation(summary = "分页", description  = "传入zc")
-	public R<IPage<ZcVO>> page(ZcVO zc, Query query) {
-		IPage<ZcVO> pages = service.selectZcPage(Condition.getPage(query), zc);
+	public R<IPage<AssetVO>> page(AssetVO assetVO, Query query) {
+		IPage<AssetVO> pages = service.selectAssetPage(Condition.getPage(query), assetVO);
 		return R.data(pages);
 	}
 
 	@PostMapping("/save")
 	@ApiOperationSupport(order = 4)
 	@Operation(summary = "新增", description  = "传入zc")
-	public R save(@Valid @RequestBody ZcEntity zc) {
-		return R.status(service.save(zc));
+	public R save(@Valid @RequestBody AssetEntity asset) {
+		return R.status(service.save(asset));
 	}
 
 	@PostMapping("/update")
 	@ApiOperationSupport(order = 5)
 	@Operation(summary = "修改", description  = "传入zc")
-	public R update(@Valid @RequestBody ZcEntity zc) {
-		return R.status(service.updateById(zc));
+	public R update(@Valid @RequestBody AssetEntity asset) {
+		return R.status(service.updateById(asset));
 	}
 
 	@PostMapping("/remove")
 	@ApiOperationSupport(order = 7)
-	@Operation(summary = "逻辑删除", description  = "传入ids")
+	@Operation(summary = "删除", description  = "传入ids")
 	public R remove(@Parameter(description = "主键集合", required = true) @RequestParam String ids) {
-		return R.status(service.deleteLogic(Func.toLongList(ids)));
+		return R.status(service.physicalDeleteByIds(Func.toLongList(ids)));
 	}
 
 	@PostMapping("import")
 	@ApiOperationSupport(order = 12)
 	@Operation(summary = "导入", description = "传入excel")
-	public R importZc(MultipartFile file, String yearAndMonth) {
-		service.importZc(file, yearAndMonth);
+	public R importAsset(MultipartFile file, String yearAndMonth) {
+		service.importAsset(file, yearAndMonth);
 		return R.success("操作成功");
 	}
 
 	@GetMapping("/fetchLastMonthData")
 	@ApiOperationSupport(order = 10)
 	@Operation(summary = "读取上个月资产名单", description = "传入选中的年月,比如2025-06,则读取2025-05的数据到06月")
-	public R<Boolean> fetchLastMonthData(ZcDTO zc) {
-		return R.status(service.fetchLastMonthData(zc));
+	public R<Boolean> fetchLastMonthData(AssetDTO asset) {
+		return R.status(service.fetchLastMonthData(asset));
 	}
 
-	@IsAdmin
-	@GetMapping("/export-zc")
+	@GetMapping("/export")
 	@ApiOperationSupport(order = 9)
 	@Operation(summary = "导出数据", description  = "传入zc")
-	public void exportZc(@Parameter(hidden = true) @RequestParam Map<String, Object> zc, KdUser kdUser, HttpServletResponse response) {
-		QueryWrapper<ZcEntity> queryWrapper = Condition.getQueryWrapper(zc, ZcEntity.class);
-		List<ZcExcel> list = service.exportZc(queryWrapper);
-		ExcelUtil.export(response, "资产表数据" + DateUtil.time(), "资产表数据表", list, ZcExcel.class);
+	public void exportZc(@Parameter(hidden = true) @RequestParam Map<String, Object> asset, KdUser kdUser, HttpServletResponse response) {
+		QueryWrapper<AssetEntity> queryWrapper = Condition.getQueryWrapper(asset, AssetEntity.class);
+		List<AssetExcel> list = service.exportAsset(queryWrapper);
+		ExcelUtil.export(response, "资产表数据" + DateUtil.time(), "资产表数据表", list, AssetExcel.class);
 	}
 
+	@GetMapping("/keyanyiqishebeimingxibiao/page")
+	@ApiOperationSupport(order = 20)
+	@Operation(summary = "科研仪器设备明细表-分页")
+	public R<IPage<XmAssetEntity>> pageXm(XmAssetEntity xmAsset, Query query) {
+		IPage<XmAssetEntity> pages = xmAssetService.keyanyiqishebeimingxibiao_fenye(Condition.getPage(query), xmAsset);
+		return R.data(pages);
+	}
+
+	@GetMapping("/xm/fetchData")
+	@ApiOperationSupport(order = 21)
+	@Operation(summary = "科研仪器设备明细表-直接引用")
+	public R<Boolean> fetchData(String yearAndMonth) {
+		return R.status(service.keyanyiqishebeimingxibiao_zhijieyinyong(yearAndMonth));
+	}
 }

+ 1 - 1
kd-service/kd-scientific/src/main/java/org/sky/scientific/excel/ZcExcel.java

@@ -27,7 +27,7 @@ import java.util.Date;
 @ColumnWidth(25)
 @HeadRowHeight(20)
 @ContentRowHeight(18)
-public class ZcExcel implements Serializable {
+public class AssetExcel implements Serializable {
 
 	@Serial
 	private static final long serialVersionUID = 1L;

+ 17 - 9
kd-service/kd-scientific/src/main/java/org/sky/scientific/mapper/ZcMapper.java

@@ -1,13 +1,14 @@
 
 package org.sky.scientific.mapper;
 
-import org.sky.scientific.pojo.entity.ZcEntity;
-import org.sky.scientific.pojo.vo.ZcVO;
-import org.sky.scientific.excel.ZcExcel;
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.conditions.Wrapper;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import org.apache.ibatis.annotations.Param;
+import org.sky.scientific.excel.AssetExcel;
+import org.sky.scientific.pojo.entity.AssetEntity;
+import org.sky.scientific.pojo.vo.AssetVO;
+
 import java.util.List;
 
 /**
@@ -16,7 +17,7 @@ import java.util.List;
  * @author Kd
  * @since 2025-06-29
  */
-public interface ZcMapper extends BaseMapper<ZcEntity> {
+public interface AssetMapper extends BaseMapper<AssetEntity> {
 
 	/**
 	 * 自定义分页
@@ -25,7 +26,7 @@ public interface ZcMapper extends BaseMapper<ZcEntity> {
 	 * @param zc 查询参数
 	 * @return List<ZcVO>
 	 */
-	List<ZcVO> selectZcPage(IPage page, @Param("zc") ZcVO zc);
+	List<AssetVO> selectAssetPage(IPage page, @Param("asset") AssetVO asset);
 
 
 	/**
@@ -34,9 +35,16 @@ public interface ZcMapper extends BaseMapper<ZcEntity> {
 	 * @param queryWrapper 查询条件
 	 * @return List<ZcExcel>
 	 */
-	List<ZcExcel> exportZc(@Param("ew") Wrapper<ZcEntity> queryWrapper);
+	List<AssetExcel> exportAsset(@Param("ew") Wrapper<AssetEntity> queryWrapper);
 
-	ZcEntity selectLastOneByZcbm(@Param("zcbm") String zcbm);
+	AssetEntity selectLastOneByZcbm(@Param("zcbm") String zcbm);
 
-	List<ZcEntity> selectZcList();
+	List<AssetEntity> selectAssetList();
+
+	/**
+	 * 批量删除
+	 * @param ids
+	 * @return
+	 */
+	boolean physicalDeleteByIds(List<Long> ids);
 }

+ 27 - 22
kd-service/kd-scientific/src/main/java/org/sky/scientific/mapper/ZcMapper.xml

@@ -1,9 +1,9 @@
 <?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.ZcMapper">
+<mapper namespace="org.sky.scientific.mapper.AssetMapper">
 
     <!-- 通用查询映射结果 -->
-    <resultMap id="zcResultMap" type="org.sky.scientific.pojo.entity.ZcEntity">
+    <resultMap id="ResultMap" type="org.sky.scientific.pojo.entity.AssetEntity">
         <result column="id" property="id"/>
         <result column="tenant_id" property="tenantId"/>
         <result column="ZCBM" property="zcbm"/>
@@ -27,40 +27,45 @@
         <result column="is_deleted" property="isDeleted"/>
     </resultMap>
 
-    <select id="selectZcPage" resultMap="zcResultMap">
+    <select id="selectAssetPage" resultMap="ResultMap">
         SELECT t.*
-        FROM kd_zc t
+        FROM kd_asset t
         INNER JOIN (
-            SELECT ZCBM, MAX(year_and_month) as max_month FROM kd_zc
+            SELECT ZCBM, MAX(year_and_month) as max_month FROM kd_asset
             WHERE  is_deleted = 0
-            <if test="zc.yearAndMonth.length()==4">AND left(year_and_month, 4) = #{zc.yearAndMonth}</if>
-            <if test="zc.yearAndMonth.length()==6">AND year_and_month = #{zc.yearAndMonth}</if>
+            <if test="asset.yearAndMonth.length()==4">AND left(year_and_month, 4) = #{asset.yearAndMonth}</if>
+            <if test="asset.yearAndMonth.length()==6">AND year_and_month = #{asset.yearAndMonth}</if>
             GROUP BY ZCBM
         ) tm ON t.ZCBM = tm.ZCBM AND t.year_and_month = tm.max_month
         ORDER BY t.ZCBM, t.year_and_month DESC
     </select>
 
-
-    <select id="exportZc" resultType="org.sky.scientific.excel.ZcExcel">
-        SELECT * FROM kd_zc ${ew.customSqlSegment}
-    </select>
-
-    <select id="selectLastOneByZcbm" resultMap="zcResultMap">
-        select * from kd_zc z
-        where z.ZCBM = #{zcbm} and z.year_and_month = (select max(year_and_month) from kd_zc where ZCBM = #{zcbm})
+    <select id="selectLastOneByZcbm" resultMap="ResultMap">
+        select * from kd_asset z
+        where z.ZCBM = #{zcbm} and z.year_and_month = (select max(year_and_month) from kd_asset where ZCBM = #{zcbm})
     </select>
 
-    <select id="selectZcList" resultMap="zcResultMap">
+    <select id="selectAssetList" resultMap="ResultMap">
         SELECT t.*
-        FROM kd_zc t
-                 INNER JOIN (
-            SELECT
-                ZCBM,
-                MAX(year_and_month) as max_month
-            FROM kd_zc
+        FROM kd_asset t
+        INNER JOIN (
+            SELECT ZCBM,MAX(year_and_month) as max_month
+            FROM kd_asset
             GROUP BY ZCBM
         ) tm ON t.ZCBM = tm.ZCBM AND t.year_and_month = tm.max_month
         ORDER BY t.ZCBM, t.year_and_month DESC
     </select>
 
+    <delete id="physicalDeleteByIds">
+        DELETE FROM kd_asset
+        WHERE id IN
+        <foreach item="id" collection="list" separator="," open="(" close=")" index="">
+            #{id}
+        </foreach>
+    </delete>
+
+    <select id="exportAsset" resultType="org.sky.scientific.excel.AssetExcel">
+        SELECT * FROM kd_asset ${ew.customSqlSegment}
+    </select>
+
 </mapper>

+ 24 - 0
kd-service/kd-scientific/src/main/java/org/sky/scientific/mapper/XmAssetMapper.java

@@ -0,0 +1,24 @@
+
+package org.sky.scientific.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.sky.scientific.pojo.entity.XmAssetEntity;
+
+import java.util.List;
+
+/**
+ * 研发项目固定资产清单 Mapper 接口
+ *
+ * @author Kd
+ * @since 2025-06-11
+ */
+public interface XmAssetMapper extends BaseMapper<XmAssetEntity> {
+
+	/**
+	 * 获取项目资产表数据
+	 * @param yearAndMonth
+	 * @return
+	 */
+	List<XmAssetEntity> keyanyiqishebeimingxibiao_getLastMonthData(String yearAndMonth);
+
+}

+ 37 - 0
kd-service/kd-scientific/src/main/java/org/sky/scientific/mapper/XmAssetMapper.xml

@@ -0,0 +1,37 @@
+<?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.XmAssetMapper">
+
+    <resultMap id="XmAssetResultMap" type="org.sky.scientific.pojo.entity.XmAssetEntity">
+        <id 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="asset_id" property="assetId"/>
+        <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="keyanyiqishebeimingxibiao_getLastMonthData"
+            resultMap="XmAssetResultMap">
+        SELECT xa.*
+        FROM kd_xm_asset xa
+                 INNER JOIN
+             (
+                 SELECT
+                     xm.id,
+                     COALESCE( (SELECT bgrz.BGHDZ FROM kd_xm_bgrz bgrz WHERE bgrz.XM_ID = xm.id AND bgrz.ZDMC = 'XMKSSJ' AND DATE_FORMAT(bgrz.BGSXSJ,'%Y%m') <![CDATA[<=]]> #{yearAndMonth} ORDER BY bgrz.BGSXSJ DESC LIMIT 1),XMKSSJ) AS XMKSSJ,
+                     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
+                   and DATE_FORMAT(XMKSSJ, '%Y%m') <![CDATA[<=]]> #{yearAndMonth}
+             ) xm on xm.id = xa.xm_id
+        WHERE xa.year_and_month = #{yearAndMonth} and #{yearAndMonth} between DATE_FORMAT(xm.XMKSSJ, '%Y%m') and DATE_FORMAT(xm.XMJSSJ,'%Y%m')
+    </select>
+
+</mapper>

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

@@ -21,7 +21,7 @@
     </resultMap>
 
     <resultMap id="ResultVoMap" type="org.sky.scientific.pojo.vo.YsWxzctxfyVO" extends="ysWxzctxfyResultMap">
-        <association property="zcEntity" column="ZCBM" select="org.sky.scientific.mapper.ZcMapper.selectLastOneByZcbm"/>
+        <association property="zcEntity" column="ZCBM" select="org.sky.scientific.mapper.AssetMapper.selectLastOneByZcbm"/>
     </resultMap>
 
     <delete id="physicalDeleteByIds">

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

@@ -7,6 +7,7 @@
         <result column="id" property="id"/>
         <result column="tenant_id" property="tenantId"/>
         <result column="XM_ID" property="xmId"/>
+        <result column="asset_id" property="assetId"/>
         <result column="ZCBM" property="zcbm"/>
         <result column="ZZSC" property="zzsc"/>
         <result column="CQDTFYMC" property="cqdtfymc"/>
@@ -21,7 +22,7 @@
     </resultMap>
 
     <resultMap id="ResultVoMap" type="org.sky.scientific.pojo.vo.YsZjfyycqdtfyVO" extends="ysZjfyycqdtfyResultMap">
-        <association property="zcEntity" column="ZCBM" select="org.sky.scientific.mapper.ZcMapper.selectLastOneByZcbm"/>
+        <association property="zcEntity" column="ZCBM" select="org.sky.scientific.mapper.AssetMapper.selectLastOneByZcbm"/>
     </resultMap>
 
     <delete id="physicalDeleteByIds">
@@ -39,10 +40,11 @@
         <if test="ysZjfyycqdtfy.xmId!=null">and XM_ID = #{ysZjfyycqdtfy.xmId}</if>
     </select>
 
-
     <select id="exportYsZjfyycqdtfy" resultType="org.sky.scientific.excel.YsZjfyycqdtfyExcel">
         SELECT *
         FROM kd_ys_zjfyycqdtfy ${ew.customSqlSegment}
     </select>
 
+    <select id="selectByDate" resultMap=""
+
 </mapper>

+ 77 - 0
kd-service/kd-scientific/src/main/java/org/sky/scientific/service/IAssetService.java

@@ -0,0 +1,77 @@
+
+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.AssetExcel;
+import org.sky.scientific.pojo.dto.AssetDTO;
+import org.sky.scientific.pojo.entity.AssetEntity;
+import org.sky.scientific.pojo.entity.XmAssetEntity;
+import org.sky.scientific.pojo.vo.AssetVO;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.util.List;
+
+/**
+ * 资产表 服务类
+ *
+ * @author Kd
+ * @since 2025-06-29
+ */
+public interface IAssetService extends BaseService<AssetEntity> {
+	/**
+	 * 自定义分页
+	 *
+	 * @param page 分页参数
+	 * @param zc 查询参数
+	 * @return IPage<ZcVO>
+	 */
+	IPage<AssetVO> selectAssetPage(IPage<AssetVO> page, AssetVO asset);
+
+
+	/**
+	 * 导入
+	 * @param file
+	 * @param yearAndMonth
+	 */
+    void importAsset(MultipartFile file, String yearAndMonth);
+
+	/**
+	 * 读取上个月资产名单
+	 * @param zc
+	 * @return
+	 */
+	boolean fetchLastMonthData(AssetDTO asset);
+
+	/**
+	 * 获取资产列表
+	 * @return
+	 */
+	List<AssetEntity> selectAssetList();
+
+	boolean physicalDeleteByIds(List<Long> longList);
+
+	/**
+	 * 导出数据
+	 *
+	 * @param queryWrapper 查询条件
+	 * @return List<ZcExcel>
+	 */
+	List<AssetExcel> exportAsset(Wrapper<AssetEntity> queryWrapper);
+
+	/**
+	 * 科研仪器设备明细表-分页
+	 * @param page
+	 * @param xmAsset
+	 * @return
+	 */
+	IPage<XmAssetEntity> keyanyiqishebeimingxibiao_fenye(IPage<XmAssetEntity> page, XmAssetEntity xmAsset);
+
+	/**
+	 * 科研仪器设备明细表-直接引用
+	 * @param asset
+	 * @return
+	 */
+	boolean keyanyiqishebeimingxibiao_zhijieyinyong(String yearAndMonth);
+}

+ 30 - 0
kd-service/kd-scientific/src/main/java/org/sky/scientific/service/IXmAssetService.java

@@ -0,0 +1,30 @@
+
+package org.sky.scientific.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.sky.core.mp.base.BaseService;
+import org.sky.scientific.pojo.entity.XmAssetEntity;
+
+/**
+ * 研发项目固定资产表 服务类
+ *
+ * @author Kd
+ * @since 2025-06-29
+ */
+public interface IXmAssetService extends BaseService<XmAssetEntity> {
+
+	/**
+	 * 科研仪器设备明细表-分页
+	 * @param page
+	 * @param xmAsset
+	 * @return
+	 */
+	IPage<XmAssetEntity> keyanyiqishebeimingxibiao_fenye(IPage<XmAssetEntity> page, XmAssetEntity xmAsset);
+
+	/**
+	 * 科研仪器设备明细表-直接引用
+	 * @param asset
+	 * @return
+	 */
+	boolean keyanyiqishebeimingxibiao_zhijieyinyong(String yearAndMonth);
+}

+ 0 - 59
kd-service/kd-scientific/src/main/java/org/sky/scientific/service/IZcService.java

@@ -1,59 +0,0 @@
-
-package org.sky.scientific.service;
-
-import com.baomidou.mybatisplus.core.conditions.Wrapper;
-import org.sky.scientific.pojo.dto.ZcDTO;
-import org.sky.scientific.pojo.entity.ZcEntity;
-import org.sky.scientific.pojo.vo.ZcVO;
-import org.sky.scientific.excel.ZcExcel;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import org.sky.core.mp.base.BaseService;
-import org.springframework.web.multipart.MultipartFile;
-
-import java.util.List;
-
-/**
- * 资产表 服务类
- *
- * @author Kd
- * @since 2025-06-29
- */
-public interface IZcService extends BaseService<ZcEntity> {
-	/**
-	 * 自定义分页
-	 *
-	 * @param page 分页参数
-	 * @param zc 查询参数
-	 * @return IPage<ZcVO>
-	 */
-	IPage<ZcVO> selectZcPage(IPage<ZcVO> page, ZcVO zc);
-
-
-	/**
-	 * 导出数据
-	 *
-	 * @param queryWrapper 查询条件
-	 * @return List<ZcExcel>
-	 */
-	List<ZcExcel> exportZc(Wrapper<ZcEntity> queryWrapper);
-
-	/**
-	 * 导入
-	 * @param file
-	 * @param yearAndMonth
-	 */
-    void importZc(MultipartFile file, String yearAndMonth);
-
-	/**
-	 * 读取上个月资产名单
-	 * @param zc
-	 * @return
-	 */
-	boolean fetchLastMonthData(ZcDTO zc);
-
-	/**
-	 * 获取资产列表
-	 * @return
-	 */
-	List<ZcEntity> selectZcList();
-}

+ 137 - 0
kd-service/kd-scientific/src/main/java/org/sky/scientific/service/impl/AssetServiceImpl.java

@@ -0,0 +1,137 @@
+
+package org.sky.scientific.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import lombok.extern.slf4j.Slf4j;
+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.BeanUtil;
+import org.sky.core.tool.utils.CollectionUtil;
+import org.sky.core.tool.utils.DateUtil;
+import org.sky.core.tool.utils.StringUtil;
+import org.sky.scientific.excel.AssetExcel;
+import org.sky.scientific.mapper.AssetMapper;
+import org.sky.scientific.pojo.dto.AssetDTO;
+import org.sky.scientific.pojo.entity.AssetEntity;
+import org.sky.scientific.pojo.entity.XmAssetEntity;
+import org.sky.scientific.pojo.vo.AssetVO;
+import org.sky.scientific.service.IAssetService;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.util.Date;
+import java.util.List;
+import java.util.Objects;
+
+/**
+ * 资产表 服务实现类
+ *
+ * @author Kd
+ * @since 2025-06-29
+ */
+@Slf4j
+@Service
+public class AssetServiceImpl extends BaseServiceImpl<AssetMapper, AssetEntity> implements IAssetService {
+
+	@Override
+	public IPage<AssetVO> selectAssetPage(IPage<AssetVO> page, AssetVO asset) {
+		return page.setRecords(baseMapper.selectAssetPage(page, asset));
+	}
+
+	@Override
+	public void importAsset(MultipartFile file, String yearAndMonth) {
+
+		List<AssetExcel> data = ExcelUtil.read(file, AssetExcel.class);
+
+		for (AssetExcel excel : data) {
+			AssetEntity zc = Objects.requireNonNull(BeanUtil.copyProperties(excel, AssetDTO.class));
+			zc.setYearAndMonth(yearAndMonth);
+			//yearAndMonth 是否存在该物资
+			LambdaQueryWrapper<AssetEntity> queryWrapper = Wrappers.lambdaQuery();
+			queryWrapper.eq(AssetEntity::getZcbm, excel.getZcbm());
+			queryWrapper.eq(AssetEntity::getYearAndMonth, yearAndMonth);
+			if (this.count(queryWrapper) > 0) {
+				throw new ServiceException("资产编号【" + excel.getZcbm() + "】已存在");
+			}
+			this.save(zc);
+		}
+	}
+
+	@Transactional
+	@Override
+	public boolean fetchLastMonthData(AssetDTO zc) {
+		//查询上个月的数据
+		//得到上个月的年月
+		String lastDate = DateUtil.format(DateUtil.minusMonths(DateUtil.parse(zc.getYearAndMonth(), DateUtil.PATTERN_YYYYMM), 1), DateUtil.PATTERN_YYYYMM);
+		LambdaQueryWrapper<AssetEntity> queryWrapper = Wrappers.<AssetEntity>lambdaQuery().eq(AssetEntity::getYearAndMonth, lastDate);
+		List<AssetEntity> lastMonthDataList = this.baseMapper.selectList(queryWrapper);
+		if (CollectionUtil.isEmpty(lastMonthDataList)) {
+			throw new ServiceException("上个月资产数据为空");
+		}
+		//与本月数据对比,去重后保存至数据库
+//		Integer okCount = 0;
+		for (AssetEntity temp : lastMonthDataList) {
+			LambdaQueryWrapper<AssetEntity> qw = Wrappers.<AssetEntity>lambdaQuery().eq(AssetEntity::getZcbm, temp.getZcbm()).eq(AssetEntity::getYearAndMonth, zc.getYearAndMonth());
+			if (this.baseMapper.selectCount(qw) > 0) {
+				throw new ServiceException("资产【" + temp.getZcbm() + "】已存在");
+//				log.info("资产【{}】已存在, 年月【{}】", temp.getZcbm(), zc.getYearAndMonth());
+//				continue;
+			} else {
+//				okCount++;
+				temp.setYearAndMonth(zc.getYearAndMonth());
+				temp.setYsysm(temp.getYsysm() + 1);
+				//使用寿命-已使用月份数=0时,即已足额折旧
+				temp.setStatus((temp.getSysm() - temp.getYsysm() == 0) ? 2 : 0);
+				temp.setId(null);
+				this.save(temp);
+			}
+		}
+//		log.info("{}共{}个资产,成功导入【{}】条数据", lastDate, lastMonthDataList.size(), okCount);
+		return true;
+	}
+
+	@Override
+	public List<AssetEntity> selectAssetList() {
+		return baseMapper.selectAssetList();
+	}
+
+	@Override
+	public boolean physicalDeleteByIds(List<Long> ids) {
+		return baseMapper.physicalDeleteByIds(ids);
+	}
+
+	@Override
+	public List<AssetExcel> exportAsset(Wrapper<AssetEntity> queryWrapper) {
+		List<AssetExcel> assetList = baseMapper.exportAsset(queryWrapper);
+		//zcList.forEach(zc -> {
+		//	zc.setTypeName(DictCache.getValue(DictEnum.YES_NO, Zc.getType()));
+		//});
+		return assetList;
+	}
+
+	@Override
+	public IPage<XmAssetEntity> keyanyiqishebeimingxibiao_fenye(IPage<XmAssetEntity> page, XmAssetEntity xmAsset) {
+		if(StringUtil.isBlank(xmAsset.getYearAndMonth())){
+			throw new ServiceException("参数yearAndMonth不能为空");
+		}
+		Date lastDate = DateUtil.minusMonths(DateUtil.parse(xmAsset.getYearAndMonth(), DateUtil.PATTERN_YYYYMM), 1);
+		//获取上个月数据
+		List<XmAssetEntity> lastMonthList = baseMapper.keyanyiqishebeimingxibiao_getLastMonthData(xmAsset.getYearAndMonth());
+		if(!CollectionUtil.isEmpty(lastMonthList)){
+
+		}else {
+			//若无,则获取预算表中的科研仪器设备,研发项目周期(含变更)包含本月的
+		}
+		return null;
+	}
+
+	@Override
+	public boolean keyanyiqishebeimingxibiao_zhijieyinyong(String yearAndMonth) {
+		return false;
+	}
+}

+ 63 - 0
kd-service/kd-scientific/src/main/java/org/sky/scientific/service/impl/XmAssetServiceImpl.java

@@ -0,0 +1,63 @@
+
+package org.sky.scientific.service.impl;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import lombok.extern.slf4j.Slf4j;
+import org.sky.core.log.exception.ServiceException;
+import org.sky.core.mp.base.BaseServiceImpl;
+import org.sky.core.tool.utils.CollectionUtil;
+import org.sky.core.tool.utils.DateUtil;
+import org.sky.core.tool.utils.StringUtil;
+import org.sky.scientific.mapper.XmAssetMapper;
+import org.sky.scientific.pojo.entity.XmAssetEntity;
+import org.sky.scientific.service.IXmAssetService;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 研发项目固定资产表 服务实现类
+ *
+ * @author Kd
+ * @since 2025-06-29
+ */
+@Slf4j
+@Service
+public class XmAssetServiceImpl extends BaseServiceImpl<XmAssetMapper, XmAssetEntity> implements IXmAssetService {
+
+
+
+	@Override
+	public IPage<XmAssetEntity> keyanyiqishebeimingxibiao_fenye(IPage<XmAssetEntity> page, XmAssetEntity xmAsset) {
+
+		return null;
+	}
+
+	@Override
+	public boolean keyanyiqishebeimingxibiao_zhijieyinyong(String yearAndMonth) {
+		if(StringUtil.isBlank(yearAndMonth)){
+			throw new ServiceException("参数yearAndMonth不能为空");
+		}
+		Date lastDate = DateUtil.minusMonths(DateUtil.parse(yearAndMonth, DateUtil.PATTERN_YYYYMM), 1);
+		//获取上个月数据
+		List<XmAssetEntity> lastMonthList = baseMapper.keyanyiqishebeimingxibiao_getLastMonthData(DateUtil.format(lastDate, DateUtil.PATTERN_YYYYMM));
+		if(!CollectionUtil.isEmpty(lastMonthList)){
+			//复制上个月数据到本月
+			List<XmAssetEntity> insertList = new ArrayList<>();
+			for (XmAssetEntity dbAsset : lastMonthList) {
+				XmAssetEntity asset = new XmAssetEntity();
+				asset.setYearAndMonth(yearAndMonth);
+				asset.setXmId(dbAsset.getXmId());
+				asset.setAssetId(dbAsset.getAssetId());
+				insertList.add(asset);
+			}
+			return this.saveBatch(insertList);
+		}else {
+			//若无,则获取预算表中的科研仪器设备,研发项目周期(含变更)包含本月的
+
+		}
+		return true;
+	}
+}

+ 0 - 109
kd-service/kd-scientific/src/main/java/org/sky/scientific/service/impl/ZcServiceImpl.java

@@ -1,109 +0,0 @@
-
-package org.sky.scientific.service.impl;
-
-import com.baomidou.mybatisplus.core.conditions.Wrapper;
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import lombok.extern.slf4j.Slf4j;
-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.BeanUtil;
-import org.sky.core.tool.utils.CollectionUtil;
-import org.sky.core.tool.utils.DateUtil;
-import org.sky.scientific.excel.ZcExcel;
-import org.sky.scientific.mapper.ZcMapper;
-import org.sky.scientific.pojo.dto.ZcDTO;
-import org.sky.scientific.pojo.entity.ZcEntity;
-import org.sky.scientific.pojo.vo.ZcVO;
-import org.sky.scientific.service.IZcService;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-import org.springframework.web.multipart.MultipartFile;
-
-import java.util.List;
-import java.util.Objects;
-
-/**
- * 资产表 服务实现类
- *
- * @author Kd
- * @since 2025-06-29
- */
-@Slf4j
-@Service
-public class ZcServiceImpl extends BaseServiceImpl<ZcMapper, ZcEntity> implements IZcService {
-
-	@Override
-	public IPage<ZcVO> selectZcPage(IPage<ZcVO> page, ZcVO zc) {
-		return page.setRecords(baseMapper.selectZcPage(page, zc));
-	}
-
-	@Override
-	public void importZc(MultipartFile file, String yearAndMonth) {
-
-		List<ZcExcel> data = ExcelUtil.read(file, ZcExcel.class);
-
-		for (ZcExcel excel : data) {
-			ZcEntity zc = Objects.requireNonNull(BeanUtil.copyProperties(excel, ZcDTO.class));
-			zc.setYearAndMonth(yearAndMonth);
-			//yearAndMonth 是否存在该物资
-			LambdaQueryWrapper<ZcEntity> queryWrapper = Wrappers.lambdaQuery();
-			queryWrapper.eq(ZcEntity::getZcbm, excel.getZcbm());
-			queryWrapper.eq(ZcEntity::getYearAndMonth, yearAndMonth);
-			if (this.count(queryWrapper) > 0) {
-				throw new ServiceException("资产编号【" + excel.getZcbm() + "】已存在");
-			}
-			this.save(zc);
-		}
-	}
-
-	@Transactional
-	@Override
-	public boolean fetchLastMonthData(ZcDTO zc) {
-		//查询上个月的数据
-		//得到上个月的年月
-		String lastDate = DateUtil.format(DateUtil.minusMonths(DateUtil.parse(zc.getYearAndMonth(), DateUtil.PATTERN_YYYYMM), 1), DateUtil.PATTERN_YYYYMM);
-		LambdaQueryWrapper<ZcEntity> queryWrapper = Wrappers.<ZcEntity>lambdaQuery().eq(ZcEntity::getYearAndMonth, lastDate);
-		List<ZcEntity> lastMonthDataList = this.baseMapper.selectList(queryWrapper);
-		if (CollectionUtil.isEmpty(lastMonthDataList)) {
-			throw new ServiceException("上个月资产数据为空");
-		}
-		//与本月数据对比,去重后保存至数据库
-//		Integer okCount = 0;
-		for (ZcEntity temp : lastMonthDataList) {
-			LambdaQueryWrapper<ZcEntity> qw = Wrappers.<ZcEntity>lambdaQuery().eq(ZcEntity::getZcbm, temp.getZcbm()).eq(ZcEntity::getYearAndMonth, zc.getYearAndMonth());
-			if (this.baseMapper.selectCount(qw) > 0) {
-				throw new ServiceException("资产【" + temp.getZcbm() + "】已存在");
-//				log.info("资产【{}】已存在, 年月【{}】", temp.getZcbm(), zc.getYearAndMonth());
-//				continue;
-			} else {
-//				okCount++;
-				temp.setYearAndMonth(zc.getYearAndMonth());
-				temp.setYsysm(temp.getYsysm() + 1);
-				//使用寿命-已使用月份数=0时,即已足额折旧
-				temp.setStatus((temp.getSysm() - temp.getYsysm() == 0) ? 2 : 0);
-				temp.setId(null);
-				this.save(temp);
-			}
-		}
-//		log.info("{}共{}个资产,成功导入【{}】条数据", lastDate, lastMonthDataList.size(), okCount);
-		return true;
-	}
-
-	@Override
-	public List<ZcEntity> selectZcList() {
-		return baseMapper.selectZcList();
-	}
-
-	@Override
-
-	public List<ZcExcel> exportZc(Wrapper<ZcEntity> queryWrapper) {
-		List<ZcExcel> zcList = baseMapper.exportZc(queryWrapper);
-		//zcList.forEach(zc -> {
-		//	zc.setTypeName(DictCache.getValue(DictEnum.YES_NO, Zc.getType()));
-		//});
-		return zcList;
-	}
-}

+ 5 - 5
kd-service/kd-scientific/src/main/java/org/sky/scientific/wrapper/ZcWrapper.java

@@ -3,8 +3,8 @@ package org.sky.scientific.wrapper;
 
 import org.sky.core.mp.support.BaseEntityWrapper;
 import org.sky.core.tool.utils.BeanUtil;
-import org.sky.scientific.pojo.entity.ZcEntity;
-import org.sky.scientific.pojo.vo.ZcVO;
+import org.sky.scientific.pojo.entity.AssetEntity;
+import org.sky.scientific.pojo.vo.AssetVO;
 import java.util.Objects;
 
 /**
@@ -13,15 +13,15 @@ import java.util.Objects;
  * @author Kd
  * @since 2025-06-29
  */
-public class ZcWrapper extends BaseEntityWrapper<ZcEntity, ZcVO> {
+public class ZcWrapper extends BaseEntityWrapper<AssetEntity, AssetVO> {
 
 	public static ZcWrapper build() {
 		return new ZcWrapper();
  	}
 
 	@Override
-	public ZcVO entityVO(ZcEntity zc) {
-		ZcVO zcVO = Objects.requireNonNull(BeanUtil.copyProperties(zc, ZcVO.class));
+	public AssetVO entityVO(AssetEntity zc) {
+		AssetVO zcVO = Objects.requireNonNull(BeanUtil.copyProperties(zc, AssetVO.class));
 
 		//User createUser = UserCache.getUser(zc.getCreateUser());
 		//User updateUser = UserCache.getUser(zc.getUpdateUser());