feat(job-handover): 新增专项领域和科技兴安待交接任务处理

dev_human_push
zhaokai 2026-06-23 17:40:27 +08:00
parent a21668bde4
commit 545b2d5839
3 changed files with 211 additions and 2 deletions

View File

@ -33,6 +33,9 @@ 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.utils.Tools;
import com.zcloud.gbscommon.zclouddomain.facade.ZcloudDomainFacade;
import com.zcloud.gbscommon.zclouddomain.request.DomainQry;
import com.zcloud.gbscommon.zclouddomain.response.DomainListByUserCO;
import com.zcloud.gbscommon.zcloudeightwork.facade.ZcloudEightWorkFacade;
import com.zcloud.gbscommon.zcloudeightwork.request.EightWorkQry;
import com.zcloud.gbscommon.zcloudeightwork.response.EightWorkListByUserCO;
@ -48,6 +51,9 @@ import com.zcloud.gbscommon.zcloudrisk.response.ListManagerListByUserCO;
import com.zcloud.gbscommon.zcloudqualifications.face.ZcloudProjectApprovalFacade;
import com.zcloud.gbscommon.zcloudqualifications.request.ProjectApprovalQry;
import com.zcloud.gbscommon.zcloudqualifications.response.ProjectListByUserCO;
import com.zcloud.gbscommon.zcloudtechnology.facade.ZcloudTechnologyFacade;
import com.zcloud.gbscommon.zcloudtechnology.request.TechnologyQry;
import com.zcloud.gbscommon.zcloudtechnology.response.TechnologyListByUserCO;
import com.zcloud.gbscommon.zloudfirecheck.facade.ZcloudFireCheckFacade;
import com.zcloud.gbscommon.zloudfirecheck.request.FireCheckQry;
import com.zcloud.gbscommon.zloudfirecheck.response.FireCheckListByUserCO;
@ -101,6 +107,10 @@ public class HumanUserUpdateExe {
private ZcloudProjectApprovalFacade zcloudProjectApprovalFacade;
@DubboReference
private ZcloudInspectionWorkFacade zcloudInspectionWorkFacade;
@DubboReference
private ZcloudDomainFacade zcloudDomainFacade;
@DubboReference
private ZcloudTechnologyFacade zcloudTechnologyFacade;
/**
*
@ -817,8 +827,13 @@ public class HumanUserUpdateExe {
() -> queryProjectApprovalJobs(userId, corpinfoId, userChangeRecordId));
CompletableFuture<List<UserJobHandoverDO>> inspectionWorkFuture = CompletableFuture.supplyAsync(
() -> queryInspectionWorkJobs(userId, corpinfoId, userChangeRecordId));
CompletableFuture<List<UserJobHandoverDO>> domainFuture = CompletableFuture.supplyAsync(
() -> queryDomainJobs(userId, corpinfoId, userChangeRecordId));
CompletableFuture<List<UserJobHandoverDO>> technologyFuture = CompletableFuture.supplyAsync(
() -> queryTechnologyJobs(userId, corpinfoId, userChangeRecordId));
CompletableFuture.allOf(hiddenFuture, riskFuture, eightWorkFuture,fireCheckFuture, projectApprovalFuture, inspectionWorkFuture).join();
CompletableFuture.allOf(hiddenFuture, riskFuture, eightWorkFuture, fireCheckFuture,
projectApprovalFuture, inspectionWorkFuture, domainFuture, technologyFuture).join();
List<UserJobHandoverDO> allJob = new ArrayList<>();
allJob.addAll(hiddenFuture.join());
allJob.addAll(riskFuture.join());
@ -826,6 +841,8 @@ public class HumanUserUpdateExe {
allJob.addAll(fireCheckFuture.join());
allJob.addAll(projectApprovalFuture.join());
allJob.addAll(inspectionWorkFuture.join());
allJob.addAll(domainFuture.join());
allJob.addAll(technologyFuture.join());
log.info("离职待交接任务汇总完成用户id:{}, 部门id:{}, 企业id:{}, 总数量:{}",
userId, departmentId, corpinfoId, allJob.size());
return allJob;
@ -960,6 +977,94 @@ public class HumanUserUpdateExe {
return new ArrayList<>();
}
}
/**
*
*
*
*/
private List<UserJobHandoverDO> queryDomainJobs(Long userId, Long corpinfoId, String userChangeRecordId) {
DomainQry domainQry = new DomainQry();
domainQry.setUserId(userId);
domainQry.setCorpinfoId(corpinfoId);
log.info("查询未完成工作,开始异步查询专项领域待交接任务用户id:{}, 企业id:{}", userId, corpinfoId);
try {
MultiResponse<DomainListByUserCO> response = zcloudDomainFacade.listManagerByUserId(domainQry);
if (response == null || !response.isSuccess()) {
String errMessage = response == null ? "专项领域服务未返回结果" : response.getErrMessage();
log.error("查询专项领域待交接任务失败用户id:{}, 企业id:{}, 原因:{}",
userId, corpinfoId, errMessage);
return new ArrayList<>();
}
List<DomainListByUserCO> domainList = response.getData();
if (CollUtil.isEmpty(domainList)) {
log.info("专项领域待交接任务查询完成未查询到数据用户id:{}, 企业id:{}", userId, corpinfoId);
return new ArrayList<>();
}
List<UserJobHandoverDO> result = new ArrayList<>();
domainList.forEach(info -> result.add(buildUserJobHandoverDO(
userId,
corpinfoId,
userChangeRecordId,
UserJobHandoverWorkTypeEnum.DOMAIN.getCode(),
info.getWorkId(),
info.getWorkProject(),
info.getWorkContent())));
log.info("专项领域待交接任务查询完成用户id:{}, 企业id:{}, 数量:{}",
userId, corpinfoId, result.size());
return result;
} catch (Exception e) {
log.error("查询专项领域待交接任务发生异常用户id:{}, 企业id:{}", userId, corpinfoId, e);
return new ArrayList<>();
}
}
/**
*
*
*
*/
private List<UserJobHandoverDO> queryTechnologyJobs(Long userId, Long corpinfoId, String userChangeRecordId) {
TechnologyQry technologyQry = new TechnologyQry();
technologyQry.setUserId(userId);
technologyQry.setCorpinfoId(corpinfoId);
log.info("查询未完成工作,开始异步查询科技兴安待交接任务用户id:{}, 企业id:{}", userId, corpinfoId);
try {
MultiResponse<TechnologyListByUserCO> response = zcloudTechnologyFacade.listManagerByUserId(technologyQry);
if (response == null || !response.isSuccess()) {
String errMessage = response == null ? "科技兴安服务未返回结果" : response.getErrMessage();
log.error("查询科技兴安待交接任务失败用户id:{}, 企业id:{}, 原因:{}",
userId, corpinfoId, errMessage);
return new ArrayList<>();
}
List<TechnologyListByUserCO> technologyList = response.getData();
if (CollUtil.isEmpty(technologyList)) {
log.info("科技兴安待交接任务查询完成未查询到数据用户id:{}, 企业id:{}", userId, corpinfoId);
return new ArrayList<>();
}
List<UserJobHandoverDO> result = new ArrayList<>();
technologyList.forEach(info -> result.add(buildUserJobHandoverDO(
userId,
corpinfoId,
userChangeRecordId,
UserJobHandoverWorkTypeEnum.TECHNOLOGY.getCode(),
info.getWorkId(),
info.getWorkProject(),
info.getWorkContent())));
log.info("科技兴安待交接任务查询完成用户id:{}, 企业id:{}, 数量:{}",
userId, corpinfoId, result.size());
return result;
} catch (Exception e) {
log.error("查询科技兴安待交接任务发生异常用户id:{}, 企业id:{}", userId, corpinfoId, e);
return new ArrayList<>();
}
}
private List<UserJobHandoverDO> queryHiddenJobs(Long userId, Long departmentId, Long corpinfoId, String userChangeRecordId) {
HiddenStatisticsListQry hiddenStatisticsListQry = new HiddenStatisticsListQry();
hiddenStatisticsListQry.setUserId(userId);

View File

@ -26,6 +26,8 @@ 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.zclouddomain.facade.ZcloudDomainFacade;
import com.zcloud.gbscommon.zclouddomain.request.DomainWorkChangeCmd;
import com.zcloud.gbscommon.zcloudeightwork.facade.ZcloudEightWorkFacade;
import com.zcloud.gbscommon.zcloudeightwork.request.EightWorkChangeCmd;
import com.zcloud.gbscommon.zcloudhidden.face.ZcloudHiddenFacade;
@ -35,6 +37,8 @@ import com.zcloud.gbscommon.zcloudqualifications.face.ZcloudProjectApprovalFacad
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.zcloudtechnology.facade.ZcloudTechnologyFacade;
import com.zcloud.gbscommon.zcloudtechnology.request.TechnologyWorkChangeCmd;
import com.zcloud.gbscommon.zloudfirecheck.facade.ZcloudFireCheckFacade;
import com.zcloud.gbscommon.zloudfirecheck.response.FireCheckWorkChangeCmd;
import lombok.AllArgsConstructor;
@ -87,6 +91,12 @@ public class UserChangeRecordWorkChangeExe {
@DubboReference
private ZcloudInspectionWorkFacade zcloudInspectionWorkFacade;
@DubboReference
private ZcloudDomainFacade zcloudDomainFacade;
@DubboReference
private ZcloudTechnologyFacade zcloudTechnologyFacade;
/**
*
*
@ -155,6 +165,12 @@ public class UserChangeRecordWorkChangeExe {
case INSPECTION_WORK:
processInspectionWorkInfoHandover(handoverDO, workChangeUpdateCmd);
return;
case DOMAIN:
processDomainInfoHandover(handoverDO, workChangeUpdateCmd);
return;
case TECHNOLOGY:
processTechnologyInfoHandover(handoverDO, workChangeUpdateCmd);
return;
default:
log.warn("工作类型暂未接入交接微服务交接记录id:{}, 工作类型:{}",
handoverDO.getId(), handoverDO.getWorkType());
@ -347,6 +363,86 @@ public class UserChangeRecordWorkChangeExe {
handoverDO.getId(), handoverDO.getForeignKey(), e);
}
}
/**
*
*
*
*/
private void processDomainInfoHandover(UserJobHandoverDO handoverDO, WorkChangeUpdateCmd workChangeUpdateCmd) {
DomainWorkChangeCmd domainWorkChangeCmd = new DomainWorkChangeCmd();
domainWorkChangeCmd.setWorkId(handoverDO.getForeignKey());
domainWorkChangeCmd.setOldUserId(handoverDO.getUserId());
domainWorkChangeCmd.setUserId(workChangeUpdateCmd.getHandoverUserId());
domainWorkChangeCmd.setUserName(workChangeUpdateCmd.getHandoverUserName());
domainWorkChangeCmd.setDeptId(workChangeUpdateCmd.getHandoverDepartmentId());
domainWorkChangeCmd.setDeptName(workChangeUpdateCmd.getHandoverDepartmentName());
domainWorkChangeCmd.setCorpId(workChangeUpdateCmd.getHandoverCompanyId());
domainWorkChangeCmd.setCorpName(workChangeUpdateCmd.getHandoverCompanyName());
log.info("开始处理专项领域交接交接记录id:{}, workId:{}, 原责任人:{}, 新责任人:{}",
handoverDO.getId(),
handoverDO.getForeignKey(),
handoverDO.getUserId(),
workChangeUpdateCmd.getHandoverUserId());
try {
SingleResponse response = zcloudDomainFacade.updateRiskWorkChange(domainWorkChangeCmd);
if (response == null || !response.isSuccess()) {
String errMessage = response == null ? "专项领域服务未返回结果" : response.getErrMessage();
log.error("专项领域交接失败交接记录id:{}, workId:{}, 原因:{}",
handoverDO.getId(), handoverDO.getForeignKey(), errMessage);
throw new BizException(StringUtils.hasText(errMessage) ? errMessage : "专项领域交接失败");
}
log.info("专项领域交接完成交接记录id:{}, workId:{}, 新责任人:{}",
handoverDO.getId(), handoverDO.getForeignKey(), workChangeUpdateCmd.getHandoverUserId());
} catch (BizException e) {
throw e;
} catch (Exception e) {
log.error("专项领域交接发生异常交接记录id:{}, workId:{}",
handoverDO.getId(), handoverDO.getForeignKey(), e);
throw new BizException("专项领域交接失败,请稍后重试");
}
}
/**
*
*
*
*/
private void processTechnologyInfoHandover(UserJobHandoverDO handoverDO, WorkChangeUpdateCmd workChangeUpdateCmd) {
TechnologyWorkChangeCmd technologyWorkChangeCmd = new TechnologyWorkChangeCmd();
technologyWorkChangeCmd.setWorkId(handoverDO.getForeignKey());
technologyWorkChangeCmd.setOldUserId(handoverDO.getUserId());
technologyWorkChangeCmd.setUserId(workChangeUpdateCmd.getHandoverUserId());
technologyWorkChangeCmd.setUserName(workChangeUpdateCmd.getHandoverUserName());
technologyWorkChangeCmd.setDeptId(workChangeUpdateCmd.getHandoverDepartmentId());
technologyWorkChangeCmd.setDeptName(workChangeUpdateCmd.getHandoverDepartmentName());
technologyWorkChangeCmd.setCorpId(workChangeUpdateCmd.getHandoverCompanyId());
technologyWorkChangeCmd.setCorpName(workChangeUpdateCmd.getHandoverCompanyName());
log.info("开始处理科技兴安交接交接记录id:{}, workId:{}, 原责任人:{}, 新责任人:{}",
handoverDO.getId(),
handoverDO.getForeignKey(),
handoverDO.getUserId(),
workChangeUpdateCmd.getHandoverUserId());
try {
SingleResponse response = zcloudTechnologyFacade.updateRiskWorkChange(technologyWorkChangeCmd);
if (response == null || !response.isSuccess()) {
String errMessage = response == null ? "科技兴安服务未返回结果" : response.getErrMessage();
log.error("科技兴安交接失败交接记录id:{}, workId:{}, 原因:{}",
handoverDO.getId(), handoverDO.getForeignKey(), errMessage);
throw new BizException(StringUtils.hasText(errMessage) ? errMessage : "科技兴安交接失败");
}
log.info("科技兴安交接完成交接记录id:{}, workId:{}, 新责任人:{}",
handoverDO.getId(), handoverDO.getForeignKey(), workChangeUpdateCmd.getHandoverUserId());
} catch (BizException e) {
throw e;
} catch (Exception e) {
log.error("科技兴安交接发生异常交接记录id:{}, workId:{}",
handoverDO.getId(), handoverDO.getForeignKey(), e);
throw new BizException("科技兴安交接失败,请稍后重试");
}
}
private void processRiskInfoHandover(UserJobHandoverDO handoverDO, WorkChangeUpdateCmd workChangeUpdateCmd) {
ListManagerWorkChangeCmd listManagerWorkChangeCmd = new ListManagerWorkChangeCmd();
listManagerWorkChangeCmd.setListManagerId(handoverDO.getForeignKey());

View File

@ -30,7 +30,15 @@ public enum UserJobHandoverWorkTypeEnum {
/**
*
*/
INSPECTION_WORK(6, "安全环保检查");
INSPECTION_WORK(6, "安全环保检查"),
/**
*
*/
DOMAIN(7, "专项领域"),
/**
*
*/
TECHNOLOGY(8, "科技兴安");
private final Integer code;
private final String name;