Browse Source

feat:

1. 待办统计不包含已终止的;
tags/25012001
WendyYang 1 month ago
parent
commit
7977adffc8
2 changed files with 26 additions and 11 deletions
  1. +1
    -0
      hz-pm-api/src/main/java/com/hz/pm/api/projectlib/manage/DeclaredRecordManage.java
  2. +25
    -11
      hz-pm-api/src/main/java/com/hz/pm/api/workbench/manage/WorkbenchManage.java

+ 1
- 0
hz-pm-api/src/main/java/com/hz/pm/api/projectlib/manage/DeclaredRecordManage.java View File

@@ -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(),


+ 25
- 11
hz-pm-api/src/main/java/com/hz/pm/api/workbench/manage/WorkbenchManage.java View File

@@ -350,13 +350,20 @@ public class WorkbenchManage {
public Integer processNodeNotFinishedCount(Map<String, List<ProjectStatusChange>> projectStatusChanges,
ProjectStateChangeEvent startEvent,
ProjectStateChangeEvent finishEvent,
Map<Long, List<Purchase>> projectPurchaseMap) {
Map<Long, List<Purchase>> projectPurchaseMap,
Map<String, Project> projectMap) {
return CollUtil.count(projectStatusChanges.entrySet(), w -> {
List<ProjectStatusChange> 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<Purchase> purchases = projectPurchaseMap.getOrDefault(projectId, Collections.emptyList());
@@ -380,7 +387,7 @@ public class WorkbenchManage {
// 查询完成立项备案的项目
List<Long> viewUnitIds = mhUnitCache.getViewChildIdsRecursion(req.getUnitId());
Wrapper<Project> 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<Project> projects = projectService.list(query);
Map<String, Project> projectMap = CollUtils.listToMap(projects, Project::getProjectCode);
Map<String, List<ProjectStatusChange>> 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<String> 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 {


Loading…
Cancel
Save