zhoulisky 11 months ago
parent
commit
f610642090

File diff suppressed because it is too large
+ 5203 - 0
doc/sql/kd_dev.sql


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

@@ -1,11 +1,13 @@
 
 package org.sky.scientific.pojo.entity;
 
-import lombok.Data;
-import io.swagger.v3.oas.annotations.media.Schema;
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
 import lombok.EqualsAndHashCode;
 import org.sky.core.tenant.mp.TenantEntity;
+
 import java.io.Serial;
 import java.math.BigDecimal;
 
@@ -25,6 +27,7 @@ public class SalaryEntity extends TenantEntity {
 	private static final long serialVersionUID = 1L;
 
 	@Schema(description = "姓名")
+	@TableField(exist = false)
 	private String name;
 
 	@Schema(description = "工号")
@@ -37,36 +40,59 @@ public class SalaryEntity extends TenantEntity {
 	private String yearAndMonth;
 
 	@Schema(description = "部门")
+	@TableField(exist = false)
 	private String department;
 
 	@Schema(description = "人员类型")
+	@TableField(exist = false)
 	private String personnelType;
 
-	@Schema(description = "上一年度月均工资(元)")
+	@Schema(description = "月均工资(元)")
 	private BigDecimal averageMonthlySalary;
 
-	@Schema(description = "上一年度月均单位承担部分养老保险")
+	@Schema(description = "月均单位承担部分养老保险")
 	private BigDecimal pensionInsurance;
 
-	@Schema(description = "上一年度月均单位承担部分医疗保险")
+	@Schema(description = "月均单位承担部分医疗保险")
 	private BigDecimal medicalInsurance;
 
-	@Schema(description = "上一年度月均单位承担部分失业保险")
+	@Schema(description = "月均单位承担部分失业保险")
 	private BigDecimal unemploymentInsurance;
 
-	@Schema(description = "上一年度月均单位承担部分工伤保险")
+	@Schema(description = "月均单位承担部分工伤保险")
 	private BigDecimal injuryInsurance;
 
-	@Schema(description = "上一年度月均单位承担部分生育保险")
+	@Schema(description = "月均单位承担部分生育保险")
 	private BigDecimal maternityInsurance;
 
-	@Schema(description = "上一年度月均单位承担部分公积金")
+	@Schema(description = "月均单位承担部分公积金")
 	private BigDecimal providentFund;
 
-	@Schema(description = "上一年度月均单位承担部分社保合计(元)")
-	private BigDecimal socialInsurance;
+	@Schema(description = "月均工资(元),是否修改过,0:否,1:是")
+	private Integer averageMonthlySalaryEdit;
+
+	@Schema(description = "月均单位承担部分养老保险,是否修改过,0:否,1:是")
+	private Integer pensionInsuranceEdit;
+
+	@Schema(description = "月均单位承担部分医疗保险,是否修改过,0:否,1:是")
+	private Integer medicalInsuranceEdit;
+
+	@Schema(description = "月均单位承担部分失业保险,是否修改过,0:否,1:是")
+	private Integer unemploymentInsuranceEdit;
+
+	@Schema(description = "月均单位承担部分工伤保险,是否修改过,0:否,1:是")
+	private Integer injuryInsuranceEdit;
+
+	@Schema(description = "月均单位承担部分生育保险,是否修改过,0:否,1:是")
+	private Integer maternityInsuranceEdit;
+
+	@Schema(description = "月均单位承担部分公积金,是否修改过,0:否,1:是")
+	private Integer providentFundEdit;
 
-	@Schema(description ="台计(元)")
-	private BigDecimal total;
+//	@Schema(description = "上一年度月均单位承担部分社保合计(元)")
+//	private BigDecimal socialInsurance;
+//
+//	@Schema(description ="台计(元)")
+//	private BigDecimal total;
 
 }

+ 5 - 8
kd-service/kd-scientific/src/main/java/org/sky/scientific/controller/SalaryController.java

@@ -82,7 +82,7 @@ public class SalaryController extends KdController {
 	@ApiOperationSupport(order = 5)
 	@Operation(summary = "修改", description  = "传入salary")
 	public R update(@Valid @RequestBody SalaryEntity salary) {
-		return R.status(salaryService.updateById(salary));
+		return R.status(salaryService.updateSalary(salary));
 	}
 
 	/**
@@ -95,17 +95,14 @@ public class SalaryController extends KdController {
 		return R.status(salaryService.saveOrUpdate(salary));
 	}
 
-	/**
-	 * 技术人员工资表 删除
-	 */
+
 	@PostMapping("/remove")
 	@ApiOperationSupport(order = 7)
-	@Operation(summary = "逻辑删除", description  = "传入ids")
-	public R remove(@Parameter(description = "主键集合", required = true) @RequestParam String ids) {
-		return R.status(salaryService.deleteLogic(Func.toLongList(ids)));
+	@Operation(summary = "清除工资数据", description  = "多个 number、identityId、yearAndMonth")
+	public R remove(@RequestBody List<SalaryEntity> salaryList) {
+		return R.status(salaryService.deleteSalary(salaryList));
 	}
 
-
 	/**
 	 * 导出数据
 	 */

+ 1 - 8
kd-service/kd-scientific/src/main/java/org/sky/scientific/controller/TechnicianController.java

@@ -68,7 +68,7 @@ public class TechnicianController extends KdController {
 	@ApiOperationSupport(order = 4)
 	@Operation(summary = "新增", description = "传入technician")
 	public R save(@Valid @RequestBody TechnicianDTO technician) {
-		return R.status(technicianService.saveTechnician(technician));
+		return R.status(technicianService.saveOrUpdateTechnician(technician));
 	}
 
 //	@IsAdmin
@@ -88,13 +88,6 @@ public class TechnicianController extends KdController {
 		return R.status(technicianService.updateTechnician(technician));
 	}
 
-	@PostMapping("/add")
-	@ApiOperationSupport(order = 6)
-	@Operation(summary = "新增", description = "传入technician")
-	public R submit(@Valid @RequestBody TechnicianDTO technician) {
-		return R.status(technicianService.saveTechnician(technician));
-	}
-
 	@PostMapping("/remove")
 	@ApiOperationSupport(order = 7)
 	@Operation(summary = "逻辑删除", description = "传入ids")

+ 13 - 0
kd-service/kd-scientific/src/main/java/org/sky/scientific/mapper/SalaryMapper.java

@@ -36,4 +36,17 @@ public interface SalaryMapper extends BaseMapper<SalaryEntity> {
 	 */
 	List<SalaryExcel> exportSalary(@Param("ew") Wrapper<SalaryEntity> queryWrapper);
 
+	/**
+	 * 物理删除
+	 * @param salary
+	 * @return
+	 */
+	Integer deleteSalary(SalaryEntity salary);
+
+	/**
+	 * 修改
+	 * @param salary
+	 * @return
+	 */
+	int updateSalary(SalaryEntity salary);
 }

+ 48 - 7
kd-service/kd-scientific/src/main/java/org/sky/scientific/mapper/SalaryMapper.xml

@@ -19,6 +19,15 @@
         <result column="injury_insurance" property="injuryInsurance"/>
         <result column="maternity_insurance" property="maternityInsurance"/>
         <result column="provident_fund" property="providentFund"/>
+
+        <result column="average_monthly_salary_edit" property="averageMonthlySalaryEdit"/>
+        <result column="pension_insurance_edit" property="pensionInsuranceEdit"/>
+        <result column="medical_insurance_edit" property="medicalInsuranceEdit"/>
+        <result column="unemployment_insurance_edit" property="unemploymentInsuranceEdit"/>
+        <result column="injury_insurance_edit" property="injuryInsuranceEdit"/>
+        <result column="maternity_insurance_edit" property="maternityInsuranceEdit"/>
+        <result column="provident_fund_edit" property="providentFundEdit"/>
+
         <result column="create_user" property="createUser"/>
         <result column="create_dept" property="createDept"/>
         <result column="create_time" property="createTime"/>
@@ -28,25 +37,52 @@
         <result column="is_deleted" property="isDeleted"/>
     </resultMap>
 
+    <update id="updateSalary" parameterType="org.sky.scientific.pojo.entity.SalaryEntity">
+        update kd_salary
+        <set>
+            <if test="averageMonthlySalary>0">average_monthly_salary = #{averageMonthlySalary}, average_monthly_salary_edit = 1</if>
+            <if test="pensionInsurance>0">pension_insurance = #{pensionInsurance}, pension_insurance_edit = 1</if>
+            <if test="medicalInsurance>0">medical_insurance = #{medicalInsurance}, medical_insurance_edit = 1</if>
+            <if test="unemploymentInsurance>0">unemployment_insurance = #{unemploymentInsurance}, unemployment_insurance_edit = 1</if>
+            <if test="injuryInsurance>0">injury_insurance = #{injuryInsurance}, injury_insurance_edit = 1</if>
+            <if test="maternityInsurance>0">maternity_insurance = #{maternityInsurance}, maternity_insurance = 1</if>
+            <if test="providentFund>0">provident_fund = #{providentFund}, provident_fund_edit = 1</if>
+        </set>
+        where number = #{number} and identity_card = #{identityCard} and year_and_month = #{yearAndMonth}
+    </update>
+
 
     <select id="selectSalaryPage" resultMap="salaryResultMap">
-        select * from kd_salary
-        where is_deleted = 0 and year_and_month = #{salary.yearAndMonth}
+        SELECT
+        t.name,
+        t.number,
+        t.identity_card,
+        t.department,
+        t.personnel_type,
+        s.average_monthly_salary,s.pension_insurance,s.medical_insurance,s.unemployment_insurance,s.injury_insurance,s.maternity_insurance,s.provident_fund,
+        s.average_monthly_salary_edit,s.pension_insurance_edit,s.medical_insurance_edit,s.unemployment_insurance_edit,s.injury_insurance_edit,s.maternity_insurance_edit,s.provident_fund_edit
+        FROM
+        kd_technician t
+        LEFT JOIN kd_salary s on s.number = t.number and s.identity_card = t.identity_card
+        WHERE
+        LEFT (t.year_and_month, 4 ) = #{salary.yearAndMonth}
+        AND t.is_deleted = 0
         <if test="salary.name != null">
-            and name like concat('%',#{salary.name},'%')
+            and t.name like concat('%',#{salary.name},'%')
         </if>
         <if test="salary.number != null">
-            and number like concat('%',#{salary.number},'%')
+            and t.number like concat('%',#{salary.number},'%')
         </if>
         <if test="salary.identityCard != null">
-            and identity_card like concat('%',#{salary.identityCard},'%')
+            and t.identity_card like concat('%',#{salary.identityCard},'%')
         </if>
         <if test="salary.department != null">
-            and department like concat('%',#{salary.department},'%')
+            and t.department like concat('%',#{salary.department},'%')
         </if>
         <if test="salary.personnelType != null">
-            and personnel_type = #{salary.personnelType}
+            and t.personnel_type = #{salary.personnelType}
         </if>
+        GROUP BY t.number, t.identity_card
     </select>
 
 
@@ -54,4 +90,9 @@
         SELECT * FROM kd_salary ${ew.customSqlSegment}
     </select>
 
+    <delete id="deleteSalary" parameterType="org.sky.scientific.pojo.entity.SalaryEntity">
+        delete from kd_salary
+        where number = #{number} and identity_card = #{identityCard} and year_and_month = #{yearAndMonth}
+    </delete>
+
 </mapper>

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

@@ -31,7 +31,7 @@ public interface TechnicianMapper extends BaseMapper<TechnicianEntity> {
 	List<TechnicianExcel> exportTechnicianList(@Param("technician") TechnicianDTO technician);
 
 
-	Integer countByDateAndNumberOrIdentityCard(TechnicianEntity technician);
+	Long selectPrimaryByDateAndNumberOrIdentityCard(TechnicianEntity technician);
 
 	List<TechnicianEntity> selectByYearAndMonth(String yearAndMonth);
 

+ 7 - 8
kd-service/kd-scientific/src/main/java/org/sky/scientific/mapper/TechnicianMapper.xml

@@ -72,7 +72,7 @@
                   and LEFT ( t1.year_and_month, 4 ) = #{technician.yearAndMonth}
               </when>
               <otherwise>
-                  and LEFT ( t1.year_and_month, 7 ) = #{technician.yearAndMonth}
+                  and t1.year_and_month = #{technician.yearAndMonth}
               </otherwise>
           </choose>
         order by year_and_month asc, id asc
@@ -112,7 +112,7 @@
                 and LEFT ( t1.year_and_month, 4 ) = #{technician.yearAndMonth}
             </when>
             <otherwise>
-                and LEFT ( t1.year_and_month, 7 ) = #{technician.yearAndMonth}
+                and  t1.year_and_month = #{technician.yearAndMonth}
             </otherwise>
         </choose>
         order by year_and_month asc, id asc
@@ -120,7 +120,7 @@
 
     <select id="selectByYearAndMonth">
         select * from kd_technician
-        where is_deleted = 0 and LEFT(year_and_month,6) = #{yearAndMonth}
+        where is_deleted = 0 and  year_and_month = #{yearAndMonth}
 
     </select>
 
@@ -129,19 +129,18 @@
         FROM kd_technician ${ew.customSqlSegment}
     </select>
 
-    <select id="countByDateAndNumberOrIdentityCard" parameterType="org.sky.scientific.pojo.entity.TechnicianEntity">
-        select count(*)
+    <select id="selectPrimaryByDateAndNumberOrIdentityCard" parameterType="org.sky.scientific.pojo.entity.TechnicianEntity" resultType="java.lang.Long">
+        select id
         from kd_technician
-        where is_deleted = 0
+        where is_deleted = 0 and number = #{number} and identity_card = #{identityCard}
         <choose>
             <when test="yearAndMonth.length()==4">
                 and LEFT(year_and_month,4) = #{yearAndMonth}
             </when>
             <otherwise>
-                and LEFT(year_and_month,6) = #{yearAndMonth}
+                and year_and_month = #{yearAndMonth}
             </otherwise>
         </choose>
-        and (number = #{number} or identity_card = #{identityCard})
     </select>
 
 </mapper>

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

@@ -40,4 +40,18 @@ public interface ISalaryService extends BaseService<SalaryEntity> {
 	 * @return
 	 */
 	boolean saveSalary(SalaryEntity salary);
+
+	/**
+	 *
+	 * @param salary
+	 * @return
+	 */
+	boolean updateSalary(SalaryEntity salary);
+
+	/**
+	 * 删除
+	 * @param salary
+	 * @return
+	 */
+	boolean deleteSalary(List<SalaryEntity> salary);
 }

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

@@ -22,7 +22,7 @@ public interface ITechnicianService extends BaseService<TechnicianEntity> {
 	 * @param technician
 	 * @return
 	 */
-	boolean saveTechnician(TechnicianEntity technician);
+	boolean saveOrUpdateTechnician(TechnicianEntity technician);
 
 	/**
 	 * 修改

+ 68 - 41
kd-service/kd-scientific/src/main/java/org/sky/scientific/service/impl/SalaryServiceImpl.java

@@ -1,25 +1,24 @@
 
 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.conditions.update.LambdaUpdateWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import jakarta.annotation.Resource;
-import org.sky.core.log.exception.ServiceException;
+import org.sky.core.mp.base.BaseServiceImpl;
 import org.sky.core.secure.utils.AuthUtil;
 import org.sky.core.tool.utils.DateUtil;
 import org.sky.core.tool.utils.StringUtil;
+import org.sky.scientific.excel.SalaryExcel;
+import org.sky.scientific.mapper.SalaryMapper;
 import org.sky.scientific.mapper.TechnicianMapper;
 import org.sky.scientific.pojo.entity.SalaryEntity;
-import org.sky.scientific.pojo.entity.TechnicianEntity;
 import org.sky.scientific.pojo.vo.SalaryVO;
-import org.sky.scientific.excel.SalaryExcel;
-import org.sky.scientific.mapper.SalaryMapper;
 import org.sky.scientific.service.ISalaryService;
 import org.springframework.stereotype.Service;
-import com.baomidou.mybatisplus.core.conditions.Wrapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import org.sky.core.mp.base.BaseServiceImpl;
+
 import java.util.List;
 
 /**
@@ -39,7 +38,7 @@ public class SalaryServiceImpl extends BaseServiceImpl<SalaryMapper, SalaryEntit
 		List<SalaryVO> voList = baseMapper.selectSalaryPage(page, salary);
 		//如果数据空,则查询该年度整体是否有数据
 //		if (voList.isEmpty()) {
-//			LambdaQueryWrapper<SalaryEntity> wrapper = Wrappers.<SalaryEntity>query().lambda()
+//			LambdaQueryWrapper<SalaryEntity> wrapper = Wrappers.<SalaryEntity>query ().lambda()
 //				.eq(SalaryEntity::getYearAndMonth, salary.getYearAndMonth())
 //				.eq(SalaryEntity::getTenantId, AuthUtil.getTenantId())
 //				.eq(SalaryEntity::getIsDeleted, 0);
@@ -66,41 +65,69 @@ public class SalaryServiceImpl extends BaseServiceImpl<SalaryMapper, SalaryEntit
 
 		Integer affectNum = 0;
 		if (StringUtil.isBlank(salary.getYearAndMonth())) {
-			salary.setYearAndMonth(DateUtil.format(DateUtil.now(), "yyyy"));
-		}
-		//从技术人员花名册中根据年份和人员信息,查询人员是否存在
-		TechnicianEntity technician = new TechnicianEntity();
-		technician.setYearAndMonth(salary.getYearAndMonth());
-		technician.setNumber(salary.getNumber());
-		technician.setIdentityCard(salary.getIdentityCard());
-		technician.setTenantId(AuthUtil.getTenantId());
-		Integer countWithTechnician = technicianMapper.countByDateAndNumberOrIdentityCard(technician);
-		//不存在则抛出异常
-		if(countWithTechnician == 0){
-			throw new ServiceException("[" + salary.getYearAndMonth() + "]年度内无人员[" + salary.getName() + "、" + salary.getNumber() + "、" + salary.getIdentityCard() + "]");
-		}else {
-			//存在则根据年份和人员信息查询工资是否存在
-			LambdaQueryWrapper<SalaryEntity> wrapper = Wrappers.<SalaryEntity>query().lambda()
-				.eq(SalaryEntity::getYearAndMonth, salary.getYearAndMonth())
-				.eq(SalaryEntity::getNumber, salary.getNumber())
-				.eq(SalaryEntity::getIdentityCard, salary.getIdentityCard())
-				.eq(SalaryEntity::getTenantId, AuthUtil.getTenantId())
-				.eq(SalaryEntity::getIsDeleted, 0);
-			//存在则覆盖
-			if (baseMapper.selectCount(wrapper) > 0) {
-				LambdaUpdateWrapper<SalaryEntity> updateWrapper = Wrappers.<SalaryEntity>update().lambda()
-					.eq(SalaryEntity::getYearAndMonth, salary.getYearAndMonth())
-					.eq(SalaryEntity::getNumber, salary.getNumber())
-					.eq(SalaryEntity::getIdentityCard, salary.getIdentityCard())
-					.eq(SalaryEntity::getTenantId, AuthUtil.getTenantId())
-					.eq(SalaryEntity::getIsDeleted, 0);
-				affectNum = baseMapper.update(salary, updateWrapper);
-			}else {
-				//不存在则新增
-				affectNum = baseMapper.insert(salary);
-			}
+			salary.setYearAndMonth(DateUtil.format(DateUtil.now(), DateUtil.PATTERN_YYYY));
 		}
+//		//从技术人员花名册中根据年份和人员信息,查询人员是否存在
+//		TechnicianEntity technician = new TechnicianEntity();
+//		technician.setYearAndMonth(salary.getYearAndMonth());
+//		technician.setNumber(salary.getNumber());
+//		technician.setIdentityCard(salary.getIdentityCard());
+//		technician.setTenantId(AuthUtil.getTenantId());
+//		Integer countWithTechnician = technicianMapper.selectPrimaryByDateAndNumberOrIdentityCard(technician);
+//		//不存在则抛出异常
+//		if(countWithTechnician == 0){
+//			throw new ServiceException("[" + salary.getYearAndMonth() + "]年度内无人员[" + salary.getName() + "、" + salary.getNumber() + "、" + salary.getIdentityCard() + "]");
+//		}else {
+//			//存在则根据年份和人员信息查询工资是否存在
+//			LambdaQueryWrapper<SalaryEntity> wrapper = Wrappers.<SalaryEntity>query().lambda()
+//				.eq(SalaryEntity::getYearAndMonth, salary.getYearAndMonth())
+//				.eq(SalaryEntity::getNumber, salary.getNumber())
+//				.eq(SalaryEntity::getIdentityCard, salary.getIdentityCard())
+//				.eq(SalaryEntity::getTenantId, AuthUtil.getTenantId())
+//				.eq(SalaryEntity::getIsDeleted, 0);
+//			//存在则覆盖
+//			if (baseMapper.selectCount(wrapper) > 0) {
+//				LambdaUpdateWrapper<SalaryEntity> updateWrapper = Wrappers.<SalaryEntity>update().lambda()
+//					.eq(SalaryEntity::getYearAndMonth, salary.getYearAndMonth())
+//					.eq(SalaryEntity::getNumber, salary.getNumber())
+//					.eq(SalaryEntity::getIdentityCard, salary.getIdentityCard())
+//					.eq(SalaryEntity::getTenantId, AuthUtil.getTenantId())
+//					.eq(SalaryEntity::getIsDeleted, 0);
+//				affectNum = baseMapper.update(salary, updateWrapper);
+//			}else {
+//				//不存在则新增
+//				affectNum = baseMapper.insert(salary);
+//			}
+//		}
 		return affectNum > 0;
 	}
 
+	@Override
+	public boolean updateSalary(SalaryEntity salary) {
+		boolean result = false;
+		//根据number、identityId、yearAndMonth查询工资数据,
+		LambdaQueryWrapper<SalaryEntity> queryWrapper = Wrappers.<SalaryEntity>lambdaQuery()
+			.eq(SalaryEntity::getNumber, salary.getNumber())
+			.eq(SalaryEntity::getIdentityCard, salary.getIdentityCard())
+			.eq(SalaryEntity::getYearAndMonth, salary.getYearAndMonth())
+			.eq(SalaryEntity::getTenantId, AuthUtil.getTenantId());
+		if (baseMapper.selectCount(queryWrapper) == 1) {
+			//存在,则修改
+			result = baseMapper.updateSalary(salary) == 1;
+		} else {
+			//不存在,则新增
+			result = this.save(salary);
+		}
+		return result;
+	}
+
+	@Override
+	public boolean deleteSalary(List<SalaryEntity> salaryList) {
+		Integer affectNum = 0;
+		//根据number、identityId、yearAndMonth删除工资数据
+		for (SalaryEntity salary : salaryList) {
+			affectNum += baseMapper.deleteSalary(salary);
+		}
+		return affectNum == salaryList.size();
+	}
 }

+ 21 - 18
kd-service/kd-scientific/src/main/java/org/sky/scientific/service/impl/TechnicianServiceImpl.java

@@ -31,11 +31,25 @@ import java.util.Objects;
 public class TechnicianServiceImpl extends BaseServiceImpl<TechnicianMapper, TechnicianEntity> implements ITechnicianService {
 
 	@Override
-	public boolean saveTechnician(TechnicianEntity technician) {
+	public boolean saveOrUpdateTechnician(TechnicianEntity technician) {
+		boolean result = false;
 		//检查重复性
-		check(technician);
-		technician.setYearAndMonth(technician.getYearAndMonth());
-		return this.save(technician);
+		if (StringUtil.isBlank(technician.getYearAndMonth())) {
+			technician.setYearAndMonth(DateUtil.format(DateUtil.now(), DateUtil.PATTERN_YYYYMM));
+		}
+		//根据 年月 和工号或身份证 查询是否存在,存在则本次导入所有的数据都不成功
+		Long primaryKey = this.baseMapper.selectPrimaryByDateAndNumberOrIdentityCard(technician);
+		if (primaryKey != null) {
+			//覆盖
+//			throw new ServiceException("导入失败,姓名:[" + technician.getName() + "]已存在,请检查数据");
+			technician.setId(primaryKey);
+			result = this.updateById(technician);
+		}else {
+			//新增
+			result = this.save(technician);
+		}
+
+		return result;
 	}
 
 	@Override
@@ -66,7 +80,7 @@ public class TechnicianServiceImpl extends BaseServiceImpl<TechnicianMapper, Tec
 			//转换 性别字典
 			technician.setGender(Integer.valueOf(DictCache.getKey(DictEnum.SEX, excel.getGenderName())));
 			technician.setYearAndMonth(yearAndMonth);
-			this.saveTechnician(technician);
+			this.saveOrUpdateTechnician(technician);
 		}
 	}
 
@@ -75,25 +89,14 @@ public class TechnicianServiceImpl extends BaseServiceImpl<TechnicianMapper, Tec
 	public boolean fetchLastMonthData(TechnicianEntity technician) {
 		//查询上个月的数据
 		//得到上个月的年月
-		String lastDate = DateUtil.format(DateUtil.minusMonths(DateUtil.parse(technician.getYearAndMonth(), "yyyyMM"), 1), "yyyyMM");
+		String lastDate = DateUtil.format(DateUtil.minusMonths(DateUtil.parse(technician.getYearAndMonth(), DateUtil.PATTERN_YYYYMM), 1), DateUtil.PATTERN_YYYYMM);
 		List<TechnicianEntity> lastMonthList = this.baseMapper.selectByYearAndMonth(lastDate);
 		//与本月数据对比,去重后保存至数据库
 		for (TechnicianEntity temp : lastMonthList) {
 			temp.setYearAndMonth(technician.getYearAndMonth());
 			temp.setId(null);
-			saveTechnician(temp);
+			saveOrUpdateTechnician(temp);
 		}
 		return true;
 	}
-
-	private void check(TechnicianEntity technician) {
-		if (StringUtil.isBlank(technician.getYearAndMonth())) {
-			technician.setYearAndMonth(DateUtil.format(DateUtil.now(), "yyyyMM"));
-		}
-		//根据 年月 和工号或身份证 查询是否存在,存在则本次导入所有的数据都不成功
-		Integer count = this.baseMapper.countByDateAndNumberOrIdentityCard(technician);
-		if (count > 0) {
-			throw new ServiceException("导入失败,姓名:[" + technician.getName() + "]已存在,请检查数据");
-		}
-	}
 }

+ 1 - 1
pom.xml

@@ -9,7 +9,7 @@
     <packaging>pom</packaging>
 
     <properties>
-        <revision>2.0.1.RELEASE</revision>
+        <revision>2.0.5.RELEASE</revision>
 
         <java.version>17</java.version>
         <maven.plugin.version>3.11.0</maven.plugin.version>