feat(job-handover): 新增专项领域和科技兴安待交接任务处理
parent
a21668bde4
commit
545b2d5839
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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());
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
Loading…
Reference in New Issue