diff --git a/docs/sql/20260804_org_equipment_add_equipment_value.sql b/docs/sql/20260804_org_equipment_add_equipment_value.sql deleted file mode 100644 index 7cd0415..0000000 --- a/docs/sql/20260804_org_equipment_add_equipment_value.sql +++ /dev/null @@ -1,11 +0,0 @@ --- org_equipment 表新增 设备价值 字段 -ALTER TABLE `org_equipment` - ADD COLUMN `equipment_value` decimal(14, 2) NULL COMMENT '设备价值' AFTER `manufacturer`; - --- qual_filing_equipment 表新增 设备价值 字段 -ALTER TABLE `qual_filing_equipment` - ADD COLUMN `equipment_value` decimal(14, 2) NULL COMMENT '设备价值' AFTER `manufacturer`; - --- qual_filing_equipment_change 表新增 设备价值 字段 -ALTER TABLE `qual_filing_equipment_change` - ADD COLUMN `equipment_value` decimal(14, 2) NULL COMMENT '设备价值' AFTER `manufacturer`; diff --git a/docs/sql/eval_process_control_add_org_head_signature.sql b/docs/sql/eval_process_control_add_org_head_signature.sql new file mode 100644 index 0000000..a5d5efd --- /dev/null +++ b/docs/sql/eval_process_control_add_org_head_signature.sql @@ -0,0 +1,5 @@ +-- eval_process_control 新增机构负责人签字相关字段 +ALTER TABLE `eval_process_control` + ADD COLUMN `org_head_signature_task_status` varchar(64) DEFAULT NULL COMMENT '机构负责人签字任务状态 dispatched 下发,non_dispatched 未下发 , completed 已完成', + ADD COLUMN `org_head_personnel_id` bigint DEFAULT NULL COMMENT '机构负责人', + ADD COLUMN `org_head_signature_url` varchar(512) DEFAULT NULL COMMENT '机构负责人签字'; diff --git a/safety-eval-adapter/src/main/java/org/qinan/safetyeval/adapter/web/institution/EvalProcessControlController.java b/safety-eval-adapter/src/main/java/org/qinan/safetyeval/adapter/web/institution/EvalProcessControlController.java index bc05a3e..ade76db 100644 --- a/safety-eval-adapter/src/main/java/org/qinan/safetyeval/adapter/web/institution/EvalProcessControlController.java +++ b/safety-eval-adapter/src/main/java/org/qinan/safetyeval/adapter/web/institution/EvalProcessControlController.java @@ -30,13 +30,13 @@ public class EvalProcessControlController { private SmsRemote smsRemote; - @ApiOperation("过程控制确认") + @ApiOperation("过程控制确认+过程控制下发签字") @PostMapping("/confirm") public SingleResponse confirm(@Validated @RequestBody EvalProcessControlConfirmCmd cmd) { return evalProcessControlApi.confirm(cmd); } - @ApiOperation("下发签字任务") + @ApiOperation("评价机构负责人-下发签字任务") @PostMapping("/assign") public SingleResponse assign(@Validated @RequestBody EvalProcessControlAssignCmd cmd) { return evalProcessControlApi.assign(cmd); diff --git a/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/institution/EvalProcessControlExecutor.java b/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/institution/EvalProcessControlExecutor.java index 1f51db1..00301b9 100644 --- a/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/institution/EvalProcessControlExecutor.java +++ b/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/institution/EvalProcessControlExecutor.java @@ -142,7 +142,6 @@ public class EvalProcessControlExecutor implements EvalProcessControlApi { EvalProcessControlEntity entity = evalProcessControlConvertor.applyConfirmCmd(cmd); EvalProcessControlDO evalProcessControlDO = evalProcessControlMapper.selectOne(new LambdaQueryWrapper() - .select(EvalProcessControlDO::getId, EvalProcessControlDO::getReviewerSignatureTaskStatus) .eq(EvalProcessControlDO::getProjectId, cmd.getProjectId())); if (cmd.getId() != null && evalProcessControlDO == null) { throw new BizException(ErrorCode.EVAL_INTERNAL_REVIEW_NOT_FOUND); @@ -154,6 +153,7 @@ public class EvalProcessControlExecutor implements EvalProcessControlApi { } else { // id为空,新增数据 entity.setOrgId(project.getOrgId()); + entity.setReviewerSignatureTaskStatus(SignatureTaskStatusEnum.DISPATCHED.getCode()); entity = evalProcessControlGateway.save(entity); } @@ -168,6 +168,18 @@ public class EvalProcessControlExecutor implements EvalProcessControlApi { itemE.setOrgId(project.getOrgId()); evalReviewItemGateway.add(itemE); } + + SignTaskPersonCmd signTaskPersonCmd = new SignTaskPersonCmd(); + signTaskPersonCmd.setSignerPersonnelId(cmd.getControllerPersonnelId()); + signTaskPersonCmd.setSignerName(cmd.getControllerName()); + + // 保存签字任务到 eval_sign_task + upsertSignTask(entity.getId(), projectId, project.getOrgId(), + ProjectStageEnum.PROCESS_CONTROL.getMsg(), ProjectStageEnum.PROCESS_CONTROL.getVal(), signTaskPersonCmd); + safetyMessageGateway.saveSignMsg(ProjectStageEnum.PROCESS_CONTROL.getMsg() + , ProjectStageEnum.PROCESS_CONTROL.getVal(), String.valueOf(projectId) + , String.valueOf(signTaskPersonCmd.getSignerPersonnelId())); + return SingleResponse.success(); } @@ -183,60 +195,36 @@ public class EvalProcessControlExecutor implements EvalProcessControlApi { throw new BizException(ErrorCode.EVAL_PROJECT_ARCHIVED); } EvalProcessControlEntity entity = evalProcessControlGateway.getByProjectId(projectId, project.getOrgId()); - if (entity == null) { - // 没有数据则新增,并下发签字任务 - entity = new EvalProcessControlEntity(); - entity.setOrgId(project.getOrgId()); - entity.setProjectId(projectId); - entity.setStatusCode(1); - entity.setReviewerSignatureTaskStatus(SignatureTaskStatusEnum.DISPATCHED.getCode()); - entity.setOpinionContent(cmd.getOpinionContent()); - evalProcessControlGateway.save(entity); - } else { - entity.setReviewerSignatureTaskStatus(SignatureTaskStatusEnum.DISPATCHED.getCode()); - entity.setOpinionContent(cmd.getOpinionContent()); - evalProcessControlGateway.modify(entity); + if (entity == null || !entity.getReviewerSignatureTaskStatus().equals(SignatureTaskStatusEnum.COMPLETED.getCode())) { + throw new BizException(ErrorCode.UNKNOWN_ERROR.getCode(), "请先完成过程控制人签字"); } + + entity.setOrgHeadSignatureTaskStatus(SignatureTaskStatusEnum.DISPATCHED.getCode()); + entity.setOpinionContent(cmd.getOpinionContent()); + evalProcessControlGateway.modify(entity); + // 保存签字任务到 eval_sign_task upsertSignTask(entity.getId(), projectId, project.getOrgId(), - ProjectStageEnum.PROCESS_CONTROL, cmd.getSignTaskPersonCmd()); - safetyMessageGateway.saveSignMsg(ProjectStageEnum.PROCESS_CONTROL.getMsg() + ProjectStageEnum.ORG_HEAD_MSG, ProjectStageEnum.PROCESS_CONTROL.getVal(), cmd.getSignTaskPersonCmd()); + safetyMessageGateway.saveSignMsg(ProjectStageEnum.ORG_HEAD_MSG , ProjectStageEnum.PROCESS_CONTROL.getVal(), String.valueOf(projectId) , String.valueOf(cmd.getSignTaskPersonCmd().getSignerPersonnelId())); return SingleResponse.success(); } private void upsertSignTask(Long bizRefId, Long projectId, Long orgId, - ProjectStageEnum stage, SignTaskPersonCmd person) { - EvalSignTaskDO existTask = evalSignTaskMapper.selectOne(new LambdaQueryWrapper() - .select(EvalSignTaskDO::getId) - .eq(EvalSignTaskDO::getProjectId, projectId) - .eq(EvalSignTaskDO::getBizRefId, bizRefId) - .eq(EvalSignTaskDO::getDeleteEnum, BooleanQAEnum.FALSE.getValue()) - .last(" limit 1 ")); - if (existTask != null && existTask.getTaskStatusCode() != null && existTask.getTaskStatusCode() == 2) { - throw new BizException(ErrorCode.SIGN_TASK_ALREADY_COMPLETED); - } - if (existTask != null) { - EvalSignTaskDO update = new EvalSignTaskDO(); - update.setId(existTask.getId()); - update.setSignerPersonnelId(person.getSignerPersonnelId()); - update.setTaskStatusCode(1); - InsertFieldDefaults.applyForUpdate(update); - evalSignTaskMapper.updateById(update); - } else { - EvalSignTaskDO task = new EvalSignTaskDO(); - task.setOrgId(orgId); - task.setProjectId(projectId); - task.setNodeCode(stage.getVal()); - task.setIssueTime(LocalDateTime.now()); - task.setBizRefId(bizRefId); - task.setSignerPersonnelId(person.getSignerPersonnelId()); - task.setTaskTitle(stage.getMsg() + "签字任务"); - task.setTaskStatusCode(1); - InsertFieldDefaults.apply(task); - evalSignTaskMapper.insert(task); - } + String taskTitle, String state, SignTaskPersonCmd person) { + EvalSignTaskDO task = new EvalSignTaskDO(); + task.setOrgId(orgId); + task.setProjectId(projectId); + task.setNodeCode(state); + task.setIssueTime(LocalDateTime.now()); + task.setBizRefId(bizRefId); + task.setSignerPersonnelId(person.getSignerPersonnelId()); + task.setTaskTitle(taskTitle + "签字任务"); + task.setTaskStatusCode(1); + InsertFieldDefaults.apply(task); + evalSignTaskMapper.insert(task); } @Override diff --git a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/co/institution/EvalProcessControlCO.java b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/co/institution/EvalProcessControlCO.java index e117525..cef79bc 100644 --- a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/co/institution/EvalProcessControlCO.java +++ b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/co/institution/EvalProcessControlCO.java @@ -22,6 +22,12 @@ public class EvalProcessControlCO { private String reviewerSignatureUrl; @ApiModelProperty(value = "审核签字任务状态 dispatched 下发,non_dispatched 未下发 , completed 已完成", example = "non_dispatched") private String reviewerSignatureTaskStatus; + @ApiModelProperty(value = "机构负责人签字任务状态 dispatched 下发,non_dispatched 未下发 , completed 已完成", example = "non_dispatched") + private String orgHeadSignatureTaskStatus; + @ApiModelProperty(value = "机构负责人") + private Long orgHeadPersonnelId; + @ApiModelProperty(value = "机构负责人签字") + private String orgHeadSignatureUrl; @ApiModelProperty(value = "审核结果 passed 通过,not_passed 未通过", example = "passed") private String resultCode; diff --git a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/dto/institution/EvalProcessControlAssignCmd.java b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/dto/institution/EvalProcessControlAssignCmd.java index 1e4d8a5..c4c20c6 100644 --- a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/dto/institution/EvalProcessControlAssignCmd.java +++ b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/dto/institution/EvalProcessControlAssignCmd.java @@ -25,4 +25,7 @@ public class EvalProcessControlAssignCmd { @ApiModelProperty(value = "审核签字任务状态 dispatched 下发,non_dispatched 未下发", example = "non_dispatched", hidden = true) private String reviewerSignatureTaskStatus; + + @ApiModelProperty(value = "机构负责人签字任务状态 dispatched 下发,non_dispatched 未下发 , completed 已完成", example = "non_dispatched", hidden = true) + private String orgHeadSignatureTaskStatus; } diff --git a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/dto/institution/EvalProcessControlConfirmCmd.java b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/dto/institution/EvalProcessControlConfirmCmd.java index 1816cc6..fde6d69 100644 --- a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/dto/institution/EvalProcessControlConfirmCmd.java +++ b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/dto/institution/EvalProcessControlConfirmCmd.java @@ -5,6 +5,7 @@ import lombok.Data; import org.qinan.safetyeval.client.item.request.EvalReviewItemAddCmd; import javax.validation.Valid; +import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; import javax.validation.constraints.Size; import java.time.LocalDateTime; @@ -17,11 +18,21 @@ public class EvalProcessControlConfirmCmd { private Long id; @ApiModelProperty("项目id") + @NotNull private Long projectId; @ApiModelProperty(value = "审核结果 passed 通过,not_passed 未通过", example = "passed") private String resultCode; + @ApiModelProperty("过程控制负责人人员id") + @NotNull + private Long controllerPersonnelId; + + @ApiModelProperty("过程控制负责人姓名") + @NotBlank + private String controllerName; + + @ApiModelProperty(value = "总体过程控制意见") @Size(max = 2000) private String opinionContent; diff --git a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/dto/institution/EvalProcessControlSaveCmd.java b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/dto/institution/EvalProcessControlSaveCmd.java index 3b9e4ce..2f41795 100644 --- a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/dto/institution/EvalProcessControlSaveCmd.java +++ b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/dto/institution/EvalProcessControlSaveCmd.java @@ -144,6 +144,12 @@ public class EvalProcessControlSaveCmd { private String reviewerSignatureUrl; @ApiModelProperty(value = "审核签字任务状态 dispatched 下发,non_dispatched 未下发 , completed 已完成", example = "non_dispatched") private String reviewerSignatureTaskStatus; + @ApiModelProperty(value = "机构负责人签字任务状态 dispatched 下发,non_dispatched 未下发 , completed 已完成", example = "non_dispatched") + private String orgHeadSignatureTaskStatus; + @ApiModelProperty(value = "机构负责人") + private String orgHeadPersonnelId; + @ApiModelProperty(value = "机构负责人签字") + private String orgHeadSignatureUrl; @ApiModelProperty(value = "过程控制结论编码:1通过 2退回", example = "1") private String resultCode; @ApiModelProperty(value = "过程控制结论名称:通过/退回", example = "通过") diff --git a/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/constant/ProjectStageEnum.java b/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/constant/ProjectStageEnum.java index 4bb2e20..b3c3a88 100644 --- a/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/constant/ProjectStageEnum.java +++ b/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/constant/ProjectStageEnum.java @@ -31,6 +31,13 @@ public enum ProjectStageEnum { private final String msg; @Getter private final String node; + + /** + * 过程控制中机构负责人签字 + */ + public static final String ORG_HEAD = "ORG_HEAD"; + public static final String ORG_HEAD_MSG = "机构负责人"; + /** * 根据 val(英文大写)查找枚举 */ diff --git a/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/entity/EvalProcessControlEntity.java b/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/entity/EvalProcessControlEntity.java index 14888b6..226398f 100644 --- a/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/entity/EvalProcessControlEntity.java +++ b/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/entity/EvalProcessControlEntity.java @@ -16,6 +16,12 @@ public class EvalProcessControlEntity { private String reviewerSignatureUrl; /** 审核签字任务状态 dispatched 下发,non_dispatched 未下发 , completed 已完成 */ private String reviewerSignatureTaskStatus; + /** 机构负责人签字任务状态 dispatched 下发,non_dispatched 未下发 , completed 已完成 */ + private String orgHeadSignatureTaskStatus; + /** 机构负责人 */ + private Long orgHeadPersonnelId; + /** 机构负责人签字 */ + private String orgHeadSignatureUrl; private Integer precheckPassFlag; private String resultCode; private String resultName; diff --git a/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/dataobject/EvalProcessControlDO.java b/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/dataobject/EvalProcessControlDO.java index c3e09ea..4f714d8 100644 --- a/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/dataobject/EvalProcessControlDO.java +++ b/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/dataobject/EvalProcessControlDO.java @@ -17,6 +17,12 @@ public class EvalProcessControlDO { private String reviewerSignatureUrl; /** 审核签字任务状态 dispatched 下发,non_dispatched 未下发 , completed 已完成 */ private String reviewerSignatureTaskStatus; + /** 机构负责人签字任务状态 dispatched 下发,non_dispatched 未下发 , completed 已完成 */ + private String orgHeadSignatureTaskStatus; + /** 机构负责人 */ + private Long orgHeadPersonnelId; + /** 机构负责人签字 */ + private String orgHeadSignatureUrl; /** 前7节点是否全部完成:1是 2否,示例:2 */ private Integer precheckPassFlag; /** 过程控制结论编码:1通过 2退回,示例:1 */