Browse Source

长期待摊费用分配表

zhouli 10 months ago
parent
commit
7f88921eb1

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


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

@@ -0,0 +1,52 @@
+
+package org.sky.scientific.pojo.dto;
+
+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.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 长期待摊费用分配表 数据传输对象实体类
+ *
+ * @author Kd
+ * @since 2025-07-24
+ */
+@Data
+public class XmCqdtfyDTO {
+
+	@Schema(description = "研发项目名称")
+	private String xmmc;
+
+	@Schema(description = "用途")
+	private String yt;
+
+	@Schema(description = "摊销开始日期,min")
+	@DateTimeFormat(pattern = DateUtil.PATTERN_YYYYMM)
+	@JsonFormat(pattern = DateUtil.PATTERN_YYYYMM)
+	private Date txksrqStart;
+
+	@Schema(description = "摊销开始日期,max")
+	@DateTimeFormat(pattern = DateUtil.PATTERN_YYYYMM)
+	@JsonFormat(pattern = DateUtil.PATTERN_YYYYMM)
+	private Date txksrqEnd;
+
+	@Schema(description = "已使用月数,min")
+	private Integer ysyysStart;
+	@Schema(description = "已使用月数,max")
+	private Integer ysyysEnd;
+
+	@Schema(description = "资产原值,min")
+	private BigDecimal zcyzStart;
+	@Schema(description = "资产原值,max")
+	private BigDecimal zcyzEnd;
+
+	@Schema(description = "月折旧额,min")
+	private BigDecimal yzjeStart;
+	@Schema(description = "月折旧额,max")
+	private BigDecimal yzjeEnd;
+}

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

@@ -0,0 +1,78 @@
+
+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 jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
+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-24
+ */
+@Data
+@TableName("kd_xm_cqdtfy")
+@Schema(description = "XmCqdtfy对象")
+@EqualsAndHashCode(callSuper = true)
+public class XmCqdtfyEntity extends TenantEntity {
+
+	@Serial
+	private static final long serialVersionUID = 1L;
+
+	@Schema(description = "所属年月,如:202505")
+	@NotBlank(message = "yearAndMonth不能为空")
+	private String yearAndMonth;
+
+	@Schema(description = "项目ID")
+	@NotNull(message = "请选择研发项目")
+	private Long xmId;
+
+	@Schema(description = "长期待摊费用编码")
+	private String ctdtfybm;
+
+	@Schema(description = "长期待摊费用名称")
+	@NotBlank(message = "长期待摊费用名称不能为空")
+	private String ctdtfymc;
+
+	@Schema(description = "用途")
+	private String yt;
+
+	@Schema(description = "摊销开始日期,格式:202501")
+	@DateTimeFormat(pattern = DateUtil.PATTERN_YYYYMM)
+	@JsonFormat(pattern = DateUtil.PATTERN_YYYYMM)
+	private Date txksrq;
+
+	@Schema(description = "使用寿命(月)")
+	private Integer sysm;
+
+	@Schema(description = "已使用月数")
+	private Integer ysyys;
+
+	@Schema(description = "资产原值")
+	private BigDecimal zcyz;
+
+	@Schema(description = "月摊销额(每节点/套)(K)")
+	private BigDecimal ytxe;
+
+	@Schema(description = "使用占比,如:0.5")
+	private BigDecimal syzb;
+
+	@Schema(description = "占比依据")
+	private String zbyj;
+
+	@Schema(description = "分摊依据")
+	private String ftyj;
+
+}

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

@@ -0,0 +1,28 @@
+
+package org.sky.scientific.pojo.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import org.sky.scientific.pojo.entity.XmCqdtfyEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import java.io.Serial;
+
+/**
+ * 长期待摊费用分配表 视图实体类
+ *
+ * @author Kd
+ * @since 2025-07-24
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class XmCqdtfyVO extends XmCqdtfyEntity {
+	@Serial
+	private static final long serialVersionUID = 1L;
+
+	@Schema(description = "项目名称")
+	private String xmmc;
+
+	@Schema(description = "项目编号")
+	private String xmbh;
+
+}

+ 94 - 0
kd-service/kd-scientific/src/main/java/org/sky/scientific/controller/XmCqdtfyController.java

@@ -0,0 +1,94 @@
+
+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.XmCqdtfyExcel;
+import org.sky.scientific.pojo.dto.XmCqdtfyDTO;
+import org.sky.scientific.pojo.entity.XmCqdtfyEntity;
+import org.sky.scientific.pojo.vo.XmCqdtfyVO;
+import org.sky.scientific.service.IXmCqdtfyService;
+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-24
+ */
+@RestController
+@AllArgsConstructor
+@RequestMapping("/xm/cqdtfy")
+@Tag(name = "研发费用管理-长期待摊费用分配表")
+public class XmCqdtfyController extends KdController {
+
+	private final IXmCqdtfyService service;
+
+	@GetMapping("/page")
+	@ApiOperationSupport(order = 1)
+	@Operation(summary = "分页", description  = "传入xmCqdtfy")
+	public R<IPage<XmCqdtfyVO>> page(XmCqdtfyDTO dto, Query query) {
+		IPage<XmCqdtfyVO> pages = service.selectPageByCondition(Condition.getPage(query), dto);
+		return R.data(pages);
+	}
+
+	@PostMapping("import")
+	@ApiOperationSupport(order = 2)
+	@Operation(summary = "导入")
+	public R importCqdtfy(MultipartFile file, String yearAndMonth) {
+		service.importData(file, yearAndMonth);
+		return R.success("操作成功");
+	}
+
+	@GetMapping("/fetchLastMonthData")
+	@ApiOperationSupport(order = 3)
+	@Operation(summary = "读取上个月数据", description = "传入选中的年月,比如2025-06,则读取2025-05的数据到06月")
+	public R<Boolean> fetchLastMonthData(String yearAndMonth) {
+		return R.status(service.fetchLastMonthData(yearAndMonth));
+	}
+
+	@PostMapping("/submit")
+	@ApiOperationSupport(order = 6)
+	@Operation(summary = "新增或修改", description  = "传入xmCqdtfy")
+	public R submit(@Valid @RequestBody XmCqdtfyEntity xmCqdtfy) {
+		return R.status(service.submit(xmCqdtfy));
+	}
+
+	@PostMapping("/remove")
+	@ApiOperationSupport(order = 7)
+	@Operation(summary = "删除", description  = "传入ids")
+	public R remove(@Parameter(description = "主键集合", required = true) @RequestParam String ids) {
+		return R.status(service.physicalDeleteByIds(Func.toLongList(ids)));
+	}
+
+	@IsAdmin
+	@GetMapping("/export-xmCqdtfy")
+	@ApiOperationSupport(order = 9)
+	@Operation(summary = "导出数据", description  = "传入xmCqdtfy")
+	public void exportXmCqdtfy(@Parameter(hidden = true) @RequestParam Map<String, Object> xmCqdtfy, KdUser kdUser, HttpServletResponse response) {
+		QueryWrapper<XmCqdtfyEntity> queryWrapper = Condition.getQueryWrapper(xmCqdtfy, XmCqdtfyEntity.class);
+		List<XmCqdtfyExcel> list = service.exportXmCqdtfy(queryWrapper);
+		ExcelUtil.export(response, "长期待摊费用分配表数据" + DateUtil.time(), "长期待摊费用分配表数据表", list, XmCqdtfyExcel.class);
+	}
+
+}

+ 79 - 0
kd-service/kd-scientific/src/main/java/org/sky/scientific/excel/XmCqdtfyExcel.java

@@ -0,0 +1,79 @@
+
+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-24
+ */
+@Data
+@ColumnWidth(25)
+@HeadRowHeight(20)
+@ContentRowHeight(18)
+public class XmCqdtfyExcel implements Serializable {
+
+	@Serial
+	private static final long serialVersionUID = 1L;
+
+	@ExcelProperty("序号")
+	private Integer xh;
+
+	@ExcelProperty("研发项目编号")
+	private String xmbh;
+
+	@ExcelProperty("研发项目名称")
+ 	private String xmmc;
+
+	@ExcelProperty("长期待摊费用编码")
+	private String ctdtfybm;
+
+ 	@ExcelProperty("长期待摊费用名称")
+	private String ctdtfymc;
+
+	@ExcelProperty("用途")
+	private String yt;
+
+	@ExcelProperty("摊销开始日期")
+	@DateTimeFormat(pattern = DateUtil.PATTERN_YYYYMM)
+	@JsonFormat(pattern = DateUtil.PATTERN_YYYYMM)
+	private Date txksrq;
+
+	@ExcelProperty("使用寿命")
+	private Integer sysm;
+
+	@ExcelProperty("已使用月数")
+	private Integer ysyys;
+
+	@ExcelProperty("资产原值")
+	private BigDecimal zcyz;
+
+	@ExcelProperty("月摊销额")
+	private BigDecimal ytxe;
+
+	@ExcelProperty("使用占比")
+	private BigDecimal syzb;
+
+	@ExcelProperty("占比依据")
+	private String zbyj;
+
+	@ExcelProperty("分摊依据")
+	private String ftyj;
+
+}

+ 41 - 0
kd-service/kd-scientific/src/main/java/org/sky/scientific/mapper/XmCqdtfyMapper.java

@@ -0,0 +1,41 @@
+
+package org.sky.scientific.mapper;
+
+import org.sky.scientific.pojo.dto.XmCqdtfyDTO;
+import org.sky.scientific.pojo.entity.XmCqdtfyEntity;
+import org.sky.scientific.pojo.vo.XmCqdtfyVO;
+import org.sky.scientific.excel.XmCqdtfyExcel;
+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-24
+ */
+public interface XmCqdtfyMapper extends BaseMapper<XmCqdtfyEntity> {
+
+	/**
+	 * 自定义分页
+	 *
+	 * @param page 分页参数
+	 * @param dto 查询参数
+	 * @return List<XmCqdtfyVO>
+	 */
+	List<XmCqdtfyVO> selectPageByCondition(IPage page, @Param("ew") XmCqdtfyDTO dto);
+
+
+	/**
+	 * 获取导出数据
+	 *
+	 * @param queryWrapper 查询条件
+	 * @return List<XmCqdtfyExcel>
+	 */
+	List<XmCqdtfyExcel> exportXmCqdtfy(@Param("ew") Wrapper<XmCqdtfyEntity> queryWrapper);
+
+	int physicalDeleteByIds(List<Long> ids);
+}

+ 64 - 0
kd-service/kd-scientific/src/main/java/org/sky/scientific/mapper/XmCqdtfyMapper.xml

@@ -0,0 +1,64 @@
+<?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.XmCqdtfyMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="ResultMap" type="org.sky.scientific.pojo.entity.XmCqdtfyEntity">
+        <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="ctdtfybm" property="ctdtfybm"/>
+        <result column="ctdtfymc" property="ctdtfymc"/>
+        <result column="yt" property="yt"/>
+        <result column="txksrq" property="txksrq"/>
+        <result column="sysm" property="sysm"/>
+        <result column="ysyys" property="ysyys"/>
+        <result column="zcyz" property="zcyz"/>
+        <result column="ytxe" property="ytxe"/>
+        <result column="syzb" property="syzb"/>
+        <result column="zbyj" property="zbyj"/>
+        <result column="ftyj" property="ftyj"/>
+        <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>
+
+    <resultMap id="ResutVoMap" type="org.sky.scientific.pojo.vo.XmCqdtfyVO">
+        <result  column="xmbh" property="xmbh"/>
+        <result  column="xmmc" property="xmmc"/>
+    </resultMap>
+
+    <delete id="physicalDeleteByIds">
+        DELETE FROM kd_xm_cqdtfy
+        WHERE id IN
+        <foreach item="item" index="index" collection="list" separator="," close=")" open="(">
+            #{item}
+        </foreach>
+    </delete>
+
+
+    <select id="selectPageByCondition" resultMap="ResutVoMap" parameterType="org.sky.scientific.pojo.dto.XmCqdtfyDTO">
+        select c.*,xm.xmbh, xm.xmmc
+        FROM kd_xm_cqdtfy c
+        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 = c.xm_id
+        where left(c.year_and_month,6 ) = #{ew.yearAndMonth}
+    </select>
+
+    <select id="exportXmCqdtfy" resultType="org.sky.scientific.excel.XmCqdtfyExcel">
+        SELECT * FROM kd_xm_cqdtfy ${ew.customSqlSegment}
+    </select>
+
+</mapper>

+ 46 - 0
kd-service/kd-scientific/src/main/java/org/sky/scientific/service/IXmCqdtfyService.java

@@ -0,0 +1,46 @@
+
+package org.sky.scientific.service;
+
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
+import org.sky.scientific.pojo.dto.XmCqdtfyDTO;
+import org.sky.scientific.pojo.entity.XmCqdtfyEntity;
+import org.sky.scientific.pojo.vo.XmCqdtfyVO;
+import org.sky.scientific.excel.XmCqdtfyExcel;
+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-07-24
+ */
+public interface IXmCqdtfyService extends BaseService<XmCqdtfyEntity> {
+
+	/**
+	 * 分页
+	 * @param page
+	 * @param dto
+	 * @return
+	 */
+	IPage<XmCqdtfyVO> selectPageByCondition(IPage<XmCqdtfyVO> page, XmCqdtfyDTO dto);
+
+	/**
+	 * 导出数据
+	 *
+	 * @param queryWrapper 查询条件
+	 * @return List<XmCqdtfyExcel>
+	 */
+	List<XmCqdtfyExcel> exportXmCqdtfy(Wrapper<XmCqdtfyEntity> queryWrapper);
+
+	void importData(MultipartFile file, String yearAndMonth);
+
+	boolean submit(XmCqdtfyEntity entity);
+
+	boolean physicalDeleteByIds(List<Long> ids);
+
+	boolean fetchLastMonthData(String yearAndMonth);
+}

+ 125 - 0
kd-service/kd-scientific/src/main/java/org/sky/scientific/service/impl/XmCqdtfyServiceImpl.java

@@ -0,0 +1,125 @@
+
+package org.sky.scientific.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+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.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.XmCqdtfyExcel;
+import org.sky.scientific.mapper.XmCqdtfyMapper;
+import org.sky.scientific.mapper.XmMapper;
+import org.sky.scientific.pojo.dto.XmCqdtfyDTO;
+import org.sky.scientific.pojo.entity.XmCqdtfyEntity;
+import org.sky.scientific.pojo.vo.XmCqdtfyVO;
+import org.sky.scientific.service.IXmCqdtfyService;
+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-24
+ */
+@Service
+@AllArgsConstructor
+public class XmCqdtfyServiceImpl extends BaseServiceImpl<XmCqdtfyMapper, XmCqdtfyEntity> implements IXmCqdtfyService {
+
+	private final XmMapper xmMapper;
+
+	@Override
+	public IPage<XmCqdtfyVO> selectPageByCondition(IPage<XmCqdtfyVO> page, XmCqdtfyDTO dto) {
+		return page.setRecords(baseMapper.selectPageByCondition(page, dto));
+	}
+
+
+	@Override
+	public List<XmCqdtfyExcel> exportXmCqdtfy(Wrapper<XmCqdtfyEntity> queryWrapper) {
+		List<XmCqdtfyExcel> xmCqdtfyList = baseMapper.exportXmCqdtfy(queryWrapper);
+
+		return xmCqdtfyList;
+	}
+
+	@Override
+	@Transactional
+	public void importData(MultipartFile file, String yearAndMonth) {
+		if (StringUtil.isBlank(yearAndMonth)) {
+			throw new ServiceException("参数yearAndMonth不能为空");
+		}
+
+		List<XmCqdtfyExcel> dataList = ExcelUtil.read(file, XmCqdtfyExcel.class);
+		if (CollectionUtil.isEmpty(dataList)) {
+			throw new ServiceException("导入数据为空");
+		}
+
+		List<XmCqdtfyEntity> insertList = new ArrayList<>();
+		for (XmCqdtfyExcel data : dataList) {
+			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() + "]的研发项目不存在,请检查模板数据");
+			}
+
+			XmCqdtfyEntity entity = Objects.requireNonNull(BeanUtil.copyProperties(data, XmCqdtfyEntity.class));
+			entity.setXmId(xmId);
+			entity.setYearAndMonth(yearAndMonth);
+
+			insertList.add(entity);
+		}
+
+		this.saveBatch(insertList);
+	}
+
+	@Override
+	public boolean submit(XmCqdtfyEntity entity) {
+		return this.saveOrUpdate(entity);
+	}
+
+	@Override
+	public boolean physicalDeleteByIds(List<Long> ids) {
+		return baseMapper.physicalDeleteByIds(ids) > 0;
+	}
+
+	@Override
+	public boolean fetchLastMonthData(String yearAndMonth) {
+		if(StringUtil.isBlank(yearAndMonth)){
+			throw new ServiceException("参数yearAndMonth不能为空");
+		}
+		//查询本月数据,若有,则不能导入
+		Long count = baseMapper.selectCount(Wrappers.<XmCqdtfyEntity>lambdaQuery().eq(XmCqdtfyEntity::getYearAndMonth, yearAndMonth));
+		if(count == 0){
+			throw new ServiceException("有数据,需要删除"+yearAndMonth+"的数据才能导入");
+		}
+		//查询上月数据
+		String lastMonth = DateUtil.format(DateUtil.minusMonths(DateUtil.parse(yearAndMonth, DateUtil.PATTERN_YYYYMM), 1), DateUtil.PATTERN_YYYYMM);
+		List<XmCqdtfyEntity> lastMonthDataList = baseMapper.selectList(Wrappers.<XmCqdtfyEntity>lambdaQuery().eq(XmCqdtfyEntity::getYearAndMonth, lastMonth));
+		if(CollectionUtil.isEmpty(lastMonthDataList)){
+			throw new ServiceException("上个月无数据");
+		}
+		List<XmCqdtfyEntity> insertList = new ArrayList<>();
+		for (XmCqdtfyEntity entity : lastMonthDataList) {
+			entity.setId(null);
+			entity.setCreateUser(null);
+			entity.setCreateDept(null);
+			entity.setCreateTime(null);
+			insertList.add(entity);
+		}
+		return this.saveBatch(insertList);
+	}
+
+}