@@ -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(); | |||
} | |||
} |
@@ -38,7 +38,7 @@ public class CockpitStatsHandler { | |||
private final ICockpitStatsService cockpitStatsService; | |||
private static final List<Integer> years = Lists.newArrayList(2021,2022,2023,2024); | |||
private static final List<Integer> years = Lists.newArrayList(2021,2022,2023,2024,2025); | |||
public CockpitStatsVO convertCockpitStats(CockpitStats cockpitStats,String regionCode,Integer year) { | |||
CockpitStatsVO res = BeanUtil.copyProperties(cockpitStats,CockpitStatsVO.class); | |||
@@ -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; | |||
@@ -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<SafetyInput> monitorSafetyInputRate; | |||
@@ -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())); | |||
} | |||
} |