Procházet zdrojové kódy

房屋分析面积接口

chenendian před 1 týdnem
rodič
revize
5d937609eb

+ 38 - 5
siwei-modules/siwei-apply/src/main/java/com/siwei/apply/controller/cadastre/HouseAnalysisController.java

@@ -29,10 +29,10 @@ public class HouseAnalysisController extends BaseController {
      * 通过地籍代码获取年度统计数据
      *
      */
-    @GetMapping("/zd/{djzqdm}")
-    public R<List<Zdjbxx>> getZDList(@PathVariable String djzqdm) {
+    @GetMapping("/zrz/{djzqdm}")
+    public R<List<Zrz>> getZRZList(@PathVariable String djzqdm) {
         try {
-            List<Zdjbxx> res =  null;
+            List<Zrz> res =  houselService.zrzList(djzqdm);
             return R.ok(res);
         } catch (Exception e) {
             e.printStackTrace();
@@ -42,10 +42,13 @@ public class HouseAnalysisController extends BaseController {
 
 
 
+
+
+
     /**
      *
-     * 地籍分析接口
-     * 通过地籍代码获取年度统计数据
+     * 房屋分析接口
+     * 通过地籍子区代码获取年度统计数据
      *
      */
     @GetMapping("/statistics/{djzqdm}")
@@ -60,6 +63,36 @@ public class HouseAnalysisController extends BaseController {
     }
 
 
+    /**
+     *
+     * 房屋分析接口面积维度
+     * 通过地籍子区代码获取年度统计数据
+     *
+     */
+    @GetMapping("/statisticsArea/{djzqdm}")
+    public R<HouseStatisticsAreaRes> getStatisticsOfArea(@PathVariable String djzqdm) {
+        try {
+                HouseStatisticsAreaRes res =  houselService.statisticsOfArea(djzqdm);
+            return R.ok(res);
+        } catch (Exception e) {
+            e.printStackTrace();
+            return R.fail(e.getMessage());
+        }
+    }
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
 
 

+ 5 - 5
siwei-modules/siwei-apply/src/main/java/com/siwei/apply/domain/cadastre/HouseStatisticsAreaRes.java

@@ -11,11 +11,11 @@ import java.util.List;
 @Data
 public class HouseStatisticsAreaRes {
 
-    private List<HouseStatisticsRes.DetailDTO> landNumStatisticsList; // 数统计
-    private List<HouseStatisticsRes.FwytDTO> fwytStatisticsList; // 房屋用途统计
-    private List<HouseStatisticsRes.FwxzDTO> qlxzStatisticsList; // 房屋性质统计
-    private List<HouseStatisticsRes.FwjgDTO>  fwjgStatisticsList; // 房屋结构统计
-    private List<HouseStatisticsRes.FwjsnfDTO> jsnfStatisticsList; // 房屋建设年份
+    private List<DetailDTO> landNumStatisticsList; // 数统计
+    private List<FwytDTO> fwytStatisticsList; // 房屋用途统计
+    private List<FwxzDTO> qlxzStatisticsList; // 房屋性质统计
+    private List<FwjgDTO>  fwjgStatisticsList; // 房屋结构统计
+    private List<FwjsnfDTO> jsnfStatisticsList; // 房屋建设年份
 
 
     @Data

+ 7 - 0
siwei-modules/siwei-apply/src/main/java/com/siwei/apply/service/cadastre/IHouselService.java

@@ -11,5 +11,12 @@ public interface IHouselService {
     HouseStatisticsRes statistics(String djzqdm);
 
 
+    HouseStatisticsAreaRes statisticsOfArea(String djzqdm);
+
+
+
+    List<Zrz> zrzList(String djzqdm);
+
+
 }
 

+ 173 - 0
siwei-modules/siwei-apply/src/main/java/com/siwei/apply/service/cadastre/impl/HouseServiceImpl.java

@@ -24,6 +24,17 @@ public class HouseServiceImpl implements IHouselService {
     private ZrzMapper zrzMapper;
 
 
+    @Override
+    public List<Zrz> zrzList(String djzqdm) {
+        if (StringUtils.isBlank(djzqdm) || djzqdm.matches("[0]+")) {
+            djzqdm = "";
+        }
+        if (StringUtils.isNotBlank(djzqdm) && djzqdm.length() != 12) {
+            throw new ServiceException("地籍代码长度必须为12位");
+        }
+        return zrzMapper.getListByDjzqdm(djzqdm);
+    }
+
     @Override
     public HouseStatisticsRes statistics(String djzqdm) {
         if (StringUtils.isBlank(djzqdm) || djzqdm.matches("[0]+")) {
@@ -72,6 +83,48 @@ public class HouseServiceImpl implements IHouselService {
         return res;
     }
 
+    @Override
+    public HouseStatisticsAreaRes statisticsOfArea(String djzqdm) {
+        if (StringUtils.isBlank(djzqdm) || djzqdm.matches("[0]+")) {
+            djzqdm = "";
+        }
+        if (StringUtils.isNotBlank(djzqdm) && djzqdm.length() != 12) {
+            throw new ServiceException("地籍代码长度必须为12位");
+        }
+
+        HouseStatisticsAreaRes res = new HouseStatisticsAreaRes();
+        List<Zrz> zrzList = zrzMapper.getListByDjzqdm(djzqdm);
+
+        if (CollectionUtils.isNotEmpty(zrzList)) {
+            List<HouseStatisticsAreaRes.DetailDTO> detailList = new ArrayList<>();
+            List<Zrz> registeredList = new ArrayList<>();
+            List<Zrz> unregisteredList = new ArrayList<>();
+
+            for (Zrz zrz : zrzList) {
+                String djzt = zrz.getDjzt();
+                if ("1".equals(djzt)) {
+                    registeredList.add(zrz);
+                } else if ("2".equals(djzt) || "3".equals(djzt)) {
+                    unregisteredList.add(zrz);
+                }
+            }
+
+            detailList.add(buildAreaDetailDTO(registeredList, "1"));
+            detailList.add(buildAreaDetailDTO(unregisteredList, "2"));
+            detailList.add(buildAreaDetailDTO(zrzList, "0"));
+            res.setLandNumStatisticsList(detailList);
+
+            res.setFwytStatisticsList(getFwytAreaStatistics(zrzList, "A11", "ghyt"));
+            res.setQlxzStatisticsList(getFwxzAreaStatistics(zrzList, "A13", "fwxz"));
+            res.setFwjgStatisticsList(getFwjgAreaStatistics(zrzList, "A16", "fwjg"));
+            res.setJsnfStatisticsList(getJsnfAreaStatistics(zrzList));
+        }
+
+        return res;
+    }
+
+
+
     private HouseStatisticsRes.DetailDTO buildDetailDTO(List<Zrz> list, String djzt) {
         HouseStatisticsRes.DetailDTO detail = new HouseStatisticsRes.DetailDTO();
         detail.setDjzt(djzt);
@@ -207,6 +260,126 @@ public class HouseServiceImpl implements IHouselService {
         }
     }
 
+    private HouseStatisticsAreaRes.DetailDTO buildAreaDetailDTO(List<Zrz> list, String djzt) {
+        HouseStatisticsAreaRes.DetailDTO detail = new HouseStatisticsAreaRes.DetailDTO();
+        detail.setDjzt(djzt);
+        int zrzs = list.size();
+        double totalZdmj = 0.0;
+        double totalScjzmj = 0.0;
+
+        for (Zrz zrz : list) {
+            totalZdmj += convertAreaToMu(zrz.getZzdmj());
+            totalScjzmj += convertAreaToMu(zrz.getScjzmj());
+        }
+
+        detail.setZrzs(zrzs);
+        detail.setZdmj(totalZdmj);
+        detail.setJzzmj(totalScjzmj);
+
+        return detail;
+    }
+
+    private List<HouseStatisticsAreaRes.FwytDTO> getFwytAreaStatistics(List<Zrz> zrzList, String dictType, String fieldName) {
+        List<HouseStatisticsAreaRes.FwytDTO> result = new ArrayList<>();
+        List<Map<String, Object>> dictList = zrzMapper.getDictByType(dictType, null);
+
+        Map<String, Double> groupedData = zrzList.stream()
+                .filter(zrz -> getFieldValue(zrz, fieldName) != null)
+                .collect(Collectors.groupingBy(zrz -> getFieldValue(zrz, fieldName),
+                        Collectors.summingDouble(zrz -> convertAreaToMu(zrz.getScjzmj()))));
+
+        for (Map<String, Object> dict : dictList) {
+            String name = MapUtils.getString(dict, "name");
+            String value = MapUtils.getString(dict, "value");
+            if (groupedData.containsKey(value)) {
+                HouseStatisticsAreaRes.FwytDTO dto = new HouseStatisticsAreaRes.FwytDTO();
+                dto.setFwytmc(name);
+                dto.setFwytmj(String.valueOf(groupedData.get(value)));
+                result.add(dto);
+            }
+        }
+        return result;
+    }
+
+    private List<HouseStatisticsAreaRes.FwxzDTO> getFwxzAreaStatistics(List<Zrz> zrzList, String dictType, String fieldName) {
+        List<HouseStatisticsAreaRes.FwxzDTO> result = new ArrayList<>();
+        List<Map<String, Object>> dictList = zrzMapper.getDictByType(dictType, null);
+
+        Map<String, Double> groupedData = zrzList.stream()
+                .filter(zrz -> getFieldValue(zrz, fieldName) != null)
+                .collect(Collectors.groupingBy(zrz -> getFieldValue(zrz, fieldName),
+                        Collectors.summingDouble(zrz -> convertAreaToMu(zrz.getScjzmj()))));
+
+        for (Map<String, Object> dict : dictList) {
+            String name = MapUtils.getString(dict, "name");
+            String value = MapUtils.getString(dict, "value");
+            if (groupedData.containsKey(value)) {
+                HouseStatisticsAreaRes.FwxzDTO dto = new HouseStatisticsAreaRes.FwxzDTO();
+                dto.setFwxzmc(name);
+                dto.setFwxzmj(String.valueOf(groupedData.get(value)));
+                result.add(dto);
+            }
+        }
+        return result;
+    }
+
+    private List<HouseStatisticsAreaRes.FwjgDTO> getFwjgAreaStatistics(List<Zrz> zrzList, String dictType, String fieldName) {
+        List<HouseStatisticsAreaRes.FwjgDTO> result = new ArrayList<>();
+        List<Map<String, Object>> dictList = zrzMapper.getDictByType(dictType, null);
+
+        Map<String, Double> groupedData = zrzList.stream()
+                .filter(zrz -> getFieldValue(zrz, fieldName) != null)
+                .collect(Collectors.groupingBy(zrz -> getFieldValue(zrz, fieldName),
+                        Collectors.summingDouble(zrz -> convertAreaToMu(zrz.getScjzmj()))));
+
+        for (Map<String, Object> dict : dictList) {
+            String name = MapUtils.getString(dict, "name");
+            String value = MapUtils.getString(dict, "value");
+            if (groupedData.containsKey(value)) {
+                HouseStatisticsAreaRes.FwjgDTO dto = new HouseStatisticsAreaRes.FwjgDTO();
+                dto.setFwjgmc(name);
+                dto.setFwjgmj(String.valueOf(groupedData.get(value)));
+                result.add(dto);
+            }
+        }
+        return result;
+    }
+
+    private List<HouseStatisticsAreaRes.FwjsnfDTO> getJsnfAreaStatistics(List<Zrz> zrzList) {
+        List<HouseStatisticsAreaRes.FwjsnfDTO> result = new ArrayList<>();
+
+        String[] labels = {"1960年之前", "1961年-1969年", "1970年-1979年", "1980年-1989年", "1990年-1999年", "2000年-2009年", "2010年-2019年", "2020年之后"};
+        double[] areas = new double[labels.length];
+
+        for (Zrz zrz : zrzList) {
+            if (zrz.getJgrq() != null) {
+                java.util.Calendar cal = java.util.Calendar.getInstance();
+                cal.setTime(zrz.getJgrq());
+                int year = cal.get(java.util.Calendar.YEAR);
+                double area = convertAreaToMu(zrz.getScjzmj());
+
+                if (year <= 1960) areas[0] += area;
+                else if (year >= 1961 && year <= 1969) areas[1] += area;
+                else if (year >= 1970 && year <= 1979) areas[2] += area;
+                else if (year >= 1980 && year <= 1989) areas[3] += area;
+                else if (year >= 1990 && year <= 1999) areas[4] += area;
+                else if (year >= 2000 && year <= 2009) areas[5] += area;
+                else if (year >= 2010 && year <= 2019) areas[6] += area;
+                else if (year >= 2020) areas[7] += area;
+            }
+        }
+
+        for (int i = 0; i < labels.length; i++) {
+            if (areas[i] > 0) {
+                HouseStatisticsAreaRes.FwjsnfDTO dto = new HouseStatisticsAreaRes.FwjsnfDTO();
+                dto.setFwjsnfmc(labels[i]);
+                dto.setFwjsnfmj(String.valueOf(areas[i]));
+                result.add(dto);
+            }
+        }
+        return result;
+    }
+
 
 
 

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

@@ -600,7 +600,8 @@ public class SupplyServiceImpl implements ISupplyService {
                 vo.setProjectName(item.getXmmc());
                 vo.setCompanyName("暂无");
                 vo.setSupplyMethod(item.getGyfs());
-                vo.setSupplyType(supplyType.toString());
+                vo.setSupplyType("1");
+                vo.setDateType("1");
                 vo.setGeom(item.getGeom());
                 return vo;
             }).collect(Collectors.toList());
@@ -620,7 +621,11 @@ public class SupplyServiceImpl implements ISupplyService {
                 vo.setProjectName(item.getXmmc());
                 vo.setCompanyName(item.getCompany());
                 vo.setSupplyMethod(item.getGyfs());
-                vo.setSupplyType(supplyType.toString());
+                vo.setSupplyType("2");
+                vo.setDateType("2");
+                if(StringUtils.isBlank(item.getProjectId())){
+                    vo.setDateType("3");
+                }
                 vo.setNodeId(item.getNodeId());
                 vo.setGeom(item.getGeom());
                 return vo;
@@ -635,6 +640,8 @@ public class SupplyServiceImpl implements ISupplyService {
         return resList;
     }
 
+
+
     @Override
     public GongdiJihua getPlanProject(String id) {
         GongdiJihua res = null;