From b40995fb6f41fdf1a2d4712f7034add525c4e2ec Mon Sep 17 00:00:00 2001 From: PoffyZhang <99775271@qq.com> Date: Tue, 17 Oct 2023 16:31:54 +0800 Subject: [PATCH] =?UTF-8?q?debug=20=E9=A9=BE=E9=A9=B6=E8=88=B1=E7=AE=97?= =?UTF-8?q?=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/ningdatech/pmapi/common/util/BizUtils.java | 10 +++++++ .../dashboard/handle/CockpitStatsHandler.java | 2 +- .../pmapi/dashboard/model/entity/CockpitStats.java | 14 ++++++++++ .../pmapi/dashboard/model/vo/CockpitStatsVO.java | 15 ++++++++++ .../scheduler/task/CockpitStatsStatisticsTask.java | 32 ++++++++++++++++++++++ 5 files changed, 72 insertions(+), 1 deletion(-) diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/common/util/BizUtils.java b/pmapi/src/main/java/com/ningdatech/pmapi/common/util/BizUtils.java index fe11a5e..fc3396d 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/common/util/BizUtils.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/common/util/BizUtils.java @@ -7,6 +7,8 @@ import com.ningdatech.pmapi.projectlib.enumeration.ProjectTypeNewEnum; import org.apache.commons.lang3.StringUtils; import org.springframework.util.NumberUtils; +import java.math.BigDecimal; +import java.math.RoundingMode; import java.time.LocalDateTime; import java.time.ZoneId; import java.util.*; @@ -126,4 +128,12 @@ public class BizUtils { } return null; } + + public static String computeRise(Integer numa, Integer numb) { + if(Objects.isNull(numa) || Objects.isNull(numb)){ + return "0"; + } + return BigDecimal.valueOf((numa - numb) * 100.0).divide(BigDecimal.valueOf(numb),2, RoundingMode.CEILING) + .stripTrailingZeros().toPlainString(); + } } diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/dashboard/handle/CockpitStatsHandler.java b/pmapi/src/main/java/com/ningdatech/pmapi/dashboard/handle/CockpitStatsHandler.java index cdad95c..6c95fec 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/dashboard/handle/CockpitStatsHandler.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/dashboard/handle/CockpitStatsHandler.java @@ -38,7 +38,7 @@ public class CockpitStatsHandler { private final ICockpitStatsService cockpitStatsService; - private static final List years = Lists.newArrayList(2021,2022,2023,2024); + private static final List years = Lists.newArrayList(2021,2022,2023,2024,2025); public CockpitStatsVO convertCockpitStats(CockpitStats cockpitStats,String regionCode,Integer year) { CockpitStatsVO res = BeanUtil.copyProperties(cockpitStats,CockpitStatsVO.class); diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/dashboard/model/entity/CockpitStats.java b/pmapi/src/main/java/com/ningdatech/pmapi/dashboard/model/entity/CockpitStats.java index 0b6530b..b744f46 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/dashboard/model/entity/CockpitStats.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/dashboard/model/entity/CockpitStats.java @@ -36,18 +36,32 @@ public class CockpitStats implements Serializable { @ApiModelProperty("项目监控-超期建设项目数") private Integer monitorOverdueConstructionProjectsNum; + @ApiModelProperty("项目监控-超期建设项目-增长比例") + private String monitorOverdueConstructionProjectsRise = "0"; + @ApiModelProperty("项目监控-环节滞后项目数") private Integer monitorLaggingProjectsNum; + @ApiModelProperty("项目监控-环节滞后项目-增长比例") + private String monitorLaggingProjectsRise = "0"; + @ApiModelProperty("项目监控-预审驳回项目数") private Integer monitorRejectedPreReviewProjectsNum; + @ApiModelProperty("项目监控-预审驳回项目-增长比例") + private String monitorRejectedPreReviewProjectsRise = "0"; + @ApiModelProperty("项目监控-评审驳回项目数") private Integer monitorRejectedApproveProjectsNum; + @ApiModelProperty("项目监控-评审驳回项目-增长比例") + private String monitorRejectedApproveProjectsRise = "0"; @ApiModelProperty("项目监控-验收条件未达标") private Integer monitorAcceptConditionsNotStandardsNum; + @ApiModelProperty("项目监控-验收条件未达标-增长比例") + private String monitorAcceptConditionsNotStandardsRise = "0"; + @ApiModelProperty("项目监控-安全投入金额(用于算安全投入占比)") private BigDecimal monitorSafetyInputAmount; diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/dashboard/model/vo/CockpitStatsVO.java b/pmapi/src/main/java/com/ningdatech/pmapi/dashboard/model/vo/CockpitStatsVO.java index 9abcc7e..58e398a 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/dashboard/model/vo/CockpitStatsVO.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/dashboard/model/vo/CockpitStatsVO.java @@ -62,18 +62,33 @@ public class CockpitStatsVO implements Serializable { @ApiModelProperty("项目监控-超期建设项目数") private Integer monitorOverdueConstructionProjectsNum; + @ApiModelProperty("项目监控-超期建设项目-增长比例") + private String monitorOverdueConstructionProjectsRise; + @ApiModelProperty("项目监控-环节滞后项目数") private Integer monitorLaggingProjectsNum; + @ApiModelProperty("项目监控-环节滞后项目-增长比例") + private String monitorLaggingProjectsRise; + @ApiModelProperty("项目监控-预审驳回项目数") private Integer monitorRejectedPreReviewProjectsNum; + @ApiModelProperty("项目监控-预审驳回项目-增长比例") + private String monitorRejectedPreReviewProjectsRise; + @ApiModelProperty("项目监控-评审驳回项目数") private Integer monitorRejectedApproveProjectsNum; + @ApiModelProperty("项目监控-评审驳回项目-增长比例") + private String monitorRejectedApproveProjectsRise; + @ApiModelProperty("项目监控-验收条件未达标") private Integer monitorAcceptConditionsNotStandardsNum; + @ApiModelProperty("项目监控-验收条件未达标-增长比例") + private String monitorAcceptConditionsNotStandardsRise; + @ApiModelProperty("项目监控-安全投入占比 图") private List monitorSafetyInputRate; diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/scheduler/task/CockpitStatsStatisticsTask.java b/pmapi/src/main/java/com/ningdatech/pmapi/scheduler/task/CockpitStatsStatisticsTask.java index 4f30290..04f8bec 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/scheduler/task/CockpitStatsStatisticsTask.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/scheduler/task/CockpitStatsStatisticsTask.java @@ -11,6 +11,7 @@ import com.ningdatech.pmapi.common.constant.BizConst; import com.ningdatech.pmapi.common.constant.RegionConst; import com.ningdatech.pmapi.common.helper.RegionCacheHelper; import com.ningdatech.pmapi.common.statemachine.contants.RegionContant; +import com.ningdatech.pmapi.common.util.BizUtils; import com.ningdatech.pmapi.dashboard.constant.DashboardConstant; import com.ningdatech.pmapi.dashboard.model.entity.CockpitStats; import com.ningdatech.pmapi.dashboard.model.po.SecrecyPasswordGradePO; @@ -171,6 +172,8 @@ public class CockpitStatsStatisticsTask { baseProjCount = count.intValue(); } + + //1.项目监测 //1.1 超期在建项目 Integer overdueConstructionProjectsNum = projects.stream().filter(p -> { @@ -200,6 +203,19 @@ public class CockpitStatsStatisticsTask { cockpitStats.setMonitorRejectedApproveProjectsNum(constructionFailed); //1.5 验收不达标 cockpitStats.setMonitorAcceptConditionsNotStandardsNum(0); + + //算增长率 + //去年的数据 用于算 增长比例 + if(Objects.isNull(year)){ + Integer thisYear = LocalDateTime.now().getYear(); + CockpitStats thisYearData = statisticsData(regionCode, regionName, thisYear); + CockpitStats lastYearData = statisticsData(regionCode, regionName, thisYear - 1); + buidMonitorRise(cockpitStats,thisYearData,lastYearData); + }else{ + CockpitStats lastYearData = statisticsData(regionCode, regionName, year); + buidMonitorRise(cockpitStats,cockpitStats,lastYearData); + } + //1.6 总申报金额 Double totalDeclaredAmount = projects.stream().mapToDouble(p -> Objects.nonNull(p.getDeclareAmount()) ? p.getDeclareAmount().doubleValue() : 0.0).sum(); cockpitStats.setMonitorDeclaredAmount(BigDecimal.valueOf(totalDeclaredAmount)); @@ -475,4 +491,20 @@ public class CockpitStatsStatisticsTask { return cockpitStats; } + + private void buidMonitorRise(CockpitStats cockpitStats, CockpitStats thisYearData, CockpitStats lastYearData) { + if(Objects.isNull(thisYearData) || Objects.isNull(lastYearData)){ + return; + } + cockpitStats.setMonitorOverdueConstructionProjectsRise(BizUtils.computeRise(thisYearData.getMonitorOverdueConstructionProjectsNum(), + lastYearData.getMonitorOverdueConstructionProjectsNum())); + cockpitStats.setMonitorLaggingProjectsRise(BizUtils.computeRise(thisYearData.getMonitorOverdueConstructionProjectsNum(), + lastYearData.getMonitorOverdueConstructionProjectsNum())); + cockpitStats.setMonitorRejectedApproveProjectsRise(BizUtils.computeRise(thisYearData.getMonitorOverdueConstructionProjectsNum(), + lastYearData.getMonitorOverdueConstructionProjectsNum())); + cockpitStats.setMonitorRejectedPreReviewProjectsRise(BizUtils.computeRise(thisYearData.getMonitorOverdueConstructionProjectsNum(), + lastYearData.getMonitorOverdueConstructionProjectsNum())); + cockpitStats.setMonitorAcceptConditionsNotStandardsRise(BizUtils.computeRise(thisYearData.getMonitorOverdueConstructionProjectsNum(), + lastYearData.getMonitorOverdueConstructionProjectsNum())); + } }