1
0
chenendian 1 день назад
Родитель
Сommit
80eb861118

+ 22 - 8
siwei-modules/siwei-apply/src/main/java/com/siwei/apply/controller/cadastre/StorageController.java

@@ -224,6 +224,15 @@ public class StorageController extends BaseController {
     public R<List<TrendStatisticsData>> getData1() {
         try {
             List<TrendStatisticsData> areaTrendStatisticsList = storageServiceImpl.getData1();
+            for(TrendStatisticsData obj : areaTrendStatisticsList) {
+                if(obj.getYear().equals("2023")) {
+                    obj.setOutDataArea(String.valueOf(55.5f));
+                } else if (obj.getYear().equals("2024")) {
+                    obj.setOutDataArea(String.valueOf(444.5f));
+                } else if (obj.getYear().equals("2025")) {
+                    obj.setOutDataArea(String.valueOf(0.f));
+                }
+            }
             return R.ok(areaTrendStatisticsList);
         } catch (Exception e) {
             return R.fail(e.getMessage());
@@ -231,15 +240,20 @@ public class StorageController extends BaseController {
     }
 
 
-    @GetMapping("/trendStatistics/getData2")
-    public R<TrendStatisticsRes> getData2() {
+    /**
+     * 根据年份,统计每一年的用途的面积
+     * year 为0或者为空字符串,表示查询所有年份的数据
+     * @param year
+     * @return
+     */
+    @GetMapping("/trendStatistics/getData2/{year}")
+    public R<List<TrendUseStatisticsData>> getData2(String year) {
         try {
-            TrendStatisticsRes res = new TrendStatisticsRes();
-            List<Map<String, Object>> areaTrendStatisticsList = new java.util.ArrayList<>(List.of()); // 面积趋势分析list
-
-
-
-            return R.ok(res);
+            //todo  这里参考 R<List<TrendStatisticsData>> getData1() 方法实现,调用service层方法获取数据并封装到res对象中
+            //   FROM vector.gj_shiji_shouchu  表字段:  年份(scnd - 类似 2020) 用途(ytdyt)
+            // 完善当前方法,可以自由改动,最终结果正确就可以
+            List<TrendUseStatisticsData> useAreaTrendStatisticsList = storageServiceImpl.getData2(year);
+            return R.ok(useAreaTrendStatisticsList);
         } catch (Exception e) {
             return R.fail(e.getMessage());
         }

+ 15 - 0
siwei-modules/siwei-apply/src/main/java/com/siwei/apply/domain/res/TrendUseStatisticsData.java

@@ -0,0 +1,15 @@
+package com.siwei.apply.domain.res;
+
+import lombok.Data;
+
+
+/**
+ * 项目概览响应类
+ * 用于展示项目的概览信息
+ */
+@Data
+public class TrendUseStatisticsData {
+    private String useName; // 用途名称
+    private String inDataArea; //入库地块面积
+    private String outDataArea; //出库地块面积
+}

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

@@ -13,6 +13,8 @@ public interface GjShijiShouchuMapper {
 
     List<Map<String, Object>> getStatsByYear();
 
+    List<Map<String, Object>> getStatsByYearAndUse(@Param("year") String year);
+
     void add(GjShijiShouchu gjShijiShouchu);
 
     GjShijiShouchu get(@Param("gid") Integer gid);

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

@@ -44,6 +44,22 @@ public class StorageServiceImpl {
     }
 
 
+    public List<TrendUseStatisticsData> getData2(String year) {
+        List<Map<String, Object>> statsList = gjShijiShouchuMapper.getStatsByYearAndUse(year);
+        List<TrendUseStatisticsData> res = new ArrayList<>();
+        if (CollectionUtils.isNotEmpty(statsList)) {
+            for (Map<String, Object> stat : statsList) {
+                TrendUseStatisticsData data = new TrendUseStatisticsData();
+                data.setUseName(convertCategory(String.valueOf(stat.get("use_name"))));
+                data.setInDataArea(String.valueOf(stat.get("in_data_area")));
+                data.setOutDataArea("0");
+                res.add(data);
+            }
+        }
+        return res;
+    }
+
+
 
 
 

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

@@ -133,6 +133,20 @@
         ORDER BY year
     </select>
 
+    <select id="getStatsByYearAndUse" resultType="map">
+        SELECT
+            COALESCE(ytdyt, '其它') AS use_name,
+            ROUND(COALESCE(SUM(CAST(scmj AS NUMERIC)), 0), 2) AS in_data_area
+        FROM vector.gj_shiji_shouchu
+        <where>
+            <if test="year != null and year != '' and year != '0'">
+                AND CAST(scnd AS VARCHAR) = #{year}
+            </if>
+        </where>
+        GROUP BY ytdyt
+        ORDER BY in_data_area DESC
+    </select>
+
     <select id="getByGeomIntersects" resultMap="gjShijiShouchuMap">
         SELECT gid, yqsdw, scmj, scjg, scwh, scsj, mj, scfs, scnd, tdzl, ytdyt, ytdsyqxz, wzfbck, bz, bsm, xzq, dabh, shape_leng, shape_area, "项目名", sccb, "面积_亩", ST_AsEWKT(geom) as geom
         FROM vector.gj_shiji_shouchu