|
|
@@ -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<CompanyProjectCntBO> companyProjectCntTop5List = new ArrayList<>(); |
|
|
|
Map<String, List<Project>> buildOrgNameProjectGroupMap = allProjectList.stream() |
|
|
|
.collect(Collectors.groupingBy(Project::getBuildOrgName)); |
|
|
|
for (String buildOrgName : buildOrgNameProjectGroupMap.keySet()) { |
|
|
|
List<Project> 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<Integer, List<Project>> 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<AnalysisChart> 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<ProjectATIISBO> 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<CompanyProjectCntBO> companyProjectATIISTop5List = new ArrayList<>(); |
|
|
|
Map<String, List<Project>> buildOrgNameProjectGroupMap = allProjectList.stream() |
|
|
|
.collect(Collectors.groupingBy(Project::getBuildOrgName)); |
|
|
|
for (String buildOrgName : buildOrgNameProjectGroupMap.keySet()) { |
|
|
|
List<Project> 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<Integer, List<Project>> 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<AnalysisChart> analysisChartList = new ArrayList<>(); |
|
|
|
dashboardInvestmentSummaryVO.setAnalysisChartList(analysisChartList); |
|
|
|
analysisChartList.add(areaCodeInvestmentAnalysisChart); |
|
|
|