From f93dcd944632370d06dd97937660e51338fc7d81 Mon Sep 17 00:00:00 2001 From: climba Date: Fri, 10 Jan 2025 18:07:59 +0800 Subject: [PATCH] =?UTF-8?q?feat:=201.=20=E9=A1=B9=E7=9B=AE=E6=80=BB?= =?UTF-8?q?=E8=A7=88=E7=BB=9F=E8=AE=A1=E4=BF=AE=E6=94=B9=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../entity/enumeration/MeetingReviewTypeEnum.java | 4 +- .../hz/pm/api/meeting/manage/MeetingManage.java | 1 + .../controller/PurchaseController.java | 2 +- .../api/projectdeclared/manage/PurchaseManage.java | 282 ++++++++++----------- .../model/req/PurchaseAdaptionListReq.java | 3 + .../model/vo/AdaptionProgressVO.java | 18 +- .../manage/ProjectManageTodoCountManage.java | 4 +- .../model/enumeration/status/ProjectStatus.java | 2 + .../api/projectlib/model/vo/TenderListInfoVO.java | 3 + .../pm/api/workbench/manage/WorkbenchManage.java | 38 ++- 10 files changed, 177 insertions(+), 180 deletions(-) diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/meeting/entity/enumeration/MeetingReviewTypeEnum.java b/hz-pm-api/src/main/java/com/hz/pm/api/meeting/entity/enumeration/MeetingReviewTypeEnum.java index 813a136..eb0957c 100644 --- a/hz-pm-api/src/main/java/com/hz/pm/api/meeting/entity/enumeration/MeetingReviewTypeEnum.java +++ b/hz-pm-api/src/main/java/com/hz/pm/api/meeting/entity/enumeration/MeetingReviewTypeEnum.java @@ -21,7 +21,9 @@ public enum MeetingReviewTypeEnum { PROJECT_REVIEW("项目评审", "6"), - EXPERT_REVIEW("专家论证", "7"); + EXPERT_REVIEW("专家论证", "7"), + + OTHER("其他会议", "99"); private final String value; private final String code; diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/meeting/manage/MeetingManage.java b/hz-pm-api/src/main/java/com/hz/pm/api/meeting/manage/MeetingManage.java index bdbc0d5..db637eb 100644 --- a/hz-pm-api/src/main/java/com/hz/pm/api/meeting/manage/MeetingManage.java +++ b/hz-pm-api/src/main/java/com/hz/pm/api/meeting/manage/MeetingManage.java @@ -1099,6 +1099,7 @@ public class MeetingManage { switch (MeetingReviewTypeEnum.getNoNull(meetingType)) { case PROJECT_REVIEW: case EXPERT_REVIEW: + case OTHER: query.eq(Project::getStatus, ProjectStatus.WITHOUT_EXPERT_REVIEW.getCode()) .isNotNull(Project::getConstructionPlanSealFile); break; diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/controller/PurchaseController.java b/hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/controller/PurchaseController.java index e29e6f4..e6bfbde 100644 --- a/hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/controller/PurchaseController.java +++ b/hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/controller/PurchaseController.java @@ -110,7 +110,7 @@ public class PurchaseController { @GetMapping("/pageAdaption") @ApiOperation("获取适配改造列表") - public PageVo pageAdaption(PurchaseAdaptionListReq req) { + public PageVo pageAdaption(PurchaseAdaptionListReq req) { return purchaseManage.adaptList(req); } diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/manage/PurchaseManage.java b/hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/manage/PurchaseManage.java index d44a0ed..33ffff3 100644 --- a/hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/manage/PurchaseManage.java +++ b/hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/manage/PurchaseManage.java @@ -29,7 +29,6 @@ import com.hz.pm.api.external.MhApiClient; import com.hz.pm.api.external.MhFileClient; import com.hz.pm.api.external.model.dto.MhPurchaseIntentionDTO; import com.hz.pm.api.external.model.dto.MhPurchaseNoticeDTO; -import com.hz.pm.api.external.model.enumeration.MhUnitStripEnum; import com.hz.pm.api.external.todo.enumerization.MHTodoTypeEnum; import com.hz.pm.api.projectdeclared.chain.ProjectStatusRewriteHandlerContext; import com.hz.pm.api.projectdeclared.helper.MhXcfhxReportHelper; @@ -100,8 +99,7 @@ import java.util.concurrent.atomic.AtomicInteger; import java.util.stream.Collectors; import java.util.stream.Stream; -import static com.hz.pm.api.projectlib.model.enumeration.status.TenderMainStatus.PURCHASE_NOTICE_FAILED; -import static com.hz.pm.api.projectlib.model.enumeration.status.TenderMainStatus.TO_BE_SUBMIT_PURCHASE_NOTICE; +import static com.hz.pm.api.projectlib.model.enumeration.status.TenderMainStatus.*; /** *

@@ -720,178 +718,156 @@ public class PurchaseManage { } public AdaptionProgressVO adaptionProgress(PurchaseAdaptionListReq req) { - LambdaQueryWrapper query = Wrappers.lambdaQuery(Purchase.class) - .select(Purchase::getStatus, Purchase::getId) - .eq(Purchase::getBidType, BidTypeEnum.BUILD_APP.getCode()) - .exists(ExistsSqlConst.PURCHASE_EXISTS_STATUS_CHANGE - + " and npsc.event = {0}", TenderStateChangeEvent.SUBMIT_PURCHASE_CONSTRUCTION_INFO) - .notExists(ExistsSqlConst.PURCHASE_EXISTS_PROJECT - + "and (np.stage = {0} or np.status in ({1},{2}))", ProjectStatus.STOPPED.getCode(), - ProjectStatus.CHANGE_APPLY_PASSED.getCode(), ProjectStatus.DELETED_PASSED.getCode()) - .orderByDesc(Purchase::getCreateOn); - UserFullInfoDTO user = userInfoHelper.getUserFullInfo(LoginUserUtil.getUserId()); - if (!purchaseService.buildPurchaseQueryPermission(query, user)) { - return null; + UnitQueryState unitQueryState = mhUnitQueryAuthHelper.listCanViewUnitIds(req.getBuildOrgCode()); + if (!unitQueryState.isState()) { + return new AdaptionProgressVO(); } - if (req.hasProjectQuery()) { - List projectIds = filterProjectIdsForPurchase(req); - if (projectIds.isEmpty()) { - return null; - } - query.in(Purchase::getProjectId, projectIds); + LambdaQueryWrapper projQuery = Wrappers.lambdaQuery(Project.class) + .eq(Project::getNewest, Boolean.TRUE) + .eq(req.getProjectYear() != null, Project::getProjectYear, req.getProjectYear()) + .like(StrUtil.isNotBlank(req.getProjectName()), Project::getProjectName, req.getProjectName()) + .like(StrUtil.isNotBlank(req.getBuildOrgName()), Project::getBuildOrgName, req.getBuildOrgName()) + .eq(req.getUnitStrip() != null, Project::getUnitStrip, req.getUnitStrip()); + BizUtils.notEmpty(unitQueryState.getUnitIds(), w -> { + List buildOrgCodeStr = CollUtils.convert(w, String::valueOf); + projQuery.in(Project::getBuildOrgCode, buildOrgCodeStr); + }); + projQuery.select(Project::getId); + projQuery.exists(ExistsSqlConst.PROJECT_EXISTS_STATUS_CHANGE + + " and npsc.event = {0}", ProjectStateChangeEvent.SUBMIT_PURCHASE_CONTRACT_RECORD) + .exists(ExistsSqlConst.PROJECT_EXISTS_PURCHASE + + " and np.bid_type = {0}", BidTypeEnum.BUILD_APP.getCode()) + .notIn(Project::getStatus, ProjectStatusConstant.CHANGE_STOP_DELETE_PASSED); + List projectIds = CollUtils.fieldList(projectService.list(projQuery), Project::getId); + if (projectIds.isEmpty()) { + return new AdaptionProgressVO(); } - query.like(StrUtil.isNotBlank(req.getBidName()), Purchase::getBidName, req.getBidName()) - .le(req.getCreateOnMax() != null, Purchase::getCreateOn, req.getCreateOnMax()) - .ge(req.getCreateOnMin() != null, Purchase::getCreateOn, req.getCreateOnMin()); - List purchases = purchaseService.list(query); + Wrapper purQuery = Wrappers.lambdaQuery(Purchase.class) + .select(Purchase::getProjectId, Purchase::getBidType, Purchase::getStatus) + .in(Purchase::getProjectId, projectIds) + .eq(Purchase::getBidType, BidTypeEnum.BUILD_APP.getCode()); + List purchases = purchaseService.list(purQuery); return adaptionProgress(purchases); } + private static final List ON_ADAPTING_STATUS = Arrays.asList( + TenderMainStatus.TO_BE_SUBMIT_OPERATION_PLAN.getCode(), + TenderMainStatus.WAIT_ORG_CONFIRM.getCode(), + TenderAdaptStatus.WITHOUT_ADAPT_INFO.getCode(), + TenderAdaptStatus.ADAPT_INFO_AUDIT.getCode(), + TenderAdaptStatus.ADAPT_INFO_FAILED.getCode(), + TenderTestValidStatus.WITHOUT_TEST_VALID_INFO.getCode(), + TenderTestValidStatus.TEST_VALID_INFO_AUDIT.getCode(), + TenderTestValidStatus.TEST_VALID_INFO_FAILED.getCode(), + TenderSelfTestStatus.WITHOUT_SELF_TEST_INFO.getCode(), + TenderSelfTestStatus.SELF_TEST_INFO_FAILED.getCode(), + TenderSelfTestStatus.SELF_TEST_INFO_AUDIT.getCode() + ); + public AdaptionProgressVO adaptionProgress(List purchases) { - Map statusCountMap = CollUtils.groupCount(purchases, - w -> { - ITenderStatus status = TenderMainStatus.getNoNull(w.getStatus()); - if (TenderMainStatus.TO_BE_SUBMIT_OPERATION_PLAN.eq(status)) { - return TenderMainStatus.TO_BE_SUBMIT_OPERATION_PLAN; - } else if (TenderMainStatus.WAIT_ORG_CONFIRM.eq(status)) { - return TenderMainStatus.WAIT_ORG_CONFIRM; - } else if (TenderAdaptStatus.WITHOUT_ADAPT_INFO.eq(status) - || TenderAdaptStatus.ADAPT_INFO_AUDIT.eq(status) - || TenderAdaptStatus.ADAPT_INFO_FAILED.eq(status)) { - return TenderAdaptStatus.WITHOUT_ADAPT_INFO; - } else if (TenderSelfTestStatus.WITHOUT_SELF_TEST_INFO.eq(status) - || TenderSelfTestStatus.SELF_TEST_INFO_AUDIT.eq(status) - || TenderSelfTestStatus.SELF_TEST_INFO_FAILED.eq(status)) { - return TenderSelfTestStatus.WITHOUT_SELF_TEST_INFO; - } else if (TenderTestValidStatus.WITHOUT_TEST_VALID_INFO.eq(status) - || TenderTestValidStatus.TEST_VALID_INFO_AUDIT.eq(status) - || TenderTestValidStatus.TEST_VALID_INFO_FAILED.eq(status)) { - return TenderTestValidStatus.WITHOUT_TEST_VALID_INFO; - } else { - return status; - } - }); + Map> purchaseMap = CollUtils.group(purchases, Purchase::getProjectId); + Map statusCountMap = CollUtils.groupCount(purchaseMap.values(), w -> { + List buildAppBidStatus = w.stream() + .filter(x -> BidTypeEnum.BUILD_APP.eq(x.getBidType())) + .map(Purchase::getStatus) + .collect(Collectors.toList()); + if (CollUtil.allMatch(buildAppBidStatus, TO_BE_SUBMIT_OPERATION_PLAN::eq)) { + return ProjectStatus.TO_BE_ADAPT; + } else if (CollUtil.anyMatch(buildAppBidStatus, ON_ADAPTING_STATUS::contains)) { + return ProjectStatus.ON_ADAPTING; + } else { + return ProjectStatus.FINISH_ADAPT; + } + }); return AdaptionProgressVO.builder() - .withoutAdaptionInfo(statusCountMap.getOrDefault(TenderAdaptStatus.WITHOUT_ADAPT_INFO, 0L)) - .withoutOperationCount(statusCountMap.getOrDefault(TenderMainStatus.TO_BE_SUBMIT_OPERATION_PLAN, 0L)) - .withoutOrgConfirmCount(statusCountMap.getOrDefault(TenderMainStatus.WAIT_ORG_CONFIRM, 0L)) - .withoutSelfTestCount(statusCountMap.getOrDefault(TenderSelfTestStatus.WITHOUT_SELF_TEST_INFO, 0L)) - .withoutTestValidCount(statusCountMap.getOrDefault(TenderTestValidStatus.WITHOUT_TEST_VALID_INFO, 0L)) - .totalCount(purchases.size()) + .toBeAdapt(statusCountMap.getOrDefault(ProjectStatus.TO_BE_ADAPT, 0L)) + .onAdapting(statusCountMap.getOrDefault(ProjectStatus.ON_ADAPTING, 0L)) + .finishAdapt(statusCountMap.getOrDefault(ProjectStatus.FINISH_ADAPT, 0L)) + .totalCount(purchaseMap.size()) .build(); } - private PageVo queryData(PurchaseAdaptionListReq req) { - LambdaQueryWrapper query = Wrappers.lambdaQuery(Purchase.class) - .eq(Purchase::getBidType, BidTypeEnum.BUILD_APP.getCode()) - .exists(ExistsSqlConst.PURCHASE_EXISTS_STATUS_CHANGE - + " and npsc.event = {0}", TenderStateChangeEvent.SUBMIT_PURCHASE_CONSTRUCTION_INFO) - .notExists(ExistsSqlConst.PURCHASE_EXISTS_PROJECT - + "and (np.stage = {0} or np.status in ({1},{2}))", ProjectStatus.STOPPED.getCode(), - ProjectStatus.CHANGE_APPLY_PASSED.getCode(), ProjectStatus.DELETED_PASSED.getCode()) - .orderByDesc(Purchase::getCreateOn); - UserFullInfoDTO user = userInfoHelper.getUserFullInfo(LoginUserUtil.getUserId()); - if (!purchaseService.buildPurchaseQueryPermission(query, user)) { + private PageVo queryData(PurchaseAdaptionListReq req) { + UnitQueryState unitQueryState = mhUnitQueryAuthHelper.listCanViewUnitIds(req.getBuildOrgCode()); + if (!unitQueryState.isState()) { return PageVo.empty(); } - if (req.hasProjectQuery()) { - List projectIds = filterProjectIdsForPurchase(req); - if (projectIds.isEmpty()) { - return PageVo.empty(); - } - query.in(Purchase::getProjectId, projectIds); - } - query.like(StrUtil.isNotBlank(req.getBidName()), Purchase::getBidName, req.getBidName()) - .le(req.getCreateOnMax() != null, Purchase::getCreateOn, req.getCreateOnMax()) - .ge(req.getCreateOnMin() != null, Purchase::getCreateOn, req.getCreateOnMin()); + LambdaQueryWrapper projQuery = Wrappers.lambdaQuery(Project.class) + .eq(Project::getNewest, Boolean.TRUE) + .eq(req.getProjectYear() != null, Project::getProjectYear, req.getProjectYear()) + .like(StrUtil.isNotBlank(req.getProjectName()), Project::getProjectName, req.getProjectName()) + .like(StrUtil.isNotBlank(req.getBuildOrgName()), Project::getBuildOrgName, req.getBuildOrgName()) + .eq(req.getUnitStrip() != null, Project::getUnitStrip, req.getUnitStrip()); + BizUtils.notEmpty(unitQueryState.getUnitIds(), w -> { + List buildOrgCodeStr = CollUtils.convert(w, String::valueOf); + projQuery.in(Project::getBuildOrgCode, buildOrgCodeStr); + }); + ProjectManageUtil.projectBaseQuery(projQuery); + projQuery.exists(ExistsSqlConst.PROJECT_EXISTS_STATUS_CHANGE + + " and npsc.event = {0}", ProjectStateChangeEvent.SUBMIT_PURCHASE_CONTRACT_RECORD) + .exists(ExistsSqlConst.PROJECT_EXISTS_PURCHASE + + " and np.bid_type = {0}", BidTypeEnum.BUILD_APP.getCode()) + .notIn(Project::getStatus, ProjectStatusConstant.CHANGE_STOP_DELETE_PASSED); if (req.getStatus() != null) { - ITenderStatus tenderStatus = TenderMainStatus.getNoNull(req.getStatus()); - if (tenderStatus.eq(TenderMainStatus.TO_BE_SUBMIT_OPERATION_PLAN)) { - query.eq(Purchase::getStatus, TenderMainStatus.TO_BE_SUBMIT_OPERATION_PLAN.getCode()); - } else if (tenderStatus.eq(TenderAdaptStatus.WITHOUT_ADAPT_INFO)) { - query.in(Purchase::getStatus, TenderAdaptStatus.WITHOUT_ADAPT_INFO.getCode(), - TenderAdaptStatus.ADAPT_INFO_FAILED.getCode(), - TenderAdaptStatus.ADAPT_INFO_AUDIT.getCode()); - } else if (tenderStatus.eq(TenderSelfTestStatus.WITHOUT_SELF_TEST_INFO)) { - query.in(Purchase::getStatus, TenderSelfTestStatus.WITHOUT_SELF_TEST_INFO.getCode(), - TenderSelfTestStatus.SELF_TEST_INFO_FAILED.getCode(), - TenderSelfTestStatus.SELF_TEST_INFO_AUDIT.getCode()); - } else if (tenderStatus.eq(TenderTestValidStatus.WITHOUT_TEST_VALID_INFO)) { - query.in(Purchase::getStatus, TenderTestValidStatus.WITHOUT_TEST_VALID_INFO.getCode(), - TenderTestValidStatus.TEST_VALID_INFO_FAILED.getCode(), - TenderTestValidStatus.TEST_VALID_INFO_AUDIT.getCode()); - } else if (tenderStatus.eq(TenderMainStatus.WAIT_ORG_CONFIRM)) { - query.eq(Purchase::getStatus, TenderMainStatus.WAIT_ORG_CONFIRM.getCode()); + if (ProjectStatus.TO_BE_ADAPT.eq(req.getStatus())) { + projQuery.notExists(ExistsSqlConst.PROJECT_EXISTS_PURCHASE_STATUS_CHANGE + + " and npsc.event = {0}", TenderStateChangeEvent.SUBMIT_OPERATION_PLAN); + } else if (ProjectStatus.ON_ADAPTING.eq(req.getStatus())) { + projQuery.exists(ExistsSqlConst.PROJECT_EXISTS_PURCHASE_STATUS_CHANGE + + " and npsc.event = {0}", TenderStateChangeEvent.SUBMIT_OPERATION_PLAN) + .notExists(ExistsSqlConst.PROJECT_EXISTS_STATUS_CHANGE + + " and npsc.event = {0}", ProjectStateChangeEvent.SUBMIT_PURCHASE_ORG_CONFIRM); } else { - return PageVo.empty(); + projQuery.exists(ExistsSqlConst.PROJECT_EXISTS_STATUS_CHANGE + + " and npsc.event = {0}", ProjectStateChangeEvent.SUBMIT_PURCHASE_ORG_CONFIRM); } } - Page page = purchaseService.page(req.page(), query); + Page page = projectService.page(req.page(), projQuery); if (page.getTotal() == 0) { return PageVo.empty(); } - List records = page.getRecords(); - List projectIds = CollUtils.fieldList(records, Purchase::getProjectId); - Wrapper projectQuery = Wrappers.lambdaQuery(Project.class) - .select(Project::getId, Project::getProjectCode, Project::getProjectName, Project::getStatus, - Project::getBuildOrgName, Project::getBuildOrgCode, Project::getUnitStrip, Project::getProjectYear) - .in(Project::getId, projectIds); - List projects = projectService.list(projectQuery); - Map projectMap = CollUtils.listToMap(projects, Project::getId); - Map contractMap = contractService.listByProjectIds(projectIds); - List finishOrgConfirmBidIds = new ArrayList<>(); - if (req.getStatus() == null) { - List bidIds = CollUtils.fieldList(records, Purchase::getId); - Wrapper pscQuery = Wrappers.lambdaQuery(PurchaseStatusChange.class) - .select(PurchaseStatusChange::getBidId) - .eq(PurchaseStatusChange::getEvent, TenderStateChangeEvent.SUBMIT_PURCHASE_ORG_CONFIRM) - .in(PurchaseStatusChange::getBidId, bidIds); - List changes = purchaseStatusChangeService.list(pscQuery); - changes.forEach(c -> finishOrgConfirmBidIds.add(c.getBidId())); - } - List data = records.stream().map(w -> { - PurchaseAdaptionListVO adaption = new PurchaseAdaptionListVO(); - adaption.setBidId(w.getId()); - if (finishOrgConfirmBidIds.contains(w.getId())) { - adaption.setStatus(TenderMainStatus.ORG_CONFIRM_PASSED.getCode()); - } else { - adaption.setStatus(w.getStatus()); - } - adaption.setBizName(w.getBidName()); - adaption.setProjectId(w.getProjectId()); - Project project = projectMap.get(w.getProjectId()); - adaption.setProjectYear(project.getProjectYear()); - adaption.setProjectName(project.getProjectName()); - adaption.setBuildOrg(project.getBuildOrgName()); - adaption.setProjectStatus(project.getStatus()); - adaption.setProjectCode(project.getProjectCode()); - adaption.setUnitStripName(MhUnitStripEnum.getVal(project.getUnitStrip())); - Contract contract = contractMap.get(w.getId()); - if (contract != null) { - adaption.setContractAmount(contract.getTotalAmount()); + List pageData = page.getRecords(); + List projectIds = CollUtils.fieldList(pageData, Project::getId); + List purchases = purchaseService.listByProjectIds(projectIds); + Map> purchaseMap = CollUtils.group(purchases, Purchase::getProjectId); + Map contractAmountMap = contractService.listContractAmountByProjectIds(projectIds); + List retData = CollUtils.convert(pageData, w -> { + ProjectLibListItemVO item = new ProjectLibListItemVO(); + item.setId(w.getId()); + item.setProjectName(w.getProjectName()); + item.setProjectCode(w.getProjectCode()); + item.setProjectYear(w.getProjectYear()); + item.setBuildOrgName(w.getBuildOrgName()); + item.setUnitStrip(w.getUnitStrip()); + item.setStage(w.getStage()); + item.setStatus(w.getStatus()); + item.setProjectType(w.getProjectType()); + item.setApprovedAmount(w.getApprovalAmount()); + item.setReviewAmount(w.getReviewAmount()); + item.setApprovalDate(w.getApprovalDate()); + item.setCreateOn(w.getCreateOn()); + List currPurchases = purchaseMap.get(w.getId()); + if (currPurchases != null) { + List tenders = new ArrayList<>(); + for (Purchase p : currPurchases) { + TenderListInfoVO tender = new TenderListInfoVO(); + tender.setBidName(p.getBidName()); + tender.setBidId(p.getId()); + tender.setBidType(p.getBidType()); + ITenderStatus status = TenderMainStatus.getNoNull(p.getStatus()); + tender.setBidStatus(status.getCode()); + tender.setBidStatusName(status.getDesc()); + tender.setConstructionAmount(contractAmountMap.get(p.getId())); + tenders.add(tender); + item.setTenders(tenders); + } } - return adaption; - }).collect(Collectors.toList()); - return PageVo.of(data, page.getTotal()); - } - - private List filterProjectIdsForPurchase(PurchaseAdaptionListReq req) { - LambdaQueryWrapper projQuery = Wrappers.lambdaQuery(Project.class) - .select(Project::getId) - .ne(Project::getStage, ProjectStatus.STOPPED.getCode()) - .eq(Project::getNewest, Boolean.TRUE) - .eq(req.getProjectYear() != null, Project::getProjectYear, req.getProjectYear()) - .like(StrUtil.isNotBlank(req.getProjectName()), Project::getProjectName, req.getProjectName()) - .like(StrUtil.isNotBlank(req.getBuildOrgName()), Project::getBuildOrgName, req.getBuildOrgName()); - if (req.getBuildOrgCode() != null) { - projQuery.in(Project::getBuildOrgCode, mhUnitCache.getViewChildIdsRecursion(req.getBuildOrgCode())); - } - List projects = projectService.list(projQuery); - return CollUtils.fieldList(projects, Project::getId); + return item; + }); + return PageVo.of(retData, page.getTotal()); } - - public PageVo adaptList(PurchaseAdaptionListReq req) { + public PageVo adaptList(PurchaseAdaptionListReq req) { return queryData(req); } diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/model/req/PurchaseAdaptionListReq.java b/hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/model/req/PurchaseAdaptionListReq.java index 3e6563f..0d26850 100644 --- a/hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/model/req/PurchaseAdaptionListReq.java +++ b/hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/model/req/PurchaseAdaptionListReq.java @@ -29,6 +29,9 @@ public class PurchaseAdaptionListReq extends PagePo { @ApiModelProperty("建设单位") private String buildOrgName; + @ApiModelProperty("申报单位所属领域") + private Integer unitStrip; + @ApiModelProperty("项目名称") private String projectName; diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/model/vo/AdaptionProgressVO.java b/hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/model/vo/AdaptionProgressVO.java index db40385..d76e960 100644 --- a/hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/model/vo/AdaptionProgressVO.java +++ b/hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/model/vo/AdaptionProgressVO.java @@ -25,19 +25,13 @@ public class AdaptionProgressVO { @ApiModelProperty("总数") private Integer totalCount; - @ApiModelProperty("待填写实施计划") - private Long withoutOperationCount; + @ApiModelProperty("待适配改造") + private Long toBeAdapt; - @ApiModelProperty("待上传开工文件") - private Long withoutAdaptionInfo; + @ApiModelProperty("适配改造中") + private Long onAdapting; - @ApiModelProperty("待上传自测材料") - private Long withoutSelfTestCount; - - @ApiModelProperty("待上传测试验证材料") - private Long withoutTestValidCount; - - @ApiModelProperty("待单位确认") - private Long withoutOrgConfirmCount; + @ApiModelProperty("适配改造完成") + private Long finishAdapt; } diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/projectlib/manage/ProjectManageTodoCountManage.java b/hz-pm-api/src/main/java/com/hz/pm/api/projectlib/manage/ProjectManageTodoCountManage.java index c50cd79..1b07f56 100644 --- a/hz-pm-api/src/main/java/com/hz/pm/api/projectlib/manage/ProjectManageTodoCountManage.java +++ b/hz-pm-api/src/main/java/com/hz/pm/api/projectlib/manage/ProjectManageTodoCountManage.java @@ -95,9 +95,7 @@ public class ProjectManageTodoCountManage { adaptionReq.setBuildOrgCode(buildOrgCode); adaptionReq.setProjectYear(req.getProjectYear()); AdaptionProgressVO adaptionStat = purchaseManage.adaptionProgress(adaptionReq); - ret.setProjectAdaption(sum(adaptionStat, AdaptionProgressVO::getWithoutOperationCount, - AdaptionProgressVO::getWithoutAdaptionInfo, AdaptionProgressVO::getWithoutTestValidCount, - AdaptionProgressVO::getWithoutOrgConfirmCount, AdaptionProgressVO::getWithoutSelfTestCount)); + ret.setProjectAdaption(sum(adaptionStat, AdaptionProgressVO::getToBeAdapt, AdaptionProgressVO::getOnAdapting)); // 项目初验 projReqOrg.setBuildOrgCode(req.getBuildOrgCode()); FirstAcceptProgressVO firstAccept = constructionManage.firstAcceptProgress(projReqOrg); diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/projectlib/model/enumeration/status/ProjectStatus.java b/hz-pm-api/src/main/java/com/hz/pm/api/projectlib/model/enumeration/status/ProjectStatus.java index 06e9e4d..2963fb9 100644 --- a/hz-pm-api/src/main/java/com/hz/pm/api/projectlib/model/enumeration/status/ProjectStatus.java +++ b/hz-pm-api/src/main/java/com/hz/pm/api/projectlib/model/enumeration/status/ProjectStatus.java @@ -68,6 +68,8 @@ public enum ProjectStatus implements IStatus { ON_PURCHASING(20007, "采购中", 20000), ON_ADAPTING(20010, "适配改造中", 20000), + TO_BE_ADAPT(20011, "待适配改造", 20000), + FINISH_ADAPT(20012, "适配改造完成", 20000), TO_BE_FIRST_INSPECTED(20008, "待上传初验材料", 20000), ON_PILOT_RUNNING(20009, "试运行中", 20000), diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/projectlib/model/vo/TenderListInfoVO.java b/hz-pm-api/src/main/java/com/hz/pm/api/projectlib/model/vo/TenderListInfoVO.java index 8dcd68e..5f01992 100644 --- a/hz-pm-api/src/main/java/com/hz/pm/api/projectlib/model/vo/TenderListInfoVO.java +++ b/hz-pm-api/src/main/java/com/hz/pm/api/projectlib/model/vo/TenderListInfoVO.java @@ -22,6 +22,9 @@ public class TenderListInfoVO { @ApiModelProperty("标段名称") private String bidName; + @ApiModelProperty("标段类型") + private Integer bidType; + @ApiModelProperty("标段状态") private Integer bidStatus; 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 0343cbe..49167e2 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 @@ -337,10 +337,10 @@ public class WorkbenchManage { return projectStatusChanges.entrySet().stream() .filter(w -> { List changes = w.getValue(); - if (CollUtil.anyMatch(changes, w1 -> ProjectStateChangeEvent.STOPPED_APPLY_PASS.eq(w1.getEvent()) + /*if (CollUtil.anyMatch(changes, w1 -> ProjectStateChangeEvent.STOPPED_APPLY_PASS.eq(w1.getEvent()) || ProjectStateChangeEvent.STOPPED_APPLY_AUTO_PASS.eq(w1.getEvent()))) { return false; - } + }*/ return CollUtil.anyMatch(w.getValue(), w1 -> event.eq(w1.getEvent())); }) .map(Map.Entry::getKey) @@ -349,9 +349,17 @@ public class WorkbenchManage { public Integer processNodeNotFinishedCount(Map> projectStatusChanges, ProjectStateChangeEvent startEvent, - ProjectStateChangeEvent finishEvent) { + ProjectStateChangeEvent finishEvent, + Map> projectPurchaseMap) { return CollUtil.count(projectStatusChanges.entrySet(), w -> { List changes = w.getValue(); + if (startEvent.equals(ProjectStateChangeEvent.SUBMIT_PURCHASE_CONTRACT_RECORD)) { + Long projectId = ProjectIdCodeCacheUtil.newest(w.getKey()); + List purchases = projectPurchaseMap.getOrDefault(projectId, Collections.emptyList()); + if (!CollUtil.anyMatch(purchases, x -> BidTypeEnum.BUILD_APP.eq(x.getBidType()))) { + return false; + } + } return CollUtil.anyMatch(changes, w1 -> startEvent.eq(w1.getEvent())) && CollUtil.allMatch(changes, w1 -> !finishEvent.eq(w1.getEvent())); }); @@ -399,7 +407,7 @@ public class WorkbenchManage { List projectStatusChanges = projectStatusChangeService.list(pscQuery); projectStatusChangeMap.putAll(CollUtils.group(projectStatusChanges, ProjectStatusChange::getProjectCode)); // 移除已停止项目 - projects.removeIf(w -> ProjectStatus.STOPPED_PASSED.eq(w.getStatus())); + //projects.removeIf(w -> ProjectStatus.STOPPED_PASSED.eq(w.getStatus())); currStat.setProjectCount(projects.size()); for (Project project : projects) { allProjectCodes.add(project.getProjectCode()); @@ -426,7 +434,8 @@ public class WorkbenchManage { currStat.setReviewingCount(reviewing); currStat.setReviewFailedCount(reviewFailed); currStat.setPendingCount(processNodeNotFinishedCount(projectStatusChangeMap, - ProjectStateChangeEvent.COMPLIANCE_REVIEW_PASS, ProjectStateChangeEvent.PROJECT_REVIEW_PASS)); + ProjectStateChangeEvent.COMPLIANCE_REVIEW_PASS, ProjectStateChangeEvent.PROJECT_REVIEW_PASS, + projectPurchaseCountMap)); } break; case APPROVAL_AMOUNT: { @@ -454,7 +463,8 @@ public class WorkbenchManage { currStat.setStoppedCount(stoppedProjectCount(projectStatusChangeMap, ProjectStateChangeEvent.ANNUAL_PLAN_PASS, ProjectStateChangeEvent.DECLARED_RECORD_PASS)); currStat.setPendingCount(processNodeNotFinishedCount(projectStatusChangeMap, - ProjectStateChangeEvent.ANNUAL_PLAN_PASS, ProjectStateChangeEvent.DECLARED_RECORD_PASS)); + ProjectStateChangeEvent.ANNUAL_PLAN_PASS, ProjectStateChangeEvent.DECLARED_RECORD_PASS, + projectPurchaseCountMap)); } break; case PROJECT_PURCHASE: { @@ -491,7 +501,8 @@ public class WorkbenchManage { purchaseEventMap.putAll(purchaseEventMapTmp); } currStat.setPendingCount(processNodeNotFinishedCount(projectStatusChangeMap, - ProjectStateChangeEvent.DECLARED_RECORD_PASS, ProjectStateChangeEvent.SUBMIT_PURCHASE_CONTRACT_RECORD)); + ProjectStateChangeEvent.DECLARED_RECORD_PASS, ProjectStateChangeEvent.SUBMIT_PURCHASE_CONTRACT_RECORD, + projectPurchaseCountMap)); } break; case PROJECT_ADAPTION: { @@ -524,6 +535,9 @@ public class WorkbenchManage { adaptFinishStat.setFinishPurchaseCountWithoutApp(finishPurchaseByWithoutApp); currStat.setStoppedCount(stoppedProjectCount(projectStatusChangeMap, 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)); } break; case FIRST_INSPECTED: { @@ -535,7 +549,8 @@ public class WorkbenchManage { currStat.setStoppedCount(stoppedProjectCount(projectStatusChangeMap, ProjectStateChangeEvent.SUBMIT_PURCHASE_ORG_CONFIRM, ProjectStateChangeEvent.SUBMIT_FIRST_INSPECTED_FILES)); currStat.setPendingCount(processNodeNotFinishedCount(projectStatusChangeMap, - ProjectStateChangeEvent.SUBMIT_PURCHASE_ORG_CONFIRM, ProjectStateChangeEvent.SUBMIT_FIRST_INSPECTED_FILES)); + ProjectStateChangeEvent.SUBMIT_PURCHASE_ORG_CONFIRM, ProjectStateChangeEvent.SUBMIT_FIRST_INSPECTED_FILES, + projectPurchaseCountMap)); } break; case FINAL_INSPECTED: { @@ -547,7 +562,8 @@ public class WorkbenchManage { currStat.setStoppedCount(stoppedProjectCount(projectStatusChangeMap, ProjectStateChangeEvent.SUBMIT_FIRST_INSPECTED_FILES, ProjectStateChangeEvent.FINAL_ACCEPTANCE_PASS)); currStat.setPendingCount(processNodeNotFinishedCount(projectStatusChangeMap, - ProjectStateChangeEvent.SUBMIT_FIRST_INSPECTED_FILES, ProjectStateChangeEvent.FINAL_ACCEPTANCE_PASS)); + ProjectStateChangeEvent.SUBMIT_FIRST_INSPECTED_FILES, ProjectStateChangeEvent.FINAL_ACCEPTANCE_PASS, + projectPurchaseCountMap)); } break; default: @@ -649,7 +665,7 @@ public class WorkbenchManage { return PageVo.empty(); } ProjectManageUtil.projectBaseQuery(query); - query.notIn(Project::getStatus, ProjectStatusConstant.CHANGE_STOP_DELETE_PASSED); + query.notIn(Project::getStatus, ProjectStatusConstant.CHANGE_DELETE_PASSED); projectQueryExistsProjectStatusChange(query, ProjectStateChangeEvent.PROJECT_APPLICATION_SUBMIT); switch (req.getProcessNode()) { case PROJECT_DECLARED: @@ -683,6 +699,8 @@ public class WorkbenchManage { TEST_VALID_INFO_PASSED, SUBMIT_PURCHASE_ORG_CONFIRM); break; case PROJECT_ADAPTION: + query.exists(ExistsSqlConst.PROJECT_EXISTS_PURCHASE + + "and np.bid_type = {0}", BidTypeEnum.BUILD_APP.getCode()); projectProcessNodeFinishedQuery(query, req.getProcessNodeFinished(), ProjectStateChangeEvent.SUBMIT_PURCHASE_CONTRACT_RECORD, ProjectStateChangeEvent.SUBMIT_PURCHASE_ORG_CONFIRM); break;