Browse Source

项目预算TOP5 单位预算TOP5 单位项目数量TOP5

tags/24080901
niohe·erbao 1 year ago
parent
commit
c34cc21269
7 changed files with 143 additions and 22 deletions
  1. +67
    -5
      pmapi/src/main/java/com/ningdatech/pmapi/dashboard/manage/DashboardProjectManage.java
  2. +31
    -0
      pmapi/src/main/java/com/ningdatech/pmapi/dashboard/model/basic/CompanyProjectCntBO.java
  3. +31
    -0
      pmapi/src/main/java/com/ningdatech/pmapi/dashboard/model/basic/ProjectATIISBO.java
  4. +9
    -4
      pmapi/src/main/java/com/ningdatech/pmapi/dashboard/model/vo/DashboardInvestmentSummaryVO.java
  5. +5
    -2
      pmapi/src/main/java/com/ningdatech/pmapi/dashboard/model/vo/DashboardProjectCntSummaryVO.java
  6. +0
    -1
      pmapi/src/main/java/com/ningdatech/pmapi/dashboard/model/vo/DashboardProjectSummaryVO.java
  7. +0
    -10
      pmapi/src/main/java/com/ningdatech/pmapi/dashboard/model/vo/ExpertDashboardSummaryVO.java

+ 67
- 5
pmapi/src/main/java/com/ningdatech/pmapi/dashboard/manage/DashboardProjectManage.java View File

@@ -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);


+ 31
- 0
pmapi/src/main/java/com/ningdatech/pmapi/dashboard/model/basic/CompanyProjectCntBO.java View File

@@ -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;

}

+ 31
- 0
pmapi/src/main/java/com/ningdatech/pmapi/dashboard/model/basic/ProjectATIISBO.java View File

@@ -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;
}

+ 9
- 4
pmapi/src/main/java/com/ningdatech/pmapi/dashboard/model/vo/DashboardInvestmentSummaryVO.java View File

@@ -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<AnalysisChart> analysisChartList;
@ApiModelProperty("项目预算TOP5")
private List<ProjectATIISBO> projectATIISTop5List;

@ApiModelProperty("单位预算TOP5")
private List<CompanyProjectCntBO> companyProjectATIISTop5List;

@ApiModelProperty("各领域项目投资金额,各区域项目投资情况")
private List<AnalysisChart> analysisChartList;
}

+ 5
- 2
pmapi/src/main/java/com/ningdatech/pmapi/dashboard/model/vo/DashboardProjectCntSummaryVO.java View File

@@ -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<CompanyProjectCntBO> companyProjectCntTop5List;

@ApiModelProperty("项目增补情况,各类型项目数量,各区域项目数量,各领域项目数量,各阶段项目数量")
List<AnalysisChart> analysisChartList;
private List<AnalysisChart> analysisChartList;

}

+ 0
- 1
pmapi/src/main/java/com/ningdatech/pmapi/dashboard/model/vo/DashboardProjectSummaryVO.java View File

@@ -15,7 +15,6 @@ import java.math.BigDecimal;
public class DashboardProjectSummaryVO {
/**
* 项目画像
* 资金核定率
*/

@ApiModelProperty("项目总数")


+ 0
- 10
pmapi/src/main/java/com/ningdatech/pmapi/dashboard/model/vo/ExpertDashboardSummaryVO.java View File

@@ -17,16 +17,6 @@ import java.util.List;
@ApiModel("专家驾驶舱统计数据")
public class ExpertDashboardSummaryVO {

/**
* 1、各区域专家总数
* 2、学历分布
* 3、职称级别分布
* <p>
* 4、明星专家
* 5、评审次数
* 6、各类型评审次数
*/

@ApiModelProperty("明星专家列表")
private List<StarExpertBO> starExpertList;



Loading…
Cancel
Save