Browse Source

统计加上参数

gushoubang 6 months ago
parent
commit
a82dfd8995

+ 12 - 5
onemap-modules/onemap-apply/src/main/java/com/onemap/apply/controller/tdgy/TdtjController.java

@@ -2,11 +2,13 @@ package com.onemap.apply.controller.tdgy;
 
 import com.onemap.apply.service.tdgy.TdtjService;
 import com.onemap.common.core.web.domain.RequestResult;
+import org.springframework.format.annotation.DateTimeFormat;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
 import javax.annotation.Resource;
+import java.util.Date;
 
 /**
  * 闲置土地统计
@@ -23,20 +25,25 @@ public class TdtjController {
      * @return
      */
     @GetMapping("/overview")
-    public RequestResult overviewTdtj(String startTime, String endTime) {
-        RequestResult requestResult = tdtjService.getOverview(startTime, endTime);
+    public RequestResult overviewTdtj(@DateTimeFormat(pattern = "yyyy/MM/dd") String startTime,
+                                      @DateTimeFormat(pattern = "yyyy/MM/dd") String endTime,
+                                      String districtCode) {
+        RequestResult requestResult = tdtjService.getOverview(startTime, endTime, districtCode);
         return requestResult;
     }
 
     @GetMapping("/district")
-    public RequestResult districtTdtj(String startTime, String endTime) {
+    public RequestResult districtTdtj(@DateTimeFormat(pattern = "yyyy/MM/dd") String startTime,
+                                      @DateTimeFormat(pattern = "yyyy/MM/dd") String endTime) {
         RequestResult requestResult = tdtjService.getDistrict(startTime, endTime);
         return requestResult;
     }
 
     @GetMapping("/reason")
-    public RequestResult reasonTdtj(String startTime, String endTime) {
-        RequestResult requestResult = tdtjService.getReason(startTime, endTime);
+    public RequestResult reasonTdtj(@DateTimeFormat(pattern = "yyyy/MM/dd") String startTime,
+                                    @DateTimeFormat(pattern = "yyyy/MM/dd") String endTime,
+                                    String districtCode) {
+        RequestResult requestResult = tdtjService.getReason(startTime, endTime, districtCode);
         return requestResult;
     }
 }

+ 12 - 4
onemap-modules/onemap-apply/src/main/java/com/onemap/apply/mapper/tdgy/TdgyMapper.java

@@ -6,6 +6,7 @@ import com.onemap.common.datasource.annotation.Slave;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
+import java.util.Date;
 import java.util.List;
 import java.util.Map;
 
@@ -20,16 +21,23 @@ public interface TdgyMapper extends BaseMapper<TdgySjDTO> {
     Map<String, Object> getCountAreaSuspected();
 
     @Slave
-    Map<String, Object> getCountAreaConfirm();
+    Map<String, Object> getCountAreaConfirm(@Param("startTime") String startTime,
+                                            @Param("endTime") String endTime,
+                                            @Param("districtCode") String districtCode);
 
     @Slave
-    Map<String, Object> getCountAreaDisposal();
+    Map<String, Object> getCountAreaDisposal(@Param("startTime") String startTime,
+                                             @Param("endTime") String endTime,
+                                             @Param("districtCode") String districtCode);
 
     // 根据行政区划统计数据
     @Slave
-    List<Map<String, Object>> getAreaByDistrict();
+    List<Map<String, Object>> getAreaByDistrict(@Param("startTime") String startTime,
+                                                @Param("endTime") String endTime);
 
     // 根据闲置原因划统计数据
     @Slave
-    List<Map<String, Object>> getAreaByReason();
+    List<Map<String, Object>> getAreaByReason(@Param("startTime") String startTime,
+                                              @Param("endTime") String endTime,
+                                              @Param("districtCode") String districtCode);
 }

+ 6 - 6
onemap-modules/onemap-apply/src/main/java/com/onemap/apply/service/impl/tdgy/TdtjServiceImp.java

@@ -20,7 +20,7 @@ public class TdtjServiceImp implements TdtjService {
     // TODO:只统计22年~24年的数据
 
     @Override
-    public RequestResult getOverview(String startTime, String endTime) {
+    public RequestResult getOverview(String startTime, String endTime, String districtCode) {
         Map<String, Object> map = new HashMap<>();
 
         // 获取疑似土地总数
@@ -32,7 +32,7 @@ public class TdtjServiceImp implements TdtjService {
         map.put("suspected", mapSuspected);
 
         // 获取确认土地总数
-        Map<String, Object> confirmRes = tdgyMapper.getCountAreaConfirm();
+        Map<String, Object> confirmRes = tdgyMapper.getCountAreaConfirm(startTime, endTime, districtCode);
 
         Map<String, Object> mapConfirm = new HashMap<>();
         mapConfirm.put("area", confirmRes.get("area"));
@@ -40,7 +40,7 @@ public class TdtjServiceImp implements TdtjService {
         map.put("confirm", mapConfirm);
 
         // 获取处置土地总数
-        Map<String, Object> disposalRes = tdgyMapper.getCountAreaDisposal();
+        Map<String, Object> disposalRes = tdgyMapper.getCountAreaDisposal(startTime, endTime, districtCode);
 
         Map<String, Object> mapDisposal = new HashMap<>();
         mapDisposal.put("area", disposalRes.get("area"));
@@ -63,7 +63,7 @@ public class TdtjServiceImp implements TdtjService {
     @Override
     public RequestResult getDistrict(String startTime, String endTime) {
         List<Map<String, Object>> listRes = new ArrayList<>();
-        List<Map<String, Object>> districtMaps = tdgyMapper.getAreaByDistrict();
+        List<Map<String, Object>> districtMaps = tdgyMapper.getAreaByDistrict(startTime, endTime);
 
         // 循环totalMap
         for (Map<String, Object> districtMap : districtMaps) {
@@ -91,8 +91,8 @@ public class TdtjServiceImp implements TdtjService {
     }
 
     @Override
-    public RequestResult getReason(String startTime, String endTime) {
-        List<Map<String, Object>> reasonMaps = tdgyMapper.getAreaByReason();
+    public RequestResult getReason(String startTime, String endTime, String districtCode) {
+        List<Map<String, Object>> reasonMaps = tdgyMapper.getAreaByReason(startTime, endTime, districtCode);
         return RequestResult.success(reasonMaps);
     }
 }

+ 2 - 2
onemap-modules/onemap-apply/src/main/java/com/onemap/apply/service/tdgy/TdtjService.java

@@ -3,9 +3,9 @@ package com.onemap.apply.service.tdgy;
 import com.onemap.common.core.web.domain.RequestResult;
 
 public interface TdtjService {
-    RequestResult getOverview(String startTime, String endTime);
+    RequestResult getOverview(String startTime, String endTime, String districtCode);
 
     RequestResult getDistrict(String startTime, String endTime);
 
-    RequestResult getReason(String startTime, String endTime);
+    RequestResult getReason(String startTime, String endTime, String districtCode);
 }

+ 48 - 13
onemap-modules/onemap-apply/src/main/resources/mapper/postgresql/tdgy/TdgyMapper.xml

@@ -36,37 +36,72 @@
     </select>
 
     <select id="getCountAreaConfirm" resultType="map">
-        SELECT COUNT(td.id) AS total, SUM(td.crmj::NUMERIC) AS area
+        SELECT COUNT(td.ID) AS total,
+        SUM(td.crmj::NUMERIC) AS area
         FROM base.t_land_idle_confirm AS confirm
-                 JOIN vector.tdgy_sj AS td ON confirm.land_id = td.id::VARCHAR
-        WHERE confirm.is_idle = true
+        JOIN vector.tdgy_sj AS td ON confirm.land_id = td.ID::VARCHAR
+        WHERE confirm.is_idle = TRUE
+        <if test="districtCode != null and districtCode != ''">
+            AND td.xzqh = #{districtCode}
+        </if>
+        <if test="startTime != null">
+            AND confirm.confirm_time &gt;= #{startTime}::timestamp
+        </if>
+        <if test="endTime != null">
+            AND confirm.confirm_time &lt;= #{endTime}::timestamp + interval '1 day'
+        </if>
     </select>
 
     <select id="getCountAreaDisposal" resultType="map">
         SELECT COUNT(td.id) AS total, SUM(td.crmj::NUMERIC) AS area
         FROM base.t_land_idle_confirm AS confirm
-                 JOIN vector.tdgy_sj AS td ON confirm.land_id = td.id::VARCHAR
+        JOIN vector.tdgy_sj AS td ON confirm.land_id = td.id::VARCHAR
         WHERE confirm.is_idle = true AND confirm.is_disposal = true
+        <if test="districtCode != null and districtCode != ''">
+            AND td.xzqh = #{districtCode}
+        </if>
+        <if test="startTime != null">
+            AND confirm.confirm_time &gt;= #{startTime}::timestamp
+        </if>
+        <if test="endTime != null">
+            AND confirm.confirm_time &lt;= #{endTime}::timestamp + interval '1 day'
+        </if>
     </select>
 
     <select id="getAreaByDistrict" resultType="map">
-        SELECT ts.xzqh                                                                AS "districtCode",
-               SUM(ts.crmj::NUMERIC)                                                  AS "totalArea",
-               SUM(CASE WHEN confirm.is_idle = true THEN ts.crmj::NUMERIC ELSE 0 END) AS "confirmArea",
-               SUM(CASE WHEN confirm.is_idle = true AND confirm.is_disposal = true THEN ts.crmj:: NUMERIC ELSE 0
-                   END)                                                               AS "disposalArea"
+        SELECT ts.xzqh AS "districtCode",
+        SUM(ts.crmj::NUMERIC) AS "totalArea",
+        SUM(CASE WHEN confirm.is_idle = true THEN ts.crmj::NUMERIC ELSE 0 END) AS "confirmArea",
+        SUM(CASE WHEN confirm.is_idle = true AND confirm.is_disposal = true THEN ts.crmj:: NUMERIC ELSE 0
+        END) AS "disposalArea"
         FROM vector.tdgy_sj ts
-                 LEFT JOIN
-             base.t_land_idle_confirm confirm ON confirm.land_id = ts.id::VARCHAR
+        LEFT JOIN
+        base.t_land_idle_confirm confirm ON confirm.land_id = ts.id::VARCHAR
+        WHERE 1=1
+        <if test="startTime != null">
+            AND confirm.confirm_time &gt;= #{startTime}::timestamp
+        </if>
+        <if test="endTime != null">
+            AND confirm.confirm_time &lt;= #{endTime}::timestamp + interval '1 day'
+        </if>
         GROUP BY
-            ts.xzqh
+        ts.xzqh
     </select>
 
     <select id="getAreaByReason" resultType="map">
         SELECT SUM(td.crmj::NUMERIC) AS area, confirm.idle_reason AS reason
         FROM base.t_land_idle_confirm AS confirm
-                 JOIN vector.tdgy_sj AS td ON confirm.land_id = td.id::VARCHAR
+        JOIN vector.tdgy_sj AS td ON confirm.land_id = td.id::VARCHAR
         WHERE confirm.is_idle = true
+        <if test="districtCode != null and districtCode != ''">
+            AND td.xzqh = #{districtCode}
+        </if>
+        <if test="startTime != null">
+            AND confirm.confirm_time &gt;= #{startTime}::timestamp
+        </if>
+        <if test="endTime != null">
+            AND confirm.confirm_time &lt;= #{endTime}::timestamp + interval '1 day'
+        </if>
         GROUP BY confirm.idle_reason
     </select>