离职入职相关

main
zhaokai 2025-12-04 09:14:31 +08:00
parent 8515519038
commit 2d63d0715e
14 changed files with 93 additions and 29 deletions

View File

@ -245,7 +245,8 @@ public class UserAddExe {
if(UserFlowFlagEnum.FLOW.getCode().equals(cmd.getFlowFlag())){
//流动人员
UserCorpE userCorpE = new UserCorpE();
BeanUtils.copyProperties(cmd, userCorpE);
// BeanUtils.copyProperties(userE, userCorpE);
// userCorpE.setCorpinfoId(tenantId);
userCorpE.initAdd(tenantId, userE);
userCorpGateway.add(userCorpE);
}

View File

@ -79,7 +79,10 @@ public class UserUpdateExe {
userCorpGateway.update(userCorpE);
} else {
UserCorpE userCorpE = new UserCorpE();
userCorpE.initAdd(AuthContext.getTenantId(), userE);
BeanUtils.copyProperties(oldUserE, userCorpE);
BeanUtils.copyProperties(userE, userCorpE);
// userCorpE.initAdd( userE,oldUserE);
userCorpE.setId(null);
userCorpGateway.add(userCorpE);
BeanUtils.copyProperties(userCorpE, infoByUserId);
}
@ -164,10 +167,10 @@ public class UserUpdateExe {
UserCorpRecordE userCorpRecordE = new UserCorpRecordE();
if(userCorpRecordDO!=null){
BeanUtils.copyProperties(userCorpRecordDO, userCorpRecordE);
userCorpRecordE.executeResignation(userCorpRecordE,userE);
userCorpRecordE.executeResignation(userCorpRecordE,userE,UserEmploymentFlagEnum.RESIGNATION.getCode(),UserChangeRecordStatusEnum.APPROVED.getCode());
userCorpRecordGateway.update(userCorpRecordE);
}else{
userCorpRecordE.initResignation(userE);
userCorpRecordE.initResignation(userE,UserEmploymentFlagEnum.RESIGNATION.getCode(),UserChangeRecordStatusEnum.APPROVED.getCode());
userCorpRecordGateway.add(userCorpRecordE);
}
@ -220,25 +223,32 @@ public class UserUpdateExe {
}
if(UserChangeRecordStatusEnum.APPROVED.getCode().equals(reviewStatus)){
//修改企业入职记录
UserCorpRecordDO userCorpRecordDO = userCorpRecordRepository.getInfoByUserId(userDO.getId(), corpinfoId, UserEmploymentFlagEnum.ON.getCode());
UserCorpRecordDO userCorpRecordDO = userCorpRecordRepository.getInfoByUserId(userDO.getId(), corpinfoId, UserEmploymentFlagEnum.RESIGNATION_AUDIT.getCode());
UserCorpRecordE userCorpRecordE = new UserCorpRecordE();
if(userCorpRecordDO!=null){
BeanUtils.copyProperties(userCorpRecordDO, userCorpRecordE);
userCorpRecordDO.setEmploymentFlag(UserEmploymentFlagEnum.RESIGNATION.getCode());
userCorpRecordDO.setUpdateTime(LocalDateTime.now());
userCorpRecordRepository.updateById(userCorpRecordDO);
userCorpRecordE.executeResignation(userCorpRecordE,userE);
userCorpRecordE.executeResignation(userCorpRecordE,userE,UserEmploymentFlagEnum.RESIGNATION.getCode(),UserChangeRecordStatusEnum.APPROVED.getCode());
userCorpRecordGateway.update(userCorpRecordE);
}else{
userCorpRecordE.initResignation(userE);
userCorpRecordE.initResignation(userE,UserEmploymentFlagEnum.RESIGNATION.getCode(),UserChangeRecordStatusEnum.APPROVED.getCode());
userCorpRecordGateway.add(userCorpRecordE);
}
// 增加用户变更记录
UserChangeRecordE userChangeRecordE = new UserChangeRecordE();
userChangeRecordE.executeReviewStatus(userE, UserEmploymentFlagEnum.RESIGNATION.getCode());
userChangeRecordGateway.add(userChangeRecordE);
}else{
//驳回
UserCorpRecordDO userCorpRecordDO = userCorpRecordRepository.getInfoByUserId(userDO.getId(), corpinfoId, UserEmploymentFlagEnum.RESIGNATION_AUDIT.getCode());
UserCorpRecordE userCorpRecordE = new UserCorpRecordE();
if(userCorpRecordDO!=null){
BeanUtils.copyProperties(userCorpRecordDO, userCorpRecordE);
userCorpRecordE.executeResignation(userCorpRecordE,userE,UserEmploymentFlagEnum.ON.getCode(),UserChangeRecordStatusEnum.REJECTED.getCode());
userCorpRecordGateway.update(userCorpRecordE);
}else{
userCorpRecordE.initResignation(userE,UserEmploymentFlagEnum.ON.getCode(),UserChangeRecordStatusEnum.REJECTED.getCode());
userCorpRecordGateway.add(userCorpRecordE);
}
}
}
@ -273,6 +283,16 @@ public class UserUpdateExe {
UserChangeRecordE userChangeRecordE = new UserChangeRecordE();
userChangeRecordE.executeReviewStatus(userE, UserEmploymentFlagEnum.ON.getCode());
userChangeRecordGateway.add(userChangeRecordE);
}else{
//驳回
//驳回
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.NOT_ON.getCode(),UserChangeRecordStatusEnum.REJECTED.getCode());
userCorpRecordGateway.update(userCorpRecordE);
}
}
}
@ -300,6 +320,7 @@ public class UserUpdateExe {
userE.setEmploymentFlag(UserEmploymentFlagEnum.RESIGNATION_AUDIT.getCode());
userGateway.update(userE);
}
//插入变更记录
UserChangeRecordE userChangeRecordE = new UserChangeRecordE();
userChangeRecordE.executeResignation(userE,UserEmploymentFlagEnum.RESIGNATION_AUDIT.getCode(),UserChangeRecordStatusEnum.PENDING.getCode(),employmentFlagBefore);

View File

@ -72,12 +72,10 @@ public class UserChangeRecordQueryExe {
if(userChangeRecordInfoQry.getCorpinfoId() == null){
userChangeRecordInfoQry.setCorpinfoId(AuthContext.getTenantId());
}
queryWrapper.eq("corpinfo_id_before", userChangeRecordInfoQry.getCorpinfoId());
queryWrapper.eq("user_id", userChangeRecordInfoQry.getUserId());
queryWrapper.eq("status", UserChangeRecordStatusEnum.PENDING.getCode());
queryWrapper.orderByDesc("create_time");
queryWrapper.last("limit 1");
UserChangeRecordDO userChangeRecordDO = userChangeRecordRepository.getOne(queryWrapper);
UserChangeRecordDO userChangeRecordDO =userChangeRecordRepository.getChangerRecordInfoById(userChangeRecordInfoQry.getUserId(), userChangeRecordInfoQry.getCorpinfoId(),UserChangeRecordStatusEnum.PENDING.getCode());
if(userChangeRecordDO == null){
return null;
}

View File

@ -1,6 +1,7 @@
package com.zcloud.basic.info.dto.clientobject;
import com.alibaba.cola.dto.ClientObject;
import com.baomidou.mybatisplus.annotation.TableField;
import io.swagger.annotations.ApiModelProperty;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
@ -77,7 +78,10 @@ public class UserChangeRecordCO extends ClientObject {
private Integer userStatusAfter;
@ApiModelProperty(value = "离职原因")
private String resignationReason;
//用户名称
@ApiModelProperty(value = "用户名称")
@TableField(exist = false)
private String userName;
@ApiModelProperty(value = "工作交接记录信息")
private List<UserJobHandoverCO> userJobHandoverCOList;

View File

@ -161,7 +161,7 @@ public class UserXmfCO extends ClientObject {
private String mappingPostName;
private String mappingDeptName;
// 入职状态
@ApiModelProperty(value = "入职状态 1-在职 0-离职, 2-入职待审核, 3-离职待审核")
@ApiModelProperty(value = "入职状态1-在职 0-离职, 11-入职待审核, 10-离职待审核")
private Integer employmentFlag;
// 入职状态
@ApiModelProperty(value = "是否流动人员1-流动0-固定人员")

View File

@ -73,6 +73,7 @@ public class UserCorpE extends BaseE {
this.roleId = userE.getRoleId();
this.sort = userE.getSort();
this.departmentLeaderFlag = userE.getDepartmentLeaderFlag();
this.employmentFlag = userE.getEmploymentFlag();
}
public void initUpdate(UserE userE) {

View File

@ -79,18 +79,18 @@ public class UserCorpRecordE extends BaseE {
this.startTime = LocalDateTime.now();
}
public void executeResignation(UserCorpRecordE userCorpRecordE, UserE userE) {
public void executeResignation(UserCorpRecordE userCorpRecordE, UserE userE,Integer employmentFlag,Integer status) {
this.corpinfoName = userCorpRecordE.getCorpinfoName();
this.departmentId = userE.getDepartmentId();
this.departmentName = userE.getDepartmentName();
this.postId = userE.getPostId();
this.postName = userE.getPostName();
this.employmentFlag = UserEmploymentFlagEnum.RESIGNATION.getCode();
this.status = UserChangeRecordStatusEnum.APPROVED.getCode();
this.employmentFlag = employmentFlag;
this.status = status;
this.endTime = LocalDateTime.now();
}
public void initResignation(UserE userE) {
public void initResignation(UserE userE,Integer employmentFlag,Integer status) {
this.userId = userE.getId();
this.corpinfoId = userE.getCorpinfoId();
this.corpinfoName = userE.getCorpinfoName();
@ -98,10 +98,22 @@ public class UserCorpRecordE extends BaseE {
this.departmentName = userE.getDepartmentName();
this.postId = userE.getPostId();
this.postName = userE.getPostName();
this.employmentFlag = UserEmploymentFlagEnum.RESIGNATION.getCode();
this.status = UserChangeRecordStatusEnum.APPROVED.getCode();
this.employmentFlag = employmentFlag;
this.status = status;
this.startTime = LocalDateTime.now();
this.endTime = LocalDateTime.now();
}
public void executeEntryAudit(UserCorpRecordE userCorpRecordE, UserE userE, Integer employmentFlag, Integer status) {
this.userId = userE.getId();
this.corpinfoId = userE.getCorpinfoId();
this.corpinfoName = userCorpRecordE.getCorpinfoName();
this.departmentId = userE.getDepartmentId();
this.departmentName = userE.getDepartmentName();
this.postId = userE.getPostId();
this.postName = userE.getPostName();
this.employmentFlag = employmentFlag;
this.status = status;
}
}

View File

@ -156,7 +156,9 @@ public class UserE extends BaseE {
public void initAdd(Long tenantId, UserE userE) {
userE.setUserId(Tools.get32UUID());
if(StringUtils.isEmpty(userE.getUserId())){
userE.setUserId(Tools.get32UUID());
}
userE.setTenantId(!ObjectUtils.isEmpty(userE.getTenantId()) ? userE.getTenantId() : tenantId);
userE.setCorpinfoId(!ObjectUtils.isEmpty(userE.getCorpinfoId()) ? userE.getCorpinfoId() : tenantId);
userE.setEmploymentFlag(1);

View File

@ -77,6 +77,11 @@ public class UserChangeRecordDO extends BaseDO {
@ApiModelProperty(value = "离职原因")
private String resignationReason;
//用户名称
@ApiModelProperty(value = "用户名称")
@TableField(exist = false)
private String userName;
public UserChangeRecordDO(String userChangeRecordId) {
this.userChangeRecordId = userChangeRecordId;
}

View File

@ -13,5 +13,6 @@ import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface UserChangeRecordMapper extends BaseMapper<UserChangeRecordDO> {
UserChangeRecordDO getChangerRecordInfoById(Long userId, Long corpinfoId, Integer status);
}

View File

@ -21,5 +21,8 @@ public interface UserChangeRecordRepository extends BaseRepository<UserChangeRec
List<UserChangeRecordDO> list(Map<String, Object> params);
SingleResponse<UserChangeRecordDO> getInfoById(Long id);
UserChangeRecordDO getChangerRecordInfoById(Long userId, Long corpinfoId, Integer status);
}

View File

@ -51,5 +51,10 @@ public class UserChangeRecordRepositoryImpl extends BaseRepositoryImpl<UserChang
public SingleResponse<UserChangeRecordDO> getInfoById(Long id) {
return SingleResponse.of(userChangeRecordMapper.selectById(id));
}
@Override
public UserChangeRecordDO getChangerRecordInfoById(Long userId, Long corpinfoId, Integer status) {
return userChangeRecordMapper.getChangerRecordInfoById(userId, corpinfoId, status);
}
}

View File

@ -3,5 +3,16 @@
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.zcloud.basic.info.persistence.mapper.UserChangeRecordMapper">
<select id="getChangerRecordInfoById" resultType="com.zcloud.basic.info.persistence.dataobject.UserChangeRecordDO">
select ucr.*,u.name as userName
from user_change_record ucr
left join user u on ucr.user_id = u.id
where ucr.delete_enum = 'FALSE'
and ucr.corpinfo_id_after =#{corpinfoId}
and ucr.user_id =#{userId}
and ucr.status =#{status}
order by ucr.create_time desc
limit 1
</select>
</mapper>

View File

@ -311,7 +311,7 @@
END AS corpName,
CASE
WHEN u.flow_flag = 0 THEN u.department_id
WHEN u.flow_flag = 1 THEN cpd.id
WHEN u.flow_flag = 1 THEN cp.department_id
END AS departmentId,
CASE
WHEN u.flow_flag = 0 THEN u.corpinfo_id
@ -321,7 +321,7 @@
user u
LEFT JOIN user_corp cp ON u.id = cp.user_id AND cp.delete_enum = 'FALSE'
LEFT JOIN department ud ON u.department_id = ud.id
LEFT JOIN department cpd ON ud.parent_id = cpd.id
LEFT JOIN department cpd ON cp.department_id = cpd.id
AND cpd.delete_enum = 'FALSE'
AND cp.corpinfo_id = cpd.corpinfo_id
LEFT JOIN corp_info cu ON u.corpinfo_id = cu.id