|
@@ -9,6 +9,8 @@ import com.onemap.apply.domain.cggl.ScmxRecordDTO;
|
|
import com.onemap.apply.domain.cggl.TCgglSjbzmlwjDto;
|
|
import com.onemap.apply.domain.cggl.TCgglSjbzmlwjDto;
|
|
import com.onemap.apply.domain.res.LandMyAttend;
|
|
import com.onemap.apply.domain.res.LandMyAttend;
|
|
import com.onemap.apply.domain.res.LandMyAttendRes;
|
|
import com.onemap.apply.domain.res.LandMyAttendRes;
|
|
|
|
+import com.onemap.apply.domain.res.TreeAnalyse;
|
|
|
|
+import com.onemap.apply.domain.sbjk.TusexzqhDTO;
|
|
import com.onemap.apply.domain.sbjk.XxghcgsbDTO;
|
|
import com.onemap.apply.domain.sbjk.XxghcgsbDTO;
|
|
import com.onemap.apply.domain.sbjk.XzczghcgsbDTO;
|
|
import com.onemap.apply.domain.sbjk.XzczghcgsbDTO;
|
|
import com.onemap.apply.mapper.cggl.EscalationMapper;
|
|
import com.onemap.apply.mapper.cggl.EscalationMapper;
|
|
@@ -16,6 +18,7 @@ import com.onemap.apply.mapper.cggl.ScmxMapper;
|
|
import com.onemap.apply.mapper.cggl.ScmxRecordMapper;
|
|
import com.onemap.apply.mapper.cggl.ScmxRecordMapper;
|
|
import com.onemap.apply.mapper.cggl.TCgglSjbzmlwjMapper;
|
|
import com.onemap.apply.mapper.cggl.TCgglSjbzmlwjMapper;
|
|
import com.onemap.apply.mapper.sbjk.TuseXzqhMapper;
|
|
import com.onemap.apply.mapper.sbjk.TuseXzqhMapper;
|
|
|
|
+import com.onemap.apply.mapper.sbjk.XxghcgsbMapper;
|
|
import com.onemap.apply.mapper.sbjk.XzczghcgsbMapper;
|
|
import com.onemap.apply.mapper.sbjk.XzczghcgsbMapper;
|
|
import com.onemap.apply.service.sbjk.SbSearchService;
|
|
import com.onemap.apply.service.sbjk.SbSearchService;
|
|
import com.onemap.apply.service.sbjk.XxghcgsbService;
|
|
import com.onemap.apply.service.sbjk.XxghcgsbService;
|
|
@@ -39,6 +42,7 @@ import org.springframework.web.multipart.MultipartFile;
|
|
import javax.annotation.Resource;
|
|
import javax.annotation.Resource;
|
|
import java.io.File;
|
|
import java.io.File;
|
|
import java.io.IOException;
|
|
import java.io.IOException;
|
|
|
|
+import java.text.DecimalFormat;
|
|
import java.text.SimpleDateFormat;
|
|
import java.text.SimpleDateFormat;
|
|
import java.util.*;
|
|
import java.util.*;
|
|
import java.util.stream.Collectors;
|
|
import java.util.stream.Collectors;
|
|
@@ -52,6 +56,8 @@ public class XzczghcgsbServiceImpl implements XzczghcgsbService {
|
|
private XzczghcgsbMapper xzczghcgsbMapper;
|
|
private XzczghcgsbMapper xzczghcgsbMapper;
|
|
@Resource
|
|
@Resource
|
|
private TuseXzqhMapper tuseXzqhMapper;
|
|
private TuseXzqhMapper tuseXzqhMapper;
|
|
|
|
+ @Resource
|
|
|
|
+ private XxghcgsbMapper xxghcgsbMapper;
|
|
|
|
|
|
@Value("${Cggl.temp}")
|
|
@Value("${Cggl.temp}")
|
|
private String temp;
|
|
private String temp;
|
|
@@ -179,39 +185,207 @@ public class XzczghcgsbServiceImpl implements XzczghcgsbService {
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
@Override
|
|
- public int getStatistics() {
|
|
|
|
|
|
+ public List<TreeAnalyse> getStatistics() {
|
|
// todo
|
|
// todo
|
|
// 鄂尔多斯 1506
|
|
// 鄂尔多斯 1506
|
|
// 通过分页获取全部的数据
|
|
// 通过分页获取全部的数据
|
|
// sbSearchService.getLandMyAttendsData(2, 1, 10, " 1506", "");
|
|
// sbSearchService.getLandMyAttendsData(2, 1, 10, " 1506", "");
|
|
|
|
|
|
-// int current = 1;
|
|
|
|
-// List<LandMyAttend.RecordsDTO> list = getAllLandMyAttendsData(2, current, 200, "1506");
|
|
|
|
-// // 根据nodeName组成map数组
|
|
|
|
-// Map<String, List<LandMyAttend.RecordsDTO>> mapNodeName = new HashMap<>();
|
|
|
|
-// for (LandMyAttend.RecordsDTO record : list) {
|
|
|
|
-// if (mapNodeName.containsKey(record.getNodeName())) {
|
|
|
|
-// mapNodeName.get(record.getNodeName()).add(record);
|
|
|
|
-// } else {
|
|
|
|
-// List<LandMyAttend.RecordsDTO> records = new ArrayList<>();
|
|
|
|
-// records.add(record);
|
|
|
|
-// mapNodeName.put(record.getNodeName(), records);
|
|
|
|
|
|
+ int current = 1;
|
|
|
|
+ List<LandMyAttend.RecordsDTO> list = getAllLandMyAttendsData(2, current, 200, "1506");
|
|
|
|
+ // 根据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 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());
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ TreeAnalyse treeAnalyse = new TreeAnalyse();
|
|
|
|
+ treeAnalyse.setId(tusexzqhDTO.getCode());
|
|
|
|
+ treeAnalyse.setXzqh(tusexzqhDTO.getTownship());//行政区划
|
|
|
|
+ treeAnalyse.setXzczs(villageNum);//行政村总数
|
|
|
|
+ treeAnalyse.setQxysbczs(townReportNum);//旗县已上报的村庄数
|
|
|
|
+
|
|
|
|
+ //上报到省厅村庄数
|
|
|
|
+ if (townCountMap.containsKey(tusexzqhDTO.getCode())) {
|
|
|
|
+ Integer reportNum = tuseXzqhMapper.getAllVillageNumByUseId(townCountMap.get(tusexzqhDTO.getCode()));
|
|
|
|
+ treeAnalyse.setSbdstczs(reportNum);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ //补正,机审,用地审查节点
|
|
|
|
+ if (townNodeMap.containsKey(tusexzqhDTO.getCode())) {
|
|
|
|
+ Map<String, List<String>> nodeMap = townNodeMap.get(tusexzqhDTO.getCode());
|
|
|
|
+ if (nodeMap.containsKey("补正")) {
|
|
|
|
+ List<String> bzList = nodeMap.get("补正");
|
|
|
|
+ Integer bzNum = tuseXzqhMapper.getAllVillageNumByUseId(bzList);
|
|
|
|
+ treeAnalyse.setWbscjd(bzNum);
|
|
|
|
+ }
|
|
|
|
+ if (nodeMap.containsKey("机审")) {
|
|
|
|
+ List<String> jsList = nodeMap.get("机审");
|
|
|
|
+ Integer jsNum = tuseXzqhMapper.getAllVillageNumByUseId(jsList);
|
|
|
|
+ treeAnalyse.setSlsjbz(jsNum);
|
|
|
|
+ }
|
|
|
|
+ if (nodeMap.containsKey("用地审查节点")) {
|
|
|
|
+ List<String> ydscList = nodeMap.get("用地审查节点");
|
|
|
|
+ Integer ydscNum = tuseXzqhMapper.getAllVillageNumByUseId(ydscList);
|
|
|
|
+ treeAnalyse.setYbas(ydscNum);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // 备案率
|
|
|
|
+ float bal = (float) treeAnalyse.getYbas() / (float) treeAnalyse.getXzczs();
|
|
|
|
+ DecimalFormat df = new DecimalFormat("0.0%");
|
|
|
|
+ treeAnalyse.setBal(df.format(bal));
|
|
|
|
+
|
|
|
|
+ // 未上报村庄
|
|
|
|
+ List<String> unReportVillages = tuseXzqhMapper.getTownUnReportVillage(tusexzqhDTO.getCode());
|
|
|
|
+ treeAnalyse.setQxwsbczs(unReportVillages.size());
|
|
|
|
+ treeAnalyse.setWsbczs(unReportVillages);
|
|
|
|
+
|
|
|
|
+ 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) {
|
|
|
|
+ TreeAnalyse treeAnalyse = new TreeAnalyse();
|
|
|
|
+ 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.setWbscjd(analyse.getWbscjd() + treeAnalyse.getWbscjd());
|
|
|
|
+ treeAnalyse.setSlsjbz(analyse.getSlsjbz() + treeAnalyse.getSlsjbz());
|
|
|
|
+ treeAnalyse.setYbas(analyse.getYbas() + treeAnalyse.getYbas());
|
|
|
|
+ //未上报村庄
|
|
|
|
+ treeAnalyse.setQxwsbczs(analyse.getQxwsbczs() + treeAnalyse.getQxwsbczs());
|
|
|
|
+ }
|
|
|
|
+ // 备案率
|
|
|
|
+ float bal = (float) treeAnalyse.getYbas() / (float) treeAnalyse.getXzczs();
|
|
|
|
+ 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.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.setWbscjd(analyse.getWbscjd() + treeAnalyse.getWbscjd());
|
|
|
|
+ treeAnalyse.setSlsjbz(analyse.getSlsjbz() + treeAnalyse.getSlsjbz());
|
|
|
|
+ treeAnalyse.setYbas(analyse.getYbas() + treeAnalyse.getYbas());
|
|
|
|
+ //未上报村庄
|
|
|
|
+ treeAnalyse.setQxwsbczs(analyse.getQxwsbczs() + treeAnalyse.getQxwsbczs());
|
|
|
|
+ }
|
|
|
|
+ // 备案率
|
|
|
|
+ float bal = (float) treeAnalyse.getYbas() / (float) treeAnalyse.getXzczs();
|
|
|
|
+ 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);
|
|
// }
|
|
// }
|
|
-
|
|
|
|
- XxghcgsbDTO xxghcgsbDTO = new XxghcgsbDTO();
|
|
|
|
- xxghcgsbDTO.setUploadStatus(2);
|
|
|
|
- xxghcgsbDTO.setUploadTime(new Date());
|
|
|
|
- xxghcgsbDTO.setStatus("22"); //TODO
|
|
|
|
-// xxghcgsbDTO.setCounty();
|
|
|
|
-// xxghcgsbDTO.setTown();
|
|
|
|
-// xxghcgsbDTO.setXzqCode();
|
|
|
|
-// xxghcgsbDTO.setXzqName();
|
|
|
|
- xxghcgsbDTO.setYear("2025-03-12");
|
|
|
|
-
|
|
|
|
- xzczghcgsbMapper.insert()
|
|
|
|
- .insert(xxghcgsbDTO);
|
|
|
|
- return 999;
|
|
|
|
|
|
+ return cityTreeList;
|
|
}
|
|
}
|
|
|
|
|
|
private List<LandMyAttend.RecordsDTO> getAllLandMyAttendsData(int planType, int current, int size, String divisionCode) {
|
|
private List<LandMyAttend.RecordsDTO> getAllLandMyAttendsData(int planType, int current, int size, String divisionCode) {
|