dev
luotaiqian 2026-07-31 14:10:15 +08:00
parent ca6a702240
commit 97670a6efa
2 changed files with 16 additions and 15 deletions

View File

@ -46,8 +46,7 @@ import org.springframework.util.StringUtils;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.ArrayList; import java.util.*;
import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@Slf4j @Slf4j
@ -134,8 +133,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); assertPreNodesCompleted(project, Arrays.asList(ProjectStageEnum.PROCESS_CONTROL, ProjectStageEnum.ARCHIVE));
// 判断项目是否归档 // 判断项目是否归档
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);
@ -177,8 +176,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); assertPreNodesCompleted(project, Arrays.asList(ProjectStageEnum.PROCESS_CONTROL, ProjectStageEnum.ARCHIVE));
// 判断项目是否归档 // 判断项目是否归档
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);
@ -305,8 +304,8 @@ public class EvalProcessControlExecutor implements EvalProcessControlApi {
public SingleResponse<EvalProcessControlCO> generateProcessControlForm(EvalgenerateProcessControlFormCmd cmd) { public SingleResponse<EvalProcessControlCO> generateProcessControlForm(EvalgenerateProcessControlFormCmd cmd) {
Long projectId = Long.parseLong(cmd.getProjectId()); Long projectId = Long.parseLong(cmd.getProjectId());
EvalProjectEntity project = evalProjectNodeSupport.requireProject(projectId); EvalProjectEntity project = evalProjectNodeSupport.requireProject(projectId);
// 校验前置节点是否全部完成(过程控制节点除外) // 校验前置节点是否全部完成(过程控制、归档节点除外)
assertPreNodesCompleted(project); assertPreNodesCompleted(project, Arrays.asList(ProjectStageEnum.PROCESS_CONTROL, ProjectStageEnum.ARCHIVE));
// TODO 归档交接单生成功能暂未实现 // TODO 归档交接单生成功能暂未实现
return SingleResponse.success(null); return SingleResponse.success(null);
} }
@ -319,8 +318,8 @@ public class EvalProcessControlExecutor implements EvalProcessControlApi {
if (project.getArchiveFlag() != null && project.getArchiveFlag() == 1) { if (project.getArchiveFlag() != null && project.getArchiveFlag() == 1) {
throw new BizException(ErrorCode.EVAL_ARCHIVE_ALREADY_DONE); throw new BizException(ErrorCode.EVAL_ARCHIVE_ALREADY_DONE);
} }
// 校验前置节点是否全部完成(过程控制节点除外) // 校验前置节点是否全部完成(过程控制、归档节点除外)
assertPreNodesCompleted(project); assertPreNodesCompleted(project, Collections.singletonList(ProjectStageEnum.ARCHIVE));
EvalProcessControlEntity entity = evalProcessControlGateway.getByProjectId(projectId, project.getOrgId()); EvalProcessControlEntity entity = evalProcessControlGateway.getByProjectId(projectId, project.getOrgId());
if (entity == null) { if (entity == null) {
@ -609,9 +608,9 @@ public class EvalProcessControlExecutor implements EvalProcessControlApi {
} }
/** /**
* PROCESS_CONTROLARCHIVE state 1 * excludedStages state 1
*/ */
private void assertPreNodesCompleted(EvalProjectEntity project) { private void assertPreNodesCompleted(EvalProjectEntity project, List<ProjectStageEnum> excludedStages) {
String projectNode = project.getProjectNode(); String projectNode = project.getProjectNode();
if (!StringUtils.hasText(projectNode)) { if (!StringUtils.hasText(projectNode)) {
throw new BizException(ErrorCode.EVAL_PROCESS_PRE_NODES_INCOMPLETE); throw new BizException(ErrorCode.EVAL_PROCESS_PRE_NODES_INCOMPLETE);
@ -620,9 +619,11 @@ public class EvalProcessControlExecutor implements EvalProcessControlApi {
if (CollectionUtils.isEmpty(nodes)) { if (CollectionUtils.isEmpty(nodes)) {
throw new BizException(ErrorCode.EVAL_PROCESS_PRE_NODES_INCOMPLETE); throw new BizException(ErrorCode.EVAL_PROCESS_PRE_NODES_INCOMPLETE);
} }
Set<String> excludedVals = excludedStages.stream()
.map(ProjectStageEnum::getVal)
.collect(Collectors.toSet());
boolean allCompleted = nodes.stream() boolean allCompleted = nodes.stream()
.filter(n -> !ProjectStageEnum.PROCESS_CONTROL.getVal().equals(n.getType()) .filter(n -> !excludedVals.contains(n.getType()))
&& !ProjectStageEnum.ARCHIVE.getVal().equals(n.getType()))
.allMatch(n -> n.getState() != null && n.getState() == 1); .allMatch(n -> n.getState() != null && n.getState() == 1);
if (!allCompleted) { if (!allCompleted) {
throw new BizException(ErrorCode.EVAL_PROCESS_PRE_NODES_INCOMPLETE); throw new BizException(ErrorCode.EVAL_PROCESS_PRE_NODES_INCOMPLETE);

View File

@ -168,7 +168,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", "前置节点未完成,无法操作过程控制"), EVAL_PROCESS_PRE_NODES_INCOMPLETE("06-05-020", "前置节点未完成,无法操作"),
EVAL_PROJECT_NODE_NOT_FOUND("06-05-021", "节点不存在"), EVAL_PROJECT_NODE_NOT_FOUND("06-05-021", "节点不存在"),
// ---- 监督检查告知phase2 P3 ---- // ---- 监督检查告知phase2 P3 ----