diff --git a/rdms-project/rdms-project-boot/src/main/java/com/njcn/rdms/module/project/dal/mysql/project/execution/ProjectExecutionMapper.java b/rdms-project/rdms-project-boot/src/main/java/com/njcn/rdms/module/project/dal/mysql/project/execution/ProjectExecutionMapper.java index 1d82ea7..a9d80ce 100644 --- a/rdms-project/rdms-project-boot/src/main/java/com/njcn/rdms/module/project/dal/mysql/project/execution/ProjectExecutionMapper.java +++ b/rdms-project/rdms-project-boot/src/main/java/com/njcn/rdms/module/project/dal/mysql/project/execution/ProjectExecutionMapper.java @@ -155,6 +155,18 @@ public interface ProjectExecutionMapper extends BaseMapperX projectId, reqVO, statusCode, terminalStatusCodes, today, weekStart, weekEnd)); } + /** + * 统计指定项目下处于非终态的执行数。用于项目 complete 前置校验(TD-015)。 + */ + default Integer countNonTerminalByProjectId(Long projectId, List terminalStatusCodes) { + LambdaQueryWrapperX queryWrapper = new LambdaQueryWrapperX() + .eq(ProjectExecutionDO::getProjectId, projectId); + if (terminalStatusCodes != null && !terminalStatusCodes.isEmpty()) { + queryWrapper.notIn(ProjectExecutionDO::getStatusCode, terminalStatusCodes); + } + return Math.toIntExact(selectCount(queryWrapper)); + } + /** * 项目下指定状态的执行计数(与 doSelectPageByProjectId 同款过滤口径)。 * 同上:用 @Select 显式表别名 t 替代 LambdaWrapper + .apply EXISTS 写法。