Przeglądaj źródła

收储报表第一部分

chenendian 6 dni temu
rodzic
commit
18aeb22be5

+ 21 - 0
siwei-modules/siwei-apply/src/main/java/com/siwei/apply/controller/cadastre/StorageController.java

@@ -1,5 +1,7 @@
 package com.siwei.apply.controller.cadastre;
 
+import com.siwei.apply.domain.cadastre.LandStorageReportDTO;
+import com.siwei.apply.domain.cadastre.LandSupplyReportDTO;
 import com.siwei.apply.domain.res.StorageYearStatisticsRes;
 import com.siwei.apply.domain.res.TrendStatisticsData;
 import com.siwei.apply.domain.res.TrendStatisticsRes;
@@ -174,4 +176,23 @@ public class StorageController extends BaseController {
             return R.fail(e.getMessage());
         }
     }
+
+
+
+    @GetMapping("/report/progress")
+    public R<LandStorageReportDTO> getStroageProgress(@RequestParam String startTime, @RequestParam String endTime) {
+        try {
+            //todo 调用相关方法,获取数据,封装成LandStorageReportDTO对象
+            LandStorageReportDTO res =  storageServiceImpl.stroageProgress(startTime,endTime);
+            return R.ok(res);
+        } catch (Exception e) {
+            return R.fail(e.getMessage());
+        }
+    }
+
+
+
+
+
+
 }

+ 55 - 0
siwei-modules/siwei-apply/src/main/java/com/siwei/apply/domain/cadastre/LandStorageReportDTO.java

@@ -0,0 +1,55 @@
+package com.siwei.apply.domain.cadastre;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class LandStorageReportDTO {
+    private String title;
+    private String statTimeRange;
+    private SummaryDTO summary;
+    private List<DetailDTO> details;
+
+    @Data
+    public static class SummaryDTO {
+        private TotalDTO total;
+    }
+
+    @Data
+    public static class TotalDTO {
+        private String progress ;
+        private PlanDTO plan;
+        private CompletedDTO completed;
+    }
+
+    @Data
+    public static class DetailDTO {
+        private String category;
+        private String progress;
+        private PlanDTO plan;
+        private CompletedDTO completed;
+    }
+
+    @Data
+    public static class PlanDTO {
+        private Double area;
+        private Integer count;
+        private Float cost; //成本
+        private Integer method1;
+        private Integer method2;
+        private Integer otherMethod;
+    }
+
+    @Data
+    public static class CompletedDTO {
+        private Double area;
+        private Integer count;
+        private Float cost; //成本
+        private Integer method1;
+        private Integer method2;
+        private Integer otherMethod;
+    }
+
+
+}

+ 62 - 0
siwei-modules/siwei-apply/src/main/java/com/siwei/apply/service/cadastre/impl/StorageServiceImpl.java

@@ -1,14 +1,17 @@
 package com.siwei.apply.service.cadastre.impl;
 
+import com.siwei.apply.domain.cadastre.LandStorageReportDTO;
 import com.siwei.apply.domain.cadastre.LandSupplyReportDTO;
 import com.siwei.apply.domain.res.*;
 import com.siwei.apply.domain.vo.LandSupplyProjectVO;
 import com.siwei.apply.mapper.GjShijiShouchuMapper;
 import com.siwei.apply.mapper.GjShouchuJihuaMapper;
 import com.siwei.common.core.utils.StringUtils;
+import com.siwei.system.api.domain.SysDictData;
 import org.apache.commons.collections4.CollectionUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.web.bind.annotation.RequestParam;
 
 import java.math.BigDecimal;
 import java.math.RoundingMode;
@@ -24,6 +27,65 @@ public class StorageServiceImpl {
     @Autowired
     private GjShouchuJihuaMapper gjShouchuJihuaMapper;
 
+
+
+    //统计分析
+    public LandStorageReportDTO stroageProgress(String startTime,String endTime) {
+        LandStorageReportDTO report = new LandStorageReportDTO();
+        report.setTitle("收储进度分析报表");
+        report.setStatTimeRange(startTime + " 至 " + endTime);
+
+        String year = "2025";
+        List<LandStorageReportDTO.DetailDTO> details =  new ArrayList<>();
+        List<TdgyStatisticsRes> completeList = gjShijiShouchuMapper.gjShijiShouchuListByYear(year, null, null, null);
+        Map<String, List<TdgyStatisticsRes>> completeMap = completeList.stream().collect(Collectors.groupingBy(TdgyStatisticsRes::getTdyt));
+        // 这里处理计划数据
+        List<TdgyStatisticsRes> planList = gjShouchuJihuaMapper.getPlanListByYear(year, null);
+        Set<String> categorySet = completeMap.keySet();
+        Map<String, List<TdgyStatisticsRes>> groupedPlan = planList.stream()
+                .collect(Collectors.groupingBy(
+                        s -> {
+                            String tdyt = s.getTdyt();
+                            if (categorySet.contains(tdyt)) {
+                                return tdyt;
+                            }
+                            return "其它";
+                        }
+                ));
+
+
+        for(String category  : categorySet){
+            LandStorageReportDTO.DetailDTO tmpDetailDTO =  new LandStorageReportDTO.DetailDTO();
+            List<TdgyStatisticsRes>   categoryPlanList =  groupedPlan.get(category);
+            LandStorageReportDTO.PlanDTO plan = new LandStorageReportDTO.PlanDTO();
+            plan.setCount(categoryPlanList.size());
+            double totalArea = categoryPlanList.stream().mapToDouble(item -> item.getMjMu().doubleValue()).sum();
+            plan.setArea(totalArea);
+            plan.setCost(0F);
+            tmpDetailDTO.setPlan(plan);
+
+            List<TdgyStatisticsRes>  categoryCompleteList = completeMap.get(category);
+            LandStorageReportDTO.CompletedDTO complete = new LandStorageReportDTO.CompletedDTO();
+            complete.setCost(0f);
+            totalArea = categoryCompleteList.stream().mapToDouble(item -> item.getMjMu().doubleValue()).sum();
+            complete.setArea(totalArea);
+            complete.setCount(categoryCompleteList.size());
+            complete.setMethod1(null);
+            tmpDetailDTO.setCompleted(complete);
+            tmpDetailDTO.setCategory(category);
+            tmpDetailDTO.setProgress(String.valueOf(categoryCompleteList.size()/categoryPlanList.size()));
+            details.add(tmpDetailDTO);
+        }
+        report.setDetails(details);
+
+
+
+        return  null;
+    }
+
+
+
+
     //统计分析
     public List<TrendStatisticsData> getData1() {
         List<Map<String, Object>> statsList = gjShijiShouchuMapper.getStatsByYear();

+ 1 - 1
siwei-modules/siwei-apply/src/main/resources/mapper/GjShijiShouchuMapper.xml

@@ -159,7 +159,7 @@
             "项目名" AS xmmc,
             yqsdw AS company,
             CAST(gid AS VARCHAR) AS nodeId,
-            ytdyt AS tdyt,
+            COALESCE(ytdyt, '其它') AS tdyt,,
             scfs AS gyfs,
             to_timestamp(scsj, 'YYYY/MM/DD') AS gysj,
             ROUND("面积_亩", 2) AS mjMu,