dev
luotaiqian 2026-07-24 09:03:13 +08:00
parent c997360627
commit ccf91b290c
2 changed files with 32 additions and 0 deletions

View File

@ -1,5 +1,6 @@
package org.qinan.safetyeval.app.executor.institution; package org.qinan.safetyeval.app.executor.institution;
import com.alibaba.fastjson2.JSON;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import org.qinan.safetyeval.app.executor.institution.support.EvalCmdCopy; import org.qinan.safetyeval.app.executor.institution.support.EvalCmdCopy;
import org.qinan.safetyeval.app.executor.institution.support.EvalNodeCoConverter; import org.qinan.safetyeval.app.executor.institution.support.EvalNodeCoConverter;
@ -9,6 +10,7 @@ import org.qinan.safetyeval.client.api.institution.EvalProcessControlApi;
import org.qinan.safetyeval.client.co.institution.EvalProcessControlCO; import org.qinan.safetyeval.client.co.institution.EvalProcessControlCO;
import org.qinan.safetyeval.client.co.institution.EvalProcessControlDetailCO; import org.qinan.safetyeval.client.co.institution.EvalProcessControlDetailCO;
import org.qinan.safetyeval.client.co.institution.EvalProjectFileCO; import org.qinan.safetyeval.client.co.institution.EvalProjectFileCO;
import org.qinan.safetyeval.client.co.institution.ProjectNodeCO;
import org.qinan.safetyeval.client.dto.SingleResponse; import org.qinan.safetyeval.client.dto.SingleResponse;
import org.qinan.safetyeval.client.dto.institution.EvalProcessArchiveCmd; import org.qinan.safetyeval.client.dto.institution.EvalProcessArchiveCmd;
import org.qinan.safetyeval.client.dto.institution.EvalProcessControlAssignCmd; import org.qinan.safetyeval.client.dto.institution.EvalProcessControlAssignCmd;
@ -43,6 +45,7 @@ import org.qinan.safetyeval.infrastructure.persistence.queryservice.*;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.time.LocalDateTime; import java.time.LocalDateTime;
@ -121,6 +124,8 @@ public class EvalProcessControlExecutor implements EvalProcessControlApi {
public SingleResponse<Void> confirm(EvalProcessControlConfirmCmd cmd) { public SingleResponse<Void> confirm(EvalProcessControlConfirmCmd cmd) {
Long projectId = cmd.getProjectId(); Long projectId = cmd.getProjectId();
EvalProjectEntity project = evalProjectNodeSupport.requireProject(projectId); EvalProjectEntity project = evalProjectNodeSupport.requireProject(projectId);
// 校验前置节点是否全部完成(过程控制节点除外)
assertPreNodesCompleted(project);
// 判断项目是否归档 // 判断项目是否归档
if (project.getArchiveFlag() != null && project.getArchiveFlag() == 1) { if (project.getArchiveFlag() != null && project.getArchiveFlag() == 1) {
throw new BizException(ErrorCode.EVAL_PROJECT_ARCHIVED); throw new BizException(ErrorCode.EVAL_PROJECT_ARCHIVED);
@ -158,6 +163,8 @@ public class EvalProcessControlExecutor implements EvalProcessControlApi {
public SingleResponse<Void> assign(EvalProcessControlAssignCmd cmd) { public SingleResponse<Void> assign(EvalProcessControlAssignCmd cmd) {
Long projectId = cmd.getProjectId(); Long projectId = cmd.getProjectId();
EvalProjectEntity project = evalProjectNodeSupport.requireProject(projectId); EvalProjectEntity project = evalProjectNodeSupport.requireProject(projectId);
// 校验前置节点是否全部完成(过程控制节点除外)
assertPreNodesCompleted(project);
// 判断项目是否归档 // 判断项目是否归档
if (project.getArchiveFlag() != null && project.getArchiveFlag() == 1) { if (project.getArchiveFlag() != null && project.getArchiveFlag() == 1) {
throw new BizException(ErrorCode.EVAL_PROJECT_ARCHIVED); throw new BizException(ErrorCode.EVAL_PROJECT_ARCHIVED);
@ -236,6 +243,10 @@ public class EvalProcessControlExecutor implements EvalProcessControlApi {
@Override @Override
public SingleResponse<EvalProcessControlCO> generateHandoverForm(EvalProcessHandoverFormCmd cmd) { public SingleResponse<EvalProcessControlCO> generateHandoverForm(EvalProcessHandoverFormCmd cmd) {
Long projectId = Long.parseLong(cmd.getProjectId());
EvalProjectEntity project = evalProjectNodeSupport.requireProject(projectId);
// 校验前置节点是否全部完成(过程控制节点除外)
assertPreNodesCompleted(project);
// TODO 归档交接单生成功能暂未实现 // TODO 归档交接单生成功能暂未实现
return SingleResponse.success(null); return SingleResponse.success(null);
} }
@ -399,4 +410,24 @@ public class EvalProcessControlExecutor implements EvalProcessControlApi {
throw new BizException(ErrorCode.EVAL_ARCHIVE_SIGN_INCOMPLETE); throw new BizException(ErrorCode.EVAL_ARCHIVE_SIGN_INCOMPLETE);
} }
} }
/**
* PROCESS_CONTROL state 1
*/
private void assertPreNodesCompleted(EvalProjectEntity project) {
String projectNode = project.getProjectNode();
if (!StringUtils.hasText(projectNode)) {
throw new BizException(ErrorCode.EVAL_PROCESS_PRE_NODES_INCOMPLETE);
}
List<ProjectNodeCO> nodes = JSON.parseArray(projectNode, ProjectNodeCO.class);
if (CollectionUtils.isEmpty(nodes)) {
throw new BizException(ErrorCode.EVAL_PROCESS_PRE_NODES_INCOMPLETE);
}
boolean allCompleted = nodes.stream()
.filter(n -> !ProjectStageEnum.PROCESS_CONTROL.getVal().equals(n.getType()))
.allMatch(n -> n.getState() != null && n.getState() == 1);
if (!allCompleted) {
throw new BizException(ErrorCode.EVAL_PROCESS_PRE_NODES_INCOMPLETE);
}
}
} }

View File

@ -160,6 +160,7 @@ public enum ErrorCode {
EVAL_ARCHIVE_SIGN_INCOMPLETE("06-05-017", "签字未完成,无法归档"), EVAL_ARCHIVE_SIGN_INCOMPLETE("06-05-017", "签字未完成,无法归档"),
EVAL_HANDOVER_FORM_NOT_CREATED("06-05-018", "归档交接单未生成,无法归档"), EVAL_HANDOVER_FORM_NOT_CREATED("06-05-018", "归档交接单未生成,无法归档"),
EVAL_PROJECT_ERROR("06-05-019", "项目不存在"), EVAL_PROJECT_ERROR("06-05-019", "项目不存在"),
EVAL_PROCESS_PRE_NODES_INCOMPLETE("06-05-020", "前置节点未完成,无法操作过程控制"),
// ---- 监督检查告知phase2 P3 ---- // ---- 监督检查告知phase2 P3 ----
INSP_NOTICE_NOT_FOUND("06-06-001", "监督检查告知不存在"), INSP_NOTICE_NOT_FOUND("06-06-001", "监督检查告知不存在"),