diff --git a/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/institution/EvalSignTaskExecutor.java b/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/institution/EvalSignTaskExecutor.java index 9a6b45e..4b74552 100644 --- a/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/institution/EvalSignTaskExecutor.java +++ b/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/institution/EvalSignTaskExecutor.java @@ -19,6 +19,12 @@ import org.qinan.safetyeval.domain.gateway.SafetyMessageGateway; import org.qinan.safetyeval.domain.query.EvalSignTaskQuery; import org.qinan.safetyeval.domain.query.PageResult; import org.qinan.safetyeval.domain.service.EvalSignTaskDomainService; +import org.qinan.safetyeval.infrastructure.dataobject.EvalProjectMemberDO; +import org.qinan.safetyeval.infrastructure.dataobject.EvalRiskParticipantDO; +import org.qinan.safetyeval.infrastructure.dataobject.EvalSignTaskDO; +import org.qinan.safetyeval.infrastructure.mapper.EvalProjectMemberMapper; +import org.qinan.safetyeval.infrastructure.mapper.EvalRiskParticipantMapper; +import org.qinan.safetyeval.infrastructure.mapper.EvalSignTaskMapper; import org.qinan.safetyeval.infrastructure.dataobject.*; import org.qinan.safetyeval.infrastructure.mapper.*; import org.qinan.safetyeval.infrastructure.support.InstitutionOrgSupport; @@ -28,6 +34,8 @@ import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.util.Arrays; +import java.time.LocalDateTime; +import java.util.*; import java.util.stream.Collectors; @Service @@ -48,6 +56,8 @@ public class EvalSignTaskExecutor implements EvalSignTaskApi { @Autowired private EvalRiskParticipantMapper evalRiskParticipantMapper; @Autowired + private EvalProjectMapper evalProjectMapper; + @Autowired private EvalInternalReviewMapper evalInternalReviewMapper; @Autowired private EvalTechReviewMapper evalTechReviewMapper; @@ -62,6 +72,38 @@ public class EvalSignTaskExecutor implements EvalSignTaskApi { EvalSignTaskEntity result = evalSignTaskDomainService.add(entity); // 发送签字任务通知消息 safetyMessageGateway.saveSignMsg(cmd.getTaskTitle(), cmd.getNodeCode(), cmd.getProjectId(), cmd.getSignerPersonnelId()); + // todo 消息发送 + SafetyMessageEntity safetyMessageEntity = new SafetyMessageEntity(); + safetyMessageEntity.setSendName(MsgConstant.MSG_TYPE_SYSTEM); + safetyMessageEntity.setSendId(MsgConstant.MSG_TYPE_SYSTEM_ID); + safetyMessageEntity.setSendType(NoticeTypeEnum.SIGN_TASK_NOTICE.getMsg()); + Map params = new HashMap<>(); + params.put("title", cmd.getTaskTitle()); + Map fillMap = new HashMap<>(); + ProjectStageEnum projectStageEnum = ProjectStageEnum.fromNode(cmd.getNodeCode()); + if (projectStageEnum == null) { + throw new BizException(ErrorCode.EVAL_PROJECT_NODE_NOT_FOUND); + } + fillMap.put("fileName", projectStageEnum.getMsg()); + EvalProjectDO evalProjectDO = evalProjectMapper.selectById(cmd.getProjectId()); + fillMap.put("version", evalProjectDO.getProjectNo()); + if (ProjectStageEnum.RISK_ANALYSIS.getMsg().equals(cmd.getNodeCode())) { + fillMap.put("role", ""); + } else { + // 查询角色 + List evalProjectMemberDOS = evalProjectMemberMapper.selectList(new LambdaQueryWrapper() + .select(EvalProjectMemberDO::getRole) + .eq(EvalProjectMemberDO::getProjectId, cmd.getProjectId()) + .eq(EvalProjectMemberDO::getPersonnelId, cmd.getSignerPersonnelId()) + .last("limit 1")); + fillMap.put("role", ProjectStageEnum.fromVals(evalProjectMemberDOS.get(0).getRole())); + } + params.put("content", NoticeTypeEnum.SIGN_TASK_NOTICE.fillTemplate(fillMap)); + safetyMessageEntity.setSendContent(JSON.toJSONString(params)); + safetyMessageEntity.setReceiveId(Long.valueOf(cmd.getSignerPersonnelId())); + safetyMessageEntity.setSendState(0); + safetyMessageEntity.setCreateTime(LocalDateTime.now()); + safetyMessageGateway.save(safetyMessageEntity); return SingleResponse.success(evalSignTaskCmdConvertor.convertEToCO(result)); } @@ -70,8 +112,21 @@ public class EvalSignTaskExecutor implements EvalSignTaskApi { EvalSignTaskQuery domainQuery = evalSignTaskCmdConvertor.convertPageQueryToQ(query); domainQuery.setOrgId(institutionOrgSupport.resolveCurrentOrgId()); PageResult pageResult = evalSignTaskDomainService.page(domainQuery); + List co = evalSignTaskCmdConvertor.convertEListToCOList(pageResult.getRecords()); + for (EvalSignTaskCO evalSignTaskCO : co) { + EvalProjectDO evalProjectDO = evalProjectMapper.selectById(evalSignTaskCO.getProjectId()); + evalSignTaskCO.setProjectName(evalProjectDO.getProjectName()); + evalSignTaskCO.setNodeName(Objects.requireNonNull(ProjectStageEnum.fromVal(evalSignTaskCO.getNodeCode())).getMsg()); + List evalProjectMemberDOS = evalProjectMemberMapper.selectList(new LambdaQueryWrapper() + .eq(EvalProjectMemberDO::getProjectId, evalSignTaskCO.getProjectId()) + .eq(EvalProjectMemberDO::getPersonnelId, evalSignTaskCO.getSignerPersonnelId()) + .select(EvalProjectMemberDO::getRole, EvalProjectMemberDO::getPersonnelName) + .last("limit 1")); + evalSignTaskCO.setSignerPersonnelName(evalProjectMemberDOS.get(0).getPersonnelName()); + evalSignTaskCO.setSignerRoles(ProjectStageEnum.fromVals(evalProjectMemberDOS.get(0).getRole())); + } return PageResponse.of( - evalSignTaskCmdConvertor.convertEListToCOList(pageResult.getRecords()), + co , pageResult.getTotal()); } diff --git a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/co/institution/EvalSignTaskCO.java b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/co/institution/EvalSignTaskCO.java index acbf38a..d998c11 100644 --- a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/co/institution/EvalSignTaskCO.java +++ b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/co/institution/EvalSignTaskCO.java @@ -11,17 +11,26 @@ public class EvalSignTaskCO { private String id; private String orgId; private String projectId; + @ApiModelProperty(value = "项目名称") + private String projectName; private String nodeCode; + @ApiModelProperty(value = "节点名称") + private String nodeName; private String bizRefId; + @ApiModelProperty("待签人员id") private String signerPersonnelId; + @ApiModelProperty("待签人员名称") + private String signerPersonnelName; private String taskTitle; - + @ApiModelProperty("待签角色") + private String signerRoles; @ApiModelProperty(value = "任务状态编码:1待签 2已签 3已作废", example = "1") private Integer taskStatusCode; @ApiModelProperty(value = "任务状态名称:待签/已签/已作废", example = "待签") private String taskStatusName; + @ApiModelProperty(value = "任务下发时间") private LocalDateTime issueTime; private String signerUrl; private String remarks;