Browse Source

增加当年累计完成投资金额字段,修改投资完成情况表总计只统计交通运输和城乡建委,修改环比统计方式

qianxb 1 năm trước cách đây
mục cha
commit
f5e230a81a

+ 3 - 0
src/main/java/org/springblade/modules/project/pojo/entity/ProjectInvestPlan.java

@@ -142,6 +142,9 @@ public class ProjectInvestPlan extends BaseEntity {
     @Schema(description = "该年累计未完成投资")
     private BigDecimal yearUnfinishedInvest;
 
+    @Schema(description = "开工累计完成投资")
+    private BigDecimal startFinishInvest;
+
     @Schema(description = "存在问题")
     private String questionable;
 

+ 3 - 0
src/main/java/org/springblade/modules/project/pojo/vo/ProjectInvestPlanVO.java

@@ -77,6 +77,9 @@ public class ProjectInvestPlanVO{
     @Schema(description = "该年累计完成投资")
     private BigDecimal yearFinishInvest;
 
+    @Schema(description = "开工累计完成投资")
+    private BigDecimal startFinishInvest;
+
     @Schema(description = "该年累计未完成投资")
     private BigDecimal yearUnfinishedInvest;
 

+ 114 - 58
src/main/java/org/springblade/modules/project/service/impl/ProjectInfoServiceImpl.java

@@ -404,7 +404,7 @@ public class ProjectInfoServiceImpl extends BaseServiceImpl<ProjectInfoMapper, P
         //删除所有年的详情
         baseMapper.deleteProgressByProjectId(dto.getId());
         List<ProjectInvestPlan> updateYearPlan = new ArrayList<>();
-        //整年累计完成投资
+        //开工累计完成投资
         BigDecimal projectInvestFinished = BigDecimal.ZERO;
         for (ProjectInvestPlanVO year : years) {
             //如果此年不能填写,则直接跳过
@@ -419,7 +419,7 @@ public class ProjectInfoServiceImpl extends BaseServiceImpl<ProjectInfoMapper, P
             yearPlan.setWorkAdvise(year.getWorkAdvise());
             yearPlan.setWriteUnit(year.getWriteUnit());
             yearPlan.setLinkman(year.getLinkman());
-            //年累计完成投资
+            //年累计完成投资
             BigDecimal allInvestFinished = BigDecimal.ZERO;
             //季度已投资
             BigDecimal investFinished = BigDecimal.ZERO;
@@ -662,7 +662,8 @@ public class ProjectInfoServiceImpl extends BaseServiceImpl<ProjectInfoMapper, P
             planProgressService.saveBatch(progresses);
             //添加要修改年计划
             projectInvestFinished = projectInvestFinished.add(allInvestFinished);
-            yearPlan.setYearFinishInvest(projectInvestFinished);
+            yearPlan.setYearFinishInvest(allInvestFinished);
+            yearPlan.setStartFinishInvest(projectInvestFinished);
             if (year.getYearlyInvest() != null) {
                 yearPlan.setYearUnfinishedInvest(year.getYearlyInvest().subtract(allInvestFinished));
             }
@@ -1356,13 +1357,13 @@ public class ProjectInfoServiceImpl extends BaseServiceImpl<ProjectInfoMapper, P
             throw new ServiceException(year+"年没有投资计划,请重新选择时间");
         }
         //市交通运输委完成金额
-        BigDecimal trafficMoney = projectList.stream().filter(l -> l.getDutyUnit().contains("市交通运输委") && ObjectUtil.isNotEmpty(l.getYearlyInvest()))
-                .map(ProjectInvestPlan::getYearlyInvest).reduce(BigDecimal.ZERO, BigDecimal::add);
+        BigDecimal trafficMoney = projectList.stream().filter(l -> l.getDutyUnit().contains("市交通运输委") && ObjectUtil.isNotEmpty(l.getYearFinishInvest()))
+                .map(ProjectInvestPlan::getYearFinishInvest).reduce(BigDecimal.ZERO, BigDecimal::add);
         //铁路公路等项目个数
         long trafficTotal = projectList.stream().filter(l -> l.getDutyUnit().contains("市交通运输委") && "1,2,3,4,7".contains(l.getProjectType()+"")).count();
         //市住房城乡建委完成金额
-        BigDecimal houseMoney = projectList.stream().filter(l -> l.getDutyUnit().contains("市住房城乡建委") && ObjectUtil.isNotEmpty(l.getYearlyInvest()))
-                .map(ProjectInvestPlan::getYearlyInvest).reduce(BigDecimal.ZERO, BigDecimal::add);
+        BigDecimal houseMoney = projectList.stream().filter(l -> l.getDutyUnit().contains("市住房城乡建委") && ObjectUtil.isNotEmpty(l.getYearFinishInvest()))
+                .map(ProjectInvestPlan::getYearFinishInvest).reduce(BigDecimal.ZERO, BigDecimal::add);
         //城市轨道和城市项目个数
         long houseTotal = projectList.stream().filter(l -> l.getDutyUnit().contains("市住房城乡建委") && "5,6".contains(l.getProjectType()+"")).count();
         //一季度计划完成投资
@@ -1381,7 +1382,9 @@ public class ProjectInfoServiceImpl extends BaseServiceImpl<ProjectInfoMapper, P
 
         /** 投资完成情况表*/
         //总计
-        ReportVO1 vo1 = this.calculateTableOne(projectList, quarter);
+        ReportVO1 vo1 = this.calculateTableOne(projectList.stream().filter(l -> (l.getDutyUnit().contains("市交通运输委") ||
+                        l.getDutyUnit().contains("市住房城乡建委")) && ObjectUtil.isNotEmpty(l.getYearlyInvest()))
+                        .collect(Collectors.toList()), quarter);
         Map<String,ReportVO1> reportVOMap1 = new HashMap<>();
         Map<String,ReportVO1> reportVOMap2 = new HashMap<>();
         //当前季度完成投资
@@ -1773,72 +1776,125 @@ public class ProjectInfoServiceImpl extends BaseServiceImpl<ProjectInfoMapper, P
         list.add(v1);
         //正常
         ReportVO3 v2 = new ReportVO3();
-        v2.setOneProjectTotal((int) projectList.stream().filter(l->l.getIsOneInvestFinish() == 1 && l.getOneInvestRatio().compareTo(oneHundred) == 0).count());
-        v2.setTwoProjectTotal((int) projectList.stream().filter(l->l.getIsTwoInvestFinish() == 1 && l.getTwoInvestRatio().compareTo(oneHundred) == 0).count());
-        v2.setThreeProjectTotal((int) projectList.stream().filter(l->l.getIsThreeInvestFinish() == 1 && l.getThreeInvestRatio().compareTo(oneHundred) == 0).count());
-        v2.setFourProjectTotal((int) projectList.stream().filter(l->l.getIsFourInvestFinish() == 1 && l.getFourInvestRatio().compareTo(oneHundred) == 0).count());
+        v2.setOneProjectTotal((int) projectList.stream().filter(l->l.getIsOneInvestFinish() == 1 &&
+                l.getOneInvestRatio().compareTo(oneHundred) == 0).count());
+        v2.setTwoProjectTotal((int) projectList.stream().filter(l->l.getIsTwoInvestFinish() == 1 &&
+                l.getTwoInvestRatio().compareTo(oneHundred) == 0 && l.getTwoAggregateRatio().compareTo(oneHundred) == 0).count());
+        v2.setThreeProjectTotal((int) projectList.stream().filter(l->l.getIsThreeInvestFinish() == 1 &&
+                l.getThreeInvestRatio().compareTo(oneHundred) == 0 && l.getThreeAggregateRatio().compareTo(oneHundred) == 0).count());
+        v2.setFourProjectTotal((int) projectList.stream().filter(l->l.getIsFourInvestFinish() == 1 &&
+                l.getFourInvestRatio().compareTo(oneHundred) == 0 && l.getFourAggregateRatio().compareTo(oneHundred) == 0).count());
         list.add(v2);
         //超前
         ReportVO3 v3 = new ReportVO3();
-        v3.setOneProjectTotal((int) projectList.stream().filter(l->l.getIsOneInvestFinish() == 1 && l.getOneInvestRatio().compareTo(oneHundred) > 0).count());
-        v3.setTwoProjectTotal((int) projectList.stream().filter(l->l.getIsTwoInvestFinish() == 1 && l.getTwoInvestRatio().compareTo(oneHundred) > 0).count());
-        v3.setThreeProjectTotal((int) projectList.stream().filter(l->l.getIsThreeInvestFinish() == 1 && l.getThreeInvestRatio().compareTo(oneHundred) > 0).count());
-        v3.setFourProjectTotal((int) projectList.stream().filter(l->l.getIsFourInvestFinish() == 1 && l.getFourInvestRatio().compareTo(oneHundred) > 0).count());
+        v3.setOneProjectTotal((int) projectList.stream().filter(l->l.getIsOneInvestFinish() == 1 &&
+                l.getOneInvestRatio().compareTo(oneHundred) > 0).count());
+        v3.setTwoProjectTotal((int) projectList.stream().filter(l->l.getIsTwoInvestFinish() == 1 &&
+                l.getTwoInvestRatio().compareTo(oneHundred) > 0 && l.getTwoAggregateRatio().compareTo(oneHundred)  > 0).count());
+        v3.setThreeProjectTotal((int) projectList.stream().filter(l->l.getIsThreeInvestFinish() == 1 &&
+                l.getThreeInvestRatio().compareTo(oneHundred) > 0 && l.getThreeAggregateRatio().compareTo(oneHundred)  > 0).count());
+        v3.setFourProjectTotal((int) projectList.stream().filter(l->l.getIsFourInvestFinish() == 1 &&
+                l.getFourInvestRatio().compareTo(oneHundred) > 0 && l.getFourAggregateRatio().compareTo(oneHundred)  > 0).count());
         list.add(v3);
+
+        //过滤每个季度已经统计过的
+        List<Long> oneIds = new ArrayList<>();
+        List<Long> twoIds = new ArrayList<>();
+        List<Long> threeIds = new ArrayList<>();
+        List<Long> fourIds = new ArrayList<>();
+        List<Long> one = new ArrayList<>();
+        List<Long> two = new ArrayList<>();
+        List<Long> three = new ArrayList<>();
+        List<Long> four = new ArrayList<>();
+        //严重滞后
+        ReportVO3 v6 = new ReportVO3();
+        v6.setOneInvestRatio(projectWarning.getOneOne());
+        one = projectList.stream().filter(l -> l.getIsOneInvestFinish() == 1
+                && l.getOneInvestRatio().compareTo(projectWarning.getOneOne()) < 0).map(ProjectInvestPlanVO2::getId).collect(Collectors.toList());
+        v6.setOneProjectTotal(one.size());
+        v6.setTwoInvestRatio(projectWarning.getTwoOne());
+        two = projectList.stream().filter(l->l.getIsTwoInvestFinish() == 1
+                && (l.getTwoInvestRatio().compareTo(projectWarning.getTwoOne()) < 0 || l.getTwoAggregateRatio().compareTo(projectWarning.getTwoOneAll()) < 0))
+                .map(ProjectInvestPlanVO2::getId).collect(Collectors.toList());
+        v6.setTwoProjectTotal(two.size());
+        v6.setTwoAggregateRatio(projectWarning.getTwoOneAll());
+        v6.setThreeInvestRatio(projectWarning.getThreeOne());
+        three = projectList.stream().filter(l->l.getIsThreeInvestFinish() == 1
+                && (l.getThreeInvestRatio().compareTo(projectWarning.getThreeOne()) < 0 || l.getThreeAggregateRatio().compareTo(projectWarning.getThreeOneAll()) < 0))
+                .map(ProjectInvestPlanVO2::getId).collect(Collectors.toList());
+        v6.setThreeProjectTotal(three.size());
+        v6.setThreeAggregateRatio(projectWarning.getThreeOneAll());
+        v6.setFourInvestRatio(projectWarning.getFourOne());
+        four = projectList.stream().filter(l->l.getIsFourInvestFinish() == 1
+                && (l.getFourInvestRatio().compareTo(projectWarning.getFourOne()) < 0 || l.getFourAggregateRatio().compareTo(projectWarning.getFourOneAll()) < 0))
+                .map(ProjectInvestPlanVO2::getId).collect(Collectors.toList());
+        v6.setFourProjectTotal(four.size());
+        v6.setFourAggregateRatio(projectWarning.getFourOneAll());
+
+
+        oneIds.addAll(one);
+        twoIds.addAll(two);
+        threeIds.addAll(three);
+        fourIds.addAll(four);
+
+        //中度滞后
+        ReportVO3 v5 = new ReportVO3();
+        v5.setOneInvestRatio(projectWarning.getOneTwo());
+        one = projectList.stream().filter(l->l.getIsOneInvestFinish() == 1 && !oneIds.contains(l.getId())
+                && (l.getOneInvestRatio().compareTo(projectWarning.getOneOne()) > 0 && l.getOneInvestRatio().compareTo(projectWarning.getOneTwo()) < 0))
+                .map(ProjectInvestPlanVO2::getId).collect(Collectors.toList());
+        v5.setOneProjectTotal(one.size());
+        v5.setTwoInvestRatio(projectWarning.getTwoTwo());
+        two = projectList.stream().filter(l->l.getIsTwoInvestFinish() == 1 && !twoIds.contains(l.getId())
+                && ((l.getTwoInvestRatio().compareTo(projectWarning.getTwoOne()) > 0 && l.getTwoInvestRatio().compareTo(projectWarning.getTwoTwo()) < 0)
+                || (l.getTwoAggregateRatio().compareTo(projectWarning.getTwoOneAll()) > 0 && l.getTwoAggregateRatio().compareTo(projectWarning.getTwoTwoAll()) < 0)))
+                .map(ProjectInvestPlanVO2::getId).collect(Collectors.toList());
+        v5.setTwoProjectTotal(two.size());
+        v5.setTwoAggregateRatio(projectWarning.getTwoTwoAll());
+        v5.setThreeInvestRatio(projectWarning.getThreeTwo());
+        three = projectList.stream().filter(l->l.getIsThreeInvestFinish() == 1 && !threeIds.contains(l.getId())
+                && ((l.getThreeInvestRatio().compareTo(projectWarning.getThreeOne()) > 0 && l.getThreeInvestRatio().compareTo(projectWarning.getThreeTwo()) < 0)
+                        || (l.getThreeAggregateRatio().compareTo(projectWarning.getThreeOneAll()) > 0 && l.getThreeAggregateRatio().compareTo(projectWarning.getThreeTwoAll()) < 0)))
+                .map(ProjectInvestPlanVO2::getId).collect(Collectors.toList());
+        v5.setThreeProjectTotal(three.size());
+        v5.setThreeAggregateRatio(projectWarning.getThreeTwoAll());
+        v5.setFourInvestRatio(projectWarning.getFourTwo());
+        four = projectList.stream().filter(l->l.getIsFourInvestFinish() == 1 && !fourIds.contains(l.getId())
+                && ((l.getFourInvestRatio().compareTo(projectWarning.getFourOne()) > 0 && l.getFourInvestRatio().compareTo(projectWarning.getFourTwo()) < 0)
+                || (l.getFourAggregateRatio().compareTo(projectWarning.getFourOneAll()) > 0 && l.getFourAggregateRatio().compareTo(projectWarning.getFourTwoAll()) < 0)))
+                .map(ProjectInvestPlanVO2::getId).collect(Collectors.toList());
+        v5.setFourProjectTotal(four.size());
+        v5.setFourAggregateRatio(projectWarning.getFourTwoAll());
+
+        oneIds.addAll(one);
+        twoIds.addAll(two);
+        threeIds.addAll(three);
+        fourIds.addAll(four);
+
         //轻微滞后
         ReportVO3 v4 = new ReportVO3();
         v4.setOneInvestRatio(projectWarning.getOneThree());
-        v4.setOneProjectTotal((int) projectList.stream().filter(l->l.getIsOneInvestFinish() == 1
-                && l.getOneInvestRatio().compareTo(projectWarning.getOneThree()) > 0 && l.getOneInvestRatio().compareTo(oneHundred) < 0).count());
+        v4.setOneProjectTotal((int) projectList.stream().filter(l->l.getIsOneInvestFinish() == 1 && !oneIds.contains(l.getId())
+                && l.getOneInvestRatio().compareTo(projectWarning.getOneTwo()) > 0 && l.getOneInvestRatio().compareTo(projectWarning.getOneThree()) < 0).count());
         v4.setTwoInvestRatio(projectWarning.getTwoThree());
-        v4.setTwoProjectTotal((int) projectList.stream().filter(l->l.getIsTwoInvestFinish() == 1
-                && l.getTwoInvestRatio().compareTo(projectWarning.getTwoThree()) > 0 && l.getTwoInvestRatio().compareTo(oneHundred) < 0).count());
+        v4.setTwoProjectTotal((int) projectList.stream().filter(l->l.getIsTwoInvestFinish() == 1 && !twoIds.contains(l.getId())
+                && ((l.getTwoInvestRatio().compareTo(projectWarning.getTwoTwo()) > 0 && l.getTwoInvestRatio().compareTo(projectWarning.getTwoThree()) < 0)
+                || (l.getTwoAggregateRatio().compareTo(projectWarning.getTwoTwoAll()) > 0 && l.getTwoAggregateRatio().compareTo(projectWarning.getTwoThreeAll()) < 0))).count());
         v4.setTwoAggregateRatio(projectWarning.getTwoThreeAll());
         v4.setThreeInvestRatio(projectWarning.getThreeThree());
-        v4.setThreeProjectTotal((int) projectList.stream().filter(l->l.getIsThreeInvestFinish() == 1
-                && l.getThreeInvestRatio().compareTo(projectWarning.getThreeThree()) > 0 && l.getThreeInvestRatio().compareTo(oneHundred) < 0).count());
+        v4.setThreeProjectTotal((int) projectList.stream().filter(l->l.getIsThreeInvestFinish() == 1 && !threeIds.contains(l.getId())
+                && ((l.getThreeInvestRatio().compareTo(projectWarning.getThreeTwo()) > 0 && l.getThreeInvestRatio().compareTo(projectWarning.getThreeThree()) < 0)
+                || (l.getTwoAggregateRatio().compareTo(projectWarning.getThreeTwoAll()) > 0 && l.getTwoAggregateRatio().compareTo(projectWarning.getThreeThreeAll()) < 0))).count());
         v4.setThreeAggregateRatio(projectWarning.getThreeThreeAll());
         v4.setFourInvestRatio(projectWarning.getFourThree());
-        v4.setFourProjectTotal((int) projectList.stream().filter(l->l.getIsFourInvestFinish() == 1
-                && l.getFourInvestRatio().compareTo(projectWarning.getFourThree()) > 0 && l.getFourInvestRatio().compareTo(oneHundred) < 0).count());
+        v4.setFourProjectTotal((int) projectList.stream().filter(l->l.getIsFourInvestFinish() == 1 && !fourIds.contains(l.getId())
+                && ((l.getFourInvestRatio().compareTo(projectWarning.getFourTwo()) > 0 && l.getFourInvestRatio().compareTo(projectWarning.getFourThree()) < 0)
+                || (l.getTwoAggregateRatio().compareTo(projectWarning.getFourTwoAll()) > 0 && l.getTwoAggregateRatio().compareTo(projectWarning.getFourThreeAll()) < 0))).count());
         v4.setFourAggregateRatio(projectWarning.getFourThreeAll());
         list.add(v4);
-        //中度滞后
-        ReportVO3 v5 = new ReportVO3();
-        v5.setOneInvestRatio(projectWarning.getOneTwo());
-        v5.setOneProjectTotal((int) projectList.stream().filter(l->l.getIsOneInvestFinish() == 1
-                && l.getOneInvestRatio().compareTo(projectWarning.getOneTwo()) > 0 && l.getOneInvestRatio().compareTo(projectWarning.getOneThree()) < 0).count());
-        v5.setTwoInvestRatio(projectWarning.getTwoTwo());
-        v5.setTwoProjectTotal((int) projectList.stream().filter(l->l.getIsTwoInvestFinish() == 1
-                && l.getTwoInvestRatio().compareTo(projectWarning.getTwoTwo()) > 0 && l.getTwoInvestRatio().compareTo(projectWarning.getTwoThree()) < 0).count());
-        v5.setTwoAggregateRatio(projectWarning.getTwoTwoAll());
-        v5.setThreeInvestRatio(projectWarning.getThreeTwo());
-        v5.setThreeProjectTotal((int) projectList.stream().filter(l->l.getIsThreeInvestFinish() == 1
-                && l.getThreeInvestRatio().compareTo(projectWarning.getThreeTwo()) > 0 && l.getThreeInvestRatio().compareTo(projectWarning.getThreeThree()) < 0).count());
-        v5.setThreeAggregateRatio(projectWarning.getThreeTwoAll());
-        v5.setFourInvestRatio(projectWarning.getFourTwo());
-        v5.setFourProjectTotal((int) projectList.stream().filter(l->l.getIsFourInvestFinish() == 1
-                && l.getFourInvestRatio().compareTo(projectWarning.getFourTwo()) > 0 && l.getFourInvestRatio().compareTo(projectWarning.getFourThree()) < 0).count());
-        v5.setFourAggregateRatio(projectWarning.getFourTwoAll());
         list.add(v5);
-        //严重滞后
-        ReportVO3 v6 = new ReportVO3();
-        v6.setOneInvestRatio(projectWarning.getOneOne());
-        v6.setOneProjectTotal((int) projectList.stream().filter(l->l.getIsOneInvestFinish() == 1
-                && l.getOneInvestRatio().compareTo(projectWarning.getOneOne()) < 0).count());
-        v6.setTwoInvestRatio(projectWarning.getTwoOne());
-        v6.setTwoProjectTotal((int) projectList.stream().filter(l->l.getIsTwoInvestFinish() == 1
-                && l.getTwoInvestRatio().compareTo(projectWarning.getTwoOne()) > 0).count());
-        v6.setTwoAggregateRatio(projectWarning.getTwoOneAll());
-        v6.setThreeInvestRatio(projectWarning.getThreeOne());
-        v6.setThreeProjectTotal((int) projectList.stream().filter(l->l.getIsThreeInvestFinish() == 1
-                && l.getThreeInvestRatio().compareTo(projectWarning.getThreeOne()) > 0).count());
-        v6.setThreeAggregateRatio(projectWarning.getThreeOneAll());
-        v6.setFourInvestRatio(projectWarning.getFourOne());
-        v6.setFourProjectTotal((int) projectList.stream().filter(l->l.getIsFourInvestFinish() == 1
-                && l.getFourInvestRatio().compareTo(projectWarning.getFourOne()) > 0).count());
-        v6.setFourAggregateRatio(projectWarning.getFourOneAll());
         list.add(v6);
+
         return list;
     }