Przeglądaj źródła

收储方式统计data1

chenendian 1 dzień temu
rodzic
commit
3b7d1b93e9

+ 12 - 11
siwei-modules/siwei-apply/src/main/java/com/siwei/apply/controller/cadastre/StorageController.java

@@ -106,19 +106,20 @@ public class StorageController extends BaseController {
     public R<List<TrendStatisticsData>> getData1() {
         try {
             List<TrendStatisticsData> areaTrendStatisticsList = storageServiceImpl.getData1();
-            for (TrendStatisticsData obj : areaTrendStatisticsList) {
-                if (obj.getYear().equals("2022")) {
-                    obj.setOutDataArea(String.valueOf(384 + 9.5f));
-                } else if (obj.getYear().equals("2023")) {
-                    obj.setOutDataArea(String.valueOf(110 + 5.5f));
-                } else if (obj.getYear().equals("2024")) {
-                    obj.setOutDataArea(String.valueOf(25 + 44.5f));
-                } else if (obj.getYear().equals("2025")) {
-                    obj.setOutDataArea(String.valueOf(16.f));
-                }
-            }
+//            for (TrendStatisticsData obj : areaTrendStatisticsList) {
+//                if (obj.getYear().equals("2022")) {
+//                    obj.setOutDataArea(String.valueOf(384 + 9.5f));
+//                } else if (obj.getYear().equals("2023")) {
+//                    obj.setOutDataArea(String.valueOf(110 + 5.5f));
+//                } else if (obj.getYear().equals("2024")) {
+//                    obj.setOutDataArea(String.valueOf(25 + 44.5f));
+//                } else if (obj.getYear().equals("2025")) {
+//                    obj.setOutDataArea(String.valueOf(16.f));
+//                }
+//            }
             return R.ok(areaTrendStatisticsList);
         } catch (Exception e) {
+            e.printStackTrace();
             return R.fail(e.getMessage());
         }
     }

+ 2 - 0
siwei-modules/siwei-apply/src/main/java/com/siwei/apply/domain/Tdgy.java

@@ -31,4 +31,6 @@ public class Tdgy extends BaseId {
     private Date createdAt;        // 创建时间
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date updatedAt;        // 更新时间
+    private String nf;        // 更新时间
+
 }

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

@@ -68,7 +68,7 @@ public interface TdgyMapper {
     List<TdgyStatisticsRes> getSjgdListByNf(@Param("startYear") String startYear,@Param("endYear") String endYear);
 
 
-
+    List<Tdgy> getTdgyList(@Param("startYear") String startYear,@Param("endYear") String endYear);
 
 
 }

+ 59 - 3
siwei-modules/siwei-apply/src/main/java/com/siwei/apply/service/cadastre/impl/StorageServiceImpl.java

@@ -1,5 +1,6 @@
 package com.siwei.apply.service.cadastre.impl;
 
+import com.siwei.apply.domain.Tdgy;
 import com.siwei.apply.domain.cadastre.LandStorageInOutReportDTO;
 import com.siwei.apply.domain.cadastre.LandStorageReportDTO;
 import com.siwei.apply.domain.cadastre.LandSupplyReportDTO;
@@ -451,20 +452,75 @@ public class StorageServiceImpl {
 
     //统计分析
     public List<TrendStatisticsData> getData1() {
-        List<Map<String, Object>> statsList = gjShijiShouchuMapper.getStatsByYear();
         List<TrendStatisticsData> res = new ArrayList<>();
+        //第一部,合并两部分供地数据,把相关的年份和面积计算出来
+        List<TdgyStatisticsRes> completeSjgdList = tdgyMapper.getSjgdListByYear(null, null, null, null);
+        List<Tdgy> tdgyList = tdgyMapper.getTdgyList(null,null);
+        Map<String,Double> outDataAreaMap =  new TreeMap<>();
+        //这里获取实际供地数据:根据年份进行分组:
+        if(CollectionUtils.isNotEmpty(completeSjgdList)){
+            for (TdgyStatisticsRes item : completeSjgdList) {
+                String year = item.getNf();
+                Double area = item.getMjMu() == null ? 0D : item.getMjMu().doubleValue();
+                outDataAreaMap.merge(year, area, Double::sum);
+            }
+        }
+        if(CollectionUtils.isNotEmpty(tdgyList)){
+            for (Tdgy item : tdgyList) {
+                String year = item.getNf();
+                Double area = item.getGdArea() == null ? 0D : item.getGdArea().doubleValue();
+                outDataAreaMap.merge(year, area, Double::sum);
+            }
+        }
+
+        //第二部分,计算供地
+        List<Map<String, Object>> statsList = gjShijiShouchuMapper.getStatsByYear();
         if (CollectionUtils.isNotEmpty(statsList)) {
             for (Map<String, Object> stat : statsList) {
                 TrendStatisticsData data = new TrendStatisticsData();
-                data.setYear(String.valueOf(stat.get("year")));
-                data.setInDataArea(String.valueOf(stat.get("in_data_area")));
+                String year = stat.get("year").toString();
+                data.setYear(year);
+                data.setInDataArea(String.format("%.2f", stat.get("in_data_area")));
                 data.setOutDataArea("0");
+                if(outDataAreaMap.containsKey(year)) {
+                    data.setOutDataArea(String.format("%.2f",outDataAreaMap.remove(year)));
+                }
                 res.add(data);
             }
         }
+
+
+
+        //如果年份交差情况,剩余的补全
+        if(MapUtils.isNotEmpty(outDataAreaMap)){
+            for (Map.Entry<String, Double> entry : outDataAreaMap.entrySet()) {
+                TrendStatisticsData data = new TrendStatisticsData();
+                String year = entry.getKey();
+                data.setYear(year);
+                data.setOutDataArea(String.format("%.2f",entry.getValue()));
+                data.setInDataArea("0");
+                res.add(data);
+            }
+        }
+
+
+        //年份排序
+        res = res.stream()
+                .sorted((d1,d2)->{
+                    String y1 = d1.getYear();
+                    String y2 = d2.getYear();
+                    if("其它".equals(y1)) return 1;
+                    if("其它".equals(y2)) return -1;
+                    return Integer.parseInt(y1)-Integer.parseInt(y2);
+                }).collect(Collectors.toList());
+
+
+
         return res;
     }
 
+
+
     public List<TrendUseStatisticsData> getData2(String year) {
         if ("0".equals(year)) {
             year = null;

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

@@ -139,7 +139,7 @@
     <select id="getStatsByYear" resultType="map">
         SELECT
             COALESCE(scnd, '其它') AS year,
-            ROUND(COALESCE(SUM(CAST(scmj AS NUMERIC)), 0), 2) AS in_data_area
+            ROUND(COALESCE(SUM(CAST(mj_m AS NUMERIC)), 0), 2) AS in_data_area
         FROM vector.gj_shouchu_xiangmu_shiji
         GROUP BY scnd
         ORDER BY year

+ 47 - 0
siwei-modules/siwei-apply/src/main/resources/mapper/TdgyMapper.xml

@@ -22,6 +22,7 @@
         <result property="createdAt" column="created_at"/>
         <result property="updatedAt" column="updated_at"/>
         <result property="gdUnit" column="gd_unit"/>
+        <result property="nf" column="nf"/>
     </resultMap>
 
     <select id="isExit" resultType="Boolean">
@@ -185,6 +186,7 @@
         '' AS uploadId,
         '' AS geomJson,
         0 AS sort,
+        COALESCE(left(nf,4), '其它') AS nf,
         shape_area AS geomArea,
         ST_AsEWKT ( geom ) AS geom
         FROM
@@ -267,4 +269,49 @@
         LIMIT 1
     </select>
 
+    <select id="getTdgyList" resultMap="BaseResultMap">
+        SELECT
+            gd.id AS id,
+            pro.ID AS project_id,
+            pro.name AS project_name,
+            '1' AS batch_type,
+            gd.hbcrht_date,
+            gd.srf,
+            gd.gd_type,
+            gd.hbcrht_date,
+            gd.has_zz,
+            gd.hbcrfapfwh,
+            gd.hbcrht_date,
+            gd.tdyt,
+            COALESCE (
+                    CASE
+                        WHEN gd.gd_unit = '平方米' THEN
+                            COALESCE ( gd.gd_area, 0 ) / 666.6666667
+                        WHEN gd.gd_unit = '公顷' THEN
+                            COALESCE ( gd.gd_area, 0 ) * 15
+                        WHEN gd.gd_unit = '亩' THEN
+                            COALESCE ( gd.gd_area, 0 ) * 1
+                        END,
+                    0
+            ) AS gd_area,
+            COALESCE(left(gd.hbcrht_date,4), '其它') AS nf,
+            '亩' as gd_unit
+        FROM
+            t_tdgy gd
+                LEFT JOIN t_project pro ON gd.project_id = pro."id"
+        WHERE
+            pro.on_chain_num > 0
+          AND gd.has_onchain = 't'
+
+        <if test="(startYear != null and startYear != null) and (endYear != '' and endYear != '')">
+            AND left(bp.pf_date,4)::NUMERIC BETWEEN #{startYear}::NUMERIC AND #{endYear}::NUMERIC
+        </if>
+    </select>
+
+
+
+
+
+
+
 </mapper>