diff --git a/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/institution/EvalRiskAnalysisExecutor.java b/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/institution/EvalRiskAnalysisExecutor.java index 8b4ab79..f013611 100644 --- a/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/institution/EvalRiskAnalysisExecutor.java +++ b/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/institution/EvalRiskAnalysisExecutor.java @@ -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 save(EvalRiskAnalysisSaveCmd cmd) { @@ -79,20 +92,30 @@ public class EvalRiskAnalysisExecutor implements EvalRiskAnalysisApi { } @Override + @Transactional(rollbackFor = Exception.class) public SingleResponse saveParticipant(List cmdList) { + List dbIds = evalRiskParticipantMapper.selectList(new LambdaQueryWrapper() + .eq(EvalRiskParticipantDO::getRiskId, cmdList.get(0).getRiskId()) + .eq(EvalRiskParticipantDO::getProjectId, cmdList.get(0).getProjectId())) + .stream().map(EvalRiskParticipantDO::getId).collect(Collectors.toList()); + List cmdIds = cmdList.stream().map(EvalRiskParticipantSaveCmd::getId).filter(Objects::nonNull).map(Long::new).collect(Collectors.toList()); + List 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()); 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 c0e7878..9053092 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 @@ -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 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() + .eq(EvalRiskParticipantDO::getProjectId, projectId) + .eq(EvalRiskParticipantDO::getPersonnelId, signerPersonnelId) + .set(EvalRiskParticipantDO::getSignStatusCode, SignTaskStatusEnum.PENDING.getCode())); + } + } + + @Override public PageResponse page(EvalSignTaskPageQuery query) { EvalSignTaskQuery domainQuery = evalSignTaskCmdConvertor.convertPageQueryToQ(query); diff --git a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/dto/institution/EvalRiskParticipantSaveCmd.java b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/dto/institution/EvalRiskParticipantSaveCmd.java index d5d8807..5c13654 100644 --- a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/dto/institution/EvalRiskParticipantSaveCmd.java +++ b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/dto/institution/EvalRiskParticipantSaveCmd.java @@ -18,6 +18,8 @@ public class EvalRiskParticipantSaveCmd { @ApiModelProperty("人员ID") private String personnelId; + private Long projectId; + @ApiModelProperty("人员姓名") private String personnelName; diff --git a/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/gatewayimpl/EvalSignTaskGatewayImpl.java b/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/gatewayimpl/EvalSignTaskGatewayImpl.java index 1b0620b..a729204 100644 --- a/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/gatewayimpl/EvalSignTaskGatewayImpl.java +++ b/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/gatewayimpl/EvalSignTaskGatewayImpl.java @@ -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; diff --git a/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/gatewayimpl/SafetyMessageGatewayImpl.java b/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/gatewayimpl/SafetyMessageGatewayImpl.java index e7629e3..c6d639d 100644 --- a/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/gatewayimpl/SafetyMessageGatewayImpl.java +++ b/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/gatewayimpl/SafetyMessageGatewayImpl.java @@ -55,7 +55,7 @@ public class SafetyMessageGatewayImpl implements SafetyMessageGateway { params.put(MsgConstant.MSG_CONTENT_KEY_TITLE, taskTitle); Map 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); }