diff --git a/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/institution/EvalProcessControlExecutor.java b/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/institution/EvalProcessControlExecutor.java index 693c0aa..22777d8 100644 --- a/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/institution/EvalProcessControlExecutor.java +++ b/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/institution/EvalProcessControlExecutor.java @@ -107,6 +107,8 @@ public class EvalProcessControlExecutor implements EvalProcessControlApi { private WpsDocQueryService wpsDocQueryService; @Resource private SafetyMessageGateway safetyMessageGateway; + @Resource + private OrgPersonnelMapper orgPersonnelMapper; @Override public SingleResponse getOrSave(EvalProcessControlSaveCmd cmd) { @@ -147,6 +149,8 @@ public class EvalProcessControlExecutor implements EvalProcessControlApi { throw new BizException(ErrorCode.EVAL_INTERNAL_REVIEW_NOT_FOUND); } + entity.setControllerPersonnelId(cmd.getSignTaskPersonCmd().getSignerPersonnelId()); + entity.setControllerName(cmd.getSignTaskPersonCmd().getSignerName()); if (evalProcessControlDO != null) { entity.setId(evalProcessControlDO.getId()); entity = evalProcessControlGateway.modify(entity); @@ -194,6 +198,7 @@ public class EvalProcessControlExecutor implements EvalProcessControlApi { throw new BizException(ErrorCode.UNKNOWN_ERROR.getCode(), "请先完成过程控制人签字"); } + entity.setOrgHeadPersonnelId(cmd.getSignTaskPersonCmd().getSignerPersonnelId()); entity.setOrgHeadSignatureTaskStatus(SignatureTaskStatusEnum.DISPATCHED.getCode()); entity.setOpinionContent(cmd.getOpinionContent()); evalProcessControlGateway.modify(entity); @@ -222,6 +227,23 @@ public class EvalProcessControlExecutor implements EvalProcessControlApi { evalSignTaskMapper.insert(task); } + /** + * 根据人员id查询 org_personnel 构建签字任务人员信息(仅查询 id 与 userName)。 + */ + private SignTaskPersonCo buildSignTaskPerson(Long personnelId) { + SignTaskPersonCo co = new SignTaskPersonCo(); + co.setSignerPersonnelId(personnelId); + if (personnelId != null) { + OrgPersonnelDO personnel = orgPersonnelMapper.selectOne(new LambdaQueryWrapper() + .select(OrgPersonnelDO::getId, OrgPersonnelDO::getUserName) + .eq(OrgPersonnelDO::getId, personnelId)); + if (personnel != null) { + co.setSignerName(personnel.getUserName()); + } + } + return co; + } + @Override public SingleResponse getByProject(String projectId) { Long pid = Long.parseLong(projectId); @@ -236,21 +258,29 @@ public class EvalProcessControlExecutor implements EvalProcessControlApi { @Override public SingleResponse getDetailByProject(Long projectId) { - // 1. 查询项目成员中的过程控制负责人信息(role包含EVALUATION_AGENCY_HEAD或PROCESS_CONTROL_LEAD) + // 1. 查询项目成员中的过程控制负责人和机构负责人信息(role包含PROCESS_CONTROL_LEAD或EVALUATION_AGENCY_HEAD) List members = evalProjectMemberMapper.selectList( new LambdaQueryWrapper() .eq(EvalProjectMemberDO::getProjectId, projectId) .eq(EvalProjectMemberDO::getDeleteEnum, BooleanQAEnum.FALSE.getValue()) - .and(w -> w.like(EvalProjectMemberDO::getRole, ProjectRoleEnum.EVALUATION_AGENCY_HEAD.getVal()) - .or().like(EvalProjectMemberDO::getRole, ProjectRoleEnum.PROCESS_CONTROL_LEAD.getVal()))) + .and(w -> w.like(EvalProjectMemberDO::getRole, ProjectRoleEnum.PROCESS_CONTROL_LEAD.getVal()) + .or().like(EvalProjectMemberDO::getRole, ProjectRoleEnum.EVALUATION_AGENCY_HEAD.getVal()))) .stream() .map(evalProjectMemberDoConvertor::convertDoToE) .collect(Collectors.toList()); + // 按角色分别过滤 + List controllers = members.stream() + .filter(m -> m.getRole() != null && m.getRole().contains(ProjectRoleEnum.PROCESS_CONTROL_LEAD.getVal())) + .collect(Collectors.toList()); + List orgHeads = members.stream() + .filter(m -> m.getRole() != null && m.getRole().contains(ProjectRoleEnum.EVALUATION_AGENCY_HEAD.getVal())) + .collect(Collectors.toList()); // 2. 查询过程控制记录,未查询到则过程控制记录字段为空 EvalProcessControlEntity entity = evalProcessControlGateway.getByProjectId(projectId, null); EvalProcessControlDetailCO detailCO = new EvalProcessControlDetailCO(); - detailCO.setControllers(evalProcessControlConvertor.toMemberCOs(members)); + detailCO.setControllers(evalProcessControlConvertor.toMemberCOs(controllers)); + detailCO.setOrgHeads(evalProcessControlConvertor.toMemberCOs(orgHeads)); // 查询项目归档信息 EvalProjectEntity project = evalProjectNodeSupport.requireProject(projectId); @@ -263,9 +293,9 @@ public class EvalProcessControlExecutor implements EvalProcessControlApi { // 3. 通过过程控制记录id查询审核项列表 detailCO.setReviewItems(evalReviewItemQueryService.listByBizIdAndBizType( entity.getId(), ReviewDimensionEnum.TypeEnum.EVAL_PROCESS_CONTROL.getCode())); - // 4. 查询签字任务人员 - SignTaskPersonCo personCo = evalSignTaskMapper.selectSignerPerson(entity.getId(), projectId); - detailCO.setSignTaskPersonCo(personCo); + // 4. 设置过程控制负责人与机构负责人签字任务人员 + detailCO.setSignTaskPersonCo(buildSignTaskPerson(entity.getControllerPersonnelId())); + detailCO.setOrgHeadSignTaskPersonCo(buildSignTaskPerson(entity.getOrgHeadPersonnelId())); } else { // 未查询到过程控制记录,按审核维度枚举构建默认审核项 detailCO.setReviewItems(ReviewDimensionEnum.getListByType(ReviewDimensionEnum.TypeEnum.EVAL_PROCESS_CONTROL) diff --git a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/co/institution/EvalProcessControlDetailCO.java b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/co/institution/EvalProcessControlDetailCO.java index 9fd6a46..834eabe 100644 --- a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/co/institution/EvalProcessControlDetailCO.java +++ b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/co/institution/EvalProcessControlDetailCO.java @@ -20,12 +20,18 @@ public class EvalProcessControlDetailCO { @ApiModelProperty("过程控制负责人成员信息") private List controllers; + @ApiModelProperty("机构负责人成员信息") + private List orgHeads; + @ApiModelProperty("审核项列表") private List reviewItems; - @ApiModelProperty("机构负责人签字任务人员") + @ApiModelProperty("过程控制负责人签字任务人员") private SignTaskPersonCo signTaskPersonCo; + @ApiModelProperty("机构负责人签字任务人员") + private SignTaskPersonCo orgHeadSignTaskPersonCo; + @ApiModelProperty("项目归档移交人") private String archiveTransferorName;