feat(corp): 添加企业用户统计功能和优化用户变更记录处理,添加用户离职工作交接工作

dev_human_push
zhaokai 2026-06-23 10:05:35 +08:00
parent 4ce5bb5723
commit b43696469c
37 changed files with 2374 additions and 92 deletions

View File

@ -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());
}
}
//人员
}

View File

@ -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();
}
}

View File

@ -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

View File

@ -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();

View File

@ -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);
}
}

View File

@ -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;

View File

@ -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());
}

View File

@ -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);
}
}

View File

@ -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);
}
}

View File

@ -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);
}
}

View File

@ -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);
}

View File

@ -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);
}

View File

@ -104,5 +104,7 @@ public interface UserServiceI {
List<UserImgDO> listBase64ByUrl(Map<String, Object> map);
SingleResponse<Long> addHumanUser(UserAddCmd cmd);
SingleResponse<Long> updateHumanUser(UserUpdateCmd userUpdateCmd);
}

View File

@ -159,5 +159,7 @@ public class UserAddCmd extends Command {
@ApiModelProperty(value = "是否缴纳其他人身伤害保险")
private Integer isBf;
private Integer rzFlag;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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`: SQLLIKE
* - `eq`: SQL=
* - `gt`:
* - `lt`:
* - `ge`:
* - `le`:
* - `ne`: SQL!=
*/
@ApiModelProperty(value = "企业ID")
private Long corpinfoId;
@ApiModelProperty(value = "用户ID")
private Long userId;
}

View File

@ -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;

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;

View File

@ -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);
}
}

View File

@ -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;
}

View File

@ -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);

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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);

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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<>();

View File

@ -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;
}
}

View File

@ -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);
}
}

View File

@ -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

View File

@ -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>

View File

@ -595,5 +595,11 @@
</if>
</where>
</select>
<update id="updateEmploymentFlagAndDeleteEnum">
UPDATE user
SET employment_flag = #{employmentFlag},
delete_enum = #{deleteEnum}
WHERE id = #{userId}
</update>
</mapper>