luotaiqian 2026-08-05 19:17:06 +08:00
parent 737a68fa3b
commit d057e1fdda
11 changed files with 86 additions and 59 deletions

View File

@ -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`;

View File

@ -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 '机构负责人签字';

View File

@ -30,13 +30,13 @@ public class EvalProcessControlController {
private SmsRemote smsRemote; private SmsRemote smsRemote;
@ApiOperation("过程控制确认") @ApiOperation("过程控制确认+过程控制下发签字")
@PostMapping("/confirm") @PostMapping("/confirm")
public SingleResponse<Void> confirm(@Validated @RequestBody EvalProcessControlConfirmCmd cmd) { public SingleResponse<Void> confirm(@Validated @RequestBody EvalProcessControlConfirmCmd cmd) {
return evalProcessControlApi.confirm(cmd); return evalProcessControlApi.confirm(cmd);
} }
@ApiOperation("下发签字任务") @ApiOperation("评价机构负责人-下发签字任务")
@PostMapping("/assign") @PostMapping("/assign")
public SingleResponse<Void> assign(@Validated @RequestBody EvalProcessControlAssignCmd cmd) { public SingleResponse<Void> assign(@Validated @RequestBody EvalProcessControlAssignCmd cmd) {
return evalProcessControlApi.assign(cmd); return evalProcessControlApi.assign(cmd);

View File

@ -142,7 +142,6 @@ public class EvalProcessControlExecutor implements EvalProcessControlApi {
EvalProcessControlEntity entity = evalProcessControlConvertor.applyConfirmCmd(cmd); EvalProcessControlEntity entity = evalProcessControlConvertor.applyConfirmCmd(cmd);
EvalProcessControlDO evalProcessControlDO = evalProcessControlMapper.selectOne(new LambdaQueryWrapper<EvalProcessControlDO>() EvalProcessControlDO evalProcessControlDO = evalProcessControlMapper.selectOne(new LambdaQueryWrapper<EvalProcessControlDO>()
.select(EvalProcessControlDO::getId, EvalProcessControlDO::getReviewerSignatureTaskStatus)
.eq(EvalProcessControlDO::getProjectId, cmd.getProjectId())); .eq(EvalProcessControlDO::getProjectId, cmd.getProjectId()));
if (cmd.getId() != null && evalProcessControlDO == null) { if (cmd.getId() != null && evalProcessControlDO == null) {
throw new BizException(ErrorCode.EVAL_INTERNAL_REVIEW_NOT_FOUND); throw new BizException(ErrorCode.EVAL_INTERNAL_REVIEW_NOT_FOUND);
@ -154,6 +153,7 @@ public class EvalProcessControlExecutor implements EvalProcessControlApi {
} else { } else {
// id为空新增数据 // id为空新增数据
entity.setOrgId(project.getOrgId()); entity.setOrgId(project.getOrgId());
entity.setReviewerSignatureTaskStatus(SignatureTaskStatusEnum.DISPATCHED.getCode());
entity = evalProcessControlGateway.save(entity); entity = evalProcessControlGateway.save(entity);
} }
@ -168,6 +168,18 @@ public class EvalProcessControlExecutor implements EvalProcessControlApi {
itemE.setOrgId(project.getOrgId()); itemE.setOrgId(project.getOrgId());
evalReviewItemGateway.add(itemE); 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(); return SingleResponse.success();
} }
@ -183,60 +195,36 @@ public class EvalProcessControlExecutor implements EvalProcessControlApi {
throw new BizException(ErrorCode.EVAL_PROJECT_ARCHIVED); throw new BizException(ErrorCode.EVAL_PROJECT_ARCHIVED);
} }
EvalProcessControlEntity entity = evalProcessControlGateway.getByProjectId(projectId, project.getOrgId()); EvalProcessControlEntity entity = evalProcessControlGateway.getByProjectId(projectId, project.getOrgId());
if (entity == null) { if (entity == null || !entity.getReviewerSignatureTaskStatus().equals(SignatureTaskStatusEnum.COMPLETED.getCode())) {
// 没有数据则新增,并下发签字任务 throw new BizException(ErrorCode.UNKNOWN_ERROR.getCode(), "请先完成过程控制人签字");
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);
} }
entity.setOrgHeadSignatureTaskStatus(SignatureTaskStatusEnum.DISPATCHED.getCode());
entity.setOpinionContent(cmd.getOpinionContent());
evalProcessControlGateway.modify(entity);
// 保存签字任务到 eval_sign_task // 保存签字任务到 eval_sign_task
upsertSignTask(entity.getId(), projectId, project.getOrgId(), upsertSignTask(entity.getId(), projectId, project.getOrgId(),
ProjectStageEnum.PROCESS_CONTROL, cmd.getSignTaskPersonCmd()); ProjectStageEnum.ORG_HEAD_MSG, ProjectStageEnum.PROCESS_CONTROL.getVal(), cmd.getSignTaskPersonCmd());
safetyMessageGateway.saveSignMsg(ProjectStageEnum.PROCESS_CONTROL.getMsg() safetyMessageGateway.saveSignMsg(ProjectStageEnum.ORG_HEAD_MSG
, ProjectStageEnum.PROCESS_CONTROL.getVal(), String.valueOf(projectId) , ProjectStageEnum.PROCESS_CONTROL.getVal(), String.valueOf(projectId)
, String.valueOf(cmd.getSignTaskPersonCmd().getSignerPersonnelId())); , String.valueOf(cmd.getSignTaskPersonCmd().getSignerPersonnelId()));
return SingleResponse.success(); return SingleResponse.success();
} }
private void upsertSignTask(Long bizRefId, Long projectId, Long orgId, private void upsertSignTask(Long bizRefId, Long projectId, Long orgId,
ProjectStageEnum stage, SignTaskPersonCmd person) { String taskTitle, String state, SignTaskPersonCmd person) {
EvalSignTaskDO existTask = evalSignTaskMapper.selectOne(new LambdaQueryWrapper<EvalSignTaskDO>() EvalSignTaskDO task = new EvalSignTaskDO();
.select(EvalSignTaskDO::getId) task.setOrgId(orgId);
.eq(EvalSignTaskDO::getProjectId, projectId) task.setProjectId(projectId);
.eq(EvalSignTaskDO::getBizRefId, bizRefId) task.setNodeCode(state);
.eq(EvalSignTaskDO::getDeleteEnum, BooleanQAEnum.FALSE.getValue()) task.setIssueTime(LocalDateTime.now());
.last(" limit 1 ")); task.setBizRefId(bizRefId);
if (existTask != null && existTask.getTaskStatusCode() != null && existTask.getTaskStatusCode() == 2) { task.setSignerPersonnelId(person.getSignerPersonnelId());
throw new BizException(ErrorCode.SIGN_TASK_ALREADY_COMPLETED); task.setTaskTitle(taskTitle + "签字任务");
} task.setTaskStatusCode(1);
if (existTask != null) { InsertFieldDefaults.apply(task);
EvalSignTaskDO update = new EvalSignTaskDO(); evalSignTaskMapper.insert(task);
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);
}
} }
@Override @Override

View File

@ -22,6 +22,12 @@ public class EvalProcessControlCO {
private String reviewerSignatureUrl; private String reviewerSignatureUrl;
@ApiModelProperty(value = "审核签字任务状态 dispatched 下发non_dispatched 未下发 , completed 已完成", example = "non_dispatched") @ApiModelProperty(value = "审核签字任务状态 dispatched 下发non_dispatched 未下发 , completed 已完成", example = "non_dispatched")
private String reviewerSignatureTaskStatus; 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") @ApiModelProperty(value = "审核结果 passed 通过not_passed 未通过", example = "passed")
private String resultCode; private String resultCode;

View File

@ -25,4 +25,7 @@ public class EvalProcessControlAssignCmd {
@ApiModelProperty(value = "审核签字任务状态 dispatched 下发non_dispatched 未下发", example = "non_dispatched", hidden = true) @ApiModelProperty(value = "审核签字任务状态 dispatched 下发non_dispatched 未下发", example = "non_dispatched", hidden = true)
private String reviewerSignatureTaskStatus; private String reviewerSignatureTaskStatus;
@ApiModelProperty(value = "机构负责人签字任务状态 dispatched 下发non_dispatched 未下发 , completed 已完成", example = "non_dispatched", hidden = true)
private String orgHeadSignatureTaskStatus;
} }

View File

@ -5,6 +5,7 @@ import lombok.Data;
import org.qinan.safetyeval.client.item.request.EvalReviewItemAddCmd; import org.qinan.safetyeval.client.item.request.EvalReviewItemAddCmd;
import javax.validation.Valid; import javax.validation.Valid;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size; import javax.validation.constraints.Size;
import java.time.LocalDateTime; import java.time.LocalDateTime;
@ -17,11 +18,21 @@ public class EvalProcessControlConfirmCmd {
private Long id; private Long id;
@ApiModelProperty("项目id") @ApiModelProperty("项目id")
@NotNull
private Long projectId; private Long projectId;
@ApiModelProperty(value = "审核结果 passed 通过not_passed 未通过", example = "passed") @ApiModelProperty(value = "审核结果 passed 通过not_passed 未通过", example = "passed")
private String resultCode; private String resultCode;
@ApiModelProperty("过程控制负责人人员id")
@NotNull
private Long controllerPersonnelId;
@ApiModelProperty("过程控制负责人姓名")
@NotBlank
private String controllerName;
@ApiModelProperty(value = "总体过程控制意见") @ApiModelProperty(value = "总体过程控制意见")
@Size(max = 2000) @Size(max = 2000)
private String opinionContent; private String opinionContent;

View File

@ -144,6 +144,12 @@ public class EvalProcessControlSaveCmd {
private String reviewerSignatureUrl; private String reviewerSignatureUrl;
@ApiModelProperty(value = "审核签字任务状态 dispatched 下发non_dispatched 未下发 , completed 已完成", example = "non_dispatched") @ApiModelProperty(value = "审核签字任务状态 dispatched 下发non_dispatched 未下发 , completed 已完成", example = "non_dispatched")
private String reviewerSignatureTaskStatus; 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") @ApiModelProperty(value = "过程控制结论编码1通过 2退回", example = "1")
private String resultCode; private String resultCode;
@ApiModelProperty(value = "过程控制结论名称:通过/退回", example = "通过") @ApiModelProperty(value = "过程控制结论名称:通过/退回", example = "通过")

View File

@ -31,6 +31,13 @@ public enum ProjectStageEnum {
private final String msg; private final String msg;
@Getter @Getter
private final String node; private final String node;
/**
*
*/
public static final String ORG_HEAD = "ORG_HEAD";
public static final String ORG_HEAD_MSG = "机构负责人";
/** /**
* val * val
*/ */

View File

@ -16,6 +16,12 @@ public class EvalProcessControlEntity {
private String reviewerSignatureUrl; private String reviewerSignatureUrl;
/** 审核签字任务状态 dispatched 下发non_dispatched 未下发 , completed 已完成 */ /** 审核签字任务状态 dispatched 下发non_dispatched 未下发 , completed 已完成 */
private String reviewerSignatureTaskStatus; private String reviewerSignatureTaskStatus;
/** 机构负责人签字任务状态 dispatched 下发non_dispatched 未下发 , completed 已完成 */
private String orgHeadSignatureTaskStatus;
/** 机构负责人 */
private Long orgHeadPersonnelId;
/** 机构负责人签字 */
private String orgHeadSignatureUrl;
private Integer precheckPassFlag; private Integer precheckPassFlag;
private String resultCode; private String resultCode;
private String resultName; private String resultName;

View File

@ -17,6 +17,12 @@ public class EvalProcessControlDO {
private String reviewerSignatureUrl; private String reviewerSignatureUrl;
/** 审核签字任务状态 dispatched 下发non_dispatched 未下发 , completed 已完成 */ /** 审核签字任务状态 dispatched 下发non_dispatched 未下发 , completed 已完成 */
private String reviewerSignatureTaskStatus; private String reviewerSignatureTaskStatus;
/** 机构负责人签字任务状态 dispatched 下发non_dispatched 未下发 , completed 已完成 */
private String orgHeadSignatureTaskStatus;
/** 机构负责人 */
private Long orgHeadPersonnelId;
/** 机构负责人签字 */
private String orgHeadSignatureUrl;
/** 前7节点是否全部完成1是 2否示例2 */ /** 前7节点是否全部完成1是 2否示例2 */
private Integer precheckPassFlag; private Integer precheckPassFlag;
/** 过程控制结论编码1通过 2退回示例1 */ /** 过程控制结论编码1通过 2退回示例1 */