Эх сурвалжийг харах

按照区县统计土地信息

gushoubang 6 сар өмнө
parent
commit
673bf020ad

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

@@ -25,4 +25,8 @@ public interface TdgyMapper extends BaseMapper<TdgySjDTO> {
 
     @Slave
     Map<String, Object> getCountAreaDisposal();
+
+    // 根据行政区划统计数据
+    @Slave
+    List<Map<String, Object>> getAreaByDistrict();
 }

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

@@ -7,8 +7,7 @@ import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
 import java.math.BigDecimal;
-import java.util.HashMap;
-import java.util.Map;
+import java.util.*;
 
 /**
  * 土地闲置统计服务实现类
@@ -63,7 +62,34 @@ public class TdtjServiceImp implements TdtjService {
 
     @Override
     public RequestResult getDistrict() {
-        return null;
+        List<Map<String, Object>> listRes = new ArrayList<>();
+        List<Map<String, Object>> districtMaps = tdgyMapper.getAreaByDistrict();
+
+        // 循环totalMap
+        for (Map<String, Object> districtMap : districtMaps) {
+            String districtCode = districtMap.get("districtCode").toString();
+
+            Map<String, Object> mapInfo = new HashMap<>();
+            mapInfo.put("districtName", "");
+            mapInfo.put("districtCode", districtCode);
+            mapInfo.put("totalArea", districtMap.get("totalArea"));
+            mapInfo.put("confirmAre", districtMap.get("confirmArea"));
+            mapInfo.put("disposalArea", districtMap.get("disposalArea"));
+
+            // 计算闲置率
+            BigDecimal totalArea = (BigDecimal) districtMap.get("totalArea");
+            BigDecimal confirmArea = (BigDecimal) districtMap.get("confirmArea");
+            mapInfo.put("idleRate", totalArea.floatValue() ==
+                    0 ? 0 : confirmArea.floatValue() / totalArea.floatValue());
+
+            // 计算处置率
+            BigDecimal disposalArea = (BigDecimal) districtMap.get("disposalArea");
+            mapInfo.put("disposalRate", confirmArea.floatValue() ==
+                    0 ? 0 : disposalArea.floatValue() / confirmArea.floatValue());
+
+            listRes.add(mapInfo);
+        }
+        return RequestResult.success(listRes);
     }
 
     @Override

+ 15 - 0
onemap-modules/onemap-apply/src/main/resources/mapper/postgresql/tdgy/TdgyMapper.xml

@@ -48,4 +48,19 @@
                  JOIN vector.tdgy_sj AS td ON confirm.land_id = td.id::VARCHAR
         WHERE confirm.is_idle = true AND confirm.is_disposal = true
     </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"
+        FROM
+            vector.tdgy_sj ts
+                LEFT JOIN
+            base.t_land_idle_confirm confirm ON confirm.land_id = ts.id::VARCHAR
+        GROUP BY
+            ts.xzqh
+    </select>
+
 </mapper>