Explorar o código

已批未供数据查询及归类2015

chenendian hai 6 horas
pai
achega
65d4d3c4ba

+ 3 - 0
siwei-modules/siwei-apply/src/main/java/com/siwei/apply/mapper/YdbpDataMapper.java

@@ -61,4 +61,7 @@ public interface YdbpDataMapper {
 
     List<Map<String,Object>> queryRemainGeomListByYear(@Param("year") String year);
 
+    List<Map<String,Object>> queryDifferenceGeomAreaByYear(@Param("year") String year);
+
+
 }

+ 128 - 7
siwei-modules/siwei-apply/src/main/java/com/siwei/apply/service/cadastre/impl/BatchServiceImpl.java

@@ -33,7 +33,8 @@ public class BatchServiceImpl{
             year ="";
         }
         List<Map<String,Object>> ydbpNotSupplyList =  ydbpMapper.queryRemainGeomListByYearOfYdbp(year);
-        List<Map<String,Object>> ydbpDataNotSupplyList =  ydbpDataMapper.queryRemainGeomListByYear(year);
+        List<Map<String,Object>> ydbpDataNotSupplyList =  ydbpDataMapper.queryDifferenceGeomAreaByYear(year);
+
         if(CollectionUtils.isNotEmpty(ydbpNotSupplyList)){
             resList.addAll(ydbpNotSupplyList);
         }
@@ -44,6 +45,7 @@ public class BatchServiceImpl{
     }
 
 
+
     /**
      *  batchType (1-单批次项目,2-报批项目,0-全部)
      * 获取项目列表
@@ -247,11 +249,104 @@ public class BatchServiceImpl{
         return resList;
     }
 
+
+
+
     public List<Map<String,Object>> approvalAndNotSupply(String year) {
         if (StringUtils.isBlank(year) || "0".equals(year)) {
             year = "";
         }
 
+        List<Map<String,Object>> resList = new ArrayList<>();
+        List<Map<String,Object>> singleBatchList = ydbpMapper.queryRemainGeomAreaByYearOfYdbp();
+        List<Map<String,Object>> reportBatchList =  ydbpDataMapper.queryDifferenceGeomAreaByYear("");
+
+        Map<String,Map<String,Object>> groupedSingleBatch = new HashMap<>();
+        Map<String,Map<String,Object>> groupedReportBatch = new HashMap<>();
+
+        if(CollectionUtils.isNotEmpty(singleBatchList)) {
+            groupedSingleBatch = singleBatchList.stream()
+                    .collect(Collectors.toMap(
+                            s -> {
+                                Object nfStr = s.get("stat_year");
+                                if(nfStr==null || String.valueOf(nfStr).isEmpty()||"1000".equals(String.valueOf(nfStr))){
+                                    return "其它";
+                                }
+                                return String.valueOf(nfStr);
+                            },
+                            s -> s  // value直接是当前对象
+                    ));
+        }
+
+        if(CollectionUtils.isNotEmpty(reportBatchList)) {
+            groupedReportBatch = reportBatchList.stream()
+                    .collect(Collectors.toMap(s->{
+                                Object nfStr = s.get("nf");
+                                if(nfStr==null || String.valueOf(nfStr).isEmpty()||"1000".equals(String.valueOf(nfStr))){
+                                    return "其它";
+                                }
+                                return String.valueOf(nfStr);
+                            },
+                            s->s));
+        }
+
+        Set<String> yearSet = new TreeSet<>();
+        if(MapUtils.isNotEmpty(groupedSingleBatch)) {
+            yearSet.addAll(groupedSingleBatch.keySet());
+        }
+        if(MapUtils.isNotEmpty(groupedReportBatch)) {
+            yearSet.addAll(groupedReportBatch.keySet());
+        }
+
+        for(String yearKey : yearSet){
+            Map<String,Object> single = groupedSingleBatch.get(yearKey);
+            Map<String,Object> report = groupedReportBatch.get(yearKey);
+
+            Double singleArea =  Objects.nonNull(single) ? (Double)single.get("total_area_mu"):0d;
+            Double reportArea = Objects.nonNull(report) ? (Double) report.get("rest_area"):0d;
+
+            Long singleCount = Objects.nonNull(single) ? (Long) single.get("patch_count"):0;
+            Long reportCount = 0L;
+
+            Map<String,Object> itemMap = new HashMap<>();
+            itemMap.put("year",yearKey);
+            itemMap.put("area",String.format("%.2f", (singleArea+reportArea)));
+            itemMap.put("count",singleCount+reportCount);
+            resList.add(itemMap);
+        }
+
+        if(CollectionUtils.isNotEmpty(resList)) {
+            int tmpYear = 2015;
+            double  tmpArea = 0d;
+            List<Map<String,Object>> newResList = new ArrayList<>();
+            for(Map<String,Object> map : resList) {
+                String theYear = String.valueOf(map.get("year"));
+                if (StringUtils.isNumeric(theYear) && Integer.parseInt(theYear) <= tmpYear) {
+                    tmpArea += Double.parseDouble(String.valueOf(map.get("area")));
+                }else {
+                    newResList.add(map);
+                }
+            }
+            // 这里增加到list中
+            Map<String,Object> itemMap = new HashMap<>();
+            itemMap.put("year","2016年前");
+            itemMap.put("area",String.format("%.2f", tmpArea));
+            itemMap.put("count",0);
+            newResList.add(itemMap);
+            resList = newResList;
+        }
+        return resList;
+    }
+
+
+
+
+
+    public List<Map<String,Object>> approvalAndNotSupply_delete(String year) {
+        if (StringUtils.isBlank(year) || "0".equals(year)) {
+            year = "";
+        }
+
         List<Map<String,Object>> resList = new ArrayList<>();
 
         List<Map<String,Object>> singleBatchList = ydbpMapper.queryRemainGeomAreaByYearOfYdbp();
@@ -320,12 +415,6 @@ public class BatchServiceImpl{
 
 
 
-
-
-
-
-
-
         /**
          * 年度统计
          * @param year
@@ -389,6 +478,38 @@ public class BatchServiceImpl{
             itemMap.put("reportCount",reportCount);
             resList.add(itemMap);
         }
+
+        //这里折合2015年前的数据
+        if(CollectionUtils.isNotEmpty(resList)){
+            int tmpYear = 2015;
+            Double tmpSingleArea = 0d;
+            Double tmpReportArea = 0d;
+            Integer tmpSingleCount = 0;
+            Integer tmpReportCount = 0;
+
+            List<Map<String,Object>> newResList = new ArrayList<>();
+            for(Map<String,Object> map:resList){
+                String theYear =  String.valueOf(map.get("year"));
+                if(StringUtils.isNumeric(theYear) && Integer.parseInt(theYear)>tmpYear){
+                    newResList.add(map);
+                }else {
+                    tmpSingleArea += (Double) map.get("singleArea");
+                    tmpReportArea += (Double) map.get("reportArea");
+                    tmpSingleCount += (Integer) map.get("singleCount");
+                    tmpReportCount += (Integer) map.get("reportCount");
+                }
+            }
+
+            Map<String,Object> itemMap = new HashMap<>();
+            itemMap.put("year","2016年前");
+            itemMap.put("singleArea",tmpSingleArea);
+            itemMap.put("reportArea",tmpReportArea);
+            itemMap.put("singleCount",tmpSingleCount);
+            itemMap.put("reportCount",tmpReportCount);
+            newResList.add(itemMap);
+            resList = newResList;
+        }
+
         return resList;
     }
 

+ 1 - 1
siwei-modules/siwei-apply/src/main/java/com/siwei/apply/service/cadastre/impl/SupplyServiceImpl.java

@@ -158,7 +158,7 @@ public class SupplyServiceImpl implements ISupplyService {
         if (StringUtils.isNotBlank(useType)) {
             String code = getTdytCodeByName(useType);
             if(StringUtils.isNotBlank(code)){
-                resList = resList.stream().filter(o->o.getUseType().equals(code)).collect(Collectors.toList());
+                resList = resList.stream().filter(o->Objects.nonNull(o.getUseType()) && StringUtils.substring(o.getUseType(),0,2).equals(code)).collect(Collectors.toList());
             }
         }
         return resList;

+ 39 - 0
siwei-modules/siwei-apply/src/main/resources/mapper/YdbpDataMapper.xml

@@ -219,6 +219,45 @@
         ORDER BY stat_year
     </select>
 
+    <select id="queryDifferenceGeomAreaByYear" resultType="java.util.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
+        ),
+        geom_ydbp_data AS (
+            SELECT COALESCE(left(pf_date,4), '其它') AS nf ,  "public".ST_Union(geom)  AS union_geom, count(DISTINCT bp.id ) as patch_count
+            FROM t_geom_db_details gd
+            INNER JOIN t_node_land nl ON gd.upload_id = nl.geom_db_id
+            INNER JOIN  "public"."t_ydbp_data" bp  ON nl.node_id = bp.id
+            WHERE bp.has_onchain = 't'  GROUP BY nf
+        )
+        SELECT bp.nf, bp.patch_count,
+        ''  AS details_id,
+        '' AS project_id,
+        '' AS node_id,
+        ''  AS  id,
+        '2' AS batch_type,
+        ST_AsEWKT( ST_Difference(bp.union_geom, gy.union_geom)) AS rest_geom,
+        COALESCE (ST_Area( ST_Difference(bp.union_geom, COALESCE(gy.union_geom, ST_GeomFromText('POLYGON EMPTY',4326)))::geography ),0) / 666.6666667 AS rest_area
+        FROM geom_ydbp_data bp
+        LEFT JOIN  geom_gy_data gy ON bp.nf = gy.nf
+        WHERE NOT ST_IsEmpty( ST_Difference(bp.union_geom,COALESCE(gy.union_geom, ST_GeomFromText('POLYGON EMPTY',4326)) ) )
+        <if test="year != null and year != ''">
+            AND  bp.nf = #{year}
+        </if>
+        order by bp.nf
+    </select>
+
+
     <select id="queryRemainGeomListByYear" resultType="java.util.Map">
         <include refid="commonYdbpDataCte"></include>
         SELECT

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

@@ -167,6 +167,7 @@
         LEFT(bp.pf_date, '4') AS year,
         bp.id  as  node_id,
         bp.id  as  id,
+        '1' AS batch_type,
         public.st_asewkt(geom) geom
         FROM t_geom_db_details gd
         INNER JOIN t_node_land nl ON gd.upload_id = nl.geom_db_id