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

dev
luotaiqian 2026-07-27 10:57:10 +08:00
commit cb9de9a06e
5 changed files with 49 additions and 15 deletions

View File

@ -1,5 +1,6 @@
package org.qinan.safetyeval.app.executor.institution;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import org.qinan.safetyeval.app.convertor.EvalRiskAnalysisCmdConvertor;
import org.qinan.safetyeval.app.executor.institution.support.EvalProjectNodeSupport;
import org.qinan.safetyeval.client.api.institution.EvalRiskAnalysisApi;
@ -17,11 +18,19 @@ import org.qinan.safetyeval.domain.exception.ErrorCode;
import org.qinan.safetyeval.domain.gateway.EvalRiskAnalysisGateway;
import org.qinan.safetyeval.domain.gateway.EvalRiskParticipantGateway;
import org.qinan.safetyeval.domain.support.EvalNodeCodes;
import org.qinan.safetyeval.infrastructure.dataobject.EvalRiskParticipantDO;
import org.qinan.safetyeval.infrastructure.mapper.EvalRiskAnalysisMapper;
import org.qinan.safetyeval.infrastructure.mapper.EvalRiskParticipantMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.StringUtils;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
@Service
public class EvalRiskAnalysisExecutor implements EvalRiskAnalysisApi {
@ -34,6 +43,10 @@ public class EvalRiskAnalysisExecutor implements EvalRiskAnalysisApi {
private EvalProjectNodeSupport evalProjectNodeSupport;
@Resource
private EvalRiskAnalysisCmdConvertor evalRiskAnalysisCmdConvertor;
@Autowired
private EvalRiskAnalysisMapper evalRiskAnalysisMapper;
@Autowired
private EvalRiskParticipantMapper evalRiskParticipantMapper;
@Override
public SingleResponse<EvalRiskAnalysisCO> save(EvalRiskAnalysisSaveCmd cmd) {
@ -79,20 +92,30 @@ public class EvalRiskAnalysisExecutor implements EvalRiskAnalysisApi {
}
@Override
@Transactional(rollbackFor = Exception.class)
public SingleResponse<Boolean> saveParticipant(List<EvalRiskParticipantSaveCmd> cmdList) {
List<Long> dbIds = evalRiskParticipantMapper.selectList(new LambdaQueryWrapper<EvalRiskParticipantDO>()
.eq(EvalRiskParticipantDO::getRiskId, cmdList.get(0).getRiskId())
.eq(EvalRiskParticipantDO::getProjectId, cmdList.get(0).getProjectId()))
.stream().map(EvalRiskParticipantDO::getId).collect(Collectors.toList());
List<Long> cmdIds = cmdList.stream().map(EvalRiskParticipantSaveCmd::getId).filter(Objects::nonNull).map(Long::new).collect(Collectors.toList());
List<Long> delIds = new ArrayList<>();
for (Long id : dbIds) {
if (!cmdIds.contains(id)) {
delIds.add(id);
}
}
evalRiskParticipantMapper.deleteBatchIds(delIds);
for (EvalRiskParticipantSaveCmd cmd : cmdList) {
EvalRiskAnalysisEntity risk = requireRisk(cmd.getRiskId());
// evalProjectNodeSupport.assertWrite(risk.getProjectId(), EvalNodeCodes.NODE_01);
EvalRiskParticipantEntity entity = evalRiskAnalysisCmdConvertor.convertParticipantCmdToE(cmd);
entity.setRiskId(risk.getId());
entity.setProjectId(risk.getProjectId());
if (entity.getSignStatusCode() == null) {
entity.setSignStatusCode(1);
}
if (entity.getId() == null) {
if (entity.getSortOrder() == null) {
entity.setSortOrder(0);
}
entity.setSignStatusCode(null);
evalRiskParticipantGateway.save(entity);
} else {
EvalRiskParticipantEntity existing = requireParticipant(entity.getId());

View File

@ -12,21 +12,16 @@ import org.qinan.safetyeval.client.dto.SingleResponse;
import org.qinan.safetyeval.client.dto.institution.EditSignTaskSaveCmd;
import org.qinan.safetyeval.client.dto.institution.EvalSignTaskPageQuery;
import org.qinan.safetyeval.client.dto.institution.EvalSignTaskSaveCmd;
import org.qinan.safetyeval.domain.constant.*;
import org.qinan.safetyeval.domain.constant.ProjectStageEnum;
import org.qinan.safetyeval.domain.constant.SignTaskStatusEnum;
import org.qinan.safetyeval.domain.constant.SignatureTaskStatusEnum;
import org.qinan.safetyeval.domain.entity.EvalSignTaskEntity;
import org.qinan.safetyeval.domain.entity.SafetyMessageEntity;
import org.qinan.safetyeval.domain.exception.BizException;
import org.qinan.safetyeval.domain.exception.ErrorCode;
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;
@ -36,8 +31,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.List;
import java.util.Objects;
import java.util.stream.Collectors;
@Service
@ -69,6 +64,7 @@ public class EvalSignTaskExecutor implements EvalSignTaskApi {
private EvalProjectMemberMapper evalProjectMemberMapper;
@Override
@Transactional(rollbackFor = Exception.class)
public SingleResponse<EvalSignTaskCO> save(EvalSignTaskSaveCmd cmd) {
Long orgId = institutionOrgSupport.resolveCurrentOrgId();
EvalSignTaskEntity entity = evalSignTaskCmdConvertor.convertSaveCmdToE(cmd);
@ -76,9 +72,20 @@ public class EvalSignTaskExecutor implements EvalSignTaskApi {
EvalSignTaskEntity result = evalSignTaskDomainService.add(entity);
// 发送签字任务通知消息
safetyMessageGateway.saveSignMsg(cmd.getTaskTitle(), cmd.getNodeCode(), cmd.getProjectId(), cmd.getSignerPersonnelId());
support(cmd.getProjectId(), cmd.getSignerPersonnelId(), cmd.getNodeCode());
return SingleResponse.success(evalSignTaskCmdConvertor.convertEToCO(result));
}
private void support(String projectId, String signerPersonnelId, String nodeCode) {
if (ProjectStageEnum.RISK_ANALYSIS.getVal().equals(nodeCode)) {
evalRiskParticipantMapper.update(new LambdaUpdateWrapper<EvalRiskParticipantDO>()
.eq(EvalRiskParticipantDO::getProjectId, projectId)
.eq(EvalRiskParticipantDO::getPersonnelId, signerPersonnelId)
.set(EvalRiskParticipantDO::getSignStatusCode, SignTaskStatusEnum.PENDING.getCode()));
}
}
@Override
public PageResponse<EvalSignTaskCO> page(EvalSignTaskPageQuery query) {
EvalSignTaskQuery domainQuery = evalSignTaskCmdConvertor.convertPageQueryToQ(query);

View File

@ -18,6 +18,8 @@ public class EvalRiskParticipantSaveCmd {
@ApiModelProperty("人员ID")
private String personnelId;
private Long projectId;
@ApiModelProperty("人员姓名")
private String personnelName;

View File

@ -16,6 +16,7 @@ import org.qinan.safetyeval.infrastructure.support.OrgContextResolver;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.time.LocalDateTime;
import java.util.List;
import java.util.stream.Collectors;
@ -36,6 +37,7 @@ public class EvalSignTaskGatewayImpl implements EvalSignTaskGateway {
EvalSignTaskDO dataObject = evalSignTaskDoConvertor.convertEToDo(entity);
dataObject.setOrgId(orgContextResolver.resolveOrgId(entity.getOrgId()));
InsertFieldDefaults.apply(dataObject);
dataObject.setIssueTime(LocalDateTime.now());
evalSignTaskMapper.insert(dataObject);
entity.setId(dataObject.getId());
return entity;

View File

@ -55,7 +55,7 @@ public class SafetyMessageGatewayImpl implements SafetyMessageGateway {
params.put(MsgConstant.MSG_CONTENT_KEY_TITLE, taskTitle);
Map<String, String> fillMap = new HashMap<>();
ProjectStageEnum projectStageEnum = ProjectStageEnum.fromNode(nodeCode);
ProjectStageEnum projectStageEnum = ProjectStageEnum.fromVal(nodeCode);
if (projectStageEnum == null) {
throw new BizException(ErrorCode.EVAL_PROJECT_NODE_NOT_FOUND);
}