Merge remote-tracking branch 'origin/dev' into dev

# Conflicts:
#	safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/institution/EvalSignTaskExecutor.java
dev
luotaiqian 2026-07-24 15:41:26 +08:00
commit 31957c6bd5
2 changed files with 66 additions and 2 deletions

View File

@ -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<String, Object> params = new HashMap<>();
params.put("title", cmd.getTaskTitle());
Map<String, String> 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<EvalProjectMemberDO> evalProjectMemberDOS = evalProjectMemberMapper.selectList(new LambdaQueryWrapper<EvalProjectMemberDO>()
.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<EvalSignTaskEntity> pageResult = evalSignTaskDomainService.page(domainQuery);
List<EvalSignTaskCO> 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<EvalProjectMemberDO> evalProjectMemberDOS = evalProjectMemberMapper.selectList(new LambdaQueryWrapper<EvalProjectMemberDO>()
.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());
}

View File

@ -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;