From 89071e0c09188d75c3d537f82204ae19713ac7fe Mon Sep 17 00:00:00 2001
From: tuqin <tuqin@tuqin.cn>
Date: 星期一, 12 十月 2026 10:09:33 +0800
Subject: [PATCH] feat(hrm): 合同生成与模板下载、员工转正、导入导出字段对齐
---
yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/service/employee/HrmEmployeeServiceImpl.java | 64 ++++++++++++++++++++++++++++++++
1 files changed, 64 insertions(+), 0 deletions(-)
diff --git a/yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/service/employee/HrmEmployeeServiceImpl.java b/yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/service/employee/HrmEmployeeServiceImpl.java
index 92a709e..3864fd3 100644
--- a/yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/service/employee/HrmEmployeeServiceImpl.java
+++ b/yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/service/employee/HrmEmployeeServiceImpl.java
@@ -6,6 +6,7 @@
import cn.iocoder.yudao.framework.common.exception.ServiceException;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.module.hrm.controller.admin.employee.vo.HrmEmployeeEducationSaveReqVO;
import cn.iocoder.yudao.module.hrm.controller.admin.employee.vo.HrmEmployeeEmergencyContactSaveReqVO;
import cn.iocoder.yudao.module.hrm.controller.admin.employee.vo.HrmEmployeeImportExcelVO;
@@ -16,10 +17,12 @@
import cn.iocoder.yudao.module.hrm.controller.admin.employee.vo.HrmEmployeeSaveReqVO;
import cn.iocoder.yudao.module.hrm.controller.admin.employee.vo.HrmEmployeeSimpleRespVO;
import cn.iocoder.yudao.module.hrm.controller.admin.employee.vo.HrmEmployeeWorkHistorySaveReqVO;
+import cn.iocoder.yudao.module.hrm.dal.dataobject.employee.HrmEmployeeContractDO;
import cn.iocoder.yudao.module.hrm.dal.dataobject.employee.HrmEmployeeDO;
import cn.iocoder.yudao.module.hrm.dal.dataobject.employee.HrmEmployeeEducationDO;
import cn.iocoder.yudao.module.hrm.dal.dataobject.employee.HrmEmployeeEmergencyContactDO;
import cn.iocoder.yudao.module.hrm.dal.dataobject.employee.HrmEmployeeWorkHistoryDO;
+import cn.iocoder.yudao.module.hrm.dal.mysql.employee.HrmEmployeeContractMapper;
import cn.iocoder.yudao.module.hrm.dal.mysql.employee.HrmEmployeeEducationMapper;
import cn.iocoder.yudao.module.hrm.dal.mysql.employee.HrmEmployeeEmergencyContactMapper;
import cn.iocoder.yudao.module.hrm.dal.mysql.employee.HrmEmployeeMapper;
@@ -42,6 +45,7 @@
import org.springframework.transaction.annotation.Transactional;
import org.springframework.validation.annotation.Validated;
+import java.time.LocalDate;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
@@ -68,6 +72,8 @@
@Resource
private HrmEmployeeMapper employeeMapper;
+ @Resource
+ private HrmEmployeeContractMapper contractMapper;
@Resource
private HrmEmployeeEducationMapper educationMapper;
@Resource
@@ -475,6 +481,11 @@
reqVO.setEducation(importEmployee.getEducation());
reqVO.setPoliticalStatus(importEmployee.getPoliticalStatus());
reqVO.setRemark(importEmployee.getRemark());
+ reqVO.setEmployeeCategory(importEmployee.getEmployeeCategory());
+ reqVO.setBaseSalary(importEmployee.getBaseSalary());
+ reqVO.setBankName(importEmployee.getBankName());
+ reqVO.setBankAccount(importEmployee.getBankAccount());
+ reqVO.setAddress(importEmployee.getAddress());
return reqVO;
}
@@ -530,4 +541,57 @@
return roleIds;
}
+ // ========== 杞 ==========
+
+ @Override
+ public void regularizeEmployee(Long id) {
+ validateEmployee(id);
+ HrmEmployeeContractDO contract = findCurrentContract(id);
+ // 浠呫�屽姵鍔ㄥ悎鍚屻�嶅彲杞锛涘姵鍔″悎鍚屼笉杞
+ if (contract == null || !Integer.valueOf(1).equals(contract.getContractType())) {
+ throw exception(EMPLOYEE_REGULARIZE_NEED_LABOR_CONTRACT);
+ }
+ HrmEmployeeDO updateObj = new HrmEmployeeDO();
+ updateObj.setId(id);
+ updateObj.setEmployeeStatus(1); // 1-鍦ㄨ亴
+ updateObj.setRegularDate(LocalDate.now());
+ employeeMapper.updateById(updateObj);
+ }
+
+ @Override
+ public List<HrmEmployeeDO> getRegularizeReminderList(Integer days) {
+ int aheadDays = days == null ? 7 : days;
+ LocalDate limit = LocalDate.now().plusDays(aheadDays);
+ // 璇曠敤涓殑鍛樺伐
+ List<HrmEmployeeDO> trials = employeeMapper.selectList(
+ new LambdaQueryWrapperX<HrmEmployeeDO>().eq(HrmEmployeeDO::getEmployeeStatus, 2));
+ List<HrmEmployeeDO> result = new ArrayList<>();
+ for (HrmEmployeeDO employee : trials) {
+ HrmEmployeeContractDO contract = findCurrentContract(employee.getId());
+ // 浠呭姵鍔ㄥ悎鍚屻�佷笖璇曠敤鏈熷嵆灏嗗埌鏈�
+ if (contract == null || !Integer.valueOf(1).equals(contract.getContractType())) {
+ continue;
+ }
+ LocalDate probationEnd = contract.getProbationEndDate();
+ if (probationEnd != null && !probationEnd.isAfter(limit)) {
+ result.add(employee);
+ }
+ }
+ return result;
+ }
+
+ /** 鏌ヨ鍛樺伐褰撳墠鐢熸晥鍚堝悓 */
+ private HrmEmployeeContractDO findCurrentContract(Long employeeId) {
+ List<HrmEmployeeContractDO> list = contractMapper.selectListByEmployee(employeeId);
+ if (CollUtil.isEmpty(list)) {
+ return null;
+ }
+ for (HrmEmployeeContractDO contract : list) {
+ if (Boolean.TRUE.equals(contract.getIsCurrent())) {
+ return contract;
+ }
+ }
+ return null;
+ }
+
}
\ No newline at end of file
--
Gitblit v1.9.3