zhoulisky 11 months ago
parent
commit
e47fd7cef0

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

@@ -0,0 +1,21 @@
+
+package org.sky.scientific.pojo.dto;
+
+import org.sky.scientific.pojo.entity.SalaryEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import java.io.Serial;
+
+/**
+ * 技术人员工资表 数据传输对象实体类
+ *
+ * @author Kd
+ * @since 2025-06-19
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class SalaryDTO extends SalaryEntity {
+	@Serial
+	private static final long serialVersionUID = 1L;
+
+}

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

@@ -0,0 +1,72 @@
+
+package org.sky.scientific.pojo.entity;
+
+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;
+import java.math.BigDecimal;
+
+/**
+ * 技术人员工资表 实体类
+ *
+ * @author Kd
+ * @since 2025-06-19
+ */
+@Data
+@TableName("kd_salary")
+@Schema(description = "Salary对象")
+@EqualsAndHashCode(callSuper = true)
+public class SalaryEntity extends TenantEntity {
+
+	@Serial
+	private static final long serialVersionUID = 1L;
+
+	@Schema(description = "姓名")
+	private String name;
+
+	@Schema(description = "工号")
+	private String number;
+
+	@Schema(description = "身份证号码")
+	private String identityCard;
+
+	@Schema(description = "所属年月,只需要年份,如2025", maxLength = 4)
+	private String yearAndMonth;
+
+	@Schema(description = "部门")
+	private String department;
+
+	@Schema(description = "人员类型")
+	private String personnelType;
+
+	@Schema(description = "上一年度月均工资(元)")
+	private BigDecimal averageMonthlySalary;
+
+	@Schema(description = "上一年度月均单位承担部分养老保险")
+	private BigDecimal pensionInsurance;
+
+	@Schema(description = "上一年度月均单位承担部分医疗保险")
+	private BigDecimal medicalInsurance;
+
+	@Schema(description = "上一年度月均单位承担部分失业保险")
+	private BigDecimal unemploymentInsurance;
+
+	@Schema(description = "上一年度月均单位承担部分工伤保险")
+	private BigDecimal injuryInsurance;
+
+	@Schema(description = "上一年度月均单位承担部分生育保险")
+	private BigDecimal maternityInsurance;
+
+	@Schema(description = "上一年度月均单位承担部分公积金")
+	private BigDecimal providentFund;
+
+	@Schema(description = "上一年度月均单位承担部分社保合计(元)")
+	private BigDecimal socialInsurance;
+
+	@Schema(description ="台计(元)")
+	private BigDecimal total;
+
+}

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

@@ -133,8 +133,6 @@ public class TechnicianEntity extends TenantEntity {
 	 * 所属年月
 	 */
 	@Schema(description = "所属年月")
-//	@DateTimeFormat(pattern = "yyyy-MM")
-//	@JsonFormat(pattern = "yyyy-MM")
 	private String yearAndMonth;
 
 	@Schema(description = "情况说明")

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

@@ -0,0 +1,21 @@
+
+package org.sky.scientific.pojo.vo;
+
+import org.sky.scientific.pojo.entity.SalaryEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import java.io.Serial;
+
+/**
+ * 技术人员工资表 视图实体类
+ *
+ * @author Kd
+ * @since 2025-06-19
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class SalaryVO extends SalaryEntity {
+	@Serial
+	private static final long serialVersionUID = 1L;
+
+}

+ 126 - 0
kd-service/kd-scientific/src/main/java/org/sky/scientific/controller/SalaryController.java

@@ -0,0 +1,126 @@
+
+package org.sky.scientific.controller;
+
+import io.swagger.v3.oas.annotations.tags.Tag;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.Parameter;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import lombok.AllArgsConstructor;
+import jakarta.validation.Valid;
+
+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.springframework.web.bind.annotation.*;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.sky.scientific.pojo.entity.SalaryEntity;
+import org.sky.scientific.pojo.vo.SalaryVO;
+import org.sky.scientific.excel.SalaryExcel;
+import org.sky.scientific.wrapper.SalaryWrapper;
+import org.sky.scientific.service.ISalaryService;
+import org.sky.core.boot.ctrl.KdController;
+import java.util.Map;
+import java.util.List;
+import jakarta.servlet.http.HttpServletResponse;
+
+/**
+ * 技术人员工资表 控制器
+ *
+ * @author Kd
+ * @since 2025-06-19
+ */
+@RestController
+@AllArgsConstructor
+@RequestMapping("/salary")
+@Tag(name = "技术人员工资表", description = "技术人员工资表接口")
+public class SalaryController extends KdController {
+
+	private final ISalaryService salaryService;
+
+	/**
+	 * 技术人员工资表 详情
+	 */
+	@GetMapping("/detail")
+	@ApiOperationSupport(order = 1)
+	@Operation(summary = "详情", description  = "传入salary")
+	public R<SalaryVO> detail(SalaryEntity salary) {
+		SalaryEntity detail = salaryService.getOne(Condition.getQueryWrapper(salary));
+		return R.data(SalaryWrapper.build().entityVO(detail));
+	}
+
+	/**
+	 * 技术人员工资表 自定义分页
+	 */
+	@GetMapping("/page")
+	@ApiOperationSupport(order = 3)
+	@Operation(summary = "分页", description  = "传入salary")
+	public R<IPage<SalaryVO>> page(SalaryVO salary, Query query) {
+		IPage<SalaryVO> pages = salaryService.selectSalaryPage(Condition.getPage(query), salary);
+		return R.data(pages);
+	}
+
+	/**
+	 * 技术人员工资表 新增
+	 */
+	@PostMapping("/save")
+	@ApiOperationSupport(order = 4)
+	@Operation(summary = "新增", description  = "传入salary")
+	public R save(@Valid @RequestBody SalaryEntity salary) {
+		return R.status(salaryService.saveSalary(salary));
+	}
+
+	/**
+	 * 技术人员工资表 修改
+	 */
+	@PostMapping("/update")
+	@ApiOperationSupport(order = 5)
+	@Operation(summary = "修改", description  = "传入salary")
+	public R update(@Valid @RequestBody SalaryEntity salary) {
+		return R.status(salaryService.updateById(salary));
+	}
+
+	/**
+	 * 技术人员工资表 新增或修改
+	 */
+	@PostMapping("/submit")
+	@ApiOperationSupport(order = 6)
+	@Operation(summary = "新增或修改", description  = "传入salary")
+	public R submit(@Valid @RequestBody SalaryEntity salary) {
+		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)));
+	}
+
+
+	/**
+	 * 导出数据
+	 */
+	@IsAdmin
+	@GetMapping("/export-salary")
+	@ApiOperationSupport(order = 9)
+	@Operation(summary = "导出数据", description  = "传入salary")
+	public void exportSalary(@Parameter(hidden = true) @RequestParam Map<String, Object> salary, KdUser kdUser, HttpServletResponse response) {
+		QueryWrapper<SalaryEntity> queryWrapper = Condition.getQueryWrapper(salary, SalaryEntity.class);
+		//if (!AuthUtil.isAdministrator()) {
+		//	queryWrapper.lambda().eq(Salary::getTenantId, kdUser.getTenantId());
+		//}
+		//queryWrapper.lambda().eq(SalaryEntity::getIsDeleted, KdConstant.DB_NOT_DELETED);
+		List<SalaryExcel> list = salaryService.exportSalary(queryWrapper);
+		ExcelUtil.export(response, "技术人员工资表数据" + DateUtil.time(), "技术人员工资表数据表", list, SalaryExcel.class);
+	}
+
+}

+ 99 - 0
kd-service/kd-scientific/src/main/java/org/sky/scientific/excel/SalaryExcel.java

@@ -0,0 +1,99 @@
+
+package org.sky.scientific.excel;
+
+
+import lombok.Data;
+
+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 java.io.Serializable;
+import java.io.Serial;
+import java.math.BigDecimal;
+
+
+/**
+ * 技术人员工资表 Excel实体类
+ *
+ * @author Kd
+ * @since 2025-06-19
+ */
+@Data
+@ColumnWidth(25)
+@HeadRowHeight(20)
+@ContentRowHeight(18)
+public class SalaryExcel implements Serializable {
+
+	@Serial
+	private static final long serialVersionUID = 1L;
+
+	@ColumnWidth(20)
+	@ExcelProperty("主键")
+	private Long id;
+
+	@ColumnWidth(20)
+	@ExcelProperty("租户ID")
+	private String tenantId;
+
+	@ColumnWidth(20)
+	@ExcelProperty("姓名")
+	private String name;
+
+	@ColumnWidth(20)
+	@ExcelProperty("工号")
+	private String number;
+
+	@ColumnWidth(20)
+	@ExcelProperty("身份证号码")
+	private String identityCard;
+
+	@ColumnWidth(20)
+	@ExcelProperty("所属年月,只需要年份,如2025")
+	private String yearAndMonth;
+
+	@ColumnWidth(20)
+	@ExcelProperty("部门")
+	private String department;
+
+	@ColumnWidth(20)
+	@ExcelProperty("人员类型")
+	private String personnelType;
+
+	@ColumnWidth(20)
+	@ExcelProperty("上一年度月均工资(元)")
+	private BigDecimal averageMonthlySalary;
+
+	@ColumnWidth(20)
+	@ExcelProperty("上一年度月均单位承担部分养老保险")
+	private BigDecimal pensionInsurance;
+
+	@ColumnWidth(20)
+	@ExcelProperty("上一年度月均单位承担部分医疗保险")
+	private BigDecimal medicalInsurance;
+
+	@ColumnWidth(20)
+	@ExcelProperty("上一年度月均单位承担部分失业保险")
+	private BigDecimal unemploymentInsurance;
+
+	@ColumnWidth(20)
+	@ExcelProperty("上一年度月均单位承担部分工伤保险")
+	private BigDecimal injuryInsurance;
+
+	@ColumnWidth(20)
+	@ExcelProperty("上一年度月均单位承担部分生育保险")
+	private BigDecimal maternityInsurance;
+
+	@ColumnWidth(20)
+	@ExcelProperty("上一年度月均单位承担部分社保合计(元)")
+	private BigDecimal socialInsurance;
+
+	@ColumnWidth(20)
+	@ExcelProperty("上一年度月均单位承担部分公积金")
+	private BigDecimal providentFund;
+
+	@ColumnWidth(20)
+	@ExcelProperty("台计(元)")
+	private BigDecimal total;
+
+}

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

@@ -0,0 +1,39 @@
+
+package org.sky.scientific.mapper;
+
+import org.sky.scientific.pojo.entity.SalaryEntity;
+import org.sky.scientific.pojo.vo.SalaryVO;
+import org.sky.scientific.excel.SalaryExcel;
+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-06-19
+ */
+public interface SalaryMapper extends BaseMapper<SalaryEntity> {
+
+	/**
+	 * 自定义分页
+	 *
+	 * @param page 分页参数
+	 * @param salary 查询参数
+	 * @return List<SalaryVO>
+	 */
+	List<SalaryVO> selectSalaryPage(IPage page, @Param("salary") SalaryVO salary);
+
+
+	/**
+	 * 获取导出数据
+	 *
+	 * @param queryWrapper 查询条件
+	 * @return List<SalaryExcel>
+	 */
+	List<SalaryExcel> exportSalary(@Param("ew") Wrapper<SalaryEntity> queryWrapper);
+
+}

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

@@ -0,0 +1,57 @@
+<?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.SalaryMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="salaryResultMap" type="org.sky.scientific.pojo.entity.SalaryEntity">
+        <result column="id" property="id"/>
+        <result column="tenant_id" property="tenantId"/>
+        <result column="name" property="name"/>
+        <result column="number" property="number"/>
+        <result column="identity_card" property="identityCard"/>
+        <result column="year_and_month" property="yearAndMonth"/>
+        <result column="department" property="department"/>
+        <result column="personnel_type" property="personnelType"/>
+        <result column="average_monthly_salary" property="averageMonthlySalary"/>
+        <result column="pension_insurance" property="pensionInsurance"/>
+        <result column="medical_insurance" property="medicalInsurance"/>
+        <result column="unemployment_insurance" property="unemploymentInsurance"/>
+        <result column="injury_insurance" property="injuryInsurance"/>
+        <result column="maternity_insurance" property="maternityInsurance"/>
+        <result column="provident_fund" property="providentFund"/>
+        <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="selectSalaryPage" resultMap="salaryResultMap">
+        select * from kd_salary
+        where is_deleted = 0 and year_and_month = #{salary.yearAndMonth}
+        <if test="salary.name != null">
+            and name like concat('%',#{salary.name},'%')
+        </if>
+        <if test="salary.number != null">
+            and number like concat('%',#{salary.number},'%')
+        </if>
+        <if test="salary.identityCard != null">
+            and identity_card like concat('%',#{salary.identityCard},'%')
+        </if>
+        <if test="salary.department != null">
+            and department like concat('%',#{salary.department},'%')
+        </if>
+        <if test="salary.personnelType != null">
+            and personnel_type = #{salary.personnelType}
+        </if>
+    </select>
+
+
+    <select id="exportSalary" resultType="org.sky.scientific.excel.SalaryExcel">
+        SELECT * FROM kd_salary ${ew.customSqlSegment}
+    </select>
+
+</mapper>

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

@@ -120,7 +120,7 @@
 
     <select id="selectByYearAndMonth">
         select * from kd_technician
-        where is_deleted = 0 and date_format(year_and_month,'%Y-%m') = #{yearAndMonth}
+        where is_deleted = 0 and LEFT(year_and_month,6) = #{yearAndMonth}
 
     </select>
 
@@ -135,10 +135,10 @@
         where is_deleted = 0
         <choose>
             <when test="yearAndMonth.length()==4">
-                and date_format(year_and_month,'%Y') = #{yearAndMonth}
+                and LEFT(year_and_month,4) = #{yearAndMonth}
             </when>
             <otherwise>
-                and date_format(year_and_month,'%Y-%m') = #{yearAndMonth}
+                and LEFT(year_and_month,6) = #{yearAndMonth}
             </otherwise>
         </choose>
         and (number = #{number} or identity_card = #{identityCard})

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

@@ -0,0 +1,43 @@
+
+package org.sky.scientific.service;
+
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
+import org.sky.scientific.pojo.entity.SalaryEntity;
+import org.sky.scientific.pojo.vo.SalaryVO;
+import org.sky.scientific.excel.SalaryExcel;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.sky.core.mp.base.BaseService;
+import java.util.List;
+
+/**
+ * 技术人员工资表 服务类
+ *
+ * @author Kd
+ * @since 2025-06-19
+ */
+public interface ISalaryService extends BaseService<SalaryEntity> {
+	/**
+	 * 自定义分页
+	 *
+	 * @param page 分页参数
+	 * @param salary 查询参数
+	 * @return IPage<SalaryVO>
+	 */
+	IPage<SalaryVO> selectSalaryPage(IPage<SalaryVO> page, SalaryVO salary);
+
+
+	/**
+	 * 导出数据
+	 *
+	 * @param queryWrapper 查询条件
+	 * @return List<SalaryExcel>
+	 */
+	List<SalaryExcel> exportSalary(Wrapper<SalaryEntity> queryWrapper);
+
+	/**
+	 * 保存
+	 * @param salary
+	 * @return
+	 */
+	boolean saveSalary(SalaryEntity salary);
+}

+ 106 - 0
kd-service/kd-scientific/src/main/java/org/sky/scientific/service/impl/SalaryServiceImpl.java

@@ -0,0 +1,106 @@
+
+package org.sky.scientific.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import jakarta.annotation.Resource;
+import org.sky.core.log.exception.ServiceException;
+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.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;
+
+/**
+ * 技术人员工资表 服务实现类
+ *
+ * @author Kd
+ * @since 2025-06-19
+ */
+@Service
+public class SalaryServiceImpl extends BaseServiceImpl<SalaryMapper, SalaryEntity> implements ISalaryService {
+
+	@Resource
+	private TechnicianMapper technicianMapper;
+
+	@Override
+	public IPage<SalaryVO> selectSalaryPage(IPage<SalaryVO> page, SalaryVO salary) {
+		List<SalaryVO> voList = baseMapper.selectSalaryPage(page, salary);
+		//如果数据空,则查询该年度整体是否有数据
+//		if (voList.isEmpty()) {
+//			LambdaQueryWrapper<SalaryEntity> wrapper = Wrappers.<SalaryEntity>query().lambda()
+//				.eq(SalaryEntity::getYearAndMonth, salary.getYearAndMonth())
+//				.eq(SalaryEntity::getTenantId, AuthUtil.getTenantId())
+//				.eq(SalaryEntity::getIsDeleted, 0);
+//			if (baseMapper.selectCount(wrapper) == 0) {
+//				 //将本年度技术人员基础数据插入工资表,工资数据为空
+//
+//			}
+//		}
+		return page.setRecords(voList);
+	}
+
+
+	@Override
+	public List<SalaryExcel> exportSalary(Wrapper<SalaryEntity> queryWrapper) {
+		List<SalaryExcel> salaryList = baseMapper.exportSalary(queryWrapper);
+		//salaryList.forEach(salary -> {
+		//	salary.setTypeName(DictCache.getValue(DictEnum.YES_NO, Salary.getType()));
+		//});
+		return salaryList;
+	}
+
+	@Override
+	public boolean saveSalary(SalaryEntity salary) {
+
+		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);
+			}
+		}
+		return affectNum > 0;
+	}
+
+}

+ 3 - 4
kd-service/kd-scientific/src/main/java/org/sky/scientific/service/impl/TechnicianServiceImpl.java

@@ -1,7 +1,6 @@
 
 package org.sky.scientific.service.impl;
 
-import com.baomidou.mybatisplus.core.conditions.Wrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import org.sky.core.log.exception.ServiceException;
 import org.sky.core.mp.base.BaseServiceImpl;
@@ -35,7 +34,7 @@ public class TechnicianServiceImpl extends BaseServiceImpl<TechnicianMapper, Tec
 	public boolean saveTechnician(TechnicianEntity technician) {
 		//检查重复性
 		check(technician);
-		technician.setYearAndMonth(technician.getYearAndMonth() + "-01");
+		technician.setYearAndMonth(technician.getYearAndMonth());
 		return this.save(technician);
 	}
 
@@ -76,7 +75,7 @@ public class TechnicianServiceImpl extends BaseServiceImpl<TechnicianMapper, Tec
 	public boolean fetchLastMonthData(TechnicianEntity technician) {
 		//查询上个月的数据
 		//得到上个月的年月
-		String lastDate = DateUtil.format(DateUtil.minusMonths(DateUtil.parse(technician.getYearAndMonth(), DateUtil.PATTERN_YYYY_MM), 1), DateUtil.PATTERN_YYYY_MM);
+		String lastDate = DateUtil.format(DateUtil.minusMonths(DateUtil.parse(technician.getYearAndMonth(), "yyyyMM"), 1), "yyyyMM");
 		List<TechnicianEntity> lastMonthList = this.baseMapper.selectByYearAndMonth(lastDate);
 		//与本月数据对比,去重后保存至数据库
 		for (TechnicianEntity temp : lastMonthList) {
@@ -89,7 +88,7 @@ public class TechnicianServiceImpl extends BaseServiceImpl<TechnicianMapper, Tec
 
 	private void check(TechnicianEntity technician) {
 		if (StringUtil.isBlank(technician.getYearAndMonth())) {
-			technician.setYearAndMonth(DateUtil.format(DateUtil.now(), DateUtil.PATTERN_YYYY_MM));
+			technician.setYearAndMonth(DateUtil.format(DateUtil.now(), "yyyyMM"));
 		}
 		//根据 年月 和工号或身份证 查询是否存在,存在则本次导入所有的数据都不成功
 		Integer count = this.baseMapper.countByDateAndNumberOrIdentityCard(technician);

+ 35 - 0
kd-service/kd-scientific/src/main/java/org/sky/scientific/wrapper/SalaryWrapper.java

@@ -0,0 +1,35 @@
+
+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.SalaryEntity;
+import org.sky.scientific.pojo.vo.SalaryVO;
+import java.util.Objects;
+
+/**
+ * 技术人员工资表 包装类,返回视图层所需的字段
+ *
+ * @author Kd
+ * @since 2025-06-19
+ */
+public class SalaryWrapper extends BaseEntityWrapper<SalaryEntity, SalaryVO> {
+
+	public static SalaryWrapper build() {
+		return new SalaryWrapper();
+ 	}
+
+	@Override
+	public SalaryVO entityVO(SalaryEntity salary) {
+		SalaryVO salaryVO = Objects.requireNonNull(BeanUtil.copyProperties(salary, SalaryVO.class));
+
+		//User createUser = UserCache.getUser(salary.getCreateUser());
+		//User updateUser = UserCache.getUser(salary.getUpdateUser());
+		//salaryVO.setCreateUserName(createUser.getName());
+		//salaryVO.setUpdateUserName(updateUser.getName());
+
+		return salaryVO;
+	}
+
+
+}