离职入职相关

main
zhaokai 2025-12-05 10:55:38 +08:00
parent f2d62e3306
commit 7b841a1a5a
3 changed files with 36 additions and 19 deletions

View File

@ -146,20 +146,20 @@ public class UserAddExe {
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public boolean executeOnboarding(AppUserOnboardingCmd cmd) { public boolean executeOnboarding(AppUserOnboardingCmd cmd) {
// 如果是流动人员, 判断user_corp表是否有未离职的数据, 如果有则不能入职(0-离职) //// 如果是流动人员, 判断user_corp表是否有未离职的数据, 如果有则不能入职(1-离职)
/** List<UserCorpDO> userCorpDOS = userCorpRepository.listByUserIdAndCorpIdAndNoStatus(cmd.getId(), cmd.getCorpinfoId(), UserEmploymentFlagEnum.RESIGNATION.getCode());
* ,
*/
List<UserCorpDO> userCorpDOS = userCorpRepository.listByUserIdAndCorpIdAndStatus(cmd.getId(), cmd.getCorpinfoId(), 0);
if(CollUtil.isNotEmpty(userCorpDOS)){ if(CollUtil.isNotEmpty(userCorpDOS)){
throw new BizException("该用户在当前企业存在未离职信息,无法入职"); throw new BizException("该用户在当前企业存在未离职信息,无法入职");
} }
/**
* ,
*/
// 把user表和user_corp表相关企业,部门,岗位数据补充完整 // 把user表和user_corp表相关企业,部门,岗位数据补充完整
UserE userE = new UserE(); UserE userE = new UserE();
BeanUtils.copyProperties(cmd, userE); BeanUtils.copyProperties(cmd, userE);
userE.setEmploymentFlag(UserEmploymentFlagEnum.ENTRY_AUDIT.getCode());
userGateway.update(userE);
// 查询用户信息, 获取是否流动人员 // 查询用户信息, 获取是否流动人员
UserDO userDO = userRepository.getById(cmd.getId()); UserDO userDO = userRepository.getById(cmd.getId());
@ -167,8 +167,7 @@ public class UserAddExe {
throw new BizException("用户不存在"); throw new BizException("用户不存在");
} }
if(UserFlowFlagEnum.FLOW.getCode().equals(userDO.getFlowFlag())){ if(UserFlowFlagEnum.FLOW.getCode().equals(userDO.getFlowFlag())){
// List<UserCorpDO> userCorpList = userCorpRepository.listByUserIdAndCorpIdAndStatus(cmd.getId(), cmd.getCorpinfoId(), UserEmploymentFlagEnum.RESIGNATION.getCode());
List<UserCorpDO> userCorpList = userCorpRepository.listByUserIdAndCorpIdAndNoStatus(cmd.getId(), cmd.getCorpinfoId(), 0);
if(CollUtil.isNotEmpty(userCorpList)){ if(CollUtil.isNotEmpty(userCorpList)){
if(userCorpList.size() > 1){ if(userCorpList.size() > 1){
throw new BizException("用户在当前企业存在多条离职数据,请联系管理员。"); throw new BizException("用户在当前企业存在多条离职数据,请联系管理员。");
@ -191,8 +190,14 @@ public class UserAddExe {
userCorpE.setEmploymentFlag(UserEmploymentFlagEnum.ENTRY_AUDIT.getCode()); userCorpE.setEmploymentFlag(UserEmploymentFlagEnum.ENTRY_AUDIT.getCode());
userCorpGateway.add(userCorpE); userCorpGateway.add(userCorpE);
} }
}else{
userE.setEmploymentFlag(UserEmploymentFlagEnum.ENTRY_AUDIT.getCode());
//
if(userDO.getCorpinfoId()!=null){
throw new BizException("用户已存在企业信息,请勿重复入职");
} }
}
userGateway.update(userE);
// 插入user_corp_record表 // 插入user_corp_record表
UserCorpRecordE userCorpRecordE = new UserCorpRecordE(); UserCorpRecordE userCorpRecordE = new UserCorpRecordE();
userCorpRecordE.initAddFromApp(userE, cmd.getCorpinfoName(), cmd.getDepartmentName()); userCorpRecordE.initAddFromApp(userE, cmd.getCorpinfoName(), cmd.getDepartmentName());

View File

@ -34,6 +34,7 @@ import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.time.LocalDateTime;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
@ -243,10 +244,10 @@ public class UserUpdateExe {
userChangeRecordE.executeResignation(userE, UserEmploymentFlagEnum.RESIGNATION.getCode(), UserChangeRecordStatusEnum.APPROVED.getCode(), employmentFlagBefore); userChangeRecordE.executeResignation(userE, UserEmploymentFlagEnum.RESIGNATION.getCode(), UserChangeRecordStatusEnum.APPROVED.getCode(), employmentFlagBefore);
userChangeRecordGateway.add(userChangeRecordE); userChangeRecordGateway.add(userChangeRecordE);
//TODO 处理未完成工作 //TODO 处理未完成工作
List<UserJobHandoverDO> allJob = getUserJob(userDO.getId(),corpinfoId,userChangeRecordE.getUserChangeRecordId()); // List<UserJobHandoverDO> allJob = getUserJob(userDO.getId(),corpinfoId,userChangeRecordE.getUserChangeRecordId());
userJobHandoverRepository.saveBatch(allJob); // userJobHandoverRepository.saveBatch(allJob);
//TODO 离职发送,循环调用,失败的话,返回失败, // //TODO 离职发送,循环调用,失败的话,返回失败,
ResignatioChangeJob(allJob); // ResignatioChangeJob(allJob);
} }
@ -314,7 +315,7 @@ public class UserUpdateExe {
//处理未完成的工作 //处理未完成的工作
//获取未完成工作 //获取未完成工作
List<UserJobHandoverDO> allJob = userJobHandoverRepository.getListByChangerRecordId(userChangeRecordE.getUserChangeRecordId()); List<UserJobHandoverDO> allJob = userJobHandoverRepository.getListByChangerRecordId(userChangeRecordE.getUserChangeRecordId());
ResignatioChangeJob(allJob); // ResignatioChangeJob(allJob);
} else { } else {
//驳回 //驳回
@ -354,16 +355,25 @@ public class UserUpdateExe {
if (UserChangeRecordStatusEnum.APPROVED.getCode().equals(reviewStatus)) { if (UserChangeRecordStatusEnum.APPROVED.getCode().equals(reviewStatus)) {
//增加企业入职记录 //增加企业入职记录
//增加用户入职企业. 驳回不增加下边信息 //增加用户入职企业. 驳回不增加下边信息
CorpInfoDO corpInfoDO = corpInfoRepository.getById(userE.getCorpinfoId()); /* CorpInfoDO corpInfoDO = corpInfoRepository.getById(userE.getCorpinfoId());
DepartmentDO departmentDO = departmentRepository.getById(userE.getDepartmentId()); DepartmentDO departmentDO = departmentRepository.getById(userE.getDepartmentId());
UserCorpRecordE userCorpRecordE = new UserCorpRecordE(); UserCorpRecordE userCorpRecordE = new UserCorpRecordE();
BeanUtils.copyProperties(userDO, userCorpRecordE); BeanUtils.copyProperties(userDO, userCorpRecordE);
userCorpRecordE.initAdd(userE, corpInfoDO.getCorpName(), departmentDO.getName()); userCorpRecordE.initAdd(userE, corpInfoDO.getCorpName(), departmentDO.getName());
userCorpRecordGateway.add(userCorpRecordE); userCorpRecordGateway.add(userCorpRecordE);*/
UserCorpRecordDO userCorpRecordDO = userCorpRecordRepository.getInfoByUserId(userDO.getId(), corpinfoId, UserEmploymentFlagEnum.ENTRY_AUDIT.getCode());
UserCorpRecordE userCorpRecordE = new UserCorpRecordE();
if (userCorpRecordDO != null) {
BeanUtils.copyProperties(userCorpRecordDO, userCorpRecordE);
userCorpRecordE.executeEntryAudit(userCorpRecordE, userE, UserEmploymentFlagEnum.ON.getCode(), UserChangeRecordStatusEnum.APPROVED.getCode());
userCorpRecordGateway.update(userCorpRecordE);
}
// 增加用户变更记录 ,获取变更记录 // 增加用户变更记录 ,获取变更记录
UserChangeRecordE userChangeRecordE = new UserChangeRecordE(); UserChangeRecordE userChangeRecordE = new UserChangeRecordE();
userChangeRecordE.executeReviewStatus(userE, UserEmploymentFlagEnum.ON.getCode(),UserChangeRecordStatusEnum.APPROVED.getCode()); userChangeRecordE.executeReviewStatus(userE, UserEmploymentFlagEnum.ON.getCode(),UserChangeRecordStatusEnum.APPROVED.getCode());
userCorpRecordE.setStartTime( LocalDateTime.now());
userChangeRecordGateway.add(userChangeRecordE); userChangeRecordGateway.add(userChangeRecordE);
} else { } else {
@ -412,8 +422,8 @@ public class UserUpdateExe {
userChangeRecordE.executeResignation(userE, UserEmploymentFlagEnum.RESIGNATION_AUDIT.getCode(), UserChangeRecordStatusEnum.PENDING.getCode(), employmentFlagBefore); userChangeRecordE.executeResignation(userE, UserEmploymentFlagEnum.RESIGNATION_AUDIT.getCode(), UserChangeRecordStatusEnum.PENDING.getCode(), employmentFlagBefore);
userChangeRecordGateway.add(userChangeRecordE); userChangeRecordGateway.add(userChangeRecordE);
//TODO 处理未完成工作 //TODO 处理未完成工作
List<UserJobHandoverDO> allJob = getUserJob(userDO.getId(),corpinfoId,userChangeRecordE.getUserChangeRecordId()); // List<UserJobHandoverDO> allJob = getUserJob(userDO.getId(),corpinfoId,userChangeRecordE.getUserChangeRecordId());
userJobHandoverRepository.saveBatch(allJob); // userJobHandoverRepository.saveBatch(allJob);
} }
private List<UserJobHandoverDO> getUserJob(Long userId, Long corpinfoId, String userChangeRecordId) { private List<UserJobHandoverDO> getUserJob(Long userId, Long corpinfoId, String userChangeRecordId) {

View File

@ -333,6 +333,8 @@
OR u.id != u.corpinfo_id OR u.id != u.corpinfo_id
) )
AND u.delete_enum = 'FALSE' AND u.delete_enum = 'FALSE'
<if test="params.eqCorpinfoId != null"> <if test="params.eqCorpinfoId != null">
AND ( AND (