Browse Source

已批未供数据处理、

chenendian 1 day ago
parent
commit
6c0105b1a3

+ 1 - 1
siwei-modules/siwei-apply/src/main/java/com/siwei/apply/mapper/YdbpMapper.java

@@ -58,7 +58,7 @@ public interface YdbpMapper {
                                                 @Param("keyWord") String keyWord,@Param("hasGeom") Boolean hasGeom);
                                                 @Param("keyWord") String keyWord,@Param("hasGeom") Boolean hasGeom);
 
 
 
 
-
+    List<Map<String,Object>> queryRemainGeomAreaByYearOfYdbp();
 
 
 
 
 
 

+ 38 - 29
siwei-modules/siwei-apply/src/main/java/com/siwei/apply/service/cadastre/impl/BatchServiceImpl.java

@@ -217,8 +217,6 @@ public class BatchServiceImpl{
         return batchTrendReportVO;
         return batchTrendReportVO;
     }
     }
 
 
-
-
     public List<YdbpData> billProjectList(String year) {
     public List<YdbpData> billProjectList(String year) {
         if(StringUtils.isBlank(year)){
         if(StringUtils.isBlank(year)){
             throw new  ServiceException("年份不能为空");
             throw new  ServiceException("年份不能为空");
@@ -249,43 +247,48 @@ public class BatchServiceImpl{
         return resList;
         return resList;
     }
     }
 
 
-
     public List<Map<String,Object>> approvalAndNotSupply(String year) {
     public List<Map<String,Object>> approvalAndNotSupply(String year) {
         if (StringUtils.isBlank(year) || "0".equals(year)) {
         if (StringUtils.isBlank(year) || "0".equals(year)) {
             year = "";
             year = "";
         }
         }
 
 
         List<Map<String,Object>> resList = new ArrayList<>();
         List<Map<String,Object>> resList = new ArrayList<>();
-        List<Map<String,Object>> singleBatchList =  new ArrayList<>();
+
+        List<Map<String,Object>> singleBatchList = ydbpMapper.queryRemainGeomAreaByYearOfYdbp();
         List<Map<String,Object>> reportBatchList =  ydbpDataMapper.queryRemainGeomAreaByYear();
         List<Map<String,Object>> reportBatchList =  ydbpDataMapper.queryRemainGeomAreaByYear();
 
 
-        Map<String,List<Map<String,Object>>> groupedSingleBatch = new HashMap<>();
-        Map<String, List<YdbpData>> groupedReportBatch = new HashMap<>();
+        Map<String,Map<String,Object>> groupedSingleBatch = new HashMap<>();
+        Map<String,Map<String,Object>> groupedReportBatch = new HashMap<>();
+
 
 
         if(CollectionUtils.isNotEmpty(singleBatchList)) {
         if(CollectionUtils.isNotEmpty(singleBatchList)) {
             groupedSingleBatch = singleBatchList.stream()
             groupedSingleBatch = singleBatchList.stream()
-                    .collect(Collectors.groupingBy(s->{
+                    .collect(Collectors.toMap(
+                            s -> {
+                                Object nfStr = s.get("stat_year");
+                                if(nfStr==null || String.valueOf(nfStr).isEmpty()||"1000".equals(String.valueOf(nfStr))){
+                                    return "其它";
+                                }
+                                return String.valueOf(nfStr);
+                            },
+                            s -> s  // value直接是当前对象
+                    ));
+        }
+
+
+        if(CollectionUtils.isNotEmpty(reportBatchList)) {
+            groupedReportBatch = reportBatchList.stream()
+                    .collect(Collectors.toMap(s->{
                         Object nfStr = s.get("stat_year");
                         Object nfStr = s.get("stat_year");
                         if(nfStr==null || String.valueOf(nfStr).isEmpty()||"1000".equals(String.valueOf(nfStr))){
                         if(nfStr==null || String.valueOf(nfStr).isEmpty()||"1000".equals(String.valueOf(nfStr))){
                             return "其它";
                             return "其它";
                         }
                         }
                         return String.valueOf(nfStr);
                         return String.valueOf(nfStr);
-                    }));
-        }
-
-        if(CollectionUtils.isNotEmpty(reportBatchList)) {
-//            groupedReportBatch = reportBatchList.stream()
-//                    .collect(Collectors.groupingBy(s->{
-//                        String pfDate = "";
-//                        if(StringUtils.isBlank(pfDate)){
-//                            return "其它";
-//                        }
-//                        pfDate = StringUtils.substring(pfDate,0,4);
-//                        return pfDate;
-//                    }));
+                    },
+                    s->s));
         }
         }
 
 
-        Set<String> yearSet = new LinkedHashSet<>();
+        Set<String> yearSet = new TreeSet<>();
         if(MapUtils.isNotEmpty(groupedSingleBatch)) {
         if(MapUtils.isNotEmpty(groupedSingleBatch)) {
             yearSet.addAll(groupedSingleBatch.keySet());
             yearSet.addAll(groupedSingleBatch.keySet());
         }
         }
@@ -294,18 +297,24 @@ public class BatchServiceImpl{
         }
         }
 
 
         for(String yearKey : yearSet){
         for(String yearKey : yearSet){
-            Double areaArea = 0d;
-            if(groupedSingleBatch.containsKey(yearKey)){
-                //Map<Object>ddd =  groupedSingleBatch.get(yearKey);
-//              areaArea += groupedSingleBatch.get("ddd");
-            }
+            Map<String,Object> single = groupedSingleBatch.get(yearKey);
+            Map<String,Object> report = groupedReportBatch.get(yearKey);
+
+            Double singleArea =  Objects.nonNull(single) ? (Double)single.get("total_area_mu"):0d;
+            Double reportArea = Objects.nonNull(report) ? (Double) report.get("total_area_mu"):0d;
+
+            Long singleCount = Objects.nonNull(single) ? (Long) single.get("patch_count"):0;
+            Long reportCount = Objects.nonNull(report) ? (Long) report.get("patch_count"):0;
+
             Map<String,Object> itemMap = new HashMap<>();
             Map<String,Object> itemMap = new HashMap<>();
             itemMap.put("year",yearKey);
             itemMap.put("year",yearKey);
-            itemMap.put("singleArea",null);
-            itemMap.put("reportArea",null);
+            itemMap.put("area",String.format("%.2f", (singleArea+reportArea)));
+            itemMap.put("count",singleCount+reportCount);
+
             resList.add(itemMap);
             resList.add(itemMap);
         }
         }
-        return null;
+
+        return resList;
     }
     }
 
 
 
 

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

@@ -110,10 +110,50 @@
             )
             )
         </if>
         </if>
 
 
-
     </select>
     </select>
 
 
 
 
+    <select id="queryRemainGeomAreaByYearOfYdbp"   resultType="java.util.Map">
+        WITH
+            supply_geom AS (
+                SELECT DISTINCT
+                    ST_Normalize(gd.geom) AS norm_geom
+                FROM t_geom_db_details gd
+                         INNER JOIN t_node_land nl ON gd.upload_id = nl.geom_db_id
+                         INNER JOIN t_tdgy gy ON nl.node_id = gy.id
+                         INNER JOIN t_project pro ON gy.project_id = pro.id
+                WHERE gy.has_onchain = 't'
+                  AND pro.project_type = 1
+            ),
+
+            hit_geom_id AS (
+                SELECT DISTINCT gd.id as details_id
+                FROM t_geom_db_details gd
+                         INNER JOIN t_node_land nl ON gd.upload_id = nl.geom_db_id
+                         INNER JOIN t_ydbp bp ON nl.node_id = bp.id
+                WHERE bp.has_onchain = 't'
+                  AND EXISTS (
+                    SELECT 1 FROM supply_geom
+                    WHERE ST_Equals(ST_Normalize(gd.geom), supply_geom.norm_geom)
+                )
+            )
+
+        SELECT
+            LEFT(bp.pf_date, '4') AS stat_year,
+            COUNT(DISTINCT gd.id) AS patch_count,
+            SUM( COALESCE(ST_Area(gd.geom), 0) / 666.6666667 ) AS total_area_mu
+        FROM t_geom_db_details gd
+            INNER JOIN t_node_land nl ON gd.upload_id = nl.geom_db_id
+            INNER JOIN t_ydbp  bp ON nl.node_id = bp.id
+        WHERE bp.has_onchain = 't'
+          AND NOT EXISTS (
+            SELECT 1 FROM hit_geom_id h WHERE h.details_id = gd.id
+            )
+        GROUP BY stat_year
+        ORDER BY stat_year
+
+    </select>
+