|
@@ -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;
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 新增记录
|
|
|
*
|