feat(corp): 添加企业用户统计功能和优化用户变更记录处理,添加用户离职工作交接工作
parent
4ce5bb5723
commit
b43696469c
|
|
@ -1,23 +1,27 @@
|
||||||
package com.zcloud.basic.info.facade;
|
package com.zcloud.basic.info.facade;
|
||||||
|
|
||||||
import cn.hutool.core.bean.BeanUtil;
|
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.MultiResponse;
|
||||||
import com.alibaba.cola.dto.SingleResponse;
|
import com.alibaba.cola.dto.SingleResponse;
|
||||||
|
import com.alibaba.cola.exception.BizException;
|
||||||
import com.zcloud.basic.info.api.UserServiceI;
|
import com.zcloud.basic.info.api.UserServiceI;
|
||||||
import com.zcloud.basic.info.command.convertor.UserCoConvertor;
|
import com.zcloud.basic.info.command.convertor.UserCoConvertor;
|
||||||
import com.zcloud.basic.info.dto.UserAddCmd;
|
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.dto.clientobject.UserCO;
|
||||||
import com.zcloud.basic.info.persistence.dataobject.UserDO;
|
import com.zcloud.basic.info.persistence.dataobject.UserDO;
|
||||||
import com.zcloud.basic.info.persistence.dataobject.UserImgDO;
|
import com.zcloud.basic.info.persistence.dataobject.UserImgDO;
|
||||||
import com.zcloud.basic.info.persistence.repository.UserRepository;
|
import com.zcloud.basic.info.persistence.repository.UserRepository;
|
||||||
import com.zcloud.gbscommon.utils.PageQueryHelper;
|
import com.zcloud.gbscommon.utils.PageQueryHelper;
|
||||||
import com.zcloud.gbscommon.zclouduser.facade.ZcloudUserFacade;
|
import com.zcloud.gbscommon.zclouduser.facade.ZcloudUserFacade;
|
||||||
import com.zcloud.gbscommon.zclouduser.request.ZcloudUserAddCmd;
|
import com.zcloud.gbscommon.zclouduser.request.*;
|
||||||
import com.zcloud.gbscommon.zclouduser.request.ZcloudUserImgQry;
|
|
||||||
import com.zcloud.gbscommon.zclouduser.request.ZcloudUserQry;
|
|
||||||
import com.zcloud.gbscommon.zclouduser.response.ZcloudUserCo;
|
import com.zcloud.gbscommon.zclouduser.response.ZcloudUserCo;
|
||||||
import com.zcloud.gbscommon.zclouduser.response.ZcloudUserImgBase64Co;
|
import com.zcloud.gbscommon.zclouduser.response.ZcloudUserImgBase64Co;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.apache.dubbo.config.annotation.DubboService;
|
import org.apache.dubbo.config.annotation.DubboService;
|
||||||
|
import org.springframework.util.StringUtils;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
|
@ -28,6 +32,7 @@ import java.util.Map;
|
||||||
/**
|
/**
|
||||||
* @author lin
|
* @author lin
|
||||||
*/
|
*/
|
||||||
|
@Slf4j
|
||||||
@DubboService
|
@DubboService
|
||||||
public class ZcloudUserFacadeImpl implements ZcloudUserFacade {
|
public class ZcloudUserFacadeImpl implements ZcloudUserFacade {
|
||||||
@Resource
|
@Resource
|
||||||
|
|
@ -106,5 +111,85 @@ public class ZcloudUserFacadeImpl implements ZcloudUserFacade {
|
||||||
return userServiceI.addHumanUser(userAddCmd);
|
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;
|
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.PageResponse;
|
||||||
import com.alibaba.cola.dto.Response;
|
|
||||||
import com.alibaba.cola.dto.SingleResponse;
|
import com.alibaba.cola.dto.SingleResponse;
|
||||||
import com.jjb.saas.framework.auth.model.SSOUser;
|
import com.zcloud.basic.info.api.UserChangeRecordServiceI;
|
||||||
import com.jjb.saas.framework.auth.utils.AuthContext;
|
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.UserChangeRecordCO;
|
||||||
|
import com.zcloud.basic.info.dto.clientobject.UserCorpInfoStatCO;
|
||||||
import io.swagger.annotations.Api;
|
import io.swagger.annotations.Api;
|
||||||
import io.swagger.annotations.ApiOperation;
|
import io.swagger.annotations.ApiOperation;
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import org.springframework.validation.annotation.Validated;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.web.bind.annotation.*;
|
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 = "用户变更记录")
|
@Api(tags = "用户变更记录")
|
||||||
@RequestMapping("/${application.gateway}/userChangeRecord")
|
@RequestMapping("/${application.gateway}/userChangeRecord")
|
||||||
@RestController
|
@RestController
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
|
@Slf4j
|
||||||
public class UserChangeRecordController {
|
public class UserChangeRecordController {
|
||||||
private final UserChangeRecordServiceI userChangeRecordService;
|
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")
|
@PostMapping("/list")
|
||||||
public PageResponse<UserChangeRecordCO> page(@RequestBody UserChangeRecordPageQry qry) {
|
public PageResponse<UserChangeRecordCO> page(@RequestBody UserChangeRecordPageQry qry) {
|
||||||
return userChangeRecordService.listPage(qry);
|
return userChangeRecordService.listPage(qry);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ApiOperation("用户变更记录详情")
|
||||||
@ApiOperation("变更记录详情详情")
|
|
||||||
@PostMapping("/getChangerRecordInfoById")
|
@PostMapping("/getChangerRecordInfoById")
|
||||||
public SingleResponse<UserChangeRecordCO> getChangerRecordInfoById(@RequestBody UserChangeRecordInfoQry userChangeRecordInfoQry) {
|
public SingleResponse<UserChangeRecordCO> getChangerRecordInfoById(@RequestBody UserChangeRecordInfoQry userChangeRecordInfoQry) {
|
||||||
return SingleResponse.of(userChangeRecordService.getChangerRecordInfoById(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.model.SSOUser;
|
||||||
import com.jjb.saas.framework.auth.utils.AuthContext;
|
import com.jjb.saas.framework.auth.utils.AuthContext;
|
||||||
import com.zcloud.basic.info.api.UserCorpRecordServiceI;
|
import com.zcloud.basic.info.api.UserCorpRecordServiceI;
|
||||||
import com.zcloud.basic.info.dto.UserChangeRecordInfoQry;
|
import com.zcloud.basic.info.dto.*;
|
||||||
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.clientobject.UserChangeRecordCO;
|
import com.zcloud.basic.info.dto.clientobject.UserChangeRecordCO;
|
||||||
import com.zcloud.basic.info.dto.clientobject.UserCorpRecordCO;
|
import com.zcloud.basic.info.dto.clientobject.UserCorpRecordCO;
|
||||||
import io.swagger.annotations.Api;
|
import io.swagger.annotations.Api;
|
||||||
|
|
@ -56,8 +53,8 @@ public class UserCorpRecordController {
|
||||||
}
|
}
|
||||||
@ApiOperation("变更记录详情详情")
|
@ApiOperation("变更记录详情详情")
|
||||||
@PostMapping("/getUserCorpRecordById")
|
@PostMapping("/getUserCorpRecordById")
|
||||||
public SingleResponse<UserCorpRecordCO> getChangerRecordInfoById(@RequestBody UserChangeRecordInfoQry userChangeRecordInfoQry) {
|
public SingleResponse<UserCorpRecordCO> getChangerRecordInfoById(@RequestBody UserCorpRecordInfoQry userCorpRecordInfoQry) {
|
||||||
return SingleResponse.of(userCorpRecordService.getChangerRecordInfoById(userChangeRecordInfoQry));
|
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.command.query.CorpInfoQueryExe;
|
||||||
import com.zcloud.basic.info.constant.RedisConstant;
|
import com.zcloud.basic.info.constant.RedisConstant;
|
||||||
import com.zcloud.basic.info.domain.config.CodeConfig;
|
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.CorpTypeEnum;
|
||||||
import com.zcloud.basic.info.domain.enums.UserEmploymentFlagEnum;
|
import com.zcloud.basic.info.domain.enums.UserEmploymentFlagEnum;
|
||||||
import com.zcloud.basic.info.domain.enums.UserFlowFlagEnum;
|
import com.zcloud.basic.info.domain.enums.UserFlowFlagEnum;
|
||||||
|
|
@ -646,7 +647,23 @@ public class UserAddExe {
|
||||||
List<UserDO> userList = userRepository.getListByPhone(userE.getPhone(), employmentFlagList);
|
List<UserDO> userList = userRepository.getListByPhone(userE.getPhone(), employmentFlagList);
|
||||||
if (CollUtil.isNotEmpty(userList)) {
|
if (CollUtil.isNotEmpty(userList)) {
|
||||||
List<UserE> userEList = userCoConvertor.convertDOsToEs(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());
|
CorpInfoDO corpInfoDO = corpInfoRepository.getById(userE.getCorpinfoId());
|
||||||
|
|
@ -658,6 +675,8 @@ public class UserAddExe {
|
||||||
userE.setUserType(CorpTypeEnum.getUserTypeByCode(corpInfoDO.getType()));
|
userE.setUserType(CorpTypeEnum.getUserTypeByCode(corpInfoDO.getType()));
|
||||||
userE.resetPassword(corpInfoDO.getType());
|
userE.resetPassword(corpInfoDO.getType());
|
||||||
userE.setDepartmentLeaderFlag(0);
|
userE.setDepartmentLeaderFlag(0);
|
||||||
|
userE.setUserId(Tools.get32UUID());
|
||||||
|
userE.setRzFlag(CommonFlagEnum.YES.getCode());
|
||||||
res = userGateway.add(userE);
|
res = userGateway.add(userE);
|
||||||
if (corpInfoDO != null && !ObjectUtils.isEmpty(corpInfoDO.getCorpName())) {
|
if (corpInfoDO != null && !ObjectUtils.isEmpty(corpInfoDO.getCorpName())) {
|
||||||
corpName = 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 cn.hutool.core.collection.CollUtil;
|
||||||
import com.alibaba.cola.dto.MultiResponse;
|
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.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
import com.jjb.saas.framework.auth.utils.AuthContext;
|
import com.jjb.saas.framework.auth.utils.AuthContext;
|
||||||
import com.zcloud.basic.info.command.convertor.UserChangeRecordCoConvertor;
|
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.UserChangeRecordInfoQry;
|
||||||
import com.zcloud.basic.info.dto.UserChangeRecordPageQry;
|
import com.zcloud.basic.info.dto.UserChangeRecordPageQry;
|
||||||
import com.zcloud.basic.info.dto.UserChangeRecordListQry;
|
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.UserChangeRecordCO;
|
||||||
|
import com.zcloud.basic.info.dto.clientobject.UserCorpInfoStatCO;
|
||||||
import com.zcloud.basic.info.persistence.dataobject.UserChangeRecordDO;
|
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.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.UserChangeRecordRepository;
|
||||||
import com.zcloud.basic.info.persistence.repository.UserJobHandoverRepository;
|
import com.zcloud.basic.info.persistence.repository.UserJobHandoverRepository;
|
||||||
import com.zcloud.gbscommon.utils.PageQueryHelper;
|
import com.zcloud.gbscommon.utils.PageQueryHelper;
|
||||||
import com.alibaba.cola.dto.PageResponse;
|
|
||||||
import com.alibaba.cola.dto.SingleResponse;
|
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import org.apache.catalina.User;
|
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
import org.springframework.beans.BeanUtils;
|
import org.springframework.beans.BeanUtils;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -40,6 +44,28 @@ public class UserChangeRecordQueryExe {
|
||||||
private final UserChangeRecordCoConvertor userChangeRecordCoConvertor;
|
private final UserChangeRecordCoConvertor userChangeRecordCoConvertor;
|
||||||
private final UserJobHandoverRepository userJobHandoverRepository;
|
private final UserJobHandoverRepository userJobHandoverRepository;
|
||||||
private final UserJobHandoverCoConvertor userJobHandoverCoConvertor;
|
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) {
|
public UserChangeRecordCO getChangerRecordInfoById(UserChangeRecordInfoQry userChangeRecordInfoQry) {
|
||||||
QueryWrapper<UserChangeRecordDO> queryWrapper = new QueryWrapper<>();
|
|
||||||
if(userChangeRecordInfoQry.getCorpinfoId() == null){
|
if(userChangeRecordInfoQry.getUserChangeRecordId() == null){
|
||||||
userChangeRecordInfoQry.setCorpinfoId(AuthContext.getTenantId());
|
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){
|
if(userChangeRecordDO == null){
|
||||||
|
|
@ -84,8 +118,9 @@ public class UserChangeRecordQueryExe {
|
||||||
|
|
||||||
//组装未完成的工作
|
//组装未完成的工作
|
||||||
List<UserJobHandoverDO> userJobHandoverDOList = userJobHandoverRepository.getListByChangerRecordId(co.getUserChangeRecordId());
|
List<UserJobHandoverDO> userJobHandoverDOList = userJobHandoverRepository.getListByChangerRecordId(co.getUserChangeRecordId());
|
||||||
if(CollUtil.isNotEmpty(userJobHandoverDOList))
|
if(CollUtil.isNotEmpty(userJobHandoverDOList)){
|
||||||
co.setUserJobHandoverCOList(userJobHandoverCoConvertor.converDOsToCOs(userJobHandoverDOList));
|
co.setUserJobHandoverCOList(userJobHandoverCoConvertor.converDOsToCOs(userJobHandoverDOList));
|
||||||
|
}
|
||||||
return co;
|
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.command.convertor.UserJobHandoverCoConvertor;
|
||||||
import com.zcloud.basic.info.domain.enums.UserChangeRecordStatusEnum;
|
import com.zcloud.basic.info.domain.enums.UserChangeRecordStatusEnum;
|
||||||
import com.zcloud.basic.info.dto.UserChangeRecordInfoQry;
|
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.UserCorpRecordPageQry;
|
||||||
import com.zcloud.basic.info.dto.clientobject.UserCO;
|
import com.zcloud.basic.info.dto.clientobject.UserCO;
|
||||||
import com.zcloud.basic.info.dto.clientobject.UserCorpRecordCO;
|
import com.zcloud.basic.info.dto.clientobject.UserCorpRecordCO;
|
||||||
|
|
@ -86,7 +87,7 @@ public class UserCorpRecordQueryExe {
|
||||||
return userCO;
|
return userCO;
|
||||||
}
|
}
|
||||||
|
|
||||||
public UserCorpRecordCO getChangerRecordInfoById(UserChangeRecordInfoQry userChangeRecordInfoQry) {
|
public UserCorpRecordCO getChangerRecordInfoById(UserCorpRecordInfoQry userChangeRecordInfoQry) {
|
||||||
if(userChangeRecordInfoQry.getCorpinfoId() == null){
|
if(userChangeRecordInfoQry.getCorpinfoId() == null){
|
||||||
userChangeRecordInfoQry.setCorpinfoId(AuthContext.getTenantId());
|
userChangeRecordInfoQry.setCorpinfoId(AuthContext.getTenantId());
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,32 +1,44 @@
|
||||||
package com.zcloud.basic.info.service;
|
package com.zcloud.basic.info.service;
|
||||||
|
|
||||||
import com.alibaba.cola.dto.MultiResponse;
|
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.api.UserChangeRecordServiceI;
|
||||||
import com.zcloud.basic.info.command.UserChangeRecordAddExe;
|
import com.zcloud.basic.info.command.UserChangeRecordAddExe;
|
||||||
import com.zcloud.basic.info.command.UserChangeRecordRemoveExe;
|
import com.zcloud.basic.info.command.UserChangeRecordRemoveExe;
|
||||||
import com.zcloud.basic.info.command.UserChangeRecordUpdateExe;
|
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.command.query.UserChangeRecordQueryExe;
|
||||||
import com.zcloud.basic.info.dto.*;
|
import com.zcloud.basic.info.dto.UserChangeRecordAddCmd;
|
||||||
|
import com.zcloud.basic.info.dto.UserChangeRecordInfoQry;
|
||||||
import com.alibaba.cola.dto.PageResponse;
|
import com.zcloud.basic.info.dto.UserChangeRecordListQry;
|
||||||
import com.alibaba.cola.dto.SingleResponse;
|
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.UserChangeRecordCO;
|
||||||
|
import com.zcloud.basic.info.dto.clientobject.UserCorpInfoStatCO;
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* web-app
|
* 用户变更记录服务实现。
|
||||||
*
|
|
||||||
* @Author SondonYong
|
|
||||||
* @Date 2025-12-02 14:08:19
|
|
||||||
*/
|
*/
|
||||||
@Service
|
@Service
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
|
@Slf4j
|
||||||
public class UserChangeRecordServiceImpl implements UserChangeRecordServiceI {
|
public class UserChangeRecordServiceImpl implements UserChangeRecordServiceI {
|
||||||
private final UserChangeRecordAddExe userChangeRecordAddExe;
|
private final UserChangeRecordAddExe userChangeRecordAddExe;
|
||||||
private final UserChangeRecordUpdateExe userChangeRecordUpdateExe;
|
private final UserChangeRecordUpdateExe userChangeRecordUpdateExe;
|
||||||
private final UserChangeRecordRemoveExe userChangeRecordRemoveExe;
|
private final UserChangeRecordRemoveExe userChangeRecordRemoveExe;
|
||||||
private final UserChangeRecordQueryExe userChangeRecordQueryExe;
|
private final UserChangeRecordQueryExe userChangeRecordQueryExe;
|
||||||
|
private final UserChangeRecordWorkChangeExe userChangeRecordWorkChangeExe;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public PageResponse<UserCorpInfoStatCO> userCorpInfoList(UserCorpInfoPageQry qry) {
|
||||||
|
return userChangeRecordQueryExe.userCorpInfoList(qry);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public PageResponse<UserChangeRecordCO> listPage(UserChangeRecordPageQry qry) {
|
public PageResponse<UserChangeRecordCO> listPage(UserChangeRecordPageQry qry) {
|
||||||
|
|
@ -44,7 +56,7 @@ public class UserChangeRecordServiceImpl implements UserChangeRecordServiceI {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public SingleResponse add(UserChangeRecordAddCmd cmd) {
|
public SingleResponse<UserChangeRecordCO> add(UserChangeRecordAddCmd cmd) {
|
||||||
userChangeRecordAddExe.execute(cmd);
|
userChangeRecordAddExe.execute(cmd);
|
||||||
return SingleResponse.buildSuccess();
|
return SingleResponse.buildSuccess();
|
||||||
}
|
}
|
||||||
|
|
@ -68,5 +80,17 @@ public class UserChangeRecordServiceImpl implements UserChangeRecordServiceI {
|
||||||
public UserChangeRecordCO getChangerRecordInfoById(UserChangeRecordInfoQry userChangeRecordInfoQry) {
|
public UserChangeRecordCO getChangerRecordInfoById(UserChangeRecordInfoQry userChangeRecordInfoQry) {
|
||||||
return userChangeRecordQueryExe.getChangerRecordInfoById(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.UserCorpRecordRemoveExe;
|
||||||
import com.zcloud.basic.info.command.UserCorpRecordUpdateExe;
|
import com.zcloud.basic.info.command.UserCorpRecordUpdateExe;
|
||||||
import com.zcloud.basic.info.command.query.UserCorpRecordQueryExe;
|
import com.zcloud.basic.info.command.query.UserCorpRecordQueryExe;
|
||||||
import com.zcloud.basic.info.dto.UserChangeRecordInfoQry;
|
import com.zcloud.basic.info.dto.*;
|
||||||
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.clientobject.UserCO;
|
import com.zcloud.basic.info.dto.clientobject.UserCO;
|
||||||
import com.zcloud.basic.info.dto.clientobject.UserChangeRecordCO;
|
import com.zcloud.basic.info.dto.clientobject.UserChangeRecordCO;
|
||||||
import com.zcloud.basic.info.dto.clientobject.UserCorpRecordCO;
|
import com.zcloud.basic.info.dto.clientobject.UserCorpRecordCO;
|
||||||
|
|
@ -66,8 +63,8 @@ public class UserCorpRecordServiceImpl implements UserCorpRecordServiceI {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public UserCorpRecordCO getChangerRecordInfoById(UserChangeRecordInfoQry userChangeRecordInfoQry) {
|
public UserCorpRecordCO getChangerRecordInfoById(UserCorpRecordInfoQry userCorpRecordInfoQry) {
|
||||||
return userCorpRecordQueryExe.getChangerRecordInfoById(userChangeRecordInfoQry);
|
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.Response;
|
||||||
import com.alibaba.cola.dto.SingleResponse;
|
import com.alibaba.cola.dto.SingleResponse;
|
||||||
import com.zcloud.basic.info.api.UserServiceI;
|
import com.zcloud.basic.info.api.UserServiceI;
|
||||||
import com.zcloud.basic.info.command.UserAddExe;
|
import com.zcloud.basic.info.command.*;
|
||||||
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.query.UserQueryExe;
|
import com.zcloud.basic.info.command.query.UserQueryExe;
|
||||||
import com.zcloud.basic.info.dto.*;
|
import com.zcloud.basic.info.dto.*;
|
||||||
import com.zcloud.basic.info.dto.clientobject.*;
|
import com.zcloud.basic.info.dto.clientobject.*;
|
||||||
|
|
@ -36,7 +33,7 @@ public class UserServiceImpl implements UserServiceI {
|
||||||
private final UserRemoveExe userRemoveExe;
|
private final UserRemoveExe userRemoveExe;
|
||||||
private final UserQueryExe userQueryExe;
|
private final UserQueryExe userQueryExe;
|
||||||
private final UserImportExe userImportExe;
|
private final UserImportExe userImportExe;
|
||||||
|
private final HumanUserUpdateExe humanUserUpdateExe;
|
||||||
@Override
|
@Override
|
||||||
public PageResponse<UserCO> listPage(UserPageQry qry) {
|
public PageResponse<UserCO> listPage(UserPageQry qry) {
|
||||||
|
|
||||||
|
|
@ -271,5 +268,10 @@ public class UserServiceImpl implements UserServiceI {
|
||||||
Long userId = userAddExe.executeHumanUser(cmd);
|
Long userId = userAddExe.executeHumanUser(cmd);
|
||||||
return SingleResponse.of(userId);
|
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;
|
package com.zcloud.basic.info.api;
|
||||||
|
|
||||||
import com.alibaba.cola.dto.MultiResponse;
|
import com.alibaba.cola.dto.MultiResponse;
|
||||||
import com.zcloud.basic.info.dto.*;
|
|
||||||
|
|
||||||
import com.alibaba.cola.dto.PageResponse;
|
import com.alibaba.cola.dto.PageResponse;
|
||||||
import com.alibaba.cola.dto.SingleResponse;
|
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.UserChangeRecordCO;
|
||||||
|
import com.zcloud.basic.info.dto.clientobject.UserCorpInfoStatCO;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* web-client
|
* 用户变更记录服务接口。
|
||||||
*
|
|
||||||
* @Author SondonYong
|
|
||||||
* @Date 2025-12-02 14:08:19
|
|
||||||
*/
|
*/
|
||||||
public interface UserChangeRecordServiceI {
|
public interface UserChangeRecordServiceI {
|
||||||
|
PageResponse<UserCorpInfoStatCO> userCorpInfoList(UserCorpInfoPageQry qry);
|
||||||
|
|
||||||
PageResponse<UserChangeRecordCO> listPage(UserChangeRecordPageQry qry);
|
PageResponse<UserChangeRecordCO> listPage(UserChangeRecordPageQry qry);
|
||||||
|
|
||||||
MultiResponse<UserChangeRecordCO> list(UserChangeRecordListQry qry);
|
MultiResponse<UserChangeRecordCO> list(UserChangeRecordListQry qry);
|
||||||
|
|
@ -29,5 +34,9 @@ public interface UserChangeRecordServiceI {
|
||||||
void removeBatch(Long[] ids);
|
void removeBatch(Long[] ids);
|
||||||
|
|
||||||
UserChangeRecordCO getChangerRecordInfoById(UserChangeRecordInfoQry userChangeRecordInfoQry);
|
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.PageResponse;
|
||||||
import com.alibaba.cola.dto.SingleResponse;
|
import com.alibaba.cola.dto.SingleResponse;
|
||||||
import com.zcloud.basic.info.dto.UserChangeRecordInfoQry;
|
import com.zcloud.basic.info.dto.*;
|
||||||
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.clientobject.UserCO;
|
import com.zcloud.basic.info.dto.clientobject.UserCO;
|
||||||
import com.zcloud.basic.info.dto.clientobject.UserChangeRecordCO;
|
import com.zcloud.basic.info.dto.clientobject.UserChangeRecordCO;
|
||||||
import com.zcloud.basic.info.dto.clientobject.UserCorpRecordCO;
|
import com.zcloud.basic.info.dto.clientobject.UserCorpRecordCO;
|
||||||
|
|
@ -29,6 +26,6 @@ public interface UserCorpRecordServiceI {
|
||||||
|
|
||||||
UserCO getInfoById(Long id);
|
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);
|
List<UserImgDO> listBase64ByUrl(Map<String, Object> map);
|
||||||
|
|
||||||
SingleResponse<Long> addHumanUser(UserAddCmd cmd);
|
SingleResponse<Long> addHumanUser(UserAddCmd cmd);
|
||||||
|
|
||||||
|
SingleResponse<Long> updateHumanUser(UserUpdateCmd userUpdateCmd);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -159,5 +159,7 @@ public class UserAddCmd extends Command {
|
||||||
@ApiModelProperty(value = "是否缴纳其他人身伤害保险")
|
@ApiModelProperty(value = "是否缴纳其他人身伤害保险")
|
||||||
private Integer isBf;
|
private Integer isBf;
|
||||||
|
|
||||||
|
private Integer rzFlag;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -26,10 +26,11 @@ public class UserChangeRecordInfoQry implements Serializable {
|
||||||
* - `le`: 小于等于比较查询
|
* - `le`: 小于等于比较查询
|
||||||
* - `ne`: 不等比较查询,对应SQL的!=操作符
|
* - `ne`: 不等比较查询,对应SQL的!=操作符
|
||||||
*/
|
*/
|
||||||
@ApiModelProperty(value = "企业ID")
|
// @ApiModelProperty(value = "企业ID")
|
||||||
private Long corpinfoId;
|
// private Long corpinfoId;
|
||||||
@ApiModelProperty(value = "用户ID")
|
@ApiModelProperty(value = "用户ID")
|
||||||
private Long userId;
|
private Long userId;
|
||||||
|
@ApiModelProperty(value = "变更记录id")
|
||||||
|
private String userChangeRecordId;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,11 @@
|
||||||
package com.zcloud.basic.info.dto;
|
package com.zcloud.basic.info.dto;
|
||||||
|
|
||||||
import com.alibaba.cola.dto.PageQuery;
|
import com.alibaba.cola.dto.PageQuery;
|
||||||
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
|
import javax.validation.constraints.NotNull;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* web-client
|
* web-client
|
||||||
|
|
@ -24,5 +27,8 @@ public class UserChangeRecordPageQry extends PageQuery {
|
||||||
* - `ne`: 不等比较查询,对应SQL的!=操作符
|
* - `ne`: 不等比较查询,对应SQL的!=操作符
|
||||||
*/
|
*/
|
||||||
private String likeUserChangeRecordId;
|
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;
|
private String name;
|
||||||
@ApiModelProperty(value = "企业id", name = "corpinfoId")
|
@ApiModelProperty(value = "企业id", name = "corpinfoId")
|
||||||
private Long corpinfoId;
|
private Long corpinfoId;
|
||||||
|
private String corpinfoName;
|
||||||
@ApiModelProperty(value = "是否主账号1是0否", name = "mainCorpFlag")
|
@ApiModelProperty(value = "是否主账号1是0否", name = "mainCorpFlag")
|
||||||
private Integer mainCorpFlag;
|
private Integer mainCorpFlag;
|
||||||
@ApiModelProperty(value = "用户类型,1监管2企业3相关方", name = "userType")
|
@ApiModelProperty(value = "用户类型,1监管2企业3相关方", name = "userType")
|
||||||
private Integer userType;
|
private Integer userType;
|
||||||
@ApiModelProperty(value = "部门id", name = "departmentId")
|
@ApiModelProperty(value = "部门id", name = "departmentId")
|
||||||
private Long departmentId;
|
private Long departmentId;
|
||||||
|
private String departmentName;
|
||||||
@ApiModelProperty(value = "岗位id", name = "postId")
|
@ApiModelProperty(value = "岗位id", name = "postId")
|
||||||
private Long postId;
|
private Long postId;
|
||||||
@ApiModelProperty(value = "岗位名称", name = "postName")
|
@ApiModelProperty(value = "岗位名称", name = "postName")
|
||||||
|
|
@ -94,9 +96,12 @@ public class UserUpdateCmd extends Command {
|
||||||
// 入职状态
|
// 入职状态
|
||||||
@ApiModelProperty(value = "是否流动人员,1-流动,0-固定人员")
|
@ApiModelProperty(value = "是否流动人员,1-流动,0-固定人员")
|
||||||
private Integer flowFlag;
|
private Integer flowFlag;
|
||||||
|
private Integer rzFlag;
|
||||||
// 微信openid
|
// 微信openid
|
||||||
@ApiModelProperty(value = "微信openid")
|
@ApiModelProperty(value = "微信openid")
|
||||||
private String openId;
|
private String openId;
|
||||||
|
@ApiModelProperty(value = "入职状态,0-离职, 1-在职, 2-信息变更中, 3-未入职, 4-实习生, 5-实习结束, 6-退休, 7-劳务派遣, 8-劳务派遣结束, 11-入职待审核, 10-离职待审核")
|
||||||
|
private Integer employmentFlag;
|
||||||
|
|
||||||
@ApiModelProperty(value = "是否特殊工种")
|
@ApiModelProperty(value = "是否特殊工种")
|
||||||
private Integer isSpecialJob;
|
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;
|
import lombok.Getter;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 工作类型,1:隐患信息
|
* 工作交接类型枚举。
|
||||||
*/
|
*/
|
||||||
@Getter
|
@Getter
|
||||||
public enum UserJobHandoverWorkTypeEnum {
|
public enum UserJobHandoverWorkTypeEnum {
|
||||||
/**
|
/**
|
||||||
* 工作类型,1:隐患信息
|
* 隐患信息。
|
||||||
*/
|
*/
|
||||||
HIDDENINFO(1, "隐患信息"),
|
HIDDENINFO(1, "隐患信息"),
|
||||||
|
/**
|
||||||
|
* 风险辨识检查。
|
||||||
|
*/
|
||||||
RISK(2, "风险辨识检查"),
|
RISK(2, "风险辨识检查"),
|
||||||
|
/**
|
||||||
|
* 危险作业。
|
||||||
|
*/
|
||||||
|
EIGHTWORK(3, "危险作业"),
|
||||||
|
/**
|
||||||
|
* 消防检查。
|
||||||
|
*/
|
||||||
|
FIRECHECK(4, "消防检查"),
|
||||||
|
/**
|
||||||
|
* 相关方项目审核。
|
||||||
|
*/
|
||||||
|
PROJECT_APPROVAL(5, "相关方项目审核"),
|
||||||
|
/**
|
||||||
|
* 安全环保检查。
|
||||||
|
*/
|
||||||
|
INSPECTION_WORK(6, "安全环保检查");
|
||||||
|
|
||||||
|
|
||||||
;
|
|
||||||
private final Integer code;
|
private final Integer code;
|
||||||
private final String name;
|
private final String name;
|
||||||
|
|
||||||
|
|
@ -22,11 +39,17 @@ public enum UserJobHandoverWorkTypeEnum {
|
||||||
this.code = code;
|
this.code = code;
|
||||||
this.name = name;
|
this.name = name;
|
||||||
}
|
}
|
||||||
//根据code获取枚举
|
|
||||||
|
/**
|
||||||
|
* 根据编码获取工作交接类型枚举。
|
||||||
|
*
|
||||||
|
* @param code 类型编码
|
||||||
|
* @return 对应枚举,未匹配到时返回 null
|
||||||
|
*/
|
||||||
public static UserJobHandoverWorkTypeEnum getByCode(Integer code) {
|
public static UserJobHandoverWorkTypeEnum getByCode(Integer code) {
|
||||||
for (UserJobHandoverWorkTypeEnum e : values()) {
|
for (UserJobHandoverWorkTypeEnum item : values()) {
|
||||||
if (e.getCode().equals(code)) {
|
if (item.getCode().equals(code)) {
|
||||||
return e;
|
return item;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
|
|
|
||||||
|
|
@ -181,5 +181,29 @@ public class UserChangeRecordE extends BaseE {
|
||||||
this.setUserStatusAfter(employmentFlagAfter);
|
this.setUserStatusAfter(employmentFlagAfter);
|
||||||
this.setStatus(status);
|
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.DataScope;
|
||||||
import com.jjb.saas.framework.datascope.annotation.DataScopes;
|
import com.jjb.saas.framework.datascope.annotation.DataScopes;
|
||||||
import com.zcloud.basic.info.persistence.dataobject.CorpInfoDO;
|
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 com.zcloud.basic.info.persistence.dataobject.UserDO;
|
||||||
import org.apache.ibatis.annotations.Mapper;
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
import org.apache.ibatis.annotations.Param;
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
|
@ -22,11 +23,14 @@ import java.util.Map;
|
||||||
@DataScopes({
|
@DataScopes({
|
||||||
@DataScope(method = "selectUserBasicPage", menuPerms = ""),
|
@DataScope(method = "selectUserBasicPage", menuPerms = ""),
|
||||||
@DataScope(method = "corpUserMiddlePage", menuPerms = ""),
|
@DataScope(method = "corpUserMiddlePage", menuPerms = ""),
|
||||||
|
@DataScope(method = "userCorpInfoListPage", menuPerms = ""),
|
||||||
})
|
})
|
||||||
public interface CorpInfoMapper extends BaseMapper<CorpInfoDO> {
|
public interface CorpInfoMapper extends BaseMapper<CorpInfoDO> {
|
||||||
|
|
||||||
IPage<CorpInfoDO> corpUserMiddlePage(IPage<CorpInfoDO> iPage, Map<String, Object> params, String menuPerms);
|
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> selectUserPage(IPage<CorpInfoDO> iPage, @Param("ew") QueryWrapper<CorpInfoDO> queryWrapper, String menuPerms);
|
||||||
IPage<CorpInfoDO> selectUserBasicPage(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;
|
package com.zcloud.basic.info.persistence.mapper;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
import com.zcloud.basic.info.persistence.dataobject.UserChangeRecordDO;
|
import com.zcloud.basic.info.persistence.dataobject.UserChangeRecordDO;
|
||||||
import org.apache.ibatis.annotations.Mapper;
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* web-infrastructure
|
* web-infrastructure
|
||||||
*
|
*
|
||||||
|
|
@ -13,6 +16,8 @@ import org.apache.ibatis.annotations.Mapper;
|
||||||
@Mapper
|
@Mapper
|
||||||
public interface UserChangeRecordMapper extends BaseMapper<UserChangeRecordDO> {
|
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);
|
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.alibaba.cola.dto.PageResponse;
|
||||||
import com.jjb.saas.framework.repository.repo.BaseRepository;
|
import com.jjb.saas.framework.repository.repo.BaseRepository;
|
||||||
import com.zcloud.basic.info.persistence.dataobject.CorpInfoDO;
|
import com.zcloud.basic.info.persistence.dataobject.CorpInfoDO;
|
||||||
|
import com.zcloud.basic.info.persistence.dataobject.UserCorpInfoStatDO;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
@ -35,6 +36,8 @@ public interface CorpInfoRepository extends BaseRepository<CorpInfoDO> {
|
||||||
|
|
||||||
PageResponse<CorpInfoDO> corpUserMiddlePage(Map<String, Object> parmas);
|
PageResponse<CorpInfoDO> corpUserMiddlePage(Map<String, Object> parmas);
|
||||||
|
|
||||||
|
PageResponse<UserCorpInfoStatDO> userCorpInfoListPage(Map<String, Object> params);
|
||||||
|
|
||||||
CorpInfoDO getCorpInfoByCorpName(String corpName);
|
CorpInfoDO getCorpInfoByCorpName(String corpName);
|
||||||
|
|
||||||
Boolean remove(Long id);
|
Boolean remove(Long id);
|
||||||
|
|
|
||||||
|
|
@ -23,6 +23,8 @@ public interface UserChangeRecordRepository extends BaseRepository<UserChangeRec
|
||||||
SingleResponse<UserChangeRecordDO> getInfoById(Long id);
|
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<UserImgDO> listBase64ByUrl(Map<String,Object> params);
|
||||||
|
|
||||||
List<UserDO> getUserListByUserId(String foreignKey);
|
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.CorpUseFlagEnum;
|
||||||
import com.zcloud.basic.info.domain.enums.MenuEnum;
|
import com.zcloud.basic.info.domain.enums.MenuEnum;
|
||||||
import com.zcloud.basic.info.persistence.dataobject.CorpInfoDO;
|
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.mapper.CorpInfoMapper;
|
||||||
import com.zcloud.basic.info.persistence.repository.CorpInfoRepository;
|
import com.zcloud.basic.info.persistence.repository.CorpInfoRepository;
|
||||||
import com.zcloud.basic.info.utils.Query;
|
import com.zcloud.basic.info.utils.Query;
|
||||||
|
|
@ -278,6 +279,17 @@ public class CorpInfoRepositoryImpl extends BaseRepositoryImpl<CorpInfoMapper, C
|
||||||
return PageHelper.pageToResponse(result, result.getRecords());
|
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
|
@Override
|
||||||
public CorpInfoDO getCorpInfoByCorpName(String corpName) {
|
public CorpInfoDO getCorpInfoByCorpName(String corpName) {
|
||||||
QueryWrapper queryWrapper = new QueryWrapper<>();
|
QueryWrapper queryWrapper = new QueryWrapper<>();
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
package com.zcloud.basic.info.persistence.repository.impl;
|
package com.zcloud.basic.info.persistence.repository.impl;
|
||||||
|
|
||||||
import com.jjb.saas.framework.repository.common.PageHelper;
|
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.dataobject.UserChangeRecordDO;
|
||||||
import com.zcloud.basic.info.persistence.mapper.UserChangeRecordMapper;
|
import com.zcloud.basic.info.persistence.mapper.UserChangeRecordMapper;
|
||||||
import com.zcloud.basic.info.persistence.repository.UserChangeRecordRepository;
|
import com.zcloud.basic.info.persistence.repository.UserChangeRecordRepository;
|
||||||
|
|
@ -30,12 +31,15 @@ public class UserChangeRecordRepositoryImpl extends BaseRepositoryImpl<UserChang
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public PageResponse<UserChangeRecordDO> listPage(Map<String, Object> params) {
|
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<UserChangeRecordDO> queryWrapper = new QueryWrapper<>();
|
||||||
queryWrapper = PageQueryHelper.createPageQueryWrapper(queryWrapper, params);
|
queryWrapper = PageQueryHelper.createPageQueryWrapper(queryWrapper, params);
|
||||||
queryWrapper.orderByDesc("create_time");
|
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());
|
return PageHelper.pageToResponse(result, result.getRecords());
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
@ -53,8 +57,20 @@ public class UserChangeRecordRepositoryImpl extends BaseRepositoryImpl<UserChang
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public UserChangeRecordDO getChangerRecordInfoById(Long userId, Long corpinfoId, Integer status) {
|
public UserChangeRecordDO getChangerRecordInfoById(String userChangeRecordId) {
|
||||||
return userChangeRecordMapper.getChangerRecordInfoById(userId, corpinfoId, status);
|
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.setAccount(userDO.getUsername());
|
||||||
userAddCmd.setName(userDO.getName());
|
userAddCmd.setName(userDO.getName());
|
||||||
userAddCmd.setPassword(userDO.getPassword());
|
userAddCmd.setPassword(userDO.getPassword());
|
||||||
|
userAddCmd.setTenantId(userDO.getCorpinfoId());
|
||||||
RoleDeptAddCmd roleDeptAddCmd = new RoleDeptAddCmd();
|
RoleDeptAddCmd roleDeptAddCmd = new RoleDeptAddCmd();
|
||||||
roleDeptAddCmd.setRoleId(userDO.getRoleId());
|
roleDeptAddCmd.setRoleId(userDO.getRoleId());
|
||||||
roleDeptAddCmd.setDeptId(userDO.getDepartmentId());
|
roleDeptAddCmd.setDeptId(userDO.getDepartmentId());
|
||||||
|
|
@ -767,5 +768,21 @@ public class UserRepositoryImpl extends BaseRepositoryImpl<UserMapper, UserDO> i
|
||||||
queryWrapperList.orderByAsc("create_time");
|
queryWrapperList.orderByAsc("create_time");
|
||||||
return list(queryWrapperList);
|
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
|
c.create_time DESC
|
||||||
</select>
|
</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 id="selectUserPage" resultType="com.zcloud.basic.info.persistence.dataobject.CorpInfoDO">
|
||||||
SELECT *
|
SELECT *
|
||||||
FROM corp_info
|
FROM corp_info
|
||||||
|
|
|
||||||
|
|
@ -8,11 +8,36 @@
|
||||||
from user_change_record ucr
|
from user_change_record ucr
|
||||||
left join user u on ucr.user_id = u.id
|
left join user u on ucr.user_id = u.id
|
||||||
where ucr.delete_enum = 'FALSE'
|
where ucr.delete_enum = 'FALSE'
|
||||||
and ucr.corpinfo_id_after =#{corpinfoId}
|
and ucr.user_change_record_id =#{userChangeRecordId}
|
||||||
and ucr.user_id =#{userId}
|
|
||||||
and ucr.status =#{status}
|
|
||||||
order by ucr.create_time desc
|
order by ucr.create_time desc
|
||||||
limit 1
|
limit 1
|
||||||
</select>
|
</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>
|
</mapper>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -595,5 +595,11 @@
|
||||||
</if>
|
</if>
|
||||||
</where>
|
</where>
|
||||||
</select>
|
</select>
|
||||||
|
<update id="updateEmploymentFlagAndDeleteEnum">
|
||||||
|
UPDATE user
|
||||||
|
SET employment_flag = #{employmentFlag},
|
||||||
|
delete_enum = #{deleteEnum}
|
||||||
|
WHERE id = #{userId}
|
||||||
|
</update>
|
||||||
</mapper>
|
</mapper>
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue