diff --git a/safety-eval-adapter/src/main/java/org/qinan/safetyeval/adapter/web/institution/EvalProjectMemberController.java b/safety-eval-adapter/src/main/java/org/qinan/safetyeval/adapter/web/institution/EvalProjectMemberController.java index a05ceded..a1efe3eb 100644 --- a/safety-eval-adapter/src/main/java/org/qinan/safetyeval/adapter/web/institution/EvalProjectMemberController.java +++ b/safety-eval-adapter/src/main/java/org/qinan/safetyeval/adapter/web/institution/EvalProjectMemberController.java @@ -48,13 +48,13 @@ public class EvalProjectMemberController { @ApiOperation("保存项目经理签字人") @PostMapping("/participant/save") public SingleResponse saveParticipant(@Validated @RequestBody List cmd) { - return evalRiskAnalysisApi.saveParticipant(cmd); + return evalRiskAnalysisApi.saveParticipantMember(cmd); } @ApiOperation("参与人列表") @GetMapping("/participant/list") public SingleResponse> listParticipants( - @ApiParam("项目组id") @RequestParam String projectTeamId) { - return evalRiskAnalysisApi.listParticipants(projectTeamId); + @ApiParam("projectId") @RequestParam String projectId) { + return evalRiskAnalysisApi.listParticipantsMember(projectId); } } diff --git a/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/institution/EvalProjectExecutor.java b/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/institution/EvalProjectExecutor.java index 6ad0df1f..aafd8bde 100644 --- a/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/institution/EvalProjectExecutor.java +++ b/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/institution/EvalProjectExecutor.java @@ -48,10 +48,7 @@ import org.springframework.util.CollectionUtils; import org.springframework.util.StringUtils; import java.time.LocalDate; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.stream.Collectors; @Service @@ -282,7 +279,8 @@ public class EvalProjectExecutor implements EvalProjectApi { .map(EvalProjectCO::getCustomerId).collect(Collectors.toList())) .stream().collect(Collectors.toMap(EvalCustomerDO::getId, EvalCustomerDO::getCustomerName)); Map projectRole = getProjectRole(co.stream().map(EvalProjectCO::getId).map(Long::new).collect(Collectors.toList())); - co.stream().sorted((o1, o2) -> o2.getSurveyType() - o1.getSurveyType()).forEach(item -> { + co = co.stream().sorted(Comparator.comparingInt(EvalProjectCO::getSurveyType)).collect(Collectors.toList()); + co.forEach(item -> { item.setCustomerName(customerNameMap.get(Long.valueOf(item.getCustomerId()))); item.setRole(projectRole.get(Long.valueOf(item.getId()))); }); 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 8bb2d0e0..ff9742c3 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 @@ -132,6 +132,38 @@ public class EvalRiskAnalysisExecutor implements EvalRiskAnalysisApi { return SingleResponse.success(true); } + @Override + public SingleResponse saveParticipantMember(List cmdList) { + List dbIds = evalRiskParticipantMapper.selectList(new LambdaQueryWrapper() + .isNull(EvalRiskParticipantDO::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); + } + } + if (!CollectionUtils.isEmpty(delIds)) { + evalRiskParticipantMapper.deleteBatchIds(delIds); + } + for (EvalRiskParticipantSaveCmd cmd : cmdList) { + EvalRiskParticipantEntity entity = evalRiskAnalysisCmdConvertor.convertParticipantCmdToE(cmd); + entity.setProjectId(cmdList.get(0).getProjectId()); + if (entity.getId() == null) { + if (entity.getSortOrder() == null) { + entity.setSortOrder(0); + } + entity.setSignStatusCode(null); + evalRiskParticipantGateway.save(entity); + } else { + evalRiskParticipantGateway.modify(entity); + } + } + return SingleResponse.success(true); + } + @Override public SingleResponse deleteParticipant(Long id) { EvalRiskParticipantEntity existing = requireParticipant(id); @@ -149,6 +181,12 @@ public class EvalRiskAnalysisExecutor implements EvalRiskAnalysisApi { evalRiskParticipantGateway.listByRiskId(risk.getId()))); } + @Override + public SingleResponse> listParticipantsMember(String projectId) { + return SingleResponse.success(evalRiskAnalysisCmdConvertor.convertParticipantListToCOList( + evalRiskParticipantGateway.listByRiskIdMember(projectId))); + } + private EvalRiskAnalysisCO toDetailCO(EvalRiskAnalysisEntity entity) { EvalRiskAnalysisCO co = evalRiskAnalysisCmdConvertor.convertEToCO(entity); co.setParticipants(evalRiskAnalysisCmdConvertor.convertParticipantListToCOList( 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 c5c86a6e..3acc89d2 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 @@ -84,9 +84,16 @@ public class EvalSignTaskExecutor implements EvalSignTaskApi { } private void support(String projectId, String signerPersonnelId, String nodeCode) { - if (ProjectStageEnum.RISK_ANALYSIS.getVal().equals(nodeCode) - || ProjectStageEnum.PROJECT_GROUP.getVal().equals(nodeCode)) { + if (ProjectStageEnum.RISK_ANALYSIS.getVal().equals(nodeCode)) { evalRiskParticipantMapper.update(new LambdaUpdateWrapper() + .isNotNull(EvalRiskParticipantDO::getRiskId) + .eq(EvalRiskParticipantDO::getProjectId, projectId) + .eq(EvalRiskParticipantDO::getPersonnelId, signerPersonnelId) + .set(EvalRiskParticipantDO::getSignStatusCode, SignTaskStatusEnum.PENDING.getCode())); + } + if (ProjectStageEnum.PROJECT_GROUP.getVal().equals(nodeCode)) { + evalRiskParticipantMapper.update(new LambdaUpdateWrapper() + .isNull(EvalRiskParticipantDO::getRiskId) .eq(EvalRiskParticipantDO::getProjectId, projectId) .eq(EvalRiskParticipantDO::getPersonnelId, signerPersonnelId) .set(EvalRiskParticipantDO::getSignStatusCode, SignTaskStatusEnum.PENDING.getCode())); @@ -144,9 +151,17 @@ public class EvalSignTaskExecutor implements EvalSignTaskApi { .set(EvalSignTaskDO::getTaskStatusCode, SignTaskStatusEnum.SIGNED.getCode()) .set(EvalSignTaskDO::getSignerUrl, cmd.getSignerUrl())); - if (ProjectStageEnum.RISK_ANALYSIS.getVal().equals(evalSignTaskDO.getNodeCode()) - || ProjectStageEnum.PROJECT_GROUP.getVal().equals(evalSignTaskDO.getNodeCode())) { + if (ProjectStageEnum.RISK_ANALYSIS.getVal().equals(evalSignTaskDO.getNodeCode())) { evalRiskParticipantMapper.update(new LambdaUpdateWrapper() + .isNotNull(EvalRiskParticipantDO::getRiskId) + .eq(EvalRiskParticipantDO::getPersonnelId, evalSignTaskDO.getSignerPersonnelId()) + .eq(EvalRiskParticipantDO::getProjectId, evalSignTaskDO.getProjectId()) + .set(EvalRiskParticipantDO::getSignFileUrl, cmd.getSignerUrl()) + .set(EvalRiskParticipantDO::getSignStatusCode, SignTaskStatusEnum.SIGNED.getCode())); + } + if (ProjectStageEnum.PROJECT_GROUP.getVal().equals(evalSignTaskDO.getNodeCode())) { + evalRiskParticipantMapper.update(new LambdaUpdateWrapper() + .isNull(EvalRiskParticipantDO::getRiskId) .eq(EvalRiskParticipantDO::getPersonnelId, evalSignTaskDO.getSignerPersonnelId()) .eq(EvalRiskParticipantDO::getProjectId, evalSignTaskDO.getProjectId()) .set(EvalRiskParticipantDO::getSignFileUrl, cmd.getSignerUrl()) diff --git a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/api/institution/EvalRiskAnalysisApi.java b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/api/institution/EvalRiskAnalysisApi.java index 793eb4fc..a0f059f6 100644 --- a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/api/institution/EvalRiskAnalysisApi.java +++ b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/api/institution/EvalRiskAnalysisApi.java @@ -18,8 +18,11 @@ public interface EvalRiskAnalysisApi { SingleResponse enums(); SingleResponse saveParticipant(List cmd); + SingleResponse saveParticipantMember(List cmd); SingleResponse deleteParticipant(Long id); SingleResponse> listParticipants(String riskId); + + SingleResponse> listParticipantsMember(String projectId); } 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 e52d9c27..8248de58 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 @@ -3,15 +3,12 @@ package org.qinan.safetyeval.client.dto.institution; import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import javax.validation.constraints.NotBlank; - @Data public class EvalRiskParticipantSaveCmd { @ApiModelProperty("主键ID(修改时传)") private String id; - @NotBlank(message = "风险分析or项目组经理ID不能为空") @ApiModelProperty(value = "风险分析or项目组经理ID", required = true) private String riskId; diff --git a/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/gateway/EvalRiskParticipantGateway.java b/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/gateway/EvalRiskParticipantGateway.java index 7083de3c..d9ae4959 100644 --- a/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/gateway/EvalRiskParticipantGateway.java +++ b/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/gateway/EvalRiskParticipantGateway.java @@ -15,4 +15,6 @@ public interface EvalRiskParticipantGateway { void delete(Long id); List listByRiskId(Long riskId); + + List listByRiskIdMember(String projectId); } diff --git a/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/gatewayimpl/EvalRiskParticipantGatewayImpl.java b/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/gatewayimpl/EvalRiskParticipantGatewayImpl.java index 242e6f62..0ad31e72 100644 --- a/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/gatewayimpl/EvalRiskParticipantGatewayImpl.java +++ b/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/gatewayimpl/EvalRiskParticipantGatewayImpl.java @@ -55,4 +55,15 @@ public class EvalRiskParticipantGatewayImpl implements EvalRiskParticipantGatewa .map(evalRiskParticipantDoConvertor::convertDoToE) .collect(Collectors.toList()); } + + @Override + public List listByRiskIdMember(String projectId) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(EvalRiskParticipantDO::getProjectId, projectId); + wrapper.isNull(EvalRiskParticipantDO::getRiskId); + wrapper.orderByAsc(EvalRiskParticipantDO::getSortOrder).orderByAsc(EvalRiskParticipantDO::getId); + return evalRiskParticipantMapper.selectList(wrapper).stream() + .map(evalRiskParticipantDoConvertor::convertDoToE) + .collect(Collectors.toList()); + } }