feat(corp): 添加企业用户统计功能和优化用户变更记录处理,添加用户离职工作交接工作
parent
4ce5bb5723
commit
b43696469c
|
|
@ -1,23 +1,27 @@
|
|||
package com.zcloud.basic.info.facade;
|
||||
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import cn.hutool.core.bean.copier.CopyOptions;
|
||||
import cn.hutool.json.JSONUtil;
|
||||
import com.alibaba.cola.dto.MultiResponse;
|
||||
import com.alibaba.cola.dto.SingleResponse;
|
||||
import com.alibaba.cola.exception.BizException;
|
||||
import com.zcloud.basic.info.api.UserServiceI;
|
||||
import com.zcloud.basic.info.command.convertor.UserCoConvertor;
|
||||
import com.zcloud.basic.info.dto.UserAddCmd;
|
||||
import com.zcloud.basic.info.dto.UserUpdateCmd;
|
||||
import com.zcloud.basic.info.dto.clientobject.UserCO;
|
||||
import com.zcloud.basic.info.persistence.dataobject.UserDO;
|
||||
import com.zcloud.basic.info.persistence.dataobject.UserImgDO;
|
||||
import com.zcloud.basic.info.persistence.repository.UserRepository;
|
||||
import com.zcloud.gbscommon.utils.PageQueryHelper;
|
||||
import com.zcloud.gbscommon.zclouduser.facade.ZcloudUserFacade;
|
||||
import com.zcloud.gbscommon.zclouduser.request.ZcloudUserAddCmd;
|
||||
import com.zcloud.gbscommon.zclouduser.request.ZcloudUserImgQry;
|
||||
import com.zcloud.gbscommon.zclouduser.request.ZcloudUserQry;
|
||||
import com.zcloud.gbscommon.zclouduser.request.*;
|
||||
import com.zcloud.gbscommon.zclouduser.response.ZcloudUserCo;
|
||||
import com.zcloud.gbscommon.zclouduser.response.ZcloudUserImgBase64Co;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.dubbo.config.annotation.DubboService;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.ArrayList;
|
||||
|
|
@ -28,6 +32,7 @@ import java.util.Map;
|
|||
/**
|
||||
* @author lin
|
||||
*/
|
||||
@Slf4j
|
||||
@DubboService
|
||||
public class ZcloudUserFacadeImpl implements ZcloudUserFacade {
|
||||
@Resource
|
||||
|
|
@ -106,5 +111,85 @@ public class ZcloudUserFacadeImpl implements ZcloudUserFacade {
|
|||
return userServiceI.addHumanUser(userAddCmd);
|
||||
}
|
||||
|
||||
/**
|
||||
* 人资用户变更 Dubbo 入口。
|
||||
* 这里负责把外部系统的更新命令转换为本系统命令对象,
|
||||
* 并在查到原用户时先回填老数据,再将非空的新值覆盖进去,
|
||||
* 最终统一交给 humanUserUpdateExe 按新增、离职、跨企业变更、企业内修改四种场景处理。
|
||||
*/
|
||||
@Override
|
||||
public SingleResponse<Long> updateHumanUser(ZcloudUserUpdateCmd zcloudUserUpdateCmd) {
|
||||
if (zcloudUserUpdateCmd == null) {
|
||||
throw new BizException("用户更新参数不能为空");
|
||||
}
|
||||
log.info("接收人资用户变更请求参数: {}", JSONUtil.toJsonStr(zcloudUserUpdateCmd));
|
||||
|
||||
UserUpdateCmd userUpdateCmd = new UserUpdateCmd();
|
||||
UserDO userDO = null;
|
||||
if (zcloudUserUpdateCmd.getId() != null) {
|
||||
userDO = userRepository.getInfoById(zcloudUserUpdateCmd.getId());
|
||||
if (userDO != null) {
|
||||
userUpdateCmd = BeanUtil.toBean(userDO, UserUpdateCmd.class);
|
||||
}
|
||||
}
|
||||
|
||||
BeanUtil.copyProperties(zcloudUserUpdateCmd, userUpdateCmd, CopyOptions.create().ignoreNullValue());
|
||||
fillHumanUserUpdateCmd(userUpdateCmd, userDO, zcloudUserUpdateCmd);
|
||||
return userServiceI.updateHumanUser(userUpdateCmd);
|
||||
}
|
||||
|
||||
@Override
|
||||
public MultiResponse<ZcloudUserCo> listUserByInfo(ZcloudUserInfoQry zcloudUserInfoQry) {
|
||||
Map<String, Object> parmas = PageQueryHelper.toHashMap(zcloudUserInfoQry);
|
||||
List<UserDO> userList = userRepository.listUserByInfo(parmas);
|
||||
List<ZcloudUserCo> zcloudUserCos = userCoConvertor.converDOsToDubboCOs(userList);
|
||||
return MultiResponse.of(zcloudUserCos);
|
||||
}
|
||||
|
||||
/**
|
||||
* 补齐人资更新入口需要的关键字段。
|
||||
* 这样在外部系统做局部更新时,可以避免 userId、手机号、账号等关键值丢失。
|
||||
* 但如果企业、部门、岗位 id 已发生变化,则需要主动清空旧名称,
|
||||
* 让下游按变更后的 id 重新解析名称,避免跨企业变更时 after 名称仍然写成旧值。
|
||||
*/
|
||||
private void fillHumanUserUpdateCmd(UserUpdateCmd userUpdateCmd, UserDO userDO, ZcloudUserUpdateCmd zcloudUserUpdateCmd) {
|
||||
if (userDO != null && !StringUtils.hasText(userUpdateCmd.getUserId())) {
|
||||
userUpdateCmd.setUserId(userDO.getUserId());
|
||||
}
|
||||
if (userDO != null && !StringUtils.hasText(userUpdateCmd.getPhone())) {
|
||||
userUpdateCmd.setPhone(userDO.getPhone());
|
||||
}
|
||||
if (!StringUtils.hasText(userUpdateCmd.getUsername())) {
|
||||
if (StringUtils.hasText(zcloudUserUpdateCmd.getPhone())
|
||||
&& (userDO == null || !StringUtils.hasText(userDO.getUsername()) || userDO.getUsername().equals(userDO.getPhone()))) {
|
||||
userUpdateCmd.setUsername(zcloudUserUpdateCmd.getPhone());
|
||||
} else if (userDO != null) {
|
||||
userUpdateCmd.setUsername(userDO.getUsername());
|
||||
}
|
||||
}
|
||||
if (userDO != null
|
||||
&& userUpdateCmd.getCorpinfoId() != null
|
||||
&& !userUpdateCmd.getCorpinfoId().equals(userDO.getCorpinfoId())) {
|
||||
userUpdateCmd.setCorpinfoName(null);
|
||||
}
|
||||
if (userDO != null
|
||||
&& userUpdateCmd.getDepartmentId() != null
|
||||
&& !userUpdateCmd.getDepartmentId().equals(userDO.getDepartmentId())) {
|
||||
userUpdateCmd.setDepartmentName(null);
|
||||
}
|
||||
if (userDO != null
|
||||
&& userUpdateCmd.getPostId() != null
|
||||
&& !userUpdateCmd.getPostId().equals(userDO.getPostId())) {
|
||||
userUpdateCmd.setPostName(null);
|
||||
}
|
||||
if (userDO != null && !StringUtils.hasText(userUpdateCmd.getPostName())) {
|
||||
userUpdateCmd.setPostName(userDO.getPostName());
|
||||
}
|
||||
}
|
||||
|
||||
//人员
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,47 +1,64 @@
|
|||
package com.zcloud.basic.info.web;
|
||||
|
||||
|
||||
import com.zcloud.basic.info.api.UserChangeRecordServiceI;
|
||||
import com.zcloud.basic.info.dto.*;
|
||||
import com.alibaba.cola.dto.MultiResponse;
|
||||
import com.alibaba.cola.dto.PageResponse;
|
||||
import com.alibaba.cola.dto.Response;
|
||||
import com.alibaba.cola.dto.SingleResponse;
|
||||
import com.jjb.saas.framework.auth.model.SSOUser;
|
||||
import com.jjb.saas.framework.auth.utils.AuthContext;
|
||||
import com.zcloud.basic.info.api.UserChangeRecordServiceI;
|
||||
import com.zcloud.basic.info.dto.UserChangeRecordInfoQry;
|
||||
import com.zcloud.basic.info.dto.UserChangeRecordPageQry;
|
||||
import com.zcloud.basic.info.dto.UserCorpInfoPageQry;
|
||||
import com.zcloud.basic.info.dto.WorkChangeUpdateCmd;
|
||||
import com.zcloud.basic.info.dto.clientobject.UserChangeRecordCO;
|
||||
import com.zcloud.basic.info.dto.clientobject.UserCorpInfoStatCO;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import lombok.AllArgsConstructor;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
/**
|
||||
* web-adapter
|
||||
*
|
||||
* @Author SondonYong
|
||||
* @Date 2025-12-02 14:08:18
|
||||
* 用户变更记录控制器。
|
||||
*/
|
||||
@Api(tags = "用户变更记录")
|
||||
@RequestMapping("/${application.gateway}/userChangeRecord")
|
||||
@RestController
|
||||
@AllArgsConstructor
|
||||
@Slf4j
|
||||
public class UserChangeRecordController {
|
||||
private final UserChangeRecordServiceI userChangeRecordService;
|
||||
|
||||
@ApiOperation(value = "企业中户中台-监管端首页")
|
||||
@PostMapping("/userCorpInfoList")
|
||||
public PageResponse<UserCorpInfoStatCO> userCorpInfoList(@RequestBody UserCorpInfoPageQry qry) {
|
||||
return userChangeRecordService.userCorpInfoList(qry);
|
||||
}
|
||||
|
||||
@ApiOperation(value = "分页",hidden = true)
|
||||
@ApiOperation(value = "用户变更记录分页")
|
||||
@PostMapping("/list")
|
||||
public PageResponse<UserChangeRecordCO> page(@RequestBody UserChangeRecordPageQry qry) {
|
||||
return userChangeRecordService.listPage(qry);
|
||||
}
|
||||
|
||||
|
||||
@ApiOperation("变更记录详情详情")
|
||||
@ApiOperation("用户变更记录详情")
|
||||
@PostMapping("/getChangerRecordInfoById")
|
||||
public SingleResponse<UserChangeRecordCO> getChangerRecordInfoById(@RequestBody UserChangeRecordInfoQry userChangeRecordInfoQry) {
|
||||
return SingleResponse.of(userChangeRecordService.getChangerRecordInfoById(userChangeRecordInfoQry));
|
||||
}
|
||||
|
||||
/**
|
||||
* 用户变更工作交接处理接口。
|
||||
* 当前统一走 workChangeHandle,后续新增工作类型时只扩执行器分派逻辑,不再新增重复入口。
|
||||
*/
|
||||
@ApiOperation("工作交接处理")
|
||||
@PostMapping("/workChangeHandle")
|
||||
public SingleResponse<UserChangeRecordCO> workChangeHandle(@RequestBody WorkChangeUpdateCmd workChangeUpdateCmd) {
|
||||
log.info("进入工作交接处理接口,交接记录id:{}, 交接企业id:{}, 交接人id:{}",
|
||||
workChangeUpdateCmd.getId(),
|
||||
workChangeUpdateCmd.getHandoverCompanyId(),
|
||||
workChangeUpdateCmd.getHandoverUserId());
|
||||
userChangeRecordService.workChangeHandle(workChangeUpdateCmd);
|
||||
return SingleResponse.buildSuccess();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -8,10 +8,7 @@ import com.alibaba.cola.dto.SingleResponse;
|
|||
import com.jjb.saas.framework.auth.model.SSOUser;
|
||||
import com.jjb.saas.framework.auth.utils.AuthContext;
|
||||
import com.zcloud.basic.info.api.UserCorpRecordServiceI;
|
||||
import com.zcloud.basic.info.dto.UserChangeRecordInfoQry;
|
||||
import com.zcloud.basic.info.dto.UserCorpRecordAddCmd;
|
||||
import com.zcloud.basic.info.dto.UserCorpRecordPageQry;
|
||||
import com.zcloud.basic.info.dto.UserCorpRecordUpdateCmd;
|
||||
import com.zcloud.basic.info.dto.*;
|
||||
import com.zcloud.basic.info.dto.clientobject.UserChangeRecordCO;
|
||||
import com.zcloud.basic.info.dto.clientobject.UserCorpRecordCO;
|
||||
import io.swagger.annotations.Api;
|
||||
|
|
@ -56,8 +53,8 @@ public class UserCorpRecordController {
|
|||
}
|
||||
@ApiOperation("变更记录详情详情")
|
||||
@PostMapping("/getUserCorpRecordById")
|
||||
public SingleResponse<UserCorpRecordCO> getChangerRecordInfoById(@RequestBody UserChangeRecordInfoQry userChangeRecordInfoQry) {
|
||||
return SingleResponse.of(userCorpRecordService.getChangerRecordInfoById(userChangeRecordInfoQry));
|
||||
public SingleResponse<UserCorpRecordCO> getChangerRecordInfoById(@RequestBody UserCorpRecordInfoQry userCorpRecordInfoQry) {
|
||||
return SingleResponse.of(userCorpRecordService.getChangerRecordInfoById(userCorpRecordInfoQry));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
|
|
@ -21,6 +21,7 @@ import com.zcloud.basic.info.command.convertor.UserCoConvertor;
|
|||
import com.zcloud.basic.info.command.query.CorpInfoQueryExe;
|
||||
import com.zcloud.basic.info.constant.RedisConstant;
|
||||
import com.zcloud.basic.info.domain.config.CodeConfig;
|
||||
import com.zcloud.basic.info.domain.enums.CommonFlagEnum;
|
||||
import com.zcloud.basic.info.domain.enums.CorpTypeEnum;
|
||||
import com.zcloud.basic.info.domain.enums.UserEmploymentFlagEnum;
|
||||
import com.zcloud.basic.info.domain.enums.UserFlowFlagEnum;
|
||||
|
|
@ -646,7 +647,23 @@ public class UserAddExe {
|
|||
List<UserDO> userList = userRepository.getListByPhone(userE.getPhone(), employmentFlagList);
|
||||
if (CollUtil.isNotEmpty(userList)) {
|
||||
List<UserE> userEList = userCoConvertor.convertDOsToEs(userList);
|
||||
userE.checkPhone(userEList);
|
||||
// userE.checkPhone(userEList);
|
||||
if (CollUtil.isNotEmpty(userEList)) {
|
||||
//判断是否有当前企业
|
||||
boolean existInCurrentCorp = userEList.stream()
|
||||
.anyMatch(userE1 -> userE1.getCorpinfoId().equals(cmd.getCorpinfoId()));
|
||||
|
||||
//判断是否在其他企业存在且为在职状态(employment_flag=1)
|
||||
boolean existInOtherCorpAndOnJob = userEList.stream()
|
||||
.filter(userE1 -> !userE1.getCorpinfoId().equals(cmd.getCorpinfoId()))
|
||||
.anyMatch(userE1 -> UserEmploymentFlagEnum.ON.getCode().equals(userE1.getEmploymentFlag()));
|
||||
|
||||
if (existInCurrentCorp) {
|
||||
throw new BizException("当前手机号在当前企业已存在,请联系管理员");
|
||||
} else if (existInOtherCorpAndOnJob) {
|
||||
throw new BizException("当前手机号已在其他企业存在且为在职状态,请联系管理员");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
CorpInfoDO corpInfoDO = corpInfoRepository.getById(userE.getCorpinfoId());
|
||||
|
|
@ -658,6 +675,8 @@ public class UserAddExe {
|
|||
userE.setUserType(CorpTypeEnum.getUserTypeByCode(corpInfoDO.getType()));
|
||||
userE.resetPassword(corpInfoDO.getType());
|
||||
userE.setDepartmentLeaderFlag(0);
|
||||
userE.setUserId(Tools.get32UUID());
|
||||
userE.setRzFlag(CommonFlagEnum.YES.getCode());
|
||||
res = userGateway.add(userE);
|
||||
if (corpInfoDO != null && !ObjectUtils.isEmpty(corpInfoDO.getCorpName())) {
|
||||
corpName = corpInfoDO.getCorpName();
|
||||
|
|
|
|||
|
|
@ -0,0 +1,656 @@
|
|||
package com.zcloud.basic.info.command;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import com.alibaba.cola.dto.Response;
|
||||
import com.alibaba.cola.dto.SingleResponse;
|
||||
import com.alibaba.cola.exception.BizException;
|
||||
import com.jjb.saas.system.client.user.facade.UserFacade;
|
||||
import com.jjb.saas.system.client.user.request.UserUpdateQuitCmd;
|
||||
import com.zcloud.basic.info.domain.enums.UserChangeRecordStatusEnum;
|
||||
import com.zcloud.basic.info.domain.enums.UserEmploymentFlagEnum;
|
||||
import com.zcloud.basic.info.domain.enums.UserJobHandoverWorkTypeEnum;
|
||||
import com.zcloud.basic.info.domain.enums.UserJobStatusEnum;
|
||||
import com.zcloud.basic.info.domain.gateway.UserChangeRecordGateway;
|
||||
import com.zcloud.basic.info.domain.gateway.UserCorpRecordGateway;
|
||||
import com.zcloud.basic.info.domain.gateway.UserGateway;
|
||||
import com.zcloud.basic.info.domain.model.UserChangeRecordE;
|
||||
import com.zcloud.basic.info.domain.model.UserCorpRecordE;
|
||||
import com.zcloud.basic.info.domain.model.UserE;
|
||||
import com.zcloud.basic.info.dto.UserAddCmd;
|
||||
import com.zcloud.basic.info.dto.WorkChangeUpdateCmd;
|
||||
import com.zcloud.basic.info.persistence.dataobject.UserChangeRecordDO;
|
||||
import com.zcloud.basic.info.persistence.dataobject.UserCorpRecordDO;
|
||||
import com.zcloud.basic.info.persistence.dataobject.UserDO;
|
||||
import com.zcloud.basic.info.persistence.dataobject.UserJobHandoverDO;
|
||||
import com.zcloud.basic.info.persistence.repository.UserChangeRecordRepository;
|
||||
import com.zcloud.basic.info.persistence.repository.UserCorpRecordRepository;
|
||||
import com.zcloud.basic.info.persistence.repository.UserJobHandoverRepository;
|
||||
import com.zcloud.basic.info.persistence.repository.UserRepository;
|
||||
import com.zcloud.gbscommon.zcloudeightwork.facade.ZcloudEightWorkFacade;
|
||||
import com.zcloud.gbscommon.zcloudeightwork.request.EightWorkChangeCmd;
|
||||
import com.zcloud.gbscommon.zcloudhidden.face.ZcloudHiddenFacade;
|
||||
import com.zcloud.gbscommon.zcloudhidden.request.HiddenWorkChangeCmd;
|
||||
import com.zcloud.gbscommon.zcloudinspection.face.ZcloudInspectionWorkFacade;
|
||||
import com.zcloud.gbscommon.zcloudqualifications.face.ZcloudProjectApprovalFacade;
|
||||
import com.zcloud.gbscommon.zcloudqualifications.response.ProjectWorkChangeCmd;
|
||||
import com.zcloud.gbscommon.zcloudrisk.facade.ZcloudRiskFacade;
|
||||
import com.zcloud.gbscommon.zcloudrisk.request.ListManagerWorkChangeCmd;
|
||||
import com.zcloud.gbscommon.zloudfirecheck.facade.ZcloudFireCheckFacade;
|
||||
import com.zcloud.gbscommon.zloudfirecheck.response.FireCheckWorkChangeCmd;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.dubbo.config.annotation.DubboReference;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
/**
|
||||
* 用户变更工作交接执行器。
|
||||
* 负责按工作类型分派交接处理、关闭当前交接记录,
|
||||
* 并在同一条变更记录下全部交接完成后执行离职收口。
|
||||
*/
|
||||
@Component
|
||||
@AllArgsConstructor
|
||||
@Slf4j
|
||||
public class UserChangeRecordWorkChangeExe {
|
||||
private final UserAddExe userAddExe;
|
||||
private final UserJobHandoverRepository userJobHandoverRepository;
|
||||
private final UserChangeRecordRepository userChangeRecordRepository;
|
||||
private final UserRepository userRepository;
|
||||
private final UserCorpRecordRepository userCorpRecordRepository;
|
||||
private final UserGateway userGateway;
|
||||
private final UserCorpRecordGateway userCorpRecordGateway;
|
||||
private final UserChangeRecordGateway userChangeRecordGateway;
|
||||
|
||||
@DubboReference
|
||||
private UserFacade userFacade;
|
||||
|
||||
@DubboReference
|
||||
private ZcloudHiddenFacade zcloudHiddenFacade;
|
||||
|
||||
@DubboReference
|
||||
private ZcloudRiskFacade zcloudRiskFacade;
|
||||
|
||||
@DubboReference
|
||||
private ZcloudEightWorkFacade zcloudEightWorkFacade;
|
||||
|
||||
@DubboReference
|
||||
private ZcloudFireCheckFacade zcloudFireCheckFacade;
|
||||
|
||||
@DubboReference
|
||||
private ZcloudProjectApprovalFacade zcloudProjectApprovalFacade;
|
||||
|
||||
@DubboReference
|
||||
private ZcloudInspectionWorkFacade zcloudInspectionWorkFacade;
|
||||
|
||||
/**
|
||||
* 工作交接处理入口。
|
||||
* 先根据工作类型调用对应三方系统,再关闭当前交接记录;
|
||||
* 如果同一条变更记录下全部工作都已交接完成,则执行离职收口。
|
||||
*
|
||||
* @param workChangeUpdateCmd 工作交接命令
|
||||
*/
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void workChangeHandle(WorkChangeUpdateCmd workChangeUpdateCmd) {
|
||||
if (workChangeUpdateCmd == null) {
|
||||
throw new BizException("工作交接参数不能为空");
|
||||
}
|
||||
log.info("开始处理工作交接,交接记录id:{}, 交接企业id:{}, 交接部门id:{}, 交接用户id:{}",
|
||||
workChangeUpdateCmd.getId(),
|
||||
workChangeUpdateCmd.getHandoverCompanyId(),
|
||||
workChangeUpdateCmd.getHandoverDepartmentId(),
|
||||
workChangeUpdateCmd.getHandoverUserId());
|
||||
|
||||
UserJobHandoverDO handoverDO = getRequiredHandover(workChangeUpdateCmd.getId());
|
||||
if (Objects.equals(UserJobStatusEnum.CLOSE_TASK.getCode(), handoverDO.getHandoverStatus())) {
|
||||
log.info("工作交接记录已完成,跳过重复处理,交接记录id:{}, 变更记录:{}",
|
||||
handoverDO.getId(), handoverDO.getUserChangeRecordId());
|
||||
finishResignationIfNeeded(handoverDO.getUserChangeRecordId());
|
||||
return;
|
||||
}
|
||||
|
||||
dispatchWorkChange(handoverDO, workChangeUpdateCmd);
|
||||
closeCurrentHandover(handoverDO, workChangeUpdateCmd);
|
||||
finishResignationIfNeeded(handoverDO.getUserChangeRecordId());
|
||||
log.info("工作交接处理完成,交接记录id:{}, 变更记录:{}, 工作类型:{}",
|
||||
handoverDO.getId(),
|
||||
handoverDO.getUserChangeRecordId(),
|
||||
handoverDO.getWorkType());
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据工作类型分派到对应业务系统。
|
||||
* 当前已接入隐患信息、风险辨识检查、危险作业。
|
||||
*/
|
||||
private void dispatchWorkChange(UserJobHandoverDO handoverDO, WorkChangeUpdateCmd workChangeUpdateCmd) {
|
||||
UserJobHandoverWorkTypeEnum workTypeEnum = UserJobHandoverWorkTypeEnum.getByCode(handoverDO.getWorkType());
|
||||
if (workTypeEnum == null) {
|
||||
throw new BizException("不支持的工作交接类型");
|
||||
}
|
||||
log.info("开始分派工作交接,交接记录id:{}, 工作类型:{}, 业务主键:{}",
|
||||
handoverDO.getId(),
|
||||
handoverDO.getWorkType(),
|
||||
handoverDO.getForeignKey());
|
||||
|
||||
switch (workTypeEnum) {
|
||||
case HIDDENINFO:
|
||||
processHiddenInfoHandover(handoverDO, workChangeUpdateCmd);
|
||||
return;
|
||||
case RISK:
|
||||
processRiskInfoHandover(handoverDO, workChangeUpdateCmd);
|
||||
return;
|
||||
case EIGHTWORK:
|
||||
processEightWorkInfoHandover(handoverDO, workChangeUpdateCmd);
|
||||
return;
|
||||
case FIRECHECK:
|
||||
processFireCheckInfoHandover(handoverDO, workChangeUpdateCmd);
|
||||
return;
|
||||
case PROJECT_APPROVAL:
|
||||
processProjectApprovalInfoHandover(handoverDO, workChangeUpdateCmd);
|
||||
return;
|
||||
case INSPECTION_WORK:
|
||||
processInspectionWorkInfoHandover(handoverDO, workChangeUpdateCmd);
|
||||
return;
|
||||
default:
|
||||
log.warn("工作类型暂未接入交接微服务,交接记录id:{}, 工作类型:{}",
|
||||
handoverDO.getId(), handoverDO.getWorkType());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 处理隐患信息交接。
|
||||
* 三方接口异常时只记录日志,不中断当前总流程。
|
||||
*/
|
||||
private void processHiddenInfoHandover(UserJobHandoverDO handoverDO, WorkChangeUpdateCmd workChangeUpdateCmd) {
|
||||
HiddenWorkChangeCmd hiddenWorkChangeCmd = new HiddenWorkChangeCmd();
|
||||
hiddenWorkChangeCmd.setHiddenId(handoverDO.getForeignKey());
|
||||
hiddenWorkChangeCmd.setOldUserId(handoverDO.getUserId());
|
||||
hiddenWorkChangeCmd.setUserId(workChangeUpdateCmd.getHandoverUserId());
|
||||
hiddenWorkChangeCmd.setUserName(workChangeUpdateCmd.getHandoverUserName());
|
||||
hiddenWorkChangeCmd.setDeptId(workChangeUpdateCmd.getHandoverDepartmentId());
|
||||
hiddenWorkChangeCmd.setDeptName(workChangeUpdateCmd.getHandoverDepartmentName());
|
||||
hiddenWorkChangeCmd.setCorpId(workChangeUpdateCmd.getHandoverCompanyId());
|
||||
hiddenWorkChangeCmd.setCorpName(workChangeUpdateCmd.getHandoverCompanyName());
|
||||
|
||||
log.info("开始处理隐患信息交接,交接记录id:{}, hiddenId:{}, 原责任人:{}, 新责任人:{}",
|
||||
handoverDO.getId(),
|
||||
handoverDO.getForeignKey(),
|
||||
handoverDO.getUserId(),
|
||||
workChangeUpdateCmd.getHandoverUserId());
|
||||
try {
|
||||
SingleResponse response = zcloudHiddenFacade.updateHiddenWorkChange(hiddenWorkChangeCmd);
|
||||
if (response == null || !response.isSuccess()) {
|
||||
String errMessage = response == null ? "隐患服务未返回结果" : response.getErrMessage();
|
||||
log.error("隐患信息交接失败,交接记录id:{}, hiddenId:{}, 原因:{}",
|
||||
handoverDO.getId(), handoverDO.getForeignKey(), errMessage);
|
||||
return;
|
||||
}
|
||||
log.info("隐患信息交接完成,交接记录id:{}, hiddenId:{}, 新责任人:{}",
|
||||
handoverDO.getId(), handoverDO.getForeignKey(), workChangeUpdateCmd.getHandoverUserId());
|
||||
} catch (Exception e) {
|
||||
log.error("隐患信息交接发生异常,交接记录id:{}, hiddenId:{}",
|
||||
handoverDO.getId(), handoverDO.getForeignKey(), e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 处理危险作业交接。
|
||||
* 三方接口异常时只记录日志,不中断当前总流程。
|
||||
*/
|
||||
private void processEightWorkInfoHandover(UserJobHandoverDO handoverDO, WorkChangeUpdateCmd workChangeUpdateCmd) {
|
||||
EightWorkChangeCmd eightWorkChangeCmd = new EightWorkChangeCmd();
|
||||
eightWorkChangeCmd.setWorkId(handoverDO.getForeignKey());
|
||||
eightWorkChangeCmd.setOldUserId(handoverDO.getUserId());
|
||||
eightWorkChangeCmd.setUserId(workChangeUpdateCmd.getHandoverUserId());
|
||||
eightWorkChangeCmd.setUserName(workChangeUpdateCmd.getHandoverUserName());
|
||||
eightWorkChangeCmd.setDeptId(workChangeUpdateCmd.getHandoverDepartmentId());
|
||||
eightWorkChangeCmd.setDeptName(workChangeUpdateCmd.getHandoverDepartmentName());
|
||||
eightWorkChangeCmd.setCorpId(workChangeUpdateCmd.getHandoverCompanyId());
|
||||
eightWorkChangeCmd.setCorpName(workChangeUpdateCmd.getHandoverCompanyName());
|
||||
|
||||
log.info("开始处理危险作业交接,交接记录id:{}, workId:{}, 原责任人:{}, 新责任人:{}",
|
||||
handoverDO.getId(),
|
||||
handoverDO.getForeignKey(),
|
||||
handoverDO.getUserId(),
|
||||
workChangeUpdateCmd.getHandoverUserId());
|
||||
try {
|
||||
SingleResponse response = zcloudEightWorkFacade.updateEightWorkChange(eightWorkChangeCmd);
|
||||
if (response == null || !response.isSuccess()) {
|
||||
String errMessage = response == null ? "危险作业服务未返回结果" : response.getErrMessage();
|
||||
log.error("危险作业交接失败,交接记录id:{}, workId:{}, 原因:{}",
|
||||
handoverDO.getId(), handoverDO.getForeignKey(), errMessage);
|
||||
return;
|
||||
}
|
||||
log.info("危险作业交接完成,交接记录id:{}, workId:{}, 新责任人:{}",
|
||||
handoverDO.getId(), handoverDO.getForeignKey(), workChangeUpdateCmd.getHandoverUserId());
|
||||
} catch (Exception e) {
|
||||
log.error("危险作业交接发生异常,交接记录id:{}, workId:{}",
|
||||
handoverDO.getId(), handoverDO.getForeignKey(), e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 处理风险辨识检查交接。
|
||||
* 三方接口异常时只记录日志,不中断当前总流程。
|
||||
*/
|
||||
/**
|
||||
* 处理消防检查交接。
|
||||
* 调用方式与隐患、风险、危险作业保持一致。
|
||||
* 三方接口异常时只记录日志,不中断当前总流程。
|
||||
*/
|
||||
private void processFireCheckInfoHandover(UserJobHandoverDO handoverDO, WorkChangeUpdateCmd workChangeUpdateCmd) {
|
||||
FireCheckWorkChangeCmd fireCheckWorkChangeCmd = new FireCheckWorkChangeCmd();
|
||||
fireCheckWorkChangeCmd.setFireCheckId(handoverDO.getForeignKey());
|
||||
fireCheckWorkChangeCmd.setOldUserId(handoverDO.getUserId());
|
||||
fireCheckWorkChangeCmd.setUserId(workChangeUpdateCmd.getHandoverUserId());
|
||||
fireCheckWorkChangeCmd.setUserName(workChangeUpdateCmd.getHandoverUserName());
|
||||
fireCheckWorkChangeCmd.setDeptId(workChangeUpdateCmd.getHandoverDepartmentId());
|
||||
fireCheckWorkChangeCmd.setDeptName(workChangeUpdateCmd.getHandoverDepartmentName());
|
||||
fireCheckWorkChangeCmd.setCorpId(workChangeUpdateCmd.getHandoverCompanyId());
|
||||
fireCheckWorkChangeCmd.setCorpName(workChangeUpdateCmd.getHandoverCompanyName());
|
||||
|
||||
log.info("开始处理消防检查交接,交接记录id:{}, fireCheckId:{}, 原责任人:{}, 新责任人:{}",
|
||||
handoverDO.getId(),
|
||||
handoverDO.getForeignKey(),
|
||||
handoverDO.getUserId(),
|
||||
workChangeUpdateCmd.getHandoverUserId());
|
||||
try {
|
||||
SingleResponse response = zcloudFireCheckFacade.updateRiskWorkChange(fireCheckWorkChangeCmd);
|
||||
if (response == null || !response.isSuccess()) {
|
||||
String errMessage = response == null ? "消防检查服务未返回结果" : response.getErrMessage();
|
||||
log.error("消防检查交接失败,交接记录id:{}, fireCheckId:{}, 原因:{}",
|
||||
handoverDO.getId(), handoverDO.getForeignKey(), errMessage);
|
||||
return;
|
||||
}
|
||||
log.info("消防检查交接完成,交接记录id:{}, fireCheckId:{}, 新责任人:{}",
|
||||
handoverDO.getId(), handoverDO.getForeignKey(), workChangeUpdateCmd.getHandoverUserId());
|
||||
} catch (Exception e) {
|
||||
log.error("消防检查交接发生异常,交接记录id:{}, fireCheckId:{}",
|
||||
handoverDO.getId(), handoverDO.getForeignKey(), e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 处理相关方项目审核交接。
|
||||
* 调用方式与隐患、风险、危险作业、消防检查保持一致。
|
||||
* 三方接口异常时只记录日志,不中断当前总流程。
|
||||
*/
|
||||
private void processProjectApprovalInfoHandover(UserJobHandoverDO handoverDO, WorkChangeUpdateCmd workChangeUpdateCmd) {
|
||||
ProjectWorkChangeCmd projectWorkChangeCmd = new ProjectWorkChangeCmd();
|
||||
projectWorkChangeCmd.setProjectId(handoverDO.getForeignKey());
|
||||
projectWorkChangeCmd.setOldUserId(handoverDO.getUserId());
|
||||
projectWorkChangeCmd.setUserId(workChangeUpdateCmd.getHandoverUserId());
|
||||
projectWorkChangeCmd.setUserName(workChangeUpdateCmd.getHandoverUserName());
|
||||
projectWorkChangeCmd.setDeptId(workChangeUpdateCmd.getHandoverDepartmentId());
|
||||
projectWorkChangeCmd.setDeptName(workChangeUpdateCmd.getHandoverDepartmentName());
|
||||
projectWorkChangeCmd.setCorpId(workChangeUpdateCmd.getHandoverCompanyId());
|
||||
projectWorkChangeCmd.setCorpName(workChangeUpdateCmd.getHandoverCompanyName());
|
||||
|
||||
log.info("开始处理相关方项目审核交接,交接记录id:{}, projectId:{}, 原责任人:{}, 新责任人:{}",
|
||||
handoverDO.getId(),
|
||||
handoverDO.getForeignKey(),
|
||||
handoverDO.getUserId(),
|
||||
workChangeUpdateCmd.getHandoverUserId());
|
||||
try {
|
||||
SingleResponse response = zcloudProjectApprovalFacade.updateRiskWorkChange(projectWorkChangeCmd);
|
||||
if (response == null || !response.isSuccess()) {
|
||||
String errMessage = response == null ? "相关方项目审核服务未返回结果" : response.getErrMessage();
|
||||
log.error("相关方项目审核交接失败,交接记录id:{}, projectId:{}, 原因:{}",
|
||||
handoverDO.getId(), handoverDO.getForeignKey(), errMessage);
|
||||
return;
|
||||
}
|
||||
log.info("相关方项目审核交接完成,交接记录id:{}, projectId:{}, 新责任人:{}",
|
||||
handoverDO.getId(), handoverDO.getForeignKey(), workChangeUpdateCmd.getHandoverUserId());
|
||||
} catch (Exception e) {
|
||||
log.error("相关方项目审核交接发生异常,交接记录id:{}, projectId:{}",
|
||||
handoverDO.getId(), handoverDO.getForeignKey(), e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 处理安全环保检查交接。
|
||||
* 查询走安全环保检查自己的接口,交接字段组装方式与其他工作类型保持一致。
|
||||
* 三方接口异常时只记录日志,不中断当前总流程。
|
||||
*/
|
||||
private void processInspectionWorkInfoHandover(UserJobHandoverDO handoverDO, WorkChangeUpdateCmd workChangeUpdateCmd) {
|
||||
FireCheckWorkChangeCmd inspectionWorkChangeCmd = new FireCheckWorkChangeCmd();
|
||||
inspectionWorkChangeCmd.setFireCheckId(handoverDO.getForeignKey());
|
||||
inspectionWorkChangeCmd.setOldUserId(handoverDO.getUserId());
|
||||
inspectionWorkChangeCmd.setUserId(workChangeUpdateCmd.getHandoverUserId());
|
||||
inspectionWorkChangeCmd.setUserName(workChangeUpdateCmd.getHandoverUserName());
|
||||
inspectionWorkChangeCmd.setDeptId(workChangeUpdateCmd.getHandoverDepartmentId());
|
||||
inspectionWorkChangeCmd.setDeptName(workChangeUpdateCmd.getHandoverDepartmentName());
|
||||
inspectionWorkChangeCmd.setCorpId(workChangeUpdateCmd.getHandoverCompanyId());
|
||||
inspectionWorkChangeCmd.setCorpName(workChangeUpdateCmd.getHandoverCompanyName());
|
||||
|
||||
log.info("开始处理安全环保检查交接,交接记录id:{}, workId:{}, 原责任人:{}, 新责任人:{}",
|
||||
handoverDO.getId(),
|
||||
handoverDO.getForeignKey(),
|
||||
handoverDO.getUserId(),
|
||||
workChangeUpdateCmd.getHandoverUserId());
|
||||
try {
|
||||
SingleResponse response = zcloudInspectionWorkFacade.updateRiskWorkChange(inspectionWorkChangeCmd);
|
||||
if (response == null || !response.isSuccess()) {
|
||||
String errMessage = response == null ? "安全环保检查服务未返回结果" : response.getErrMessage();
|
||||
log.error("安全环保检查交接失败,交接记录id:{}, workId:{}, 原因:{}",
|
||||
handoverDO.getId(), handoverDO.getForeignKey(), errMessage);
|
||||
return;
|
||||
}
|
||||
log.info("安全环保检查交接完成,交接记录id:{}, workId:{}, 新责任人:{}",
|
||||
handoverDO.getId(), handoverDO.getForeignKey(), workChangeUpdateCmd.getHandoverUserId());
|
||||
} catch (Exception e) {
|
||||
log.error("安全环保检查交接发生异常,交接记录id:{}, workId:{}",
|
||||
handoverDO.getId(), handoverDO.getForeignKey(), e);
|
||||
}
|
||||
}
|
||||
private void processRiskInfoHandover(UserJobHandoverDO handoverDO, WorkChangeUpdateCmd workChangeUpdateCmd) {
|
||||
ListManagerWorkChangeCmd listManagerWorkChangeCmd = new ListManagerWorkChangeCmd();
|
||||
listManagerWorkChangeCmd.setListManagerId(handoverDO.getForeignKey());
|
||||
listManagerWorkChangeCmd.setOldUserId(handoverDO.getUserId());
|
||||
listManagerWorkChangeCmd.setUserId(workChangeUpdateCmd.getHandoverUserId());
|
||||
listManagerWorkChangeCmd.setUserName(workChangeUpdateCmd.getHandoverUserName());
|
||||
listManagerWorkChangeCmd.setDeptId(workChangeUpdateCmd.getHandoverDepartmentId());
|
||||
listManagerWorkChangeCmd.setDeptName(workChangeUpdateCmd.getHandoverDepartmentName());
|
||||
listManagerWorkChangeCmd.setCorpId(workChangeUpdateCmd.getHandoverCompanyId());
|
||||
listManagerWorkChangeCmd.setCorpName(workChangeUpdateCmd.getHandoverCompanyName());
|
||||
|
||||
log.info("开始处理风险辨识检查交接,交接记录id:{}, listManagerId:{}, 原责任人:{}, 新责任人:{}",
|
||||
handoverDO.getId(),
|
||||
handoverDO.getForeignKey(),
|
||||
handoverDO.getUserId(),
|
||||
workChangeUpdateCmd.getHandoverUserId());
|
||||
try {
|
||||
SingleResponse response = zcloudRiskFacade.updateRiskWorkChange(listManagerWorkChangeCmd);
|
||||
if (response == null || !response.isSuccess()) {
|
||||
String errMessage = response == null ? "风险服务未返回结果" : response.getErrMessage();
|
||||
log.error("风险辨识检查交接失败,交接记录id:{}, listManagerId:{}, 原因:{}",
|
||||
handoverDO.getId(), handoverDO.getForeignKey(), errMessage);
|
||||
return;
|
||||
}
|
||||
log.info("风险辨识检查交接完成,交接记录id:{}, listManagerId:{}, 新责任人:{}",
|
||||
handoverDO.getId(), handoverDO.getForeignKey(), workChangeUpdateCmd.getHandoverUserId());
|
||||
} catch (Exception e) {
|
||||
log.error("风险辨识检查交接发生异常,交接记录id:{}, listManagerId:{}",
|
||||
handoverDO.getId(), handoverDO.getForeignKey(), e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 关闭当前工作交接记录。
|
||||
* 同一条变更记录下可能还有其他未完成事项,因此这里只关闭当前记录。
|
||||
*/
|
||||
private void closeCurrentHandover(UserJobHandoverDO handoverDO, WorkChangeUpdateCmd workChangeUpdateCmd) {
|
||||
UserJobHandoverDO updateDO = new UserJobHandoverDO();
|
||||
updateDO.setId(handoverDO.getId());
|
||||
updateDO.setHandoverStatus(UserJobStatusEnum.CLOSE_TASK.getCode());
|
||||
updateDO.setHandoverCompanyId(workChangeUpdateCmd.getHandoverCompanyId());
|
||||
updateDO.setHandoverCompanyName(workChangeUpdateCmd.getHandoverCompanyName());
|
||||
updateDO.setHandoverDepartmentId(workChangeUpdateCmd.getHandoverDepartmentId());
|
||||
updateDO.setHandoverDepartmentName(workChangeUpdateCmd.getHandoverDepartmentName());
|
||||
updateDO.setHandoverPostId(workChangeUpdateCmd.getHandoverPostId());
|
||||
updateDO.setHandoverPostName(workChangeUpdateCmd.getHandoverPostName());
|
||||
updateDO.setHandoverUserId(workChangeUpdateCmd.getHandoverUserId());
|
||||
updateDO.setHandoverUserName(workChangeUpdateCmd.getHandoverUserName());
|
||||
userJobHandoverRepository.updateById(updateDO);
|
||||
log.info("当前工作交接记录已关闭,交接记录id:{}, 新交接用户id:{}",
|
||||
handoverDO.getId(), workChangeUpdateCmd.getHandoverUserId());
|
||||
}
|
||||
|
||||
/**
|
||||
* 当同一条变更记录下全部工作交接都已关闭后,执行离职收口。
|
||||
* 如果是跨企业变更,则在原企业离职完成后,根据变更记录中的 after 信息继续完成新企业入职。
|
||||
*/
|
||||
private void finishResignationIfNeeded(String userChangeRecordId) {
|
||||
if (!StringUtils.hasText(userChangeRecordId)) {
|
||||
throw new BizException("用户变更记录不能为空");
|
||||
}
|
||||
|
||||
List<UserJobHandoverDO> handoverDOList = userJobHandoverRepository.getListByChangerRecordId(userChangeRecordId);
|
||||
if (CollUtil.isEmpty(handoverDOList)) {
|
||||
log.info("当前变更记录下没有工作交接数据,无需离职收口,变更记录:{}", userChangeRecordId);
|
||||
return;
|
||||
}
|
||||
|
||||
boolean allFinished = handoverDOList.stream()
|
||||
.allMatch(item -> Objects.equals(UserJobStatusEnum.CLOSE_TASK.getCode(), item.getHandoverStatus()));
|
||||
if (!allFinished) {
|
||||
log.info("当前变更记录下仍有未完成的工作交接,暂不执行离职收口,变更记录:{}", userChangeRecordId);
|
||||
return;
|
||||
}
|
||||
|
||||
log.info("当前变更记录下全部工作交接已完成,开始执行离职收口,变更记录:{}", userChangeRecordId);
|
||||
UserChangeRecordDO userChangeRecordDO = userChangeRecordRepository.getChangerRecordInfoById(userChangeRecordId);
|
||||
if (userChangeRecordDO == null) {
|
||||
throw new BizException("未查询到对应的用户变更记录");
|
||||
}
|
||||
if (Objects.equals(UserChangeRecordStatusEnum.APPROVED.getCode(), userChangeRecordDO.getStatus())) {
|
||||
log.info("用户变更记录已是通过状态,跳过重复离职收口,变更记录:{}", userChangeRecordId);
|
||||
return;
|
||||
}
|
||||
|
||||
UserDO userDO = userRepository.getInfoById(userChangeRecordDO.getUserId());
|
||||
if (userDO == null) {
|
||||
throw new BizException("未查询到待离职用户");
|
||||
}
|
||||
|
||||
updateUserEmploymentFlag(userDO, userChangeRecordDO);
|
||||
updateUserCorpRecord(userDO, userChangeRecordDO);
|
||||
quitBaseUser(userDO.getId());
|
||||
if (needEntryNewCorp(userChangeRecordDO)) {
|
||||
Long newUserId = createEntryUserByChangeRecord(userDO, userChangeRecordDO);
|
||||
log.info("跨企业变更工作交接收口完成新企业入职,原用户id:{}, 新用户id:{}, 变更记录:{}",
|
||||
userDO.getId(), newUserId, userChangeRecordId);
|
||||
}
|
||||
updateUserChangeRecord(userChangeRecordDO);
|
||||
}
|
||||
|
||||
/**
|
||||
* 将用户主表状态改为离职。
|
||||
*/
|
||||
private void updateUserEmploymentFlag(UserDO userDO, UserChangeRecordDO userChangeRecordDO) {
|
||||
if (Objects.equals(UserEmploymentFlagEnum.RESIGNATION.getCode(), userDO.getEmploymentFlag())) {
|
||||
log.info("用户主表已是离职状态,跳过更新,用户id:{}", userDO.getId());
|
||||
return;
|
||||
}
|
||||
UserE userE = buildUserE(userDO, userChangeRecordDO);
|
||||
userE.setEmploymentFlag(UserEmploymentFlagEnum.RESIGNATION.getCode());
|
||||
userE.setDeleteEnum("TRUE");
|
||||
userRepository.updateEmploymentFlagAndDeleteEnum(
|
||||
userDO.getId(),
|
||||
UserEmploymentFlagEnum.RESIGNATION.getCode(),
|
||||
"TRUE");
|
||||
log.info("用户主表离职状态更新完成,用户id:{}", userDO.getId());
|
||||
}
|
||||
|
||||
/**
|
||||
* 收口企业任职记录。
|
||||
*/
|
||||
private void updateUserCorpRecord(UserDO userDO, UserChangeRecordDO userChangeRecordDO) {
|
||||
Long corpinfoId = userChangeRecordDO.getCorpinfoIdBefore() != null
|
||||
? userChangeRecordDO.getCorpinfoIdBefore()
|
||||
: userDO.getCorpinfoId();
|
||||
UserCorpRecordDO userCorpRecordDO = userCorpRecordRepository.getInfoByUserStatus(
|
||||
userDO.getId(),
|
||||
corpinfoId,
|
||||
UserChangeRecordStatusEnum.PENDING.getCode());
|
||||
if (userCorpRecordDO == null) {
|
||||
userCorpRecordDO = userCorpRecordRepository.getInfoByUserId(
|
||||
userDO.getId(),
|
||||
corpinfoId,
|
||||
UserEmploymentFlagEnum.ON.getCode());
|
||||
}
|
||||
|
||||
UserE userE = buildUserE(userDO, userChangeRecordDO);
|
||||
if (userCorpRecordDO != null) {
|
||||
UserCorpRecordE userCorpRecordE = new UserCorpRecordE();
|
||||
BeanUtils.copyProperties(userCorpRecordDO, userCorpRecordE);
|
||||
userCorpRecordE.executeResignation(
|
||||
userCorpRecordE,
|
||||
userE,
|
||||
UserEmploymentFlagEnum.RESIGNATION.getCode(),
|
||||
UserChangeRecordStatusEnum.APPROVED.getCode());
|
||||
if (StringUtils.hasText(userChangeRecordDO.getResignationReason())) {
|
||||
userCorpRecordE.setResignationReason(userChangeRecordDO.getResignationReason());
|
||||
}
|
||||
userCorpRecordGateway.update(userCorpRecordE);
|
||||
log.info("任职记录离职收口完成,用户id:{}, 企业id:{}", userDO.getId(), corpinfoId);
|
||||
return;
|
||||
}
|
||||
|
||||
UserCorpRecordE userCorpRecordE = new UserCorpRecordE();
|
||||
userCorpRecordE.initResignation(
|
||||
userE,
|
||||
UserEmploymentFlagEnum.RESIGNATION.getCode(),
|
||||
UserChangeRecordStatusEnum.APPROVED.getCode());
|
||||
userCorpRecordE.setResignationReason(userChangeRecordDO.getResignationReason());
|
||||
userCorpRecordGateway.add(userCorpRecordE);
|
||||
log.info("补建离职任职记录完成,用户id:{}, 企业id:{}", userDO.getId(), corpinfoId);
|
||||
}
|
||||
|
||||
/**
|
||||
* 将当前待处理的用户变更记录更新为已通过。
|
||||
*/
|
||||
private void updateUserChangeRecord(UserChangeRecordDO userChangeRecordDO) {
|
||||
UserChangeRecordE userChangeRecordE = new UserChangeRecordE();
|
||||
BeanUtils.copyProperties(userChangeRecordDO, userChangeRecordE);
|
||||
userChangeRecordE.setStatus(UserChangeRecordStatusEnum.APPROVED.getCode());
|
||||
userChangeRecordGateway.update(userChangeRecordE);
|
||||
log.info("用户变更记录状态更新为已通过,变更记录:{}", userChangeRecordDO.getUserChangeRecordId());
|
||||
}
|
||||
|
||||
/**
|
||||
* 同步底座离职。
|
||||
* 三方接口异常时只记录日志,不影响当前交接收口主流程。
|
||||
*/
|
||||
private void quitBaseUser(Long userId) {
|
||||
UserUpdateQuitCmd quitCmd = new UserUpdateQuitCmd();
|
||||
quitCmd.setId(userId);
|
||||
log.info("开始调用底座离职接口,用户id:{}", userId);
|
||||
try {
|
||||
Response response = userFacade.quit(quitCmd);
|
||||
if (response == null || !response.isSuccess()) {
|
||||
String errMessage = response == null ? "底座未返回结果" : response.getErrMessage();
|
||||
log.error("底座离职处理失败,用户id:{}, 原因:{}", userId, errMessage);
|
||||
return;
|
||||
}
|
||||
log.info("底座离职接口调用完成,用户id:{}", userId);
|
||||
} catch (Exception e) {
|
||||
log.error("调用底座离职接口发生异常,用户id:{}", userId, e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询并校验当前交接记录必须存在。
|
||||
*/
|
||||
private UserJobHandoverDO getRequiredHandover(Long id) {
|
||||
if (id == null) {
|
||||
throw new BizException("工作交接记录id不能为空");
|
||||
}
|
||||
SingleResponse<UserJobHandoverDO> response = userJobHandoverRepository.getInfoById(id);
|
||||
UserJobHandoverDO handoverDO = response == null ? null : response.getData();
|
||||
if (handoverDO == null) {
|
||||
throw new BizException("工作交接记录不存在");
|
||||
}
|
||||
return handoverDO;
|
||||
}
|
||||
|
||||
/**
|
||||
* 组装离职收口时使用的用户快照。
|
||||
*/
|
||||
private UserE buildUserE(UserDO userDO, UserChangeRecordDO userChangeRecordDO) {
|
||||
UserE userE = new UserE();
|
||||
BeanUtils.copyProperties(userDO, userE);
|
||||
if (userChangeRecordDO == null) {
|
||||
return userE;
|
||||
}
|
||||
if (!StringUtils.hasText(userE.getCorpinfoName())) {
|
||||
userE.setCorpinfoName(userChangeRecordDO.getCorpinfoNameBefore());
|
||||
}
|
||||
if (!StringUtils.hasText(userE.getDepartmentName())) {
|
||||
userE.setDepartmentName(userChangeRecordDO.getDepartmentNameBefore());
|
||||
}
|
||||
if (!StringUtils.hasText(userE.getPostName())) {
|
||||
userE.setPostName(userChangeRecordDO.getPostNameBefore());
|
||||
}
|
||||
if (userE.getCorpinfoId() == null) {
|
||||
userE.setCorpinfoId(userChangeRecordDO.getCorpinfoIdBefore());
|
||||
}
|
||||
if (userE.getDepartmentId() == null) {
|
||||
userE.setDepartmentId(userChangeRecordDO.getDepartmentIdBefore());
|
||||
}
|
||||
if (userE.getPostId() == null) {
|
||||
userE.setPostId(userChangeRecordDO.getPostIdBefore());
|
||||
}
|
||||
return userE;
|
||||
}
|
||||
|
||||
/**
|
||||
* 判断当前变更记录是否需要在离职完成后继续执行新企业入职。
|
||||
*/
|
||||
private boolean needEntryNewCorp(UserChangeRecordDO userChangeRecordDO) {
|
||||
return userChangeRecordDO.getCorpinfoIdAfter() != null;
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据变更记录中的 after 信息,为新企业创建用户并补齐入职记录。
|
||||
* 新用户基础资料沿用原用户信息,企业、部门、岗位取变更记录中的变更后数据。
|
||||
*/
|
||||
private Long createEntryUserByChangeRecord(UserDO oldUserDO, UserChangeRecordDO userChangeRecordDO) {
|
||||
UserAddCmd userAddCmd = buildCrossCorpUserAddCmd(oldUserDO, userChangeRecordDO);
|
||||
Long userId = userAddExe.executeHumanUser(userAddCmd);
|
||||
|
||||
UserE userE = new UserE();
|
||||
BeanUtils.copyProperties(userAddCmd, userE);
|
||||
userE.setId(userId);
|
||||
userE.setEmploymentFlag(UserEmploymentFlagEnum.ON.getCode());
|
||||
|
||||
createCurrentCorpRecord(userE, userAddCmd.getCorpinfoName(), userAddCmd.getDepartmentName());
|
||||
return userId;
|
||||
}
|
||||
|
||||
/**
|
||||
* 使用原用户基础信息和变更记录中的 after 信息组装新企业入职命令。
|
||||
*/
|
||||
private UserAddCmd buildCrossCorpUserAddCmd(UserDO oldUserDO, UserChangeRecordDO userChangeRecordDO) {
|
||||
UserAddCmd userAddCmd = new UserAddCmd();
|
||||
BeanUtils.copyProperties(oldUserDO, userAddCmd);
|
||||
userAddCmd.setUserId(oldUserDO.getUserId());
|
||||
userAddCmd.setUsername(oldUserDO.getUsername());
|
||||
userAddCmd.setPhone(oldUserDO.getPhone());
|
||||
userAddCmd.setName(oldUserDO.getName());
|
||||
userAddCmd.setCorpinfoId(userChangeRecordDO.getCorpinfoIdAfter());
|
||||
userAddCmd.setCorpinfoName(userChangeRecordDO.getCorpinfoNameAfter());
|
||||
userAddCmd.setDepartmentId(userChangeRecordDO.getDepartmentIdAfter());
|
||||
userAddCmd.setDepartmentName(userChangeRecordDO.getDepartmentNameAfter());
|
||||
userAddCmd.setPostId(userChangeRecordDO.getPostIdAfter());
|
||||
userAddCmd.setPostName(userChangeRecordDO.getPostNameAfter());
|
||||
return userAddCmd;
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建新企业当前任职记录。
|
||||
*/
|
||||
private void createCurrentCorpRecord(UserE userE, String corpinfoName, String departmentName) {
|
||||
UserCorpRecordDO userCorpRecordDO = userCorpRecordRepository.getInfoByUserId(
|
||||
userE.getId(), userE.getCorpinfoId(), UserEmploymentFlagEnum.ON.getCode());
|
||||
if (userCorpRecordDO != null) {
|
||||
return;
|
||||
}
|
||||
|
||||
UserCorpRecordE userCorpRecordE = new UserCorpRecordE();
|
||||
userCorpRecordE.setUserId(userE.getId());
|
||||
userCorpRecordE.setCorpinfoId(userE.getCorpinfoId());
|
||||
userCorpRecordE.setCorpinfoName(corpinfoName);
|
||||
userCorpRecordE.setDepartmentId(userE.getDepartmentId());
|
||||
userCorpRecordE.setDepartmentName(departmentName);
|
||||
userCorpRecordE.setPostId(userE.getPostId());
|
||||
userCorpRecordE.setPostName(userE.getPostName());
|
||||
userCorpRecordE.setFlowFlag(userE.getFlowFlag());
|
||||
userCorpRecordE.initAdd(userE, corpinfoName, departmentName);
|
||||
userCorpRecordGateway.add(userCorpRecordE);
|
||||
}
|
||||
}
|
||||
|
|
@ -2,6 +2,8 @@ package com.zcloud.basic.info.command.query;
|
|||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import com.alibaba.cola.dto.MultiResponse;
|
||||
import com.alibaba.cola.dto.PageResponse;
|
||||
import com.alibaba.cola.dto.SingleResponse;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.jjb.saas.framework.auth.utils.AuthContext;
|
||||
import com.zcloud.basic.info.command.convertor.UserChangeRecordCoConvertor;
|
||||
|
|
@ -10,21 +12,23 @@ import com.zcloud.basic.info.domain.enums.UserChangeRecordStatusEnum;
|
|||
import com.zcloud.basic.info.dto.UserChangeRecordInfoQry;
|
||||
import com.zcloud.basic.info.dto.UserChangeRecordPageQry;
|
||||
import com.zcloud.basic.info.dto.UserChangeRecordListQry;
|
||||
import com.zcloud.basic.info.dto.UserCorpInfoPageQry;
|
||||
import com.zcloud.basic.info.dto.clientobject.UserChangeRecordCO;
|
||||
import com.zcloud.basic.info.dto.clientobject.UserCorpInfoStatCO;
|
||||
import com.zcloud.basic.info.persistence.dataobject.UserChangeRecordDO;
|
||||
import com.zcloud.basic.info.persistence.dataobject.UserCorpInfoStatDO;
|
||||
import com.zcloud.basic.info.persistence.dataobject.UserJobHandoverDO;
|
||||
import com.zcloud.basic.info.persistence.repository.CorpInfoRepository;
|
||||
import com.zcloud.basic.info.persistence.repository.UserChangeRecordRepository;
|
||||
import com.zcloud.basic.info.persistence.repository.UserJobHandoverRepository;
|
||||
import com.zcloud.gbscommon.utils.PageQueryHelper;
|
||||
import com.alibaba.cola.dto.PageResponse;
|
||||
import com.alibaba.cola.dto.SingleResponse;
|
||||
import lombok.AllArgsConstructor;
|
||||
import org.apache.catalina.User;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
|
||||
/**
|
||||
|
|
@ -40,6 +44,28 @@ public class UserChangeRecordQueryExe {
|
|||
private final UserChangeRecordCoConvertor userChangeRecordCoConvertor;
|
||||
private final UserJobHandoverRepository userJobHandoverRepository;
|
||||
private final UserJobHandoverCoConvertor userJobHandoverCoConvertor;
|
||||
private final CorpInfoRepository corpInfoRepository;
|
||||
|
||||
/**
|
||||
* 企业用户统计分页。
|
||||
* 直接走专用 Repository 聚合查询,部门数、岗位数、人员总数、人资数都在 SQL 中完成统计。
|
||||
* 以企业为主表进行分页,因此即使企业下暂时没有用户,也会正常返回并统计为 0。
|
||||
*
|
||||
* @param qry 企业用户统计查询
|
||||
* @return 企业用户统计分页结果
|
||||
*/
|
||||
public PageResponse<UserCorpInfoStatCO> userCorpInfoList(UserCorpInfoPageQry qry) {
|
||||
Map<String, Object> params = PageQueryHelper.toHashMap(qry);
|
||||
params.put("typeList", java.util.Arrays.asList(0, 1, 2, 6));
|
||||
params.put("eqUseFlag", 1);
|
||||
PageResponse<UserCorpInfoStatDO> pageResponse = corpInfoRepository.userCorpInfoListPage(params);
|
||||
List<UserCorpInfoStatCO> result = pageResponse.getData().stream().map(statDO -> {
|
||||
UserCorpInfoStatCO co = new UserCorpInfoStatCO();
|
||||
BeanUtils.copyProperties(statDO, co);
|
||||
return co;
|
||||
}).collect(Collectors.toList());
|
||||
return PageResponse.of(result, pageResponse.getTotalCount(), pageResponse.getPageSize(), pageResponse.getPageIndex());
|
||||
}
|
||||
|
||||
/**
|
||||
* 分页
|
||||
|
|
@ -68,12 +94,20 @@ public class UserChangeRecordQueryExe {
|
|||
}
|
||||
|
||||
public UserChangeRecordCO getChangerRecordInfoById(UserChangeRecordInfoQry userChangeRecordInfoQry) {
|
||||
QueryWrapper<UserChangeRecordDO> queryWrapper = new QueryWrapper<>();
|
||||
if(userChangeRecordInfoQry.getCorpinfoId() == null){
|
||||
userChangeRecordInfoQry.setCorpinfoId(AuthContext.getTenantId());
|
||||
|
||||
if(userChangeRecordInfoQry.getUserChangeRecordId() == null){
|
||||
if(userChangeRecordInfoQry.getUserId() == null){
|
||||
throw new RuntimeException("请选择用户");
|
||||
}
|
||||
//查找最新的变更记录信息
|
||||
String lastestChangeRecordId = userChangeRecordRepository.getLastestChangeRecordId(userChangeRecordInfoQry.getUserId());
|
||||
if(lastestChangeRecordId == null){
|
||||
return null;
|
||||
}
|
||||
userChangeRecordInfoQry.setUserChangeRecordId(lastestChangeRecordId);
|
||||
}
|
||||
|
||||
UserChangeRecordDO userChangeRecordDO =userChangeRecordRepository.getChangerRecordInfoById(userChangeRecordInfoQry.getUserId(), userChangeRecordInfoQry.getCorpinfoId(),UserChangeRecordStatusEnum.PENDING.getCode());
|
||||
UserChangeRecordDO userChangeRecordDO =userChangeRecordRepository.getChangerRecordInfoById(userChangeRecordInfoQry.getUserChangeRecordId());
|
||||
|
||||
|
||||
if(userChangeRecordDO == null){
|
||||
|
|
@ -84,8 +118,9 @@ public class UserChangeRecordQueryExe {
|
|||
|
||||
//组装未完成的工作
|
||||
List<UserJobHandoverDO> userJobHandoverDOList = userJobHandoverRepository.getListByChangerRecordId(co.getUserChangeRecordId());
|
||||
if(CollUtil.isNotEmpty(userJobHandoverDOList))
|
||||
co.setUserJobHandoverCOList(userJobHandoverCoConvertor.converDOsToCOs(userJobHandoverDOList));
|
||||
if(CollUtil.isNotEmpty(userJobHandoverDOList)){
|
||||
co.setUserJobHandoverCOList(userJobHandoverCoConvertor.converDOsToCOs(userJobHandoverDOList));
|
||||
}
|
||||
return co;
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@ import com.zcloud.basic.info.command.convertor.UserCorpRecordCoConvertor;
|
|||
import com.zcloud.basic.info.command.convertor.UserJobHandoverCoConvertor;
|
||||
import com.zcloud.basic.info.domain.enums.UserChangeRecordStatusEnum;
|
||||
import com.zcloud.basic.info.dto.UserChangeRecordInfoQry;
|
||||
import com.zcloud.basic.info.dto.UserCorpRecordInfoQry;
|
||||
import com.zcloud.basic.info.dto.UserCorpRecordPageQry;
|
||||
import com.zcloud.basic.info.dto.clientobject.UserCO;
|
||||
import com.zcloud.basic.info.dto.clientobject.UserCorpRecordCO;
|
||||
|
|
@ -86,7 +87,7 @@ public class UserCorpRecordQueryExe {
|
|||
return userCO;
|
||||
}
|
||||
|
||||
public UserCorpRecordCO getChangerRecordInfoById(UserChangeRecordInfoQry userChangeRecordInfoQry) {
|
||||
public UserCorpRecordCO getChangerRecordInfoById(UserCorpRecordInfoQry userChangeRecordInfoQry) {
|
||||
if(userChangeRecordInfoQry.getCorpinfoId() == null){
|
||||
userChangeRecordInfoQry.setCorpinfoId(AuthContext.getTenantId());
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,32 +1,44 @@
|
|||
package com.zcloud.basic.info.service;
|
||||
|
||||
import com.alibaba.cola.dto.MultiResponse;
|
||||
import com.alibaba.cola.dto.PageResponse;
|
||||
import com.alibaba.cola.dto.SingleResponse;
|
||||
import com.zcloud.basic.info.api.UserChangeRecordServiceI;
|
||||
import com.zcloud.basic.info.command.UserChangeRecordAddExe;
|
||||
import com.zcloud.basic.info.command.UserChangeRecordRemoveExe;
|
||||
import com.zcloud.basic.info.command.UserChangeRecordUpdateExe;
|
||||
import com.zcloud.basic.info.command.UserChangeRecordWorkChangeExe;
|
||||
import com.zcloud.basic.info.command.query.UserChangeRecordQueryExe;
|
||||
import com.zcloud.basic.info.dto.*;
|
||||
|
||||
import com.alibaba.cola.dto.PageResponse;
|
||||
import com.alibaba.cola.dto.SingleResponse;
|
||||
import com.zcloud.basic.info.dto.UserChangeRecordAddCmd;
|
||||
import com.zcloud.basic.info.dto.UserChangeRecordInfoQry;
|
||||
import com.zcloud.basic.info.dto.UserChangeRecordListQry;
|
||||
import com.zcloud.basic.info.dto.UserChangeRecordPageQry;
|
||||
import com.zcloud.basic.info.dto.UserChangeRecordUpdateCmd;
|
||||
import com.zcloud.basic.info.dto.UserCorpInfoPageQry;
|
||||
import com.zcloud.basic.info.dto.WorkChangeUpdateCmd;
|
||||
import com.zcloud.basic.info.dto.clientobject.UserChangeRecordCO;
|
||||
import com.zcloud.basic.info.dto.clientobject.UserCorpInfoStatCO;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
* web-app
|
||||
*
|
||||
* @Author SondonYong
|
||||
* @Date 2025-12-02 14:08:19
|
||||
* 用户变更记录服务实现。
|
||||
*/
|
||||
@Service
|
||||
@AllArgsConstructor
|
||||
@Slf4j
|
||||
public class UserChangeRecordServiceImpl implements UserChangeRecordServiceI {
|
||||
private final UserChangeRecordAddExe userChangeRecordAddExe;
|
||||
private final UserChangeRecordUpdateExe userChangeRecordUpdateExe;
|
||||
private final UserChangeRecordRemoveExe userChangeRecordRemoveExe;
|
||||
private final UserChangeRecordQueryExe userChangeRecordQueryExe;
|
||||
private final UserChangeRecordWorkChangeExe userChangeRecordWorkChangeExe;
|
||||
|
||||
@Override
|
||||
public PageResponse<UserCorpInfoStatCO> userCorpInfoList(UserCorpInfoPageQry qry) {
|
||||
return userChangeRecordQueryExe.userCorpInfoList(qry);
|
||||
}
|
||||
|
||||
@Override
|
||||
public PageResponse<UserChangeRecordCO> listPage(UserChangeRecordPageQry qry) {
|
||||
|
|
@ -44,7 +56,7 @@ public class UserChangeRecordServiceImpl implements UserChangeRecordServiceI {
|
|||
}
|
||||
|
||||
@Override
|
||||
public SingleResponse add(UserChangeRecordAddCmd cmd) {
|
||||
public SingleResponse<UserChangeRecordCO> add(UserChangeRecordAddCmd cmd) {
|
||||
userChangeRecordAddExe.execute(cmd);
|
||||
return SingleResponse.buildSuccess();
|
||||
}
|
||||
|
|
@ -68,5 +80,17 @@ public class UserChangeRecordServiceImpl implements UserChangeRecordServiceI {
|
|||
public UserChangeRecordCO getChangerRecordInfoById(UserChangeRecordInfoQry userChangeRecordInfoQry) {
|
||||
return userChangeRecordQueryExe.getChangerRecordInfoById(userChangeRecordInfoQry);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 工作交接服务入口。
|
||||
* 这里只负责记录调用日志并委托给专门执行器,避免控制器和执行逻辑耦合。
|
||||
*/
|
||||
@Override
|
||||
public void workChangeHandle(WorkChangeUpdateCmd workChangeUpdateCmd) {
|
||||
log.info("收到工作交接处理请求,交接记录id:{}, 交接人id:{}, 交接企业id:{}",
|
||||
workChangeUpdateCmd.getId(),
|
||||
workChangeUpdateCmd.getHandoverUserId(),
|
||||
workChangeUpdateCmd.getHandoverCompanyId());
|
||||
userChangeRecordWorkChangeExe.workChangeHandle(workChangeUpdateCmd);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -7,10 +7,7 @@ import com.zcloud.basic.info.command.UserCorpRecordAddExe;
|
|||
import com.zcloud.basic.info.command.UserCorpRecordRemoveExe;
|
||||
import com.zcloud.basic.info.command.UserCorpRecordUpdateExe;
|
||||
import com.zcloud.basic.info.command.query.UserCorpRecordQueryExe;
|
||||
import com.zcloud.basic.info.dto.UserChangeRecordInfoQry;
|
||||
import com.zcloud.basic.info.dto.UserCorpRecordAddCmd;
|
||||
import com.zcloud.basic.info.dto.UserCorpRecordPageQry;
|
||||
import com.zcloud.basic.info.dto.UserCorpRecordUpdateCmd;
|
||||
import com.zcloud.basic.info.dto.*;
|
||||
import com.zcloud.basic.info.dto.clientobject.UserCO;
|
||||
import com.zcloud.basic.info.dto.clientobject.UserChangeRecordCO;
|
||||
import com.zcloud.basic.info.dto.clientobject.UserCorpRecordCO;
|
||||
|
|
@ -66,8 +63,8 @@ public class UserCorpRecordServiceImpl implements UserCorpRecordServiceI {
|
|||
}
|
||||
|
||||
@Override
|
||||
public UserCorpRecordCO getChangerRecordInfoById(UserChangeRecordInfoQry userChangeRecordInfoQry) {
|
||||
return userCorpRecordQueryExe.getChangerRecordInfoById(userChangeRecordInfoQry);
|
||||
public UserCorpRecordCO getChangerRecordInfoById(UserCorpRecordInfoQry userCorpRecordInfoQry) {
|
||||
return userCorpRecordQueryExe.getChangerRecordInfoById(userCorpRecordInfoQry);
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -5,10 +5,7 @@ import com.alibaba.cola.dto.PageResponse;
|
|||
import com.alibaba.cola.dto.Response;
|
||||
import com.alibaba.cola.dto.SingleResponse;
|
||||
import com.zcloud.basic.info.api.UserServiceI;
|
||||
import com.zcloud.basic.info.command.UserAddExe;
|
||||
import com.zcloud.basic.info.command.UserImportExe;
|
||||
import com.zcloud.basic.info.command.UserRemoveExe;
|
||||
import com.zcloud.basic.info.command.UserUpdateExe;
|
||||
import com.zcloud.basic.info.command.*;
|
||||
import com.zcloud.basic.info.command.query.UserQueryExe;
|
||||
import com.zcloud.basic.info.dto.*;
|
||||
import com.zcloud.basic.info.dto.clientobject.*;
|
||||
|
|
@ -36,7 +33,7 @@ public class UserServiceImpl implements UserServiceI {
|
|||
private final UserRemoveExe userRemoveExe;
|
||||
private final UserQueryExe userQueryExe;
|
||||
private final UserImportExe userImportExe;
|
||||
|
||||
private final HumanUserUpdateExe humanUserUpdateExe;
|
||||
@Override
|
||||
public PageResponse<UserCO> listPage(UserPageQry qry) {
|
||||
|
||||
|
|
@ -271,5 +268,10 @@ public class UserServiceImpl implements UserServiceI {
|
|||
Long userId = userAddExe.executeHumanUser(cmd);
|
||||
return SingleResponse.of(userId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public SingleResponse<Long> updateHumanUser(UserUpdateCmd userUpdateCmd) {
|
||||
return humanUserUpdateExe.updateHumanUser(userUpdateCmd);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,19 +1,24 @@
|
|||
package com.zcloud.basic.info.api;
|
||||
|
||||
import com.alibaba.cola.dto.MultiResponse;
|
||||
import com.zcloud.basic.info.dto.*;
|
||||
|
||||
import com.alibaba.cola.dto.PageResponse;
|
||||
import com.alibaba.cola.dto.SingleResponse;
|
||||
import com.zcloud.basic.info.dto.UserChangeRecordAddCmd;
|
||||
import com.zcloud.basic.info.dto.UserChangeRecordInfoQry;
|
||||
import com.zcloud.basic.info.dto.UserChangeRecordListQry;
|
||||
import com.zcloud.basic.info.dto.UserChangeRecordPageQry;
|
||||
import com.zcloud.basic.info.dto.UserChangeRecordUpdateCmd;
|
||||
import com.zcloud.basic.info.dto.UserCorpInfoPageQry;
|
||||
import com.zcloud.basic.info.dto.WorkChangeUpdateCmd;
|
||||
import com.zcloud.basic.info.dto.clientobject.UserChangeRecordCO;
|
||||
import com.zcloud.basic.info.dto.clientobject.UserCorpInfoStatCO;
|
||||
|
||||
/**
|
||||
* web-client
|
||||
*
|
||||
* @Author SondonYong
|
||||
* @Date 2025-12-02 14:08:19
|
||||
* 用户变更记录服务接口。
|
||||
*/
|
||||
public interface UserChangeRecordServiceI {
|
||||
PageResponse<UserCorpInfoStatCO> userCorpInfoList(UserCorpInfoPageQry qry);
|
||||
|
||||
PageResponse<UserChangeRecordCO> listPage(UserChangeRecordPageQry qry);
|
||||
|
||||
MultiResponse<UserChangeRecordCO> list(UserChangeRecordListQry qry);
|
||||
|
|
@ -29,5 +34,9 @@ public interface UserChangeRecordServiceI {
|
|||
void removeBatch(Long[] ids);
|
||||
|
||||
UserChangeRecordCO getChangerRecordInfoById(UserChangeRecordInfoQry userChangeRecordInfoQry);
|
||||
}
|
||||
|
||||
/**
|
||||
* 处理用户变更工作交接。
|
||||
*/
|
||||
void workChangeHandle(WorkChangeUpdateCmd workChangeUpdateCmd);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,10 +2,7 @@ package com.zcloud.basic.info.api;
|
|||
|
||||
import com.alibaba.cola.dto.PageResponse;
|
||||
import com.alibaba.cola.dto.SingleResponse;
|
||||
import com.zcloud.basic.info.dto.UserChangeRecordInfoQry;
|
||||
import com.zcloud.basic.info.dto.UserCorpRecordAddCmd;
|
||||
import com.zcloud.basic.info.dto.UserCorpRecordPageQry;
|
||||
import com.zcloud.basic.info.dto.UserCorpRecordUpdateCmd;
|
||||
import com.zcloud.basic.info.dto.*;
|
||||
import com.zcloud.basic.info.dto.clientobject.UserCO;
|
||||
import com.zcloud.basic.info.dto.clientobject.UserChangeRecordCO;
|
||||
import com.zcloud.basic.info.dto.clientobject.UserCorpRecordCO;
|
||||
|
|
@ -29,6 +26,6 @@ public interface UserCorpRecordServiceI {
|
|||
|
||||
UserCO getInfoById(Long id);
|
||||
|
||||
UserCorpRecordCO getChangerRecordInfoById(UserChangeRecordInfoQry userChangeRecordInfoQry);
|
||||
UserCorpRecordCO getChangerRecordInfoById(UserCorpRecordInfoQry userCorpRecordInfoQry);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -104,5 +104,7 @@ public interface UserServiceI {
|
|||
List<UserImgDO> listBase64ByUrl(Map<String, Object> map);
|
||||
|
||||
SingleResponse<Long> addHumanUser(UserAddCmd cmd);
|
||||
|
||||
SingleResponse<Long> updateHumanUser(UserUpdateCmd userUpdateCmd);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -159,5 +159,7 @@ public class UserAddCmd extends Command {
|
|||
@ApiModelProperty(value = "是否缴纳其他人身伤害保险")
|
||||
private Integer isBf;
|
||||
|
||||
private Integer rzFlag;
|
||||
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -26,10 +26,11 @@ public class UserChangeRecordInfoQry implements Serializable {
|
|||
* - `le`: 小于等于比较查询
|
||||
* - `ne`: 不等比较查询,对应SQL的!=操作符
|
||||
*/
|
||||
@ApiModelProperty(value = "企业ID")
|
||||
private Long corpinfoId;
|
||||
// @ApiModelProperty(value = "企业ID")
|
||||
// private Long corpinfoId;
|
||||
@ApiModelProperty(value = "用户ID")
|
||||
private Long userId;
|
||||
|
||||
@ApiModelProperty(value = "变更记录id")
|
||||
private String userChangeRecordId;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,8 +1,11 @@
|
|||
package com.zcloud.basic.info.dto;
|
||||
|
||||
import com.alibaba.cola.dto.PageQuery;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import javax.validation.constraints.NotNull;
|
||||
|
||||
|
||||
/**
|
||||
* web-client
|
||||
|
|
@ -24,5 +27,8 @@ public class UserChangeRecordPageQry extends PageQuery {
|
|||
* - `ne`: 不等比较查询,对应SQL的!=操作符
|
||||
*/
|
||||
private String likeUserChangeRecordId;
|
||||
@ApiModelProperty(value = "用户id", name = "eqUserId", required = true)
|
||||
@NotNull(message = "用户id不能为空")
|
||||
private Long eqUserId;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,17 @@
|
|||
package com.zcloud.basic.info.dto;
|
||||
|
||||
import com.alibaba.cola.dto.PageQuery;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* 企业用户统计分页查询。
|
||||
*/
|
||||
@Data
|
||||
public class UserCorpInfoPageQry extends PageQuery {
|
||||
@ApiModelProperty(value = "企业名称")
|
||||
private String likeCorpName;
|
||||
|
||||
@ApiModelProperty(value = "菜单路径")
|
||||
private String menuPath;
|
||||
}
|
||||
|
|
@ -0,0 +1,33 @@
|
|||
package com.zcloud.basic.info.dto;
|
||||
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
|
||||
/**
|
||||
* web-client
|
||||
*
|
||||
* @Author zhangyue
|
||||
* @Date 2025-11-04 14:07:36
|
||||
*/
|
||||
@Data
|
||||
public class UserCorpRecordInfoQry implements Serializable {
|
||||
|
||||
/**
|
||||
* 查询条件操作前缀,支持以下几种数据库查询操作:
|
||||
* - `like`: 模糊匹配查询,对应SQL的LIKE操作符
|
||||
* - `eq`: 等值查询,对应SQL的=操作符
|
||||
* - `gt`: 大于比较查询
|
||||
* - `lt`: 小于比较查询
|
||||
* - `ge`: 大于等于比较查询
|
||||
* - `le`: 小于等于比较查询
|
||||
* - `ne`: 不等比较查询,对应SQL的!=操作符
|
||||
*/
|
||||
@ApiModelProperty(value = "企业ID")
|
||||
private Long corpinfoId;
|
||||
@ApiModelProperty(value = "用户ID")
|
||||
private Long userId;
|
||||
}
|
||||
|
||||
|
|
@ -35,12 +35,14 @@ public class UserUpdateCmd extends Command {
|
|||
private String name;
|
||||
@ApiModelProperty(value = "企业id", name = "corpinfoId")
|
||||
private Long corpinfoId;
|
||||
private String corpinfoName;
|
||||
@ApiModelProperty(value = "是否主账号1是0否", name = "mainCorpFlag")
|
||||
private Integer mainCorpFlag;
|
||||
@ApiModelProperty(value = "用户类型,1监管2企业3相关方", name = "userType")
|
||||
private Integer userType;
|
||||
@ApiModelProperty(value = "部门id", name = "departmentId")
|
||||
private Long departmentId;
|
||||
private String departmentName;
|
||||
@ApiModelProperty(value = "岗位id", name = "postId")
|
||||
private Long postId;
|
||||
@ApiModelProperty(value = "岗位名称", name = "postName")
|
||||
|
|
@ -94,9 +96,12 @@ public class UserUpdateCmd extends Command {
|
|||
// 入职状态
|
||||
@ApiModelProperty(value = "是否流动人员,1-流动,0-固定人员")
|
||||
private Integer flowFlag;
|
||||
private Integer rzFlag;
|
||||
// 微信openid
|
||||
@ApiModelProperty(value = "微信openid")
|
||||
private String openId;
|
||||
@ApiModelProperty(value = "入职状态,0-离职, 1-在职, 2-信息变更中, 3-未入职, 4-实习生, 5-实习结束, 6-退休, 7-劳务派遣, 8-劳务派遣结束, 11-入职待审核, 10-离职待审核")
|
||||
private Integer employmentFlag;
|
||||
|
||||
@ApiModelProperty(value = "是否特殊工种")
|
||||
private Integer isSpecialJob;
|
||||
|
|
|
|||
|
|
@ -0,0 +1,47 @@
|
|||
package com.zcloud.basic.info.dto;
|
||||
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import lombok.NonNull;
|
||||
|
||||
import javax.validation.constraints.NotNull;
|
||||
import java.io.Serializable;
|
||||
|
||||
|
||||
@Data
|
||||
public class WorkChangeUpdateCmd implements Serializable {
|
||||
|
||||
@ApiModelProperty(value = "工作交接记录id")
|
||||
@NotNull(message = "工作交接记录id不能为空")
|
||||
private Long id;
|
||||
|
||||
//交接人企业id
|
||||
@ApiModelProperty(value = "交接人企业id")
|
||||
@NotNull(message = "交接人企业不能为空")
|
||||
private Long handoverCompanyId;
|
||||
//交接人公司名称
|
||||
@ApiModelProperty(value = "交接人公司名称")
|
||||
private String handoverCompanyName;
|
||||
//交接人部门id
|
||||
@ApiModelProperty(value = "交接人部门id")
|
||||
@NotNull(message = "交接人部门不能为空")
|
||||
private Long handoverDepartmentId;
|
||||
//交接人部门名称
|
||||
@ApiModelProperty(value = "交接人部门名称")
|
||||
private String handoverDepartmentName;
|
||||
//交接人岗位id
|
||||
@ApiModelProperty(value = "交接人岗位id")
|
||||
private Long handoverPostId;
|
||||
//交接人岗位名称
|
||||
@ApiModelProperty(value = "交接人岗位名称")
|
||||
private String handoverPostName;
|
||||
//交接人id
|
||||
@ApiModelProperty(value = "交接人id")
|
||||
@NotNull(message = "交接人不能为空")
|
||||
private Long handoverUserId;
|
||||
//交接人名称
|
||||
@ApiModelProperty(value = "交接人名称")
|
||||
private String handoverUserName;
|
||||
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,32 @@
|
|||
package com.zcloud.basic.info.dto.clientobject;
|
||||
|
||||
import com.alibaba.cola.dto.ClientObject;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* 企业用户统计结果。
|
||||
*/
|
||||
@Data
|
||||
public class UserCorpInfoStatCO extends ClientObject {
|
||||
@ApiModelProperty(value = "企业id")
|
||||
private Long id;
|
||||
|
||||
@ApiModelProperty(value = "企业名称")
|
||||
private String corpName;
|
||||
|
||||
@ApiModelProperty(value = "公司类型")
|
||||
private Integer type;
|
||||
|
||||
@ApiModelProperty(value = "部门数")
|
||||
private Long departmentCount;
|
||||
|
||||
@ApiModelProperty(value = "岗位数")
|
||||
private Long postCount;
|
||||
|
||||
@ApiModelProperty(value = "人员总数")
|
||||
private Long userCount;
|
||||
|
||||
@ApiModelProperty(value = "人资数")
|
||||
private Long rzUserCount;
|
||||
}
|
||||
|
|
@ -3,18 +3,35 @@ package com.zcloud.basic.info.domain.enums;
|
|||
import lombok.Getter;
|
||||
|
||||
/**
|
||||
* 工作类型,1:隐患信息
|
||||
* 工作交接类型枚举。
|
||||
*/
|
||||
@Getter
|
||||
public enum UserJobHandoverWorkTypeEnum {
|
||||
/**
|
||||
* 工作类型,1:隐患信息
|
||||
* 隐患信息。
|
||||
*/
|
||||
HIDDENINFO(1,"隐患信息"),
|
||||
RISK(2,"风险辨识检查"),
|
||||
HIDDENINFO(1, "隐患信息"),
|
||||
/**
|
||||
* 风险辨识检查。
|
||||
*/
|
||||
RISK(2, "风险辨识检查"),
|
||||
/**
|
||||
* 危险作业。
|
||||
*/
|
||||
EIGHTWORK(3, "危险作业"),
|
||||
/**
|
||||
* 消防检查。
|
||||
*/
|
||||
FIRECHECK(4, "消防检查"),
|
||||
/**
|
||||
* 相关方项目审核。
|
||||
*/
|
||||
PROJECT_APPROVAL(5, "相关方项目审核"),
|
||||
/**
|
||||
* 安全环保检查。
|
||||
*/
|
||||
INSPECTION_WORK(6, "安全环保检查");
|
||||
|
||||
|
||||
;
|
||||
private final Integer code;
|
||||
private final String name;
|
||||
|
||||
|
|
@ -22,11 +39,17 @@ public enum UserJobHandoverWorkTypeEnum {
|
|||
this.code = code;
|
||||
this.name = name;
|
||||
}
|
||||
//根据code获取枚举
|
||||
|
||||
/**
|
||||
* 根据编码获取工作交接类型枚举。
|
||||
*
|
||||
* @param code 类型编码
|
||||
* @return 对应枚举,未匹配到时返回 null
|
||||
*/
|
||||
public static UserJobHandoverWorkTypeEnum getByCode(Integer code) {
|
||||
for (UserJobHandoverWorkTypeEnum e : values()) {
|
||||
if (e.getCode().equals(code)) {
|
||||
return e;
|
||||
for (UserJobHandoverWorkTypeEnum item : values()) {
|
||||
if (item.getCode().equals(code)) {
|
||||
return item;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
|
|
|
|||
|
|
@ -181,5 +181,29 @@ public class UserChangeRecordE extends BaseE {
|
|||
this.setUserStatusAfter(employmentFlagAfter);
|
||||
this.setStatus(status);
|
||||
}
|
||||
/**
|
||||
* 离职相关
|
||||
* @param userE
|
||||
*/
|
||||
public void executeHumanResignation(UserE userE,UserE oldUserE) {
|
||||
this.setUserId(userE.getId());
|
||||
this.setChangeTime(new Date());
|
||||
this.setCorpinfoIdBefore(userE.getCorpinfoId());
|
||||
this.setCorpinfoNameBefore(userE.getCorpinfoName());
|
||||
this.setDepartmentIdBefore(userE.getDepartmentId());
|
||||
this.setDepartmentNameBefore(userE.getDepartmentName());
|
||||
this.setPostIdBefore(userE.getPostId());
|
||||
this.setPostNameBefore(userE.getPostName());
|
||||
this.setUserStatusBefore(oldUserE.getEmploymentFlag());
|
||||
this.setCorpinfoIdAfter(oldUserE.getCorpinfoId());
|
||||
this.setCorpinfoNameAfter(oldUserE.getCorpinfoName());
|
||||
this.setDepartmentIdAfter(oldUserE.getDepartmentId());
|
||||
this.setDepartmentNameAfter(oldUserE.getDepartmentName());
|
||||
this.setPostIdAfter(oldUserE.getPostId());
|
||||
this.setPostNameAfter(oldUserE.getPostName());
|
||||
this.setUserStatusAfter(userE.getEmploymentFlag());
|
||||
this.setStatus(1);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,33 @@
|
|||
package com.zcloud.basic.info.persistence.dataobject;
|
||||
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* 企业用户统计数据对象。
|
||||
*/
|
||||
@Data
|
||||
public class UserCorpInfoStatDO implements Serializable {
|
||||
@ApiModelProperty(value = "企业id")
|
||||
private Long id;
|
||||
|
||||
@ApiModelProperty(value = "企业名称")
|
||||
private String corpName;
|
||||
|
||||
@ApiModelProperty(value = "公司类型")
|
||||
private Integer type;
|
||||
|
||||
@ApiModelProperty(value = "部门数")
|
||||
private Long departmentCount;
|
||||
|
||||
@ApiModelProperty(value = "岗位数")
|
||||
private Long postCount;
|
||||
|
||||
@ApiModelProperty(value = "人员总数")
|
||||
private Long userCount;
|
||||
|
||||
@ApiModelProperty(value = "人资数")
|
||||
private Long rzUserCount;
|
||||
}
|
||||
|
|
@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
|
|||
import com.jjb.saas.framework.datascope.annotation.DataScope;
|
||||
import com.jjb.saas.framework.datascope.annotation.DataScopes;
|
||||
import com.zcloud.basic.info.persistence.dataobject.CorpInfoDO;
|
||||
import com.zcloud.basic.info.persistence.dataobject.UserCorpInfoStatDO;
|
||||
import com.zcloud.basic.info.persistence.dataobject.UserDO;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
|
@ -22,11 +23,14 @@ import java.util.Map;
|
|||
@DataScopes({
|
||||
@DataScope(method = "selectUserBasicPage", menuPerms = ""),
|
||||
@DataScope(method = "corpUserMiddlePage", menuPerms = ""),
|
||||
@DataScope(method = "userCorpInfoListPage", menuPerms = ""),
|
||||
})
|
||||
public interface CorpInfoMapper extends BaseMapper<CorpInfoDO> {
|
||||
|
||||
IPage<CorpInfoDO> corpUserMiddlePage(IPage<CorpInfoDO> iPage, Map<String, Object> params, String menuPerms);
|
||||
|
||||
IPage<UserCorpInfoStatDO> userCorpInfoListPage(IPage<UserCorpInfoStatDO> iPage, Map<String, Object> params, String menuPerms);
|
||||
|
||||
IPage<CorpInfoDO> selectUserPage(IPage<CorpInfoDO> iPage, @Param("ew") QueryWrapper<CorpInfoDO> queryWrapper, String menuPerms);
|
||||
IPage<CorpInfoDO> selectUserBasicPage(IPage<CorpInfoDO> iPage, @Param("ew") QueryWrapper<CorpInfoDO> queryWrapper, String menuPerms);
|
||||
|
||||
|
|
|
|||
|
|
@ -1,9 +1,12 @@
|
|||
package com.zcloud.basic.info.persistence.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.zcloud.basic.info.persistence.dataobject.UserChangeRecordDO;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* web-infrastructure
|
||||
*
|
||||
|
|
@ -13,6 +16,8 @@ import org.apache.ibatis.annotations.Mapper;
|
|||
@Mapper
|
||||
public interface UserChangeRecordMapper extends BaseMapper<UserChangeRecordDO> {
|
||||
|
||||
UserChangeRecordDO getChangerRecordInfoById(Long userId, Long corpinfoId, Integer status);
|
||||
UserChangeRecordDO getChangerRecordInfoById(String userChangeRecordId);
|
||||
|
||||
IPage<UserChangeRecordDO> selectUserChangeRecordPage(IPage<UserChangeRecordDO> iPage, Map<String, Object> params);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -53,5 +53,7 @@ public interface UserMapper extends BaseMapper<UserDO> {
|
|||
|
||||
|
||||
List<UserImgDO> listBase64ByUrl(@Param("params") Map<String, Object> params);
|
||||
|
||||
void updateEmploymentFlagAndDeleteEnum(Long userId, Integer employmentFlag, String deleteEnum);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@ package com.zcloud.basic.info.persistence.repository;
|
|||
import com.alibaba.cola.dto.PageResponse;
|
||||
import com.jjb.saas.framework.repository.repo.BaseRepository;
|
||||
import com.zcloud.basic.info.persistence.dataobject.CorpInfoDO;
|
||||
import com.zcloud.basic.info.persistence.dataobject.UserCorpInfoStatDO;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
|
@ -35,6 +36,8 @@ public interface CorpInfoRepository extends BaseRepository<CorpInfoDO> {
|
|||
|
||||
PageResponse<CorpInfoDO> corpUserMiddlePage(Map<String, Object> parmas);
|
||||
|
||||
PageResponse<UserCorpInfoStatDO> userCorpInfoListPage(Map<String, Object> params);
|
||||
|
||||
CorpInfoDO getCorpInfoByCorpName(String corpName);
|
||||
|
||||
Boolean remove(Long id);
|
||||
|
|
|
|||
|
|
@ -23,6 +23,8 @@ public interface UserChangeRecordRepository extends BaseRepository<UserChangeRec
|
|||
SingleResponse<UserChangeRecordDO> getInfoById(Long id);
|
||||
|
||||
|
||||
UserChangeRecordDO getChangerRecordInfoById(Long userId, Long corpinfoId, Integer status);
|
||||
UserChangeRecordDO getChangerRecordInfoById(String userChangeRecordId);
|
||||
|
||||
String getLastestChangeRecordId(Long userId);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -112,5 +112,9 @@ public interface UserRepository extends BaseRepository<UserDO> {
|
|||
List<UserImgDO> listBase64ByUrl(Map<String,Object> params);
|
||||
|
||||
List<UserDO> getUserListByUserId(String foreignKey);
|
||||
|
||||
List<UserDO> listUserByInfo(Map<String, Object> parmas);
|
||||
|
||||
void updateEmploymentFlagAndDeleteEnum(Long id, Integer code, String aTrue);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -25,6 +25,7 @@ import com.zcloud.basic.info.domain.enums.CorpTypeEnum;
|
|||
import com.zcloud.basic.info.domain.enums.CorpUseFlagEnum;
|
||||
import com.zcloud.basic.info.domain.enums.MenuEnum;
|
||||
import com.zcloud.basic.info.persistence.dataobject.CorpInfoDO;
|
||||
import com.zcloud.basic.info.persistence.dataobject.UserCorpInfoStatDO;
|
||||
import com.zcloud.basic.info.persistence.mapper.CorpInfoMapper;
|
||||
import com.zcloud.basic.info.persistence.repository.CorpInfoRepository;
|
||||
import com.zcloud.basic.info.utils.Query;
|
||||
|
|
@ -278,6 +279,17 @@ public class CorpInfoRepositoryImpl extends BaseRepositoryImpl<CorpInfoMapper, C
|
|||
return PageHelper.pageToResponse(result, result.getRecords());
|
||||
}
|
||||
|
||||
@Override
|
||||
public PageResponse<UserCorpInfoStatDO> userCorpInfoListPage(Map<String, Object> params) {
|
||||
IPage<UserCorpInfoStatDO> iPage = new Query<UserCorpInfoStatDO>().getPage(params);
|
||||
String menuPerms = "";
|
||||
if (!ObjectUtils.isEmpty(params.get("menuPath"))) {
|
||||
menuPerms = MenuEnum.getMenuKeyByPath(params.get("menuPath").toString());
|
||||
}
|
||||
IPage<UserCorpInfoStatDO> result = corpInfoMapper.userCorpInfoListPage(iPage, params, menuPerms);
|
||||
return PageHelper.pageToResponse(result, result.getRecords());
|
||||
}
|
||||
|
||||
@Override
|
||||
public CorpInfoDO getCorpInfoByCorpName(String corpName) {
|
||||
QueryWrapper queryWrapper = new QueryWrapper<>();
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
package com.zcloud.basic.info.persistence.repository.impl;
|
||||
|
||||
import com.jjb.saas.framework.repository.common.PageHelper;
|
||||
import com.zcloud.basic.info.domain.enums.UserChangeRecordStatusEnum;
|
||||
import com.zcloud.basic.info.persistence.dataobject.UserChangeRecordDO;
|
||||
import com.zcloud.basic.info.persistence.mapper.UserChangeRecordMapper;
|
||||
import com.zcloud.basic.info.persistence.repository.UserChangeRecordRepository;
|
||||
|
|
@ -30,12 +31,15 @@ public class UserChangeRecordRepositoryImpl extends BaseRepositoryImpl<UserChang
|
|||
|
||||
@Override
|
||||
public PageResponse<UserChangeRecordDO> listPage(Map<String, Object> params) {
|
||||
IPage<UserChangeRecordDO> iPage = new Query<UserChangeRecordDO>().getPage(params);
|
||||
/* IPage<UserChangeRecordDO> iPage = new Query<UserChangeRecordDO>().getPage(params);
|
||||
QueryWrapper<UserChangeRecordDO> queryWrapper = new QueryWrapper<>();
|
||||
queryWrapper = PageQueryHelper.createPageQueryWrapper(queryWrapper, params);
|
||||
queryWrapper.orderByDesc("create_time");
|
||||
IPage<UserChangeRecordDO> result = userChangeRecordMapper.selectPage(iPage, queryWrapper);
|
||||
IPage<UserChangeRecordDO> result = userChangeRecordMapper.selectPage(iPage, queryWrapper);*/
|
||||
IPage<UserChangeRecordDO> iPage = new Query<UserChangeRecordDO>().getPage(params);
|
||||
IPage<UserChangeRecordDO> result = userChangeRecordMapper.selectUserChangeRecordPage(iPage, params);
|
||||
return PageHelper.pageToResponse(result, result.getRecords());
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -53,8 +57,20 @@ public class UserChangeRecordRepositoryImpl extends BaseRepositoryImpl<UserChang
|
|||
}
|
||||
|
||||
@Override
|
||||
public UserChangeRecordDO getChangerRecordInfoById(Long userId, Long corpinfoId, Integer status) {
|
||||
return userChangeRecordMapper.getChangerRecordInfoById(userId, corpinfoId, status);
|
||||
public UserChangeRecordDO getChangerRecordInfoById(String userChangeRecordId) {
|
||||
return userChangeRecordMapper.getChangerRecordInfoById(userChangeRecordId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getLastestChangeRecordId(Long userId) {
|
||||
QueryWrapper<UserChangeRecordDO> queryWrapper = new QueryWrapper<>();
|
||||
queryWrapper.eq("user_id", userId);
|
||||
queryWrapper.eq("status", UserChangeRecordStatusEnum.PENDING.getCode());
|
||||
queryWrapper.eq("delete_enum", "FALSE");
|
||||
queryWrapper.orderByDesc("create_time");
|
||||
queryWrapper.last("LIMIT 1");
|
||||
UserChangeRecordDO one = getOne(queryWrapper);
|
||||
return one != null ? one.getUserChangeRecordId() : null;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -316,6 +316,7 @@ public class UserRepositoryImpl extends BaseRepositoryImpl<UserMapper, UserDO> i
|
|||
userAddCmd.setAccount(userDO.getUsername());
|
||||
userAddCmd.setName(userDO.getName());
|
||||
userAddCmd.setPassword(userDO.getPassword());
|
||||
userAddCmd.setTenantId(userDO.getCorpinfoId());
|
||||
RoleDeptAddCmd roleDeptAddCmd = new RoleDeptAddCmd();
|
||||
roleDeptAddCmd.setRoleId(userDO.getRoleId());
|
||||
roleDeptAddCmd.setDeptId(userDO.getDepartmentId());
|
||||
|
|
@ -767,5 +768,21 @@ public class UserRepositoryImpl extends BaseRepositoryImpl<UserMapper, UserDO> i
|
|||
queryWrapperList.orderByAsc("create_time");
|
||||
return list(queryWrapperList);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<UserDO> listUserByInfo(Map<String, Object> parmas) {
|
||||
QueryWrapper<UserDO> queryWrapperList = new QueryWrapper<>();
|
||||
queryWrapperList.eq("phone", parmas.get("phone"));
|
||||
queryWrapperList.eq("employment_flag",1);
|
||||
queryWrapperList.eq("user_id_card", parmas.get("userIdCard"));
|
||||
queryWrapperList.eq("delete_enum", "FALSE");
|
||||
queryWrapperList.orderByAsc("create_time");
|
||||
return list(queryWrapperList);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateEmploymentFlagAndDeleteEnum(Long userId, Integer employmentFlag, String deleteEnum) {
|
||||
userMapper.updateEmploymentFlagAndDeleteEnum(userId, employmentFlag, deleteEnum);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -49,6 +49,53 @@
|
|||
c.create_time DESC
|
||||
</select>
|
||||
|
||||
<select id="userCorpInfoListPage" resultType="com.zcloud.basic.info.persistence.dataobject.UserCorpInfoStatDO">
|
||||
SELECT
|
||||
c.id AS id,
|
||||
c.corp_name AS corpName,
|
||||
c.type AS type,
|
||||
(
|
||||
SELECT COUNT(1)
|
||||
FROM department d
|
||||
WHERE d.corpinfo_id = c.id
|
||||
AND d.delete_enum = 'FALSE'
|
||||
) AS departmentCount,
|
||||
(
|
||||
SELECT COUNT(1)
|
||||
FROM post p
|
||||
WHERE p.corpinfo_id = c.id
|
||||
AND p.delete_enum = 'FALSE'
|
||||
) AS postCount,
|
||||
(
|
||||
SELECT COUNT(1)
|
||||
FROM user u
|
||||
WHERE u.corpinfo_id = c.id
|
||||
AND u.delete_enum = 'FALSE'
|
||||
) AS userCount,
|
||||
(
|
||||
SELECT COUNT(1)
|
||||
FROM user u
|
||||
WHERE u.corpinfo_id = c.id
|
||||
AND u.delete_enum = 'FALSE'
|
||||
AND u.rz_flag = 1
|
||||
) AS rzUserCount
|
||||
FROM corp_info c
|
||||
WHERE c.delete_enum = 'FALSE'
|
||||
<if test="params.typeList != null and params.typeList.size() > 0">
|
||||
AND c.type IN
|
||||
<foreach collection="params.typeList" item="type" open="(" separator="," close=")">
|
||||
#{type}
|
||||
</foreach>
|
||||
</if>
|
||||
<if test="params.eqUseFlag != null">
|
||||
AND c.use_flag = #{params.eqUseFlag}
|
||||
</if>
|
||||
<if test="params.likeCorpName != null and params.likeCorpName.trim() != ''">
|
||||
AND c.corp_name like concat('%', #{params.likeCorpName}, '%')
|
||||
</if>
|
||||
ORDER BY c.corp_order ASC, c.create_time DESC
|
||||
</select>
|
||||
|
||||
<select id="selectUserPage" resultType="com.zcloud.basic.info.persistence.dataobject.CorpInfoDO">
|
||||
SELECT *
|
||||
FROM corp_info
|
||||
|
|
|
|||
|
|
@ -8,11 +8,36 @@
|
|||
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}
|
||||
and ucr.user_change_record_id =#{userChangeRecordId}
|
||||
|
||||
order by ucr.create_time desc
|
||||
limit 1
|
||||
</select>
|
||||
<select id="selectUserChangeRecordPage" 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'
|
||||
<if test="params.userId != null">
|
||||
AND ucr.user_id = #{params.userId}
|
||||
</if>
|
||||
<if test="params.status != null">
|
||||
AND ucr.status = #{params.status}
|
||||
</if>
|
||||
<if test="params.corpinfoIdBefore != null">
|
||||
AND ucr.corpinfo_id_before = #{params.corpinfoIdBefore}
|
||||
</if>
|
||||
<if test="params.corpinfoIdAfter != null">
|
||||
AND ucr.corpinfo_id_after = #{params.corpinfoIdAfter}
|
||||
</if>
|
||||
<if test="params.likeUserName != null and params.likeUserName.trim() != ''">
|
||||
AND u.name LIKE CONCAT('%', #{params.likeUserName}, '%')
|
||||
</if>
|
||||
</where>
|
||||
ORDER BY ucr.create_time DESC
|
||||
</select>
|
||||
</mapper>
|
||||
|
||||
|
|
|
|||
|
|
@ -595,5 +595,11 @@
|
|||
</if>
|
||||
</where>
|
||||
</select>
|
||||
<update id="updateEmploymentFlagAndDeleteEnum">
|
||||
UPDATE user
|
||||
SET employment_flag = #{employmentFlag},
|
||||
delete_enum = #{deleteEnum}
|
||||
WHERE id = #{userId}
|
||||
</update>
|
||||
</mapper>
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue