1
0
Просмотр исходного кода

收储年末数据计算重构

chenendian 1 день назад
Родитель
Сommit
d74b66c6b3

+ 68 - 50
siwei-modules/siwei-apply/src/main/java/com/siwei/apply/controller/cadastre/StorageController.java

@@ -48,56 +48,56 @@ public class StorageController extends BaseController {
         }
         }
     }
     }
 
 
-    /**
-     * 趋势统计
-     */
-    @GetMapping("/trendStatistics/{landType}")
-    public R<TrendStatisticsRes> getTrendStatistics(@PathVariable String landType) {
-        try {
-            TrendStatisticsRes res = new TrendStatisticsRes();
-            List<Map<String, Object>> areaTrendStatisticsList = new java.util.ArrayList<>(List.of());
-            List<Map<String, Object>> supplyModeStatisticsList = new java.util.ArrayList<>(List.of());
-
-            Map<String, Object> map1 = new HashMap<>();
-            map1.put("year", 2023);
-            map1.put("area", 3365.22);
-
-            Map<String, Object> map2 = new HashMap<>();
-            map2.put("year", 2024);
-            map2.put("area", 18900.35);
-
-            Map<String, Object> map3 = new HashMap<>();
-            map3.put("year", 2025);
-            map3.put("area", 2000.35);
-            areaTrendStatisticsList.addAll(List.of(map1, map2, map3));
-            res.setAreaTrendStatisticsList(areaTrendStatisticsList);
-
-            Map<String, Object> modeMap1 = new HashMap<>();
-            modeMap1.put("year", 2023);
-            modeMap1.put("transferArea", 587.7);
-            modeMap1.put("allocateArea", 500.5);
-            modeMap1.put("otherArea", 498.23);
-            supplyModeStatisticsList.add(modeMap1);
-
-            Map<String, Object> modeMap2 = new HashMap<>();
-            modeMap2.put("year", 2024);
-            modeMap2.put("transferArea", 487.7);
-            modeMap2.put("allocateArea", 400.5);
-            modeMap2.put("otherArea", 398.23);
-            supplyModeStatisticsList.add(modeMap2);
-
-            Map<String, Object> modeMap3 = new HashMap<>();
-            modeMap3.put("year", 2025);
-            modeMap3.put("transferArea", 487.7);
-            modeMap3.put("allocateArea", 400.5);
-            modeMap3.put("otherArea", 398.23);
-            supplyModeStatisticsList.add(modeMap3);
-            res.setSupplyModeStatisticsList(supplyModeStatisticsList);
-            return R.ok(res);
-        } catch (Exception e) {
-            return R.fail(e.getMessage());
-        }
-    }
+//    /**
+//     * 趋势统计
+//     */
+//    @GetMapping("/trendStatistics/{landType}")
+//    public R<TrendStatisticsRes> getTrendStatistics(@PathVariable String landType) {
+//        try {
+//            TrendStatisticsRes res = new TrendStatisticsRes();
+//            List<Map<String, Object>> areaTrendStatisticsList = new java.util.ArrayList<>(List.of());
+//            List<Map<String, Object>> supplyModeStatisticsList = new java.util.ArrayList<>(List.of());
+//
+//            Map<String, Object> map1 = new HashMap<>();
+//            map1.put("year", 2023);
+//            map1.put("area", 3365.22);
+//
+//            Map<String, Object> map2 = new HashMap<>();
+//            map2.put("year", 2024);
+//            map2.put("area", 18900.35);
+//
+//            Map<String, Object> map3 = new HashMap<>();
+//            map3.put("year", 2025);
+//            map3.put("area", 2000.35);
+//            areaTrendStatisticsList.addAll(List.of(map1, map2, map3));
+//            res.setAreaTrendStatisticsList(areaTrendStatisticsList);
+//
+//            Map<String, Object> modeMap1 = new HashMap<>();
+//            modeMap1.put("year", 2023);
+//            modeMap1.put("transferArea", 587.7);
+//            modeMap1.put("allocateArea", 500.5);
+//            modeMap1.put("otherArea", 498.23);
+//            supplyModeStatisticsList.add(modeMap1);
+//
+//            Map<String, Object> modeMap2 = new HashMap<>();
+//            modeMap2.put("year", 2024);
+//            modeMap2.put("transferArea", 487.7);
+//            modeMap2.put("allocateArea", 400.5);
+//            modeMap2.put("otherArea", 398.23);
+//            supplyModeStatisticsList.add(modeMap2);
+//
+//            Map<String, Object> modeMap3 = new HashMap<>();
+//            modeMap3.put("year", 2025);
+//            modeMap3.put("transferArea", 487.7);
+//            modeMap3.put("allocateArea", 400.5);
+//            modeMap3.put("otherArea", 398.23);
+//            supplyModeStatisticsList.add(modeMap3);
+//            res.setSupplyModeStatisticsList(supplyModeStatisticsList);
+//            return R.ok(res);
+//        } catch (Exception e) {
+//            return R.fail(e.getMessage());
+//        }
+//    }
 
 
     /**
     /**
      * 出入库趋势统计
      * 出入库趋势统计
@@ -137,6 +137,24 @@ public class StorageController extends BaseController {
         }
         }
     }
     }
 
 
+
+    /**
+     * 年末收储统计数据
+     */
+    @GetMapping("/getLandStock")
+    public R<List<Map<String, Object>>> landStock(@RequestParam String year) {
+        try {
+            List<Map<String, Object>> res = storageServiceImpl.landStock(year);
+            return R.ok(res);
+        } catch (Exception e) {
+            e.printStackTrace();
+            return R.fail(e.getMessage());
+        }
+    }
+
+
+
+
     /**
     /**
      * 根据年份和类型查询土地收储统计项目列表
      * 根据年份和类型查询土地收储统计项目列表
      * supplyType: 0-全部,1-计划,2-完成
      * supplyType: 0-全部,1-计划,2-完成

+ 5 - 0
siwei-modules/siwei-apply/src/main/java/com/siwei/apply/mapper/GjShijiShouchuMapper.java

@@ -35,4 +35,9 @@ public interface GjShijiShouchuMapper {
     List<TdgyStatisticsRes> gjShijiShouchuListByYear(@Param("year") String year,@Param("startYear") String startYear,@Param("endYear") String endYear,@Param("landTypeCode") String landTypeCode, @Param("startTime") String startTime, @Param("endTime") String endTime);
     List<TdgyStatisticsRes> gjShijiShouchuListByYear(@Param("year") String year,@Param("startYear") String startYear,@Param("endYear") String endYear,@Param("landTypeCode") String landTypeCode, @Param("startTime") String startTime, @Param("endTime") String endTime);
 
 
     Map<String, Object> getActualProject(@Param("gid") String gid);
     Map<String, Object> getActualProject(@Param("gid") String gid);
+
+    //统计年末的收储存量数据
+    List<Map<String, Object>> queryDifferenceGeomAreaByYearOfShouchu(@Param("year") String year);
+
+
 }
 }

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

@@ -556,6 +556,15 @@ public class StorageServiceImpl {
         return res;
         return res;
     }
     }
 
 
+    public List<Map<String, Object>> landStock(String year) {
+        if(StringUtils.isBlank(year)||"0".equals(year)){
+            year = null;
+        }
+        List<Map<String, Object>> statsList = gjShijiShouchuMapper.queryDifferenceGeomAreaByYearOfShouchu(year);
+        return  statsList;
+    }
+
+
     public StorageYearStatisticsRes getYearStatistics(String year) {
     public StorageYearStatisticsRes getYearStatistics(String year) {
         StorageYearStatisticsRes res = new StorageYearStatisticsRes();
         StorageYearStatisticsRes res = new StorageYearStatisticsRes();
         if(StringUtils.isBlank(year)||"0".equals(year)){
         if(StringUtils.isBlank(year)||"0".equals(year)){

+ 3 - 0
siwei-modules/siwei-apply/src/main/java/com/siwei/apply/service/impl/TdgyImpl.java

@@ -187,6 +187,9 @@ public class TdgyImpl implements TdgyService {
                 throw new ServiceException("当前地块未包含多个地块,报批数据不在同一批次!");
                 throw new ServiceException("当前地块未包含多个地块,报批数据不在同一批次!");
             }
             }
 
 
+
+
+
             String tableName ="t_ydbp_data";
             String tableName ="t_ydbp_data";
             //获取到对应的批次报批节点,插入到流程表中
             //获取到对应的批次报批节点,插入到流程表中
             String nodeId = resultMap.keySet().stream().findFirst().get();
             String nodeId = resultMap.keySet().stream().findFirst().get();

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

@@ -226,4 +226,44 @@
         LIMIT 1
         LIMIT 1
     </select>
     </select>
 
 
+
+
+    <select id="queryDifferenceGeomAreaByYearOfShouchu" resultType="map">
+        WITH  geom_gy_data AS (
+            SELECT   nf, "public".ST_Union(geom) AS union_geom  from (
+                 SELECT  COALESCE(left(hbcrht_date,4), '其它') AS nf, 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 = 2
+                 UNION
+                 SELECT COALESCE(left(nf,4), '其它') AS nf , geom from vector.gj_gd_data
+             )	tmp    GROUP BY nf  ORDER BY nf
+        ),
+          geom_shouchu_data AS (
+              SELECT COALESCE(scnd, '其它') AS 		nf,
+                     count(DISTINCT gid) AS patch_count,
+                     public.ST_Union(geom)  AS union_geom,
+                     ROUND(COALESCE(SUM(CAST(mj_m AS NUMERIC)), 0), 2) AS area
+              FROM vector.gj_shouchu_xiangmu_shiji  GROUP BY scnd
+
+          )
+        SELECT
+            sc.nf,
+            sc.patch_count,
+            ST_AsEWKT( ST_Difference(sc.union_geom, COALESCE(gy.union_geom, ST_GeomFromText('POLYGON EMPTY',4326)))) AS rest_geom,
+            COALESCE (ST_Area( ST_Difference(sc.union_geom, COALESCE(gy.union_geom, ST_GeomFromText('POLYGON EMPTY',4326)))::geography ),0) / 666.6666667 AS rest_area
+        FROM geom_shouchu_data sc
+        LEFT JOIN  geom_gy_data gy   ON sc.nf = gy.nf
+        WHERE
+            NOT ST_IsEmpty( ST_Difference(sc.union_geom,COALESCE(gy.union_geom, ST_GeomFromText('POLYGON EMPTY',4326)) ) )
+        <if test="year != null and year != ''">
+            AND  sc.nf = #{year}
+        </if>
+    </select>
+
+
+
 </mapper>
 </mapper>