gushoubang 2 өдөр өмнө
parent
commit
a743e1a849

+ 7 - 0
onemap-modules/onemap-apply/src/main/java/com/onemap/apply/controller/sbjk/XzczghcgsbController.java

@@ -56,6 +56,13 @@ public class XzczghcgsbController extends BaseController {
         return AjaxResult.success(xzczghcgsbService.getStatistics());
     }
 
+    /**
+     * 获取统计列表
+     */
+    @GetMapping("/getTownshipStatistics")
+    public AjaxResult getTownshipStatistics() {
+        return AjaxResult.success(xzczghcgsbService.getTownshipStatistics());
+    }
     /**
      * 上传zip文件
      *

+ 8 - 3
onemap-modules/onemap-apply/src/main/java/com/onemap/apply/service/impl/sbjk/SbSearchServiceImpl.java

@@ -160,9 +160,14 @@ public class SbSearchServiceImpl implements SbSearchService {
 
     @Override
     public WebResult landMyAttendsData(Integer planType, Integer current, Integer size, String divisionCode) {
-        List<TusexzqhDTO> villageList = tuseXzqhMapper.getAllVillage();
+        List<TusexzqhDTO> villageList = new ArrayList<>();
+        if (planType == 7) {
+            villageList = tuseXzqhMapper.getAllTownship();
+        } else {
+            villageList = tuseXzqhMapper.getAllVillage();
+        }
 
-        int total = 400;
+        int total = 60;
         int returnSize = 0;
         if (current * size > total) {
             returnSize = total - (current - 1) * size;
@@ -184,7 +189,7 @@ public class SbSearchServiceImpl implements SbSearchService {
             object.put("solId", "1108335276203401216");
             object.put("createTime", "2023-10-13 14:40:25");
             object.put("subject", "xxxxx国土空间总体规划");
-            object.put("divisionCode", villageList.get(id).getUse_id());
+            object.put("divisionCode", villageList.get(i).getUse_id());
             object.put("id", id);
             object.put("status", "RUNNING");
             object.put("instId", "1162399447005093888" + i);

+ 267 - 32
onemap-modules/onemap-apply/src/main/java/com/onemap/apply/service/impl/sbjk/XzczghcgsbServiceImpl.java

@@ -200,8 +200,8 @@ public class XzczghcgsbServiceImpl implements XzczghcgsbService {
                 continue;
             }
 
-            if(xzqhcode.length()==10){//省厅数据末尾没有00的省略了
-                recordsDTO.setDivisionCode(xzqhcode+"00");
+            if (xzqhcode.length() == 10) {//省厅数据末尾没有00的省略了
+                recordsDTO.setDivisionCode(xzqhcode + "00");
             }
 
             String townCode = recordsDTO.getDivisionCode().substring(0, 9);
@@ -254,12 +254,12 @@ public class XzczghcgsbServiceImpl implements XzczghcgsbService {
                 Integer reportNum = tuseXzqhMapper.getTownReportVillage(townCountMap.get(tusexzqhDTO.getCode()));
                 treeAnalyse.setSbdstczs(reportNum);//上报到省厅村庄数
 
-                List<String> unReportVillages = tuseXzqhMapper.getTownUnReportVillage(tusexzqhDTO.getCode(),townCountMap.get(tusexzqhDTO.getCode()));
+                List<String> unReportVillages = tuseXzqhMapper.getTownUnReportVillage(tusexzqhDTO.getCode(), townCountMap.get(tusexzqhDTO.getCode()));
                 treeAnalyse.setQxwsbczs(unReportVillages.size());//默认是全部数量
                 treeAnalyse.setWsbczs(unReportVillages);
-            }else{
+            } else {
                 treeAnalyse.setQxwsbczs(treeAnalyse.getYbaczs());//默认是全部数量
-                List<String> unReportVillages = tuseXzqhMapper.getTownUnReportVillage(tusexzqhDTO.getCode(),new ArrayList<>());
+                List<String> unReportVillages = tuseXzqhMapper.getTownUnReportVillage(tusexzqhDTO.getCode(), new ArrayList<>());
                 treeAnalyse.setWsbczs(unReportVillages);
             }
             //补正,机审,用地审查节点
@@ -282,9 +282,9 @@ public class XzczghcgsbServiceImpl implements XzczghcgsbService {
                 }
             }
             // 备案率
-            if(treeAnalyse.getYbaczs()==0){
+            if (treeAnalyse.getYbaczs() == 0) {
                 treeAnalyse.setBal("--");
-            }else {
+            } else {
                 float bal = (float) treeAnalyse.getYbas() / (float) treeAnalyse.getYbaczs();
                 DecimalFormat df = new DecimalFormat("0.0%");
                 treeAnalyse.setBal(df.format(bal));
@@ -337,9 +337,9 @@ public class XzczghcgsbServiceImpl implements XzczghcgsbService {
                     treeAnalyse.setQxwsbczs(analyse.getQxwsbczs() + treeAnalyse.getQxwsbczs());
                 }
                 // 备案率
-                if(treeAnalyse.getYbaczs()==0){
+                if (treeAnalyse.getYbaczs() == 0) {
                     treeAnalyse.setBal("--");
-                }else {
+                } else {
                     float bal = (float) treeAnalyse.getYbas() / (float) treeAnalyse.getYbaczs();
                     DecimalFormat df = new DecimalFormat("0.0%");
                     treeAnalyse.setBal(df.format(bal));
@@ -372,9 +372,9 @@ public class XzczghcgsbServiceImpl implements XzczghcgsbService {
                 treeAnalyse.setQxwsbczs(analyse.getQxwsbczs() + treeAnalyse.getQxwsbczs());
             }
             // 备案率
-            if(treeAnalyse.getYbaczs()==0){
+            if (treeAnalyse.getYbaczs() == 0) {
                 treeAnalyse.setBal("--");
-            }else {
+            } else {
                 float bal = (float) treeAnalyse.getYbas() / (float) treeAnalyse.getYbaczs();
                 DecimalFormat df = new DecimalFormat("0.0%");
                 treeAnalyse.setBal(df.format(bal));
@@ -409,11 +409,245 @@ public class XzczghcgsbServiceImpl implements XzczghcgsbService {
         return cityTreeList;
     }
 
+    @Override
+    public List<TreeAnalyse> getTownshipStatistics() {
+        int current = 1;
+        List<LandMyAttend.RecordsDTO> list = getAllLandMyAttendsData1(7, current, 60, "1506");
+        // 12位到村,9位乡镇
+        // 根据divisionCode的前9位进行divisionCode分组数量
+        Map<String, List<String>> townCountMap = new HashMap<>();
+        // 根据divisionCode的前9位进行divisionCode分组节点类别
+        Map<String, Map<String, List<String>>> townNodeMap = new HashMap<>();
+        for (LandMyAttend.RecordsDTO recordsDTO : list) {
+            String xzqhcode = recordsDTO.getDivisionCode();
+            if (xzqhcode.length() < 9) {
+                System.out.println(" xzqhcode.length() < 9 ");
+                continue;
+            }
+
+            if (xzqhcode.length() == 10) {//省厅数据末尾没有00的省略了
+                recordsDTO.setDivisionCode(xzqhcode + "00");
+            }
+
+            String townCode = recordsDTO.getDivisionCode().substring(0, 9);
+            // 根据乡镇数量分组
+            if (townCountMap.containsKey(townCode)) {
+                townCountMap.get(townCode).add(recordsDTO.getDivisionCode());
+            } else {
+                List<String> townList = new ArrayList<>();
+                townList.add(recordsDTO.getDivisionCode());
+                townCountMap.put(townCode, townList);
+            }
+            // 根据乡镇节点类别分组
+            if (townNodeMap.containsKey(townCode)) {
+                Map<String, List<String>> nodeMap = townNodeMap.get(townCode);
+                if (nodeMap.containsKey(recordsDTO.getNodeName())) {
+                    nodeMap.get(recordsDTO.getNodeName()).add(recordsDTO.getDivisionCode());
+                } else {
+                    List<String> nodeList = new ArrayList<>();
+                    nodeList.add(recordsDTO.getDivisionCode());
+                    nodeMap.put(recordsDTO.getNodeName(), nodeList);
+                }
+            } else {
+                Map<String, List<String>> nodeMap = new HashMap<>();
+                List<String> nodeList = new ArrayList<>();
+                nodeList.add(recordsDTO.getDivisionCode());
+                nodeMap.put(recordsDTO.getNodeName(), nodeList);
+                townNodeMap.put(townCode, nodeMap);
+            }
+        }
+        // 查询t_use_xzqh表中的数据
+        List<TusexzqhDTO> townList = tuseXzqhMapper.getAllTownship();
+        List<TusexzqhDTO> countyList = tuseXzqhMapper.getAllCounty();
+        List<TusexzqhDTO> cityList = tuseXzqhMapper.getAllCity();
+        //组织乡镇数据
+        List<TreeAnalyse> townTreeList = new ArrayList<>();
+        for (TusexzqhDTO tusexzqhDTO : townList) {
+            Integer villageNum = tuseXzqhMapper.getAllVillageNumByPid(tusexzqhDTO.getCode());
+//            Integer townReportNum = tuseXzqhMapper.getTownReportNum(tusexzqhDTO.getCode());//上报数
+            Integer townReportAllNum = tuseXzqhMapper.getTownReportAllNum(tusexzqhDTO.getCode());//颖备案数
+
+            TreeAnalyse treeAnalyse = new TreeAnalyse();
+            treeAnalyse.setLevel(2);
+            treeAnalyse.setId(tusexzqhDTO.getCode());
+            treeAnalyse.setXzqh(tusexzqhDTO.getTownship());//行政区划
+            treeAnalyse.setXzczs(villageNum);//行政村总数
+//            treeAnalyse.setQxysbczs(townReportNum);//旗县已上报的村庄数
+            treeAnalyse.setYbaczs(townReportAllNum);//应备案村庄数
+            // 未上报村庄
+            if (townCountMap.containsKey(tusexzqhDTO.getCode())) {//省厅有的
+                Integer reportNum = tuseXzqhMapper.getTownReportVillage(townCountMap.get(tusexzqhDTO.getCode()));
+                treeAnalyse.setSbdstczs(reportNum);//上报到省厅村庄数
+
+                List<String> unReportVillages = tuseXzqhMapper.getTownUnReportVillage(tusexzqhDTO.getCode(), townCountMap.get(tusexzqhDTO.getCode()));
+                treeAnalyse.setQxwsbczs(unReportVillages.size());//默认是全部数量
+                treeAnalyse.setWsbczs(unReportVillages);
+            } else {
+                treeAnalyse.setQxwsbczs(treeAnalyse.getYbaczs());//默认是全部数量
+                List<String> unReportVillages = tuseXzqhMapper.getTownUnReportVillage(tusexzqhDTO.getCode(), new ArrayList<>());
+                treeAnalyse.setWsbczs(unReportVillages);
+            }
+            //补正,机审,用地审查节点
+            if (townNodeMap.containsKey(tusexzqhDTO.getCode())) {
+                Map<String, List<String>> nodeMap = townNodeMap.get(tusexzqhDTO.getCode());
+                if (nodeMap.containsKey("补正") || nodeMap.containsKey("文本审核")) {// 文本审核+补正
+                    List<String> bzList = nodeMap.get("补正");
+                    Integer bzNum = tuseXzqhMapper.getTownReportVillage(bzList);
+                    treeAnalyse.setWbscjd(bzNum);
+                }
+                if (nodeMap.containsKey("机审")) {
+                    List<String> jsList = nodeMap.get("机审");
+                    Integer jsNum = tuseXzqhMapper.getTownReportVillage(jsList);
+                    treeAnalyse.setSlsjbz(jsNum);
+                }
+                if (nodeMap.containsKey("用地审查")) {
+                    List<String> ydscList = nodeMap.get("用地审查");
+                    Integer ydscNum = tuseXzqhMapper.getTownReportVillage(ydscList);
+                    treeAnalyse.setYbas(ydscNum);
+                }
+            }
+            // 备案率
+            if (treeAnalyse.getYbaczs() == 0) {
+                treeAnalyse.setBal("--");
+            } else {
+                float bal = (float) treeAnalyse.getYbas() / (float) treeAnalyse.getYbaczs();
+                DecimalFormat df = new DecimalFormat("0.0%");
+                treeAnalyse.setBal(df.format(bal));
+            }
+            townTreeList.add(treeAnalyse);
+        }
+
+
+        //按照区县编码组织成map结构
+        Map<String, List<TreeAnalyse>> townMap = new HashMap<>();
+        for (TreeAnalyse treeAnalyse : townTreeList) {
+            String id = treeAnalyse.getId();
+            // 截取前6位
+            String key = id.substring(0, 6);
+            if (townMap.containsKey(key)) {
+                townMap.get(key).add(treeAnalyse);
+            } else {
+                List<TreeAnalyse> treeAnalyses = new ArrayList<>();
+                treeAnalyses.add(treeAnalyse);
+                townMap.put(key, treeAnalyses);
+            }
+        }
+        //组织区县数据
+        List<TreeAnalyse> countyTreeList = new ArrayList<>();
+        for (TusexzqhDTO tusexzqhDTO : countyList) {
+            if (tusexzqhDTO.getCounty().equals("市辖区")) {
+                continue;
+            }
+            TreeAnalyse treeAnalyse = new TreeAnalyse();
+            treeAnalyse.setLevel(1);
+            treeAnalyse.setId(tusexzqhDTO.getCode());
+            treeAnalyse.setXzqh(tusexzqhDTO.getCounty());//行政区划
+            if (townMap.containsKey(tusexzqhDTO.getCode())) {
+                List<TreeAnalyse> listCounty = townMap.get(tusexzqhDTO.getCode());
+                treeAnalyse.setChildren(listCounty);
+                for (TreeAnalyse analyse : listCounty) {
+                    //行政村总数
+                    treeAnalyse.setXzczs(analyse.getXzczs() + treeAnalyse.getXzczs());
+//                    //旗县已上报的村庄数
+//                    treeAnalyse.setQxysbczs(analyse.getQxysbczs() + treeAnalyse.getQxysbczs());
+                    //上报到省厅村庄数
+                    treeAnalyse.setSbdstczs(analyse.getSbdstczs() + treeAnalyse.getSbdstczs());
+                    //应备案村庄数
+                    treeAnalyse.setYbaczs(analyse.getYbaczs() + treeAnalyse.getYbaczs());
+                    //补正,机审,用地审查节点
+                    treeAnalyse.setWbscjd(analyse.getWbscjd() + treeAnalyse.getWbscjd());
+                    treeAnalyse.setSlsjbz(analyse.getSlsjbz() + treeAnalyse.getSlsjbz());
+                    treeAnalyse.setYbas(analyse.getYbas() + treeAnalyse.getYbas());
+                    //未上报村庄
+                    treeAnalyse.setQxwsbczs(analyse.getQxwsbczs() + treeAnalyse.getQxwsbczs());
+                }
+                // 备案率
+                if (treeAnalyse.getYbaczs() == 0) {
+                    treeAnalyse.setBal("--");
+                } else {
+                    float bal = (float) treeAnalyse.getYbas() / (float) treeAnalyse.getYbaczs();
+                    DecimalFormat df = new DecimalFormat("0.0%");
+                    treeAnalyse.setBal(df.format(bal));
+                }
+            }
+            countyTreeList.add(treeAnalyse);
+        }
+        //组织市数据
+        List<TreeAnalyse> cityTreeList = new ArrayList<>();
+        for (TusexzqhDTO tusexzqhDTO : cityList) {
+            TreeAnalyse treeAnalyse = new TreeAnalyse();
+            treeAnalyse.setLevel(0);
+            treeAnalyse.setId(tusexzqhDTO.getCode());
+            treeAnalyse.setXzqh(tusexzqhDTO.getCity());//行政区划
+            treeAnalyse.setChildren(countyTreeList);
+            for (TreeAnalyse analyse : countyTreeList) {
+                //行政村总数
+                treeAnalyse.setXzczs(analyse.getXzczs() + treeAnalyse.getXzczs());
+//                //旗县已上报的村庄数
+//                treeAnalyse.setQxysbczs(analyse.getQxysbczs() + treeAnalyse.getQxysbczs());
+                //上报到省厅村庄数
+                treeAnalyse.setSbdstczs(analyse.getSbdstczs() + treeAnalyse.getSbdstczs());
+                //应备案村庄数
+                treeAnalyse.setYbaczs(analyse.getYbaczs() + treeAnalyse.getYbaczs());
+                //补正,机审,用地审查节点
+                treeAnalyse.setWbscjd(analyse.getWbscjd() + treeAnalyse.getWbscjd());
+                treeAnalyse.setSlsjbz(analyse.getSlsjbz() + treeAnalyse.getSlsjbz());
+                treeAnalyse.setYbas(analyse.getYbas() + treeAnalyse.getYbas());
+                //未上报村庄
+                treeAnalyse.setQxwsbczs(analyse.getQxwsbczs() + treeAnalyse.getQxwsbczs());
+            }
+            // 备案率
+            if (treeAnalyse.getYbaczs() == 0) {
+                treeAnalyse.setBal("--");
+            } else {
+                float bal = (float) treeAnalyse.getYbas() / (float) treeAnalyse.getYbaczs();
+                DecimalFormat df = new DecimalFormat("0.0%");
+                treeAnalyse.setBal(df.format(bal));
+            }
+
+            cityTreeList.add(treeAnalyse);
+        }
+
+//        插入测试数据
+//        for (int i = 0; i < 300; i++) {
+//            TusexzqhDTO village = villageList.get(i);
+//
+//            XxghcgsbDTO xxghcgsbDTO = new XxghcgsbDTO();
+//            xxghcgsbDTO.setUuid(IdUtils.simpleUUID());
+//            xxghcgsbDTO.setUploadStatus(2);
+//            xxghcgsbDTO.setUploadTime(new Date());
+//            if (i % 3 == 0) {//上报厅
+//                xxghcgsbDTO.setStatus("12");
+//            } else if (i % 3 == 1) {//上报厅
+//                xxghcgsbDTO.setStatus("22");
+//            } else {//为上报厅
+//                xxghcgsbDTO.setStatus("11");
+//            }
+//            xxghcgsbDTO.setCounty(village.getCounty());
+//            xxghcgsbDTO.setTown(village.getTownship());
+//            xxghcgsbDTO.setVillage(village.getVillage());
+//            xxghcgsbDTO.setXzqCode(village.getUse_id());
+//            xxghcgsbDTO.setXzqName(village.getVillage());
+//            xxghcgsbDTO.setYear("2025-03-13");
+//            xxghcgsbMapper.insert(xxghcgsbDTO);
+//        }
+        return cityTreeList;
+    }
+
+    /**
+     * 获取省厅数据 2:乡村,7:乡镇苏木
+     *
+     * @param planType
+     * @param current
+     * @param size
+     * @param divisionCode
+     * @return
+     */
     private List<LandMyAttend.RecordsDTO> getAllLandMyAttendsData(int planType, int current, int size, String divisionCode) {
         // 正式环境
         JSONObject jsonObject = sbSearchService.getLandMyAttendsData(planType, current, size, divisionCode, "");
         List<LandMyAttend.RecordsDTO> list = new ArrayList<>();
-        if (jsonObject.containsKey("success") && jsonObject.getBoolean("success")) {
+        if (jsonObject != null && jsonObject.containsKey("success") && jsonObject.getBoolean("success")) {
             LandMyAttend landMyAttend = jsonObject.getObject("data", LandMyAttend.class);
             list.addAll(landMyAttend.getRecords());
             if (current < landMyAttend.getPages() + 1) {
@@ -424,26 +658,27 @@ public class XzczghcgsbServiceImpl implements XzczghcgsbService {
     }
 
 
-//    private List<LandMyAttend.RecordsDTO> getAllLandMyAttendsData(int planType, int current, int size, String divisionCode) {
-//        // 测试数据
-//        WebResult jsonObject = sbSearchService.landMyAttendsData(planType, current, size, divisionCode);
-//        List<LandMyAttend.RecordsDTO> list = new ArrayList<>();
-//        if (jsonObject.containsKey("success") && (Boolean) jsonObject.get("success")) {
-//            HashMap<String,Object> resMap = (HashMap<String, Object>) jsonObject.get("data");
-//
-//            List<HashMap<String,Object>> getList= (List<HashMap<String, Object>>) resMap.get("records");
-//            for ( Map<String,Object> mapObj: getList) {
-//                ObjectMapper objectMapper = new ObjectMapper();
-//                LandMyAttend.RecordsDTO recordsDTO = objectMapper.convertValue(mapObj, LandMyAttend.RecordsDTO.class);
-//                list.add(recordsDTO);
-//            }
-//
-//            if (current < (Integer)resMap.get("pages") + 1) {
-//                list.addAll(getAllLandMyAttendsData(planType, current + 1, size, divisionCode));
-//            }
-//        }
-//        return list;
-//    }
+    private List<LandMyAttend.RecordsDTO> getAllLandMyAttendsData1(int planType, int current, int size, String divisionCode) {
+        // 测试数据
+        WebResult jsonObject = sbSearchService.landMyAttendsData(planType, current, size, divisionCode);
+        List<LandMyAttend.RecordsDTO> list = new ArrayList<>();
+        if (jsonObject.containsKey("success") && (Boolean) jsonObject.get("success")) {
+            HashMap<String, Object> resMap = (HashMap<String, Object>) jsonObject.get("data");
+
+            List<HashMap<String, Object>> getList = (List<HashMap<String, Object>>) resMap.get("records");
+            for (Map<String, Object> mapObj : getList) {
+                ObjectMapper objectMapper = new ObjectMapper();
+                LandMyAttend.RecordsDTO recordsDTO = objectMapper.convertValue(mapObj, LandMyAttend.RecordsDTO.class);
+                list.add(recordsDTO);
+            }
+
+            if (current < (Integer) resMap.get("pages") + 1) {
+                list.addAll(getAllLandMyAttendsData1(planType, current + 1, size, divisionCode));
+            }
+        }
+        return list;
+    }
+
     /**
      * 新增记录
      *

+ 4 - 0
onemap-modules/onemap-apply/src/main/java/com/onemap/apply/service/sbjk/XzczghcgsbService.java

@@ -31,6 +31,10 @@ public interface XzczghcgsbService {
      */
     public List<TreeAnalyse> getStatistics();
 
+    /**
+     * 获取乡镇上报统计
+     */
+    public List<TreeAnalyse> getTownshipStatistics();
     /**
      * 新增记录
      *

+ 2 - 2
onemap-modules/onemap-apply/src/main/resources/bootstrap.yml

@@ -31,10 +31,10 @@ spring:
       password: nacos
       discovery:
         # 服务注册地址
-        server-addr: 127.0.0.1:8848
+        server-addr: 192.168.60.21:8848
       config:
         # 配置中心地址
-        server-addr: 127.0.0.1:8848
+        server-addr: 192.168.60.21:8848
         # 配置文件格式
         file-extension: yml
         # 共享配置