diff --git a/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/institution/EvalInternalReviewExecutor.java b/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/institution/EvalInternalReviewExecutor.java index 51d19e8..67cb046 100644 --- a/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/institution/EvalInternalReviewExecutor.java +++ b/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/institution/EvalInternalReviewExecutor.java @@ -98,6 +98,7 @@ public class EvalInternalReviewExecutor implements EvalInternalReviewApi { throw new BizException(ErrorCode.EVAL_PROJECT_ARCHIVED); } + // 修改数据是否存在 EvalInternalReviewEntity entity = evalInternalReviewConvertor.applyConfirmCmd(cmd); EvalInternalReviewDO evalInternalReviewDO = null; if (cmd.getId() != null) { @@ -108,6 +109,7 @@ public class EvalInternalReviewExecutor implements EvalInternalReviewApi { } } + // 是否签字完成 if (cmd.getResultCode().equals(EvalReviewEnum.PASSED.getCode())) { if (evalInternalReviewDO == null) { throw new BizException(ASSIGN_SIGN_TASK); @@ -142,6 +144,31 @@ public class EvalInternalReviewExecutor implements EvalInternalReviewApi { @Override @Transactional(rollbackFor = Exception.class) public SingleResponse assign(EvalInternalReviewAssignCmd cmd) { + Long projectId = cmd.getProjectId(); + EvalProjectEntity project = evalProjectNodeSupport.requireProject(projectId); + // 判断项目是否归档 + if (project.getArchiveFlag() != null && project.getArchiveFlag() == 1) { + throw new BizException(ErrorCode.EVAL_PROJECT_ARCHIVED); + } + EvalInternalReviewEntity entity = evalInternalReviewGateway.getByProjectId(projectId, project.getOrgId()); + if (entity == null) { + // 没有数据则新增,并下发签字任务 + entity = new EvalInternalReviewEntity(); + entity.setOrgId(project.getOrgId()); + entity.setProjectId(projectId); + entity.setStatusCode(1); + entity.setReviewerSignatureTaskStatus(SignatureTaskStatusEnum.DISPATCHED.getCode()); + evalInternalReviewGateway.save(entity); + } else { + // 已存在数据,若已下发则提示不要重复下发 + if (SignatureTaskStatusEnum.DISPATCHED.getCode().equals(entity.getReviewerSignatureTaskStatus())) { + throw new BizException(ErrorCode.SIGN_TASK_ALREADY_DISPATCHED); + } + entity.setReviewerSignatureTaskStatus(SignatureTaskStatusEnum.DISPATCHED.getCode()); + evalInternalReviewGateway.modify(entity); + } + + // todo 保存任务 return SingleResponse.success(); } diff --git a/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/constant/SignatureTaskStatusEnum.java b/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/constant/SignatureTaskStatusEnum.java new file mode 100644 index 0000000..b9536d3 --- /dev/null +++ b/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/constant/SignatureTaskStatusEnum.java @@ -0,0 +1,41 @@ +package org.qinan.safetyeval.domain.constant; + +/** + * 审核签字任务状态枚举 + * + * @author safety-eval + */ +public enum SignatureTaskStatusEnum { + + DISPATCHED("dispatched", "下发"), + NON_DISPATCHED("non_dispatched", "未下发"), + COMPLETED("completed", "已完成"); + + private final String code; + private final String name; + + SignatureTaskStatusEnum(String code, String name) { + this.code = code; + this.name = name; + } + + public String getCode() { + return code; + } + + public String getName() { + return name; + } + + public static SignatureTaskStatusEnum ofCode(String code) { + if (code == null) { + return null; + } + for (SignatureTaskStatusEnum item : values()) { + if (item.code.equals(code)) { + return item; + } + } + return null; + } +} diff --git a/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/exception/ErrorCode.java b/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/exception/ErrorCode.java index 4ab7438..29f9ebb 100644 --- a/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/exception/ErrorCode.java +++ b/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/exception/ErrorCode.java @@ -119,6 +119,7 @@ public enum ErrorCode { */ ASSIGN_SIGN_TASK("04-02-001", "请先下发签字任务"), SIGN_TASK_NOT_COMPLETE("04-02-002", "签字任务未完成"), + SIGN_TASK_ALREADY_DISPATCHED("04-02-003", "签字任务已下发,请勿重复下发"), // gbs GBS_USER_ERROR("04-01-001", "gbs用户未登录"),