diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/dashboard/manage/DashboardProjectManage.java b/pmapi/src/main/java/com/ningdatech/pmapi/dashboard/manage/DashboardProjectManage.java index a7321bf..226fd52 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/dashboard/manage/DashboardProjectManage.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/dashboard/manage/DashboardProjectManage.java @@ -6,6 +6,8 @@ import com.ningdatech.pmapi.dashboard.constant.ChartTypeEnum; import com.ningdatech.pmapi.dashboard.helper.DashboardChartAssembler; import com.ningdatech.pmapi.dashboard.helper.DashboardHelper; import com.ningdatech.pmapi.dashboard.model.basic.AnalysisChart; +import com.ningdatech.pmapi.dashboard.model.basic.CompanyProjectCntBO; +import com.ningdatech.pmapi.dashboard.model.basic.ProjectATIISBO; import com.ningdatech.pmapi.dashboard.model.po.QueryYearPO; import com.ningdatech.pmapi.dashboard.model.vo.DashboardInvestmentSummaryVO; import com.ningdatech.pmapi.dashboard.model.vo.DashboardProjectCntSummaryVO; @@ -21,10 +23,7 @@ import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Component; import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import java.util.Objects; +import java.util.*; import java.util.stream.Collectors; /** @@ -175,6 +174,24 @@ public class DashboardProjectManage { .eq(StringUtils.isNotBlank(regionCode), Project::getAreaCode, regionCode) ); + // 单位项目数量TOP5 + List companyProjectCntTop5List = new ArrayList<>(); + Map> buildOrgNameProjectGroupMap = allProjectList.stream() + .collect(Collectors.groupingBy(Project::getBuildOrgName)); + for (String buildOrgName : buildOrgNameProjectGroupMap.keySet()) { + List projectList = buildOrgNameProjectGroupMap.get(buildOrgName); + CompanyProjectCntBO companyProjectCntBO = new CompanyProjectCntBO(); + companyProjectCntBO.setBuildOrgName(buildOrgName); + companyProjectCntBO.setProjectCnt(projectList.size()); + companyProjectCntTop5List.add(companyProjectCntBO); + } + companyProjectCntTop5List = companyProjectCntTop5List.stream() + .sorted(Comparator.comparing(CompanyProjectCntBO::getProjectCnt).reversed()) + .collect(Collectors.toList()); + if (companyProjectCntTop5List.size() > 5) { + companyProjectCntTop5List = companyProjectCntTop5List.subList(0, 5); + } + // 项目增补情况 Map> isTemporaryAugmentGroupMap = allProjectList.stream() .collect(Collectors.groupingBy(Project::getIsTemporaryAugment)); @@ -210,6 +227,7 @@ public class DashboardProjectManage { .buildProjectStateAnalysisChart(projectStateGroupMap, ChartTypeEnum.PROJECTS_NUMBER_IN_EACH_STAGE_CHART); DashboardProjectCntSummaryVO dashboardProjectCntSummaryVO = new DashboardProjectCntSummaryVO(); + dashboardProjectCntSummaryVO.setCompanyProjectCntTop5List(companyProjectCntTop5List); List analysisChartList = new ArrayList<>(); dashboardProjectCntSummaryVO.setAnalysisChartList(analysisChartList); analysisChartList.add(isTemporaryAugmentAnalysisChart); @@ -231,6 +249,49 @@ public class DashboardProjectManage { .eq(StringUtils.isNotBlank(regionCode), Project::getAreaCode, regionCode) ); + + // 项目预算TOP5 + List projectATIISTop5List = allProjectList.stream().filter(r -> Objects.nonNull(r.getApprovedTotalInvestmentIncrease())) + .map(r -> { + ProjectATIISBO projectATIISBO = new ProjectATIISBO(); + projectATIISBO.setProjectId(r.getId()); + projectATIISBO.setProjectCode(r.getProjectCode()); + projectATIISBO.setProjectName(r.getProjectName()); + projectATIISBO.setApprovedTotalInvestmentIncrease(r.getApprovedTotalInvestmentIncrease()); + return projectATIISBO; + }).collect(Collectors.toList()); + projectATIISTop5List = projectATIISTop5List.stream() + .sorted(Comparator.comparing(ProjectATIISBO::getApprovedTotalInvestmentIncrease) + .reversed()).collect(Collectors.toList()); + if (projectATIISTop5List.size() > 5) { + projectATIISTop5List = projectATIISTop5List.subList(0, 5); + } + + // 单位预算TOP5 + List companyProjectATIISTop5List = new ArrayList<>(); + Map> buildOrgNameProjectGroupMap = allProjectList.stream() + .collect(Collectors.groupingBy(Project::getBuildOrgName)); + for (String buildOrgName : buildOrgNameProjectGroupMap.keySet()) { + List projectList = buildOrgNameProjectGroupMap.get(buildOrgName); + CompanyProjectCntBO companyProjectCntBO = new CompanyProjectCntBO(); + companyProjectCntBO.setBuildOrgName(buildOrgName); + BigDecimal approvedTotalInvestmentIncreaseSum = new BigDecimal("0"); + for (Project project : projectList) { + BigDecimal approvedTotalInvestmentIncrease = project.getApprovedTotalInvestmentIncrease(); + if (Objects.nonNull(approvedTotalInvestmentIncrease)) { + approvedTotalInvestmentIncreaseSum.add(approvedTotalInvestmentIncrease); + } + } + companyProjectCntBO.setApprovedTotalInvestmentIncreaseSum(approvedTotalInvestmentIncreaseSum); + companyProjectATIISTop5List.add(companyProjectCntBO); + } + companyProjectATIISTop5List = companyProjectATIISTop5List.stream() + .sorted(Comparator.comparing(CompanyProjectCntBO::getApprovedTotalInvestmentIncreaseSum).reversed()) + .collect(Collectors.toList()); + if (companyProjectATIISTop5List.size() > 5) { + companyProjectATIISTop5List = companyProjectATIISTop5List.subList(0, 5); + } + // 各领域项目投资情况 Map> bizDomainGroupMap = allProjectList.stream() .collect(Collectors.groupingBy(Project::getBizDomain)); @@ -246,7 +307,8 @@ public class DashboardProjectManage { , ChartTypeEnum.PROJECTS_INVESTMENT_SITUATION_IN_VARIOUS_REGIONS); DashboardInvestmentSummaryVO dashboardInvestmentSummaryVO = new DashboardInvestmentSummaryVO(); - + dashboardInvestmentSummaryVO.setCompanyProjectATIISTop5List(companyProjectATIISTop5List); + dashboardInvestmentSummaryVO.setProjectATIISTop5List(projectATIISTop5List); List analysisChartList = new ArrayList<>(); dashboardInvestmentSummaryVO.setAnalysisChartList(analysisChartList); analysisChartList.add(areaCodeInvestmentAnalysisChart); diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/dashboard/model/basic/CompanyProjectCntBO.java b/pmapi/src/main/java/com/ningdatech/pmapi/dashboard/model/basic/CompanyProjectCntBO.java new file mode 100644 index 0000000..ea92abe --- /dev/null +++ b/pmapi/src/main/java/com/ningdatech/pmapi/dashboard/model/basic/CompanyProjectCntBO.java @@ -0,0 +1,31 @@ +package com.ningdatech.pmapi.dashboard.model.basic; + +import com.ningdatech.pmapi.common.compare.Compare; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + +/** + * @author liuxinxin + * @date 2023/8/4 下午3:51 + */ + +@Data +@ApiModel("单位项目数量") +public class CompanyProjectCntBO { + + @ApiModelProperty("建设单位名称") + private String buildOrgName; + + @Compare("建设单位统一社会信用代码") + private String orgCreditCode; + + @ApiModelProperty("项目数量") + private Integer projectCnt; + + @ApiModelProperty("项目预算(批复金额总合)") + private BigDecimal approvedTotalInvestmentIncreaseSum; + +} diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/dashboard/model/basic/ProjectATIISBO.java b/pmapi/src/main/java/com/ningdatech/pmapi/dashboard/model/basic/ProjectATIISBO.java new file mode 100644 index 0000000..b334aaf --- /dev/null +++ b/pmapi/src/main/java/com/ningdatech/pmapi/dashboard/model/basic/ProjectATIISBO.java @@ -0,0 +1,31 @@ +package com.ningdatech.pmapi.dashboard.model.basic; + +import com.ningdatech.pmapi.common.compare.Compare; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + +/** + * @author liuxinxin + * @date 2023/8/4 下午4:12 + */ + +@Data +@ApiModel("项目预算") +public class ProjectATIISBO { + + @ApiModelProperty("项目id") + private Long projectId; + + @ApiModelProperty("项目编号") + private String projectCode; + + @ApiModelProperty("项目名称") + private String projectName; + + @ApiModelProperty("批复金额") + @Compare("批复金额") + private BigDecimal approvedTotalInvestmentIncrease; +} diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/dashboard/model/vo/DashboardInvestmentSummaryVO.java b/pmapi/src/main/java/com/ningdatech/pmapi/dashboard/model/vo/DashboardInvestmentSummaryVO.java index 11f6d00..7405847 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/dashboard/model/vo/DashboardInvestmentSummaryVO.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/dashboard/model/vo/DashboardInvestmentSummaryVO.java @@ -1,6 +1,8 @@ package com.ningdatech.pmapi.dashboard.model.vo; import com.ningdatech.pmapi.dashboard.model.basic.AnalysisChart; +import com.ningdatech.pmapi.dashboard.model.basic.CompanyProjectCntBO; +import com.ningdatech.pmapi.dashboard.model.basic.ProjectATIISBO; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -17,13 +19,16 @@ import java.util.List; public class DashboardInvestmentSummaryVO { /** - * 单位预算TOP5 - * 项目预算TOP5 * 近5年项目投资走势 * 近5年资金核定率走势 */ - @ApiModelProperty("各领域项目投资金额,各区域项目投资情况") - List analysisChartList; + @ApiModelProperty("项目预算TOP5") + private List projectATIISTop5List; + + @ApiModelProperty("单位预算TOP5") + private List companyProjectATIISTop5List; + @ApiModelProperty("各领域项目投资金额,各区域项目投资情况") + private List analysisChartList; } diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/dashboard/model/vo/DashboardProjectCntSummaryVO.java b/pmapi/src/main/java/com/ningdatech/pmapi/dashboard/model/vo/DashboardProjectCntSummaryVO.java index 9fdd90e..9f7b312 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/dashboard/model/vo/DashboardProjectCntSummaryVO.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/dashboard/model/vo/DashboardProjectCntSummaryVO.java @@ -1,6 +1,7 @@ package com.ningdatech.pmapi.dashboard.model.vo; import com.ningdatech.pmapi.dashboard.model.basic.AnalysisChart; +import com.ningdatech.pmapi.dashboard.model.basic.CompanyProjectCntBO; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -16,12 +17,14 @@ import java.util.List; @ApiModel("项目数量驶舱统计数据") public class DashboardProjectCntSummaryVO { /** - * 单位项目数量TOP5 * 近5年项目数量走势 * 近5年立项率走势 */ + @ApiModelProperty("单位项目数量TOP5") + private List companyProjectCntTop5List; + @ApiModelProperty("项目增补情况,各类型项目数量,各区域项目数量,各领域项目数量,各阶段项目数量") - List analysisChartList; + private List analysisChartList; } diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/dashboard/model/vo/DashboardProjectSummaryVO.java b/pmapi/src/main/java/com/ningdatech/pmapi/dashboard/model/vo/DashboardProjectSummaryVO.java index 17ca8c9..166dd82 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/dashboard/model/vo/DashboardProjectSummaryVO.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/dashboard/model/vo/DashboardProjectSummaryVO.java @@ -15,7 +15,6 @@ import java.math.BigDecimal; public class DashboardProjectSummaryVO { /** * 项目画像 - * 资金核定率 */ @ApiModelProperty("项目总数") diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/dashboard/model/vo/ExpertDashboardSummaryVO.java b/pmapi/src/main/java/com/ningdatech/pmapi/dashboard/model/vo/ExpertDashboardSummaryVO.java index ee010ae..bf56914 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/dashboard/model/vo/ExpertDashboardSummaryVO.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/dashboard/model/vo/ExpertDashboardSummaryVO.java @@ -17,16 +17,6 @@ import java.util.List; @ApiModel("专家驾驶舱统计数据") public class ExpertDashboardSummaryVO { - /** - * 1、各区域专家总数 - * 2、学历分布 - * 3、职称级别分布 - *

- * 4、明星专家 - * 5、评审次数 - * 6、各类型评审次数 - */ - @ApiModelProperty("明星专家列表") private List starExpertList;