From 7977adffc8c5a256a14354f21e6f3086796377d1 Mon Sep 17 00:00:00 2001 From: WendyYang Date: Sat, 11 Jan 2025 19:06:50 +0800 Subject: [PATCH] =?UTF-8?q?feat:=201.=20=E5=BE=85=E5=8A=9E=E7=BB=9F?= =?UTF-8?q?=E8=AE=A1=E4=B8=8D=E5=8C=85=E5=90=AB=E5=B7=B2=E7=BB=88=E6=AD=A2?= =?UTF-8?q?=E7=9A=84=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../projectlib/manage/DeclaredRecordManage.java | 1 + .../pm/api/workbench/manage/WorkbenchManage.java | 36 +++++++++++++++------- 2 files changed, 26 insertions(+), 11 deletions(-) diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/projectlib/manage/DeclaredRecordManage.java b/hz-pm-api/src/main/java/com/hz/pm/api/projectlib/manage/DeclaredRecordManage.java index 3601c7c..6105cad 100644 --- a/hz-pm-api/src/main/java/com/hz/pm/api/projectlib/manage/DeclaredRecordManage.java +++ b/hz-pm-api/src/main/java/com/hz/pm/api/projectlib/manage/DeclaredRecordManage.java @@ -200,6 +200,7 @@ public class DeclaredRecordManage { .ne(Project::getStage, ProjectStatus.STOPPED.getCode()) .orderByDesc(Project::getUpdateOn); BizUtils.notNull(req.getCreateDateMax(), w -> query.lt(Project::getCreateOn, w.plusDays(1))); + query.isNotNull(Project::getApprovalAmount).ge(Project::getApprovalAmount, BigDecimal.ZERO); if (req.getStatus() == null) { query.and(q1 -> q1.in(Project::getStatus, ProjectStatus.DECLARED_APPROVED_RECORD_FAILED.getCode(), ProjectStatus.DECLARED_APPROVED_TO_BE_RECORD.getCode(), diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/workbench/manage/WorkbenchManage.java b/hz-pm-api/src/main/java/com/hz/pm/api/workbench/manage/WorkbenchManage.java index 1b59282..1c387a4 100644 --- a/hz-pm-api/src/main/java/com/hz/pm/api/workbench/manage/WorkbenchManage.java +++ b/hz-pm-api/src/main/java/com/hz/pm/api/workbench/manage/WorkbenchManage.java @@ -350,13 +350,20 @@ public class WorkbenchManage { public Integer processNodeNotFinishedCount(Map> projectStatusChanges, ProjectStateChangeEvent startEvent, ProjectStateChangeEvent finishEvent, - Map> projectPurchaseMap) { + Map> projectPurchaseMap, + Map projectMap) { return CollUtil.count(projectStatusChanges.entrySet(), w -> { List changes = w.getValue(); if (CollUtil.anyMatch(changes, w1 -> ProjectStateChangeEvent.STOPPED_APPLY_PASS.eq(w1.getEvent()) || ProjectStateChangeEvent.STOPPED_APPLY_AUTO_PASS.eq(w1.getEvent()))) { return false; } + if (startEvent.equals(ProjectStateChangeEvent.ANNUAL_PLAN_PASS)) { + Project project = projectMap.get(w.getKey()); + if (project.getApprovalAmount() == null || !NumberUtil.isGreater(project.getApprovalAmount(), BigDecimal.ZERO)) { + return false; + } + } if (startEvent.equals(ProjectStateChangeEvent.SUBMIT_PURCHASE_CONTRACT_RECORD)) { Long projectId = ProjectIdCodeCacheUtil.newest(w.getKey()); List purchases = projectPurchaseMap.getOrDefault(projectId, Collections.emptyList()); @@ -380,7 +387,7 @@ public class WorkbenchManage { // 查询完成立项备案的项目 List viewUnitIds = mhUnitCache.getViewChildIdsRecursion(req.getUnitId()); Wrapper query = Wrappers.lambdaQuery(Project.class) - .select(Project::getId, Project::getApprovalAmount, Project::getProjectCode, Project::getStatus) + .select(Project::getId, Project::getApprovalAmount, Project::getProjectCode, Project::getStatus, Project::getAnnualPlanOpened) .eq(Project::getProjectYear, req.getProjectYear()) .eq(req.getUnitStrip() != null, Project::getUnitStrip, req.getUnitStrip()) .eq(Project::getNewest, Boolean.TRUE) @@ -389,6 +396,7 @@ public class WorkbenchManage { ProjectStateChangeEvent.PROJECT_APPLICATION_SUBMIT) .in(Project::getBuildOrgCode, CollUtils.convert(viewUnitIds, String::valueOf)); List projects = projectService.list(query); + Map projectMap = CollUtils.listToMap(projects, Project::getProjectCode); Map> projectStatusChangeMap = new HashMap<>(); for (WorkbenchProcessNode node : WorkbenchProcessNode.ALL) { if (Arrays.asList(WorkbenchProcessNode.FINISHED, @@ -439,13 +447,14 @@ public class WorkbenchManage { currStat.setReviewFailedCount(reviewFailed); currStat.setPendingCount(processNodeNotFinishedCount(projectStatusChangeMap, ProjectStateChangeEvent.PROJECT_APPLICATION_SUBMIT, ProjectStateChangeEvent.PROJECT_REVIEW_PASS, - projectPurchaseCountMap)); + null, null)); } break; case APPROVAL_AMOUNT: { List projectCodes = projects.stream() .filter(w -> w.getApprovalAmount() != null - && NumberUtil.isGreater(w.getApprovalAmount(), BigDecimal.ZERO)) + && NumberUtil.isGreater(w.getApprovalAmount(), BigDecimal.ZERO) + && Boolean.TRUE.equals(w.getAnnualPlanOpened())) .map(Project::getProjectCode) .collect(Collectors.toList()); currStat.setProjectCount(projectCodes.size()); @@ -454,8 +463,8 @@ public class WorkbenchManage { currStat.setTargetCount(systemReplaceCount.getValue()); currStat.setStoppedCount(stoppedProjectCount(projectStatusChangeMap, ProjectStateChangeEvent.PROJECT_REVIEW_PASS, ProjectStateChangeEvent.ANNUAL_PLAN_PASS)); - currStat.setPendingCount(CollUtil.count(projects, w -> w.getApprovalAmount() == null - || NumberUtil.isLessOrEqual(w.getApprovalAmount(), BigDecimal.ZERO))); + currStat.setPendingCount(CollUtil.count(projects, w -> Boolean.TRUE.equals(w.getAnnualPlanOpened()) + && (w.getApprovalAmount() == null || NumberUtil.isLessOrEqual(w.getApprovalAmount(), BigDecimal.ZERO)))); } break; case PROJECT_APPROVAL: { @@ -468,7 +477,7 @@ public class WorkbenchManage { ProjectStateChangeEvent.ANNUAL_PLAN_PASS, ProjectStateChangeEvent.DECLARED_RECORD_PASS)); currStat.setPendingCount(processNodeNotFinishedCount(projectStatusChangeMap, ProjectStateChangeEvent.ANNUAL_PLAN_PASS, ProjectStateChangeEvent.DECLARED_RECORD_PASS, - projectPurchaseCountMap)); + null, projectMap)); } break; case PROJECT_PURCHASE: { @@ -506,7 +515,7 @@ public class WorkbenchManage { } currStat.setPendingCount(processNodeNotFinishedCount(projectStatusChangeMap, ProjectStateChangeEvent.DECLARED_RECORD_PASS, ProjectStateChangeEvent.SUBMIT_PURCHASE_CONTRACT_RECORD, - projectPurchaseCountMap)); + null, null)); } break; case PROJECT_ADAPTION: { @@ -541,7 +550,7 @@ public class WorkbenchManage { ProjectStateChangeEvent.SUBMIT_PURCHASE_CONTRACT_RECORD, ProjectStateChangeEvent.SUBMIT_PURCHASE_ORG_CONFIRM)); currStat.setPendingCount(processNodeNotFinishedCount(projectStatusChangeMap, ProjectStateChangeEvent.SUBMIT_PURCHASE_CONTRACT_RECORD, ProjectStateChangeEvent.SUBMIT_PURCHASE_ORG_CONFIRM, - projectPurchaseCountMap)); + projectPurchaseCountMap, null)); } break; case FIRST_INSPECTED: { @@ -554,7 +563,7 @@ public class WorkbenchManage { ProjectStateChangeEvent.SUBMIT_PURCHASE_ORG_CONFIRM, ProjectStateChangeEvent.SUBMIT_FIRST_INSPECTED_FILES)); currStat.setPendingCount(processNodeNotFinishedCount(projectStatusChangeMap, ProjectStateChangeEvent.SUBMIT_PURCHASE_ORG_CONFIRM, ProjectStateChangeEvent.SUBMIT_FIRST_INSPECTED_FILES, - projectPurchaseCountMap)); + null, null)); } break; case FINAL_INSPECTED: { @@ -567,7 +576,7 @@ public class WorkbenchManage { ProjectStateChangeEvent.SUBMIT_FIRST_INSPECTED_FILES, ProjectStateChangeEvent.FINAL_ACCEPTANCE_PASS)); currStat.setPendingCount(processNodeNotFinishedCount(projectStatusChangeMap, ProjectStateChangeEvent.SUBMIT_FIRST_INSPECTED_FILES, ProjectStateChangeEvent.FINAL_ACCEPTANCE_PASS, - projectPurchaseCountMap)); + null, null)); } break; default: @@ -679,7 +688,9 @@ public class WorkbenchManage { ProjectStateChangeEvent.PROJECT_APPLICATION_SUBMIT, ProjectStateChangeEvent.PROJECT_REVIEW_PASS); break; case APPROVAL_AMOUNT: + query.eq(Project::getAnnualPlanOpened, Boolean.TRUE); if (Boolean.FALSE.equals(req.getProcessNodeFinished())) { + query.ne(Project::getStatus, ProjectStatus.STOPPED_PASSED.getCode()); query.and(q1 -> q1.isNull(Project::getApprovalAmount) .or(q2 -> q2.le(Project::getApprovalAmount, BigDecimal.ZERO))); } else { @@ -687,6 +698,7 @@ public class WorkbenchManage { } break; case PROJECT_APPROVAL: + query.isNotNull(Project::getApprovalAmount).gt(Project::getApprovalAmount, BigDecimal.ZERO); projectProcessNodeFinishedQuery(query, req.getProcessNodeFinished(), ProjectStateChangeEvent.ANNUAL_PLAN_PASS, ProjectStateChangeEvent.DECLARED_RECORD_PASS); break; @@ -769,6 +781,7 @@ public class WorkbenchManage { AbstractStateChangeEvent startEvent, AbstractStateChangeEvent finishEvent) { if (Boolean.FALSE.equals(processNodeFinished)) { + query.ne(Project::getStatus, ProjectStatus.STOPPED_PASSED.getCode()); projectQueryExistsProjectStatusChange(query, startEvent); projectQueryNotExistsProjectStatusChange(query, finishEvent); } else { @@ -781,6 +794,7 @@ public class WorkbenchManage { AbstractStateChangeEvent startEvent, AbstractStateChangeEvent finishEvent) { if (Boolean.FALSE.equals(processNodeFinished)) { + query.ne(Project::getStatus, ProjectStatus.STOPPED_PASSED.getCode()); allPurchaseFinished(query, startEvent); anyPurchaseNotFinished(query, finishEvent); } else {