1
0
Quellcode durchsuchen

Merge branch 'dev-excel0521' into dev-to-user-1

chenendian vor 2 Tagen
Ursprung
Commit
27eabea2b7
39 geänderte Dateien mit 1139 neuen und 249 gelöschten Zeilen
  1. 24 0
      siwei-modules/siwei-apply/src/main/java/com/siwei/apply/controller/GyjsydjfwscdjController.java
  2. 22 0
      siwei-modules/siwei-apply/src/main/java/com/siwei/apply/controller/cadastre/ConvergeController.java
  3. 168 0
      siwei-modules/siwei-apply/src/main/java/com/siwei/apply/controller/cadastre/ReportBatchController.java
  4. 27 2
      siwei-modules/siwei-apply/src/main/java/com/siwei/apply/controller/cadastre/StorageController.java
  5. 34 11
      siwei-modules/siwei-apply/src/main/java/com/siwei/apply/controller/cadastre/SupplyController.java
  6. 1 1
      siwei-modules/siwei-apply/src/main/java/com/siwei/apply/domain/Fwmx.java
  7. 1 5
      siwei-modules/siwei-apply/src/main/java/com/siwei/apply/domain/GjShijiShouchu.java
  8. 16 4
      siwei-modules/siwei-apply/src/main/java/com/siwei/apply/domain/GongdiJihua.java
  9. 1 1
      siwei-modules/siwei-apply/src/main/java/com/siwei/apply/domain/YdbpData.java
  10. 18 0
      siwei-modules/siwei-apply/src/main/java/com/siwei/apply/domain/res/BatchRateRes.java
  11. 1 1
      siwei-modules/siwei-apply/src/main/java/com/siwei/apply/domain/vo/FwmxVo.java
  12. 3 0
      siwei-modules/siwei-apply/src/main/java/com/siwei/apply/mapper/ConvergeMapper.java
  13. 1 1
      siwei-modules/siwei-apply/src/main/java/com/siwei/apply/mapper/FwmxMapper.java
  14. 2 2
      siwei-modules/siwei-apply/src/main/java/com/siwei/apply/mapper/GjShouchuJihuaMapper.java
  15. 12 0
      siwei-modules/siwei-apply/src/main/java/com/siwei/apply/mapper/GongdiJihuaMapper.java
  16. 4 0
      siwei-modules/siwei-apply/src/main/java/com/siwei/apply/mapper/YdbpDataMapper.java
  17. 9 0
      siwei-modules/siwei-apply/src/main/java/com/siwei/apply/mapper/YdbpMapper.java
  18. 5 0
      siwei-modules/siwei-apply/src/main/java/com/siwei/apply/service/ConvergeService.java
  19. 7 0
      siwei-modules/siwei-apply/src/main/java/com/siwei/apply/service/GyjsydjfwscdjService.java
  20. 4 2
      siwei-modules/siwei-apply/src/main/java/com/siwei/apply/service/cadastre/ISupplyService.java
  21. 104 0
      siwei-modules/siwei-apply/src/main/java/com/siwei/apply/service/cadastre/impl/BatchServiceImpl.java
  22. 23 5
      siwei-modules/siwei-apply/src/main/java/com/siwei/apply/service/cadastre/impl/StorageServiceImpl.java
  23. 128 6
      siwei-modules/siwei-apply/src/main/java/com/siwei/apply/service/cadastre/impl/SupplyServiceImpl.java
  24. 55 1
      siwei-modules/siwei-apply/src/main/java/com/siwei/apply/service/impl/ConvergeServiceImpl.java
  25. 18 8
      siwei-modules/siwei-apply/src/main/java/com/siwei/apply/service/impl/Gyjsydjfwscdjmpl.java
  26. 13 6
      siwei-modules/siwei-apply/src/main/java/com/siwei/apply/service/impl/NodeAttachmentImpl.java
  27. 2 1
      siwei-modules/siwei-apply/src/main/java/com/siwei/apply/service/third/impl/DealExcelServiceImpl.java
  28. 0 13
      siwei-modules/siwei-apply/src/main/java/com/siwei/apply/service/third/impl/OfferDataServiceImpl.java
  29. 54 25
      siwei-modules/siwei-apply/src/main/java/com/siwei/apply/service/third/impl/TakeDataServiceImpl.java
  30. 47 0
      siwei-modules/siwei-apply/src/main/java/com/siwei/apply/utils/ServiceFileUtil.java
  31. 10 0
      siwei-modules/siwei-apply/src/main/resources/mapper/ConvergeMapper.xml
  32. 8 3
      siwei-modules/siwei-apply/src/main/resources/mapper/FwmxMapper.xml
  33. 41 47
      siwei-modules/siwei-apply/src/main/resources/mapper/GjShijiShouchuMapper.xml
  34. 64 53
      siwei-modules/siwei-apply/src/main/resources/mapper/GjShouchuJihuaMapper.xml
  35. 122 46
      siwei-modules/siwei-apply/src/main/resources/mapper/GongdiJihuaMapper.xml
  36. 2 3
      siwei-modules/siwei-apply/src/main/resources/mapper/TdgyMapper.xml
  37. 31 1
      siwei-modules/siwei-apply/src/main/resources/mapper/YdbpDataMapper.xml
  38. 31 0
      siwei-modules/siwei-apply/src/main/resources/mapper/YdbpMapper.xml
  39. 26 1
      siwei-modules/siwei-spatial/src/main/java/com/siwei/spatial/service/file/impl/SpatialFilesDbServiceImpl.java

+ 24 - 0
siwei-modules/siwei-apply/src/main/java/com/siwei/apply/controller/GyjsydjfwscdjController.java

@@ -1,5 +1,6 @@
 package com.siwei.apply.controller;
 
+import com.siwei.apply.domain.Fwmx;
 import com.siwei.apply.domain.NodeLand;
 import com.siwei.apply.domain.res.GyjsydjfwscdjRes;
 import com.siwei.apply.domain.res.GyjsydjfwscdjSinglRes;
@@ -17,6 +18,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 import java.util.Objects;
 
@@ -128,4 +130,26 @@ public class GyjsydjfwscdjController extends BaseController {
             return R.fail(e.getMessage());
         }
     }
+
+
+    //根据业务号获取房屋列表
+    @GetMapping("/house/list")
+    public  R<?> supplyList(
+            @RequestParam(value = "pageNum", required = false) Integer pageNum,
+            @RequestParam(value = "pageSize", required = false) Integer pageSize,
+            @RequestParam(value = "businessId", required = false) String businessId) {
+        try {
+            startPage();
+            List<Fwmx> resList = gyjsydjfwscdjService.houseList(businessId);
+            return R.ok(getDataTable(resList));
+        } catch (Exception e) {
+            e.printStackTrace();
+            return R.fail(e.getMessage());
+        }
+    }
+
+
+
+
+
 }

+ 22 - 0
siwei-modules/siwei-apply/src/main/java/com/siwei/apply/controller/cadastre/ConvergeController.java

@@ -76,6 +76,28 @@ public class ConvergeController extends BaseController {
     }
 
 
+
+
+
+    /**
+     * 下载汇交文件
+     * 支持多选,批量下载
+     * zip 文件
+     *
+     */
+    @PostMapping("/downConvergeMultiFile")
+    public void downConvergeMultiFile(HttpServletResponse response, @RequestBody IdsVo idsVo)  {
+        try {
+            convergeService.downConvergeMultiFile(response, idsVo.getIds());
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+
+
+
+
     /**
      * 下载汇交文件
      * zip 文件

+ 168 - 0
siwei-modules/siwei-apply/src/main/java/com/siwei/apply/controller/cadastre/ReportBatchController.java

@@ -0,0 +1,168 @@
+package com.siwei.apply.controller.cadastre;
+
+import com.siwei.apply.domain.GongdiJihua;
+import com.siwei.apply.domain.LandType;
+import com.siwei.apply.domain.cadastre.LandSupplyReportDTO;
+import com.siwei.apply.domain.res.BatchRateRes;
+import com.siwei.apply.domain.res.SupplyYearStatisticsRes;
+import com.siwei.apply.domain.res.TrendStatisticsRes;
+import com.siwei.apply.domain.vo.LandSupplyProjectVO;
+import com.siwei.apply.domain.vo.LandSupplyReportVO;
+import com.siwei.apply.domain.vo.YdbpDataFilterVo;
+import com.siwei.apply.service.cadastre.ISupplyService;
+import com.siwei.apply.service.cadastre.impl.BatchServiceImpl;
+import com.siwei.apply.service.cadastre.impl.StorageServiceImpl;
+import com.siwei.common.core.domain.R;
+import com.siwei.common.core.web.controller.BaseController;
+import org.apache.poi.ss.usermodel.*;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * 批次报批数据分析
+ *
+ */
+@RestController
+@RequestMapping("/cadastre/batch")
+public class ReportBatchController extends BaseController {
+
+    @Autowired
+    private ISupplyService supplyService;
+
+
+    @Autowired
+    private BatchServiceImpl batchServiceImpl;
+
+
+    /**
+     *
+     * 年度统计
+     *
+     */
+    @GetMapping("/yearStatistics/{year}")
+    public R<BatchRateRes> getYearStatistics(@PathVariable String year) {
+        try {
+            BatchRateRes res =  batchServiceImpl.yearStatistics(year);
+            return R.ok(res);
+        } catch (Exception e) {
+            e.printStackTrace();
+            return R.fail(e.getMessage());
+        }
+    }
+
+
+
+
+
+
+    /**
+     *
+     * 趋势分析
+     */
+    @GetMapping("/trendStatistics")
+    public R<BatchRateRes> getTrendStatistics() {
+        try {
+            BatchRateRes res =  batchServiceImpl.trendStatistics("");
+            return R.ok(res);
+        } catch (Exception e) {
+            e.printStackTrace();
+            return R.fail(e.getMessage());
+        }
+    }
+
+
+
+
+
+
+
+
+
+
+
+
+
+    /**
+     * 根据年份和供地类型查询土地供应统计报表数据
+     * @param year
+     * @param supplyType (1-计划,2-完成)
+     * @return
+     */
+    @GetMapping("/projectList")
+    public R<List<LandSupplyProjectVO>> getProjectList(@RequestParam(required = false) String year,@RequestParam Integer supplyType) {
+        try {
+                List<LandSupplyProjectVO> resList =  supplyService.projectList(year,supplyType);
+                return R.ok(resList);
+        } catch (Exception e) {
+            e.printStackTrace();
+            return R.fail(e.getMessage());
+        }
+    }
+
+
+    @GetMapping("/getPlanProject")
+    public R<GongdiJihua> getPlanProject(@RequestParam String propertyId) {
+        try {
+            GongdiJihua res =  supplyService.getPlanProject(propertyId);
+            return R.ok(res);
+        } catch (Exception e) {
+            e.printStackTrace();
+            return R.fail(e.getMessage());
+        }
+    }
+
+
+    @GetMapping("/getActualProject")
+    public R<Map<String,Object>> getActualProject(@RequestParam String propertyId) {
+        try {
+            Map<String,Object> res =  supplyService.getActualProject(propertyId);
+            return R.ok(res);
+        } catch (Exception e) {
+            e.printStackTrace();
+            return R.fail(e.getMessage());
+        }
+    }
+
+
+    /**
+     *
+     * 根据时间范围查询土地供应统计报表数据
+     * 供应用途分析报表
+     *
+     */
+    @GetMapping("/report/purpose")
+    public R<LandSupplyReportVO> getTdgyProjectList(@RequestParam String startYear, @RequestParam String endYear) {
+        try {
+            LandSupplyReportVO res =  supplyService.getTdgyPurposeReport(startYear,endYear);
+            return R.ok(res);
+        } catch (Exception e) {
+            return R.fail(e.getMessage());
+        }
+    }
+
+
+
+    @GetMapping("/landTypeList")
+    public R<List<LandType>> getLandTypeList() {
+        try {
+            return R.ok(supplyService.getLandTypeList());
+        } catch (Exception e) {
+            e.printStackTrace();
+            return R.fail(e.getMessage());
+        }
+    }
+
+
+
+
+
+
+
+
+}

+ 27 - 2
siwei-modules/siwei-apply/src/main/java/com/siwei/apply/controller/cadastre/StorageController.java

@@ -6,6 +6,7 @@ import com.siwei.apply.domain.res.StorageYearStatisticsRes;
 import com.siwei.apply.domain.res.TrendStatisticsData;
 import com.siwei.apply.domain.res.TrendStatisticsRes;
 import com.siwei.apply.domain.res.TrendUseStatisticsData;
+import com.siwei.apply.domain.vo.IdsVo;
 import com.siwei.apply.domain.vo.LandSupplyProjectVO;
 import com.siwei.apply.service.cadastre.impl.StorageServiceImpl;
 import com.siwei.common.core.domain.R;
@@ -614,11 +615,12 @@ public class StorageController extends BaseController {
     @GetMapping("/schedule/list")
     public  R<?> scheduleList(
             @RequestParam(value = "sourceType") String sourceType,
+            @RequestParam(value = "nf") String nf,
             @RequestParam(value = "pageNum", required = false) Integer pageNum,
             @RequestParam(value = "pageSize", required = false) Integer pageSize) {
         try {
             startPage();
-            List<Map<String, Object>>  resList = storageServiceImpl.actualList("gj_shouchu_xiangmu",sourceType);
+            List<Map<String, Object>>  resList = storageServiceImpl.actualList("gj_shouchu_xiangmu",sourceType,"",nf);
             return R.ok(getDataTable(resList));
         } catch (Exception e) {
             e.printStackTrace();
@@ -647,11 +649,12 @@ public class StorageController extends BaseController {
 
     @GetMapping("/actual/list")
     public  R<?> actualList(
+            @RequestParam(value = "year", required = false) String year,
             @RequestParam(value = "pageNum", required = false) Integer pageNum,
             @RequestParam(value = "pageSize", required = false) Integer pageSize) {
         try {
             startPage();
-            List<Map<String, Object>>  resList = storageServiceImpl.actualList("gj_shouchu_xiangmu_shiji","");
+            List<Map<String, Object>>  resList = storageServiceImpl.actualList("gj_shouchu_xiangmu_shiji","",year,"");
             return R.ok(getDataTable(resList));
         } catch (Exception e) {
             e.printStackTrace();
@@ -660,6 +663,28 @@ public class StorageController extends BaseController {
     }
 
 
+    /**
+     * type  storage  planType schedule
+     * 根据年份进行删除
+     * @param
+     * @return
+     */
+    @DeleteMapping("")
+    public R<Void> Delete( @RequestParam(value = "type", required = true) String type,
+            @RequestParam(value = "planType", required = true) String planType,
+            @RequestParam(value = "year", required = true) String year) {
+        try {
+            if (year == null || year.isEmpty()) {
+                return R.fail("年份不能为空");
+            }
+            storageServiceImpl.deleteByYear(type,planType,year);
+            return R.ok();
+        } catch (Exception e) {
+            return R.fail(e.getMessage());
+        }
+    }
+
+
 
 
 

+ 34 - 11
siwei-modules/siwei-apply/src/main/java/com/siwei/apply/controller/cadastre/SupplyController.java

@@ -313,10 +313,6 @@ public class SupplyController extends BaseController {
     }
 
 
-
-
-
-
     /**
      *
      * 根据时间范围查询土地供应统计报表数据
@@ -335,12 +331,6 @@ public class SupplyController extends BaseController {
 
 
 
-
-
-
-
-
-
     @PostMapping("/purpose/export")
     public void exportPurposeReport(HttpServletResponse response, @RequestParam String startYear, @RequestParam String endYear) {
         try {
@@ -426,7 +416,9 @@ public class SupplyController extends BaseController {
                 Cell categoryCell = headerRow1.createCell(colIndex);
                 categoryCell.setCellValue(categoryNames[i]);
                 categoryCell.setCellStyle(headerStyle);
-                sheet.addMergedRegion(new CellRangeAddress(1, 1, colIndex, colIndex + years.size() - 1));
+                if (years.size() > 1) {
+                    sheet.addMergedRegion(new CellRangeAddress(1, 1, colIndex, colIndex + years.size() - 1));
+                }
 
                 for (int j = 0; j < years.size(); j++) {
                     Cell yearCell = headerRow2.createCell(colIndex + j);
@@ -566,6 +558,37 @@ public class SupplyController extends BaseController {
     }
 
 
+    /**
+     *
+     * 收储文件上传入库
+     * 0 全量更新;1 增量更新
+     */
+    @PostMapping("/schedule/import")
+    public R<String> importSchedule(String shpFilePath,String addType) {
+        try {
+            Map<String, Object>  res = supplyService.importSupplySchedule(shpFilePath,addType);
+            return R.ok("success");
+        } catch (Exception e) {
+            return R.fail(e.getMessage());
+        }
+    }
+
+    @GetMapping("/schedule/list")
+    public  R<?> supplyList(
+            @RequestParam(value = "year", required = false) String year,
+            @RequestParam(value = "pageNum", required = false) Integer pageNum,
+            @RequestParam(value = "pageSize", required = false) Integer pageSize) {
+        try {
+            startPage();
+            List<Map<String, Object>>  resList = supplyService.supplyList("gj_gongdi_xiangmu_jihua","",year);
+            return R.ok(getDataTable(resList));
+        } catch (Exception e) {
+            e.printStackTrace();
+            return R.fail(e.getMessage());
+        }
+    }
+
+
 
 
 

+ 1 - 1
siwei-modules/siwei-apply/src/main/java/com/siwei/apply/domain/Fwmx.java

@@ -20,7 +20,7 @@ public class Fwmx extends BaseId {
     private String jzmj;           // 建筑面积
     private String tnmj;           // 套内面积
     private String ftmj;           // 分摊面积
-    private String mjdw;           // 面积单位
+    private String tdmjdw;           // 面积单位
     private String fjh;            // 房间号
     private String bdcdyh;         // 不动产单元号
     private String bdcqzh;         // 不动产权证号

+ 1 - 5
siwei-modules/siwei-apply/src/main/java/com/siwei/apply/domain/GjShijiShouchu.java

@@ -19,15 +19,13 @@ public class GjShijiShouchu {
 
     private String scsj;
 
-    private BigDecimal mj;
-
     private String scfs;
 
     private Double scnd;
 
     private String tdzl;
 
-    private String ytdyt;
+    private String ghyt;
 
     private String ytdsyqxz;
 
@@ -35,8 +33,6 @@ public class GjShijiShouchu {
 
     private String bz;
 
-    private String bsm;
-
     private String xzq;
 
     private String dabh;

+ 16 - 4
siwei-modules/siwei-apply/src/main/java/com/siwei/apply/domain/GongdiJihua.java

@@ -13,9 +13,9 @@ public class GongdiJihua {
 
     private Integer fid;
 
-    private BigDecimal mjPfm;
+    private BigDecimal mj12;
 
-    private BigDecimal mjMu;
+    private BigDecimal mjM;
 
     private String xmmc;
 
@@ -24,9 +24,21 @@ public class GongdiJihua {
     private String gyfs;
 
     @JsonFormat(pattern = "yyyy-MM-dd")
-    private Date gysj;
+    private Date ngysj;
+
+    private String nf;
+
+    private String nydwz;
+
+    private String xzqmc;
+
+    private String tgdw;
+
+    private BigDecimal ybpmj;
+
+    private BigDecimal wbpmj;
 
     private String bz;
 
     private String geom;
-}
+}

+ 1 - 1
siwei-modules/siwei-apply/src/main/java/com/siwei/apply/domain/YdbpData.java

@@ -20,7 +20,7 @@ public class YdbpData extends BaseId {
     private String pfwh;
     private String pfDate;
     private String creatorId;
-
+    private Boolean hasOnchain;    // 是否上链
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date createdAt;
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")

+ 18 - 0
siwei-modules/siwei-apply/src/main/java/com/siwei/apply/domain/res/BatchRateRes.java

@@ -0,0 +1,18 @@
+package com.siwei.apply.domain.res;
+
+import lombok.Data;
+
+/**
+ * 报批年份统计vo
+ *
+ */
+@Data
+public class BatchRateRes {
+    private Integer batchProjectCount = 0;
+    private Double  batchArea= 0d;
+    private Integer  singleProjectCount= 0;
+    private Double  singleArea= 0d;
+    private Integer  allProjectCount= 0;
+    private Double  allArea= 0d;
+    private String areaUnit= "亩";// 面积单位
+}

+ 1 - 1
siwei-modules/siwei-apply/src/main/java/com/siwei/apply/domain/vo/FwmxVo.java

@@ -20,7 +20,7 @@ public class FwmxVo {
     private String jzmj;           // 建筑面积
     private String tnmj;           // 套内面积
     private String ftmj;           // 分摊面积
-    private String mjdw;           // 面积单位
+    private String tdmjdw;           // 面积单位
     private String fjh;            // 房间号
     private String bdcdyh;         // 不动产单元号
     private String bdcqzh;         // 不动产权证号

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

@@ -20,6 +20,9 @@ public interface ConvergeMapper {
      */
     Converge get(String id);
 
+
+    List<Converge> getByIds(@Param("ids") List<String> ids);
+
     /**
      * 获取汇交记录列表
      */

+ 1 - 1
siwei-modules/siwei-apply/src/main/java/com/siwei/apply/mapper/FwmxMapper.java

@@ -19,7 +19,7 @@ public interface FwmxMapper {
     /**
      * 获取房屋首次登记明细信息列表
      */
-    List<Fwmx> list();
+    List<Fwmx> list(@Param("businessId") String businessId);
 
     /**
      * 获取房屋首次登记明细信息(按主键ID)

+ 2 - 2
siwei-modules/siwei-apply/src/main/java/com/siwei/apply/mapper/GjShouchuJihuaMapper.java

@@ -27,8 +27,8 @@ public interface GjShouchuJihuaMapper {
 
     int insertTableActualData(@Param("tableName") String tableName, @Param("data") Map<String, Object> data, @Param("shpDbSRID") Integer shpDbSRID);
 
+    List<Map<String, Object>> actualList(@Param("tableName") String tableName,@Param("sourceType") String sourceType,@Param("year") String year,@Param("nf") String nf);
 
-    List<Map<String, Object>> actualList(@Param("tableName") String tableName,@Param("sourceType") String sourceType,@Param("year") String year);
-
+    int deleteByTableYear(@Param("tableName") String tableName,@Param("type") String type, @Param("year") String year);
 
 }

+ 12 - 0
siwei-modules/siwei-apply/src/main/java/com/siwei/apply/mapper/GongdiJihuaMapper.java

@@ -30,4 +30,16 @@ public interface GongdiJihuaMapper {
     List<Map<String, Object>> getPlanStatsByLandType(@Param("startTime") String startTime, @Param("endTime") String endTime);
 
     List<Map<String, Object>> getPlanStatsBySupplyMode(@Param("startTime") String startTime, @Param("endTime") String endTime);
+
+    List<Map<String, Object>> supplyList(@Param("tableName") String tableName,@Param("year") String year);
+
+    int insertTableSupplyData(@Param("tableName") String tableName, @Param("data") Map<String, Object> data, @Param("shpDbSRID") Integer shpDbSRID);
+
+    int deleteByTable(@Param("tableName") String tableName, @Param("gid") String gid);
+
+    int deleteByTableYear(@Param("tableName") String tableName,@Param("type") String type, @Param("year") String year);
+
+
+
+
 }

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

@@ -5,6 +5,7 @@ import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
+import java.util.Map;
 
 @Mapper
 public interface YdbpDataMapper {
@@ -52,6 +53,9 @@ public interface YdbpDataMapper {
 
     void updateHasOnchain(@Param("id") String id, @Param("hasOnchain") Boolean hasOnchain);
 
+    List<YdbpData> getStatisticsList(@Param("year") String year);
+
+
 
 
 }

+ 9 - 0
siwei-modules/siwei-apply/src/main/java/com/siwei/apply/mapper/YdbpMapper.java

@@ -5,6 +5,9 @@ import com.siwei.apply.domain.vo.YdbpUpdateVo;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
+import java.util.List;
+import java.util.Map;
+
 // 用地报批 Mapper 接口
 @Mapper
 public interface YdbpMapper {
@@ -49,4 +52,10 @@ public interface YdbpMapper {
      * @param hasOnchain 是否已上链
      */
     void updateHasOnchain(@Param("id") String id, @Param("hasOnchain") Boolean hasOnchain);
+
+
+
+    List<Map<String, Object>> getStatisticsList(@Param("year") String year);
+
+
 }

+ 5 - 0
siwei-modules/siwei-apply/src/main/java/com/siwei/apply/service/ConvergeService.java

@@ -37,4 +37,9 @@ public interface ConvergeService {
 
     void operationConverge(String batch,String type) ;
 
+
+    void downConvergeMultiFile(HttpServletResponse response, List<String> ids);
+
+
+
 }

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

@@ -1,11 +1,14 @@
 package com.siwei.apply.service;
 
+import com.siwei.apply.domain.Fwmx;
 import com.siwei.apply.domain.Gyjsydjfwscdj;
 import com.siwei.apply.domain.res.GyjsydjfwscdjRes;
 import com.siwei.apply.domain.res.GyjsydjfwscdjSinglRes;
 import com.siwei.apply.domain.vo.GyjsydjfwscdjUpdateVo;
 import com.siwei.apply.domain.vo.GyjsydjfwscdjVo;
 
+import java.util.List;
+
 /**
  * 国有建设用地使用权及房屋所有权首次登记 服务接口
  */
@@ -50,4 +53,8 @@ public interface GyjsydjfwscdjService {
 
     Gyjsydjfwscdj getBySourceId(String sourceId);
 
+
+    List<Fwmx> houseList(String businessId);
+
+
 }

+ 4 - 2
siwei-modules/siwei-apply/src/main/java/com/siwei/apply/service/cadastre/ISupplyService.java

@@ -18,7 +18,6 @@ public interface ISupplyService {
 
     LandSupplyReportDTO getTdgyReport(String startTime,String endTime); //  supplyService.getTdgyReport(startTime,endTime);
 
-
     SupplyYearStatisticsRes yearStatistics(String year);
 
     TrendStatisticsRes trendStatistics(String landType);
@@ -31,7 +30,10 @@ public interface ISupplyService {
 
     Map<String,Object> getActualProject(String id);
 
-
     List<LandType> getLandTypeList();
 
+    Map<String, Object> importSupplySchedule(String shpFilePath,String addType);
+
+    List<Map<String, Object>> supplyList(String tableName,String sourceType,String year);
+
 }

+ 104 - 0
siwei-modules/siwei-apply/src/main/java/com/siwei/apply/service/cadastre/impl/BatchServiceImpl.java

@@ -0,0 +1,104 @@
+package com.siwei.apply.service.cadastre.impl;
+
+import com.siwei.apply.domain.YdbpData;
+import com.siwei.apply.domain.res.*;
+import com.siwei.apply.mapper.*;
+import com.siwei.common.core.utils.StringUtils;
+import com.siwei.spatial.api.RemoteSpatialFilesDbService;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.collections4.CollectionUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+import java.util.*;
+
+
+@Slf4j
+@Service
+public class BatchServiceImpl{
+
+    @Autowired
+    private GongdiJihuaMapper gongdiJihuaMapper;
+
+    @Autowired
+    private TdgyMapper dgyMapper;
+
+    @Autowired
+    private LandTypeMapper landTypeMapper;
+
+    @Autowired
+    private RemoteSpatialFilesDbService remoteSpatialFilesDbService;
+
+    @Autowired
+    private YdbpMapper ydbpMapper;
+
+    @Autowired
+    private YdbpDataMapper ydbpDataMapper;
+
+
+
+
+
+    /**
+     * 年度统计
+     * @param year
+     * @return
+     */
+    public BatchRateRes trendStatistics(String year) {
+        if (StringUtils.isBlank(year) || "0".equals(year)) {
+            year = "";
+        }
+        BatchRateRes res = new BatchRateRes();
+        return null;
+    }
+
+
+    /**
+     * 年度统计
+     * @param year
+     * @return
+     */
+    public BatchRateRes yearStatistics(String year) {
+        if(StringUtils.isBlank(year)||"0".equals(year)){
+            year="";
+        }
+        BatchRateRes res = new BatchRateRes();
+        List<Map<String,Object>> singleBatchList =  ydbpMapper.getStatisticsList(year);
+        List<YdbpData> reportBatchList =  ydbpDataMapper.getStatisticsList(year);
+        if(CollectionUtils.isNotEmpty(singleBatchList)) {
+            res.setSingleArea(sumAreaForSingle(singleBatchList));
+            res.setSingleProjectCount(singleBatchList.size());
+        }
+        if(CollectionUtils.isNotEmpty(reportBatchList)) {
+            res.setBatchArea(sumArea(reportBatchList));
+            res.setBatchProjectCount(reportBatchList.size());
+        }
+        res.setAllArea(res.getSingleArea() + res.getBatchArea());
+        res.setAllProjectCount(res.getSingleProjectCount() + res.getBatchProjectCount());
+        return res;
+    }
+
+    private Double sumAreaForSingle(List<Map<String,Object>> list) {
+        Double sum = 0d;
+        if (CollectionUtils.isNotEmpty(list)) {
+            for (Map<String,Object> item : list) {
+                sum += item.get("mj_mu") == null ? 0d : (Double) item.get("mj_mu");
+            }
+        }
+        return Math.round(sum * 100) / 100.0;
+    }
+
+
+    private Double sumArea(List<YdbpData> list) {
+        double sum = 0d;
+        if (CollectionUtils.isNotEmpty(list)) {
+            for (YdbpData item : list) {
+                sum += item.getZsArea() == null ? 0 : item.getZsArea();
+            }
+        }
+        return Math.round(sum * 100) / 100.0;
+    }
+
+}

+ 23 - 5
siwei-modules/siwei-apply/src/main/java/com/siwei/apply/service/cadastre/impl/StorageServiceImpl.java

@@ -7,6 +7,7 @@ import com.siwei.apply.domain.res.*;
 import com.siwei.apply.domain.vo.LandSupplyProjectVO;
 import com.siwei.apply.mapper.GjShijiShouchuMapper;
 import com.siwei.apply.mapper.GjShouchuJihuaMapper;
+import com.siwei.apply.mapper.GongdiJihuaMapper;
 import com.siwei.apply.mapper.TdgyMapper;
 import com.siwei.common.core.constant.SecurityConstants;
 import com.siwei.common.core.domain.R;
@@ -59,6 +60,10 @@ public class StorageServiceImpl {
     private RemoteSpatialFilesDbService remoteSpatialFilesDbService;
 
 
+    @Autowired
+    private GongdiJihuaMapper gongdiJihuaMapper;
+
+
 
     public LandStorageInOutReportDTO inOutDetails() {
         LandStorageInOutReportDTO report = new LandStorageInOutReportDTO();
@@ -834,9 +839,9 @@ public class StorageServiceImpl {
         int count = 1;
         for (Map<String, Object> shpData : shpDataList){
 //            String scfs = shpData.get("scfs").toString();
-            String scnd = shpData.get("scnd").toString();
+            String scnd =   Objects.nonNull(shpData.get("scnd"))?shpData.get("scnd").toString():"";
 //            String sccb = shpData.get("sccb").toString();
-            String mj_m = shpData.get("mj_m").toString();
+            String mj_m =  Objects.nonNull(shpData.get("mj_m"))?shpData.get("mj_m").toString():"";
 //            String ghyt = shpData.get("ghyt").toString();
 //            if(StringUtils.isBlank(sccb)|| StringUtils.isBlank(scfs) ||StringUtils.isBlank(scnd) || StringUtils.isBlank(ghyt) || StringUtils.isBlank(mj_m)){
 //                throw new  ServiceException("关键字段不能为空(sccb,scnd,scfs,ghyt,mj_m),请检查第"+count+"条数据");
@@ -903,13 +908,26 @@ public class StorageServiceImpl {
         return retMap;
     }
 
-
     //导入实际的数据
-    public List<Map<String, Object>> actualList(String tableName,String sourceType) {
-        List<Map<String, Object>> actualList = gjShouchuJihuaMapper.actualList(tableName,sourceType,"");
+    public List<Map<String, Object>> actualList(String tableName,String sourceType,String year,String nf) {
+        List<Map<String, Object>> actualList = gjShouchuJihuaMapper.actualList(tableName,sourceType,year,nf);
         return actualList;
     }
 
+    //删除指定年份的数据
+    public void deleteByYear(String type,String planType,String year) {
+        if(type.equalsIgnoreCase("storage")){
+            if(planType.equalsIgnoreCase("schedule")){
+                gjShouchuJihuaMapper.deleteByTableYear("gj_shouchu_xiangmu","0",year);
+            }else if(planType.equalsIgnoreCase("transfer")){
+                gjShouchuJihuaMapper.deleteByTableYear("gj_shouchu_xiangmu","1",year);
+            }else if(planType.equalsIgnoreCase("actual")){
+                gjShouchuJihuaMapper.deleteByTableYear("gj_shouchu_xiangmu_shiji","2",year);
+            }
+        }else if(type.equalsIgnoreCase("supply")){
+            gongdiJihuaMapper.deleteByTableYear("gj_gongdi_xiangmu_jihua","2",year);
+        }
+    }
 
 
 }

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

@@ -8,20 +8,29 @@ import com.siwei.apply.domain.vo.GongdiJihuaFilterVo;
 import com.siwei.apply.domain.vo.LandSupplyProjectVO;
 import com.siwei.apply.domain.vo.LandSupplyReportVO;
 import com.siwei.apply.enums.LandUseTypeEnum;
+import com.siwei.apply.mapper.GjShouchuJihuaMapper;
 import com.siwei.apply.mapper.GongdiJihuaMapper;
 import com.siwei.apply.mapper.LandTypeMapper;
 import com.siwei.apply.mapper.TdgyMapper;
 import com.siwei.apply.service.cadastre.ISupplyService;
+import com.siwei.common.core.constant.SecurityConstants;
+import com.siwei.common.core.domain.R;
+import com.siwei.common.core.exception.ServiceException;
 import com.siwei.common.core.utils.StringUtils;
+import com.siwei.spatial.api.RemoteSpatialFilesDbService;
+import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.collections4.CollectionUtils;
+import org.apache.commons.collections4.MapUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.io.File;
 import java.math.BigDecimal;
 import java.util.*;
 import java.util.stream.Collectors;
 
 
+@Slf4j
 @Service
 public class SupplyServiceImpl implements ISupplyService {
 
@@ -34,6 +43,13 @@ public class SupplyServiceImpl implements ISupplyService {
     @Autowired
     private LandTypeMapper landTypeMapper;
 
+    @Autowired
+    private RemoteSpatialFilesDbService remoteSpatialFilesDbService;
+
+    @Autowired
+    private GjShouchuJihuaMapper gjShouchuJihuaMapper;
+
+
 
 
     @Override
@@ -78,10 +94,10 @@ public class SupplyServiceImpl implements ISupplyService {
             supplyRate.setPlanProjectCount(list.size());
             supplyRate.setCompleteProjectCount(completeList.size()); 
 
-            //根据GongdiJihua 对象的MjMu 计算加总值
+            //根据GongdiJihua 对象的MjM 计算加总值
             double planArea = list.stream()
-                .filter(g -> g.getMjMu() != null)
-                .mapToDouble(g -> g.getMjMu().doubleValue())
+                .filter(g -> g.getMjM() != null)
+                .mapToDouble(g -> g.getMjM().doubleValue())
                 .sum();
             supplyRate.setPlanArea((float) planArea);
 
@@ -102,7 +118,7 @@ public class SupplyServiceImpl implements ISupplyService {
                     .map(g -> {
                         for (LandUseTypeEnum type : LandUseTypeEnum.values()) {
                             if (type.getName().equals(g.getTdyt())) {
-                                return Map.entry(type.getParentName(), g.getMjMu() != null ? g.getMjMu().doubleValue() : 0.0);
+                                return Map.entry(type.getParentName(), g.getMjM() != null ? g.getMjM().doubleValue() : 0.0);
                             }
                         }
                         return null;
@@ -429,6 +445,10 @@ public class SupplyServiceImpl implements ISupplyService {
 //        GongdiJihuaFilterVo filterVo = new GongdiJihuaFilterVo();
 //        filterVo.setPageSize(100000);
 //        List<GongdiJihua> completeList = gongdiJihuaMapper.getList(filterVo);
+        if(StringUtils.isNotBlank(startYear) && StringUtils.isNotBlank(endYear)){
+            startYear+="+-01-01";
+            endYear+="+-12-31";
+        }
 
         //这里合并两部分数据
         List<TdgyStatisticsRes> completeList = new ArrayList<>();
@@ -559,9 +579,9 @@ public class SupplyServiceImpl implements ISupplyService {
                 vo.setSupplyType(supplyType.toString());
                 vo.setDateType(supplyType.toString());
                 vo.setGeom(item.getGeom());
-                String area = String.format("%.2f", item.getMjMu() == null ? BigDecimal.ZERO : item.getMjMu());
+                String area = String.format("%.2f", item.getMjM() == null ? BigDecimal.ZERO : item.getMjM());
                 vo.setArea(area);
-                vo.setYear(item.getGysj());
+                vo.setYear(item.getNgysj());
                 return vo;
             }).collect(Collectors.toList());
         }else if(supplyType == 2){
@@ -736,4 +756,106 @@ public class SupplyServiceImpl implements ISupplyService {
         }
         return 0;
     }
+
+
+
+
+
+    @Override
+    public Map<String, Object> importSupplySchedule(String shpFilePath,String addType) {
+        Map<String, Object> retMap = new LinkedHashMap<>();
+        if(StringUtils.isBlank(shpFilePath)){
+            throw new ServiceException("文件不存在请重新上传!");
+        }
+        File file = new File(shpFilePath);
+        if (!file.exists()) {
+            throw new  ServiceException("文件不存在请重新上传!");
+        }
+
+        R<List<Map<String, Object>>> shpGeomResult  = remoteSpatialFilesDbService.readShpFile(shpFilePath, SecurityConstants.INNER);
+        List<Map<String, Object>> shpDataList = shpGeomResult.getData();
+        log.info("远程调用geom获取,返回结果:{}", shpDataList);
+
+        int count = 1;
+        for (Map<String, Object> shpData : shpDataList){
+            String nf = shpData.get("nf").toString();
+            String ngysj = shpData.get("ngysj").toString();
+            String gyfs = shpData.get("gyfs").toString();
+            String tdyt = shpData.get("tdyt").toString();
+            String mj_m = shpData.get("mj_m").toString();
+            if(StringUtils.isBlank(nf)|| StringUtils.isBlank(ngysj) ||StringUtils.isBlank(gyfs) || StringUtils.isBlank(tdyt) || StringUtils.isBlank(mj_m)){
+                throw new  ServiceException("关键字段不能为空(nf,ngysj,gyfs,tdyt,mj_m),请检查第"+count+"条数据");
+            }
+            count++;
+        }
+        if("0".equals(addType)){
+            //这里把当前表清空,重新写入;
+            gongdiJihuaMapper.deleteByTable("gj_gongdi_xiangmu_jihua","");
+        }
+
+        // 供地项目表 geom 列的 SRID(参考建表语句 vector.gj_gongdi_xiangmu_jihua)
+        int shpDbSRID = 4326;
+        // 日期字段:shp 读取出来是 ISO8601 字符串(例如 2025-12-24T00:00:00.000+08:00),入库仅保留到 "T" 之前
+
+        Set<String> dateFields = new HashSet<>(Arrays.asList("ngysj"));
+        // 数值字段:建表语句中为 numeric(18,4)
+        Set<String> numericFields = new HashSet<>(Arrays.asList(
+                "ybpmj", "mj_m", "wbpmj", "mj_12"));
+
+        for (Map<String, Object> shpData : shpDataList) {
+            Map<String, Object> insertData = new LinkedHashMap<>();
+            for (Map.Entry<String, Object> e : shpData.entrySet()) {
+                String key = e.getKey();
+                Object val = e.getValue();
+                if (val == null) {
+                    continue;
+                }
+                // 字符串做一次清洗:空白置为 null
+                if (val instanceof String) {
+                    String s = ((String) val).trim();
+                    if (s.isEmpty()) {
+                        continue;
+                    }
+                    if (dateFields.contains(key)) {
+                        int t = s.indexOf('T');
+                        if (t > 0) {
+                            s = s.substring(0, t);
+                        }
+                        insertData.put(key, s);
+                        continue;
+                    }
+                    if (numericFields.contains(key)) {
+                        try {
+                            insertData.put(key, new BigDecimal(s));
+                        } catch (NumberFormatException ex) {
+                            log.warn("字段 {} 数值转换失败,原值:{}", key, s);
+                        }
+                        continue;
+                    }
+                    insertData.put(key, s);
+                } else {
+                    insertData.put(key, val);
+                }
+            }
+            if (MapUtils.isEmpty(insertData)) {
+                continue;
+            }
+            //todo 完成这里的调用方法
+            gongdiJihuaMapper.insertTableSupplyData("gj_gongdi_xiangmu_jihua", insertData, shpDbSRID);
+        }
+        retMap.put("status","success");
+        retMap.put("path",shpFilePath);
+        return retMap;
+    }
+
+
+    @Override
+    public List<Map<String, Object>> supplyList(String tableName,String sourceType,String year) {
+        List<Map<String, Object>> list = gongdiJihuaMapper.supplyList(tableName,year);
+        return list;
+    }
+
+
+
+
 }

+ 55 - 1
siwei-modules/siwei-apply/src/main/java/com/siwei/apply/service/impl/ConvergeServiceImpl.java

@@ -119,6 +119,7 @@ public class ConvergeServiceImpl implements ConvergeService {
     }
 
 
+
     @Override
     public void downConvergeFile(HttpServletResponse response, String ywh) {
         try {
@@ -142,7 +143,7 @@ public class ConvergeServiceImpl implements ConvergeService {
             response.setContentType("application/zip");
             response.setCharacterEncoding("utf-8");
             String fileName = downName + ".zip";
-            
+
             // 对文件名进行 URL 编码,解决中文乱码导致的 Header 非法字符异常
             String encodedFileName = URLEncoder.encode(fileName, "UTF-8").replaceAll("\\+", "%20");
             response.setHeader("Content-Disposition", "attachment;filename=" + encodedFileName);
@@ -161,6 +162,59 @@ public class ConvergeServiceImpl implements ConvergeService {
         }
     }
 
+
+
+
+    @Override
+    public void downConvergeMultiFile(HttpServletResponse response, List<String> idList) {
+        try {
+            if(CollectionUtils.isEmpty(idList)){
+                throw new ServiceException("汇交任务ID列表为空");
+            }
+            List<Converge> convergeList = convergeMapper.getByIds(idList);
+            if(CollectionUtils.isEmpty(convergeList)){
+                throw new ServiceException("获取不到当前任务:"+idList);
+            }
+
+            File[] zipFiles = new File[convergeList.size()];
+            int idx = 0;
+            String zipDirPath = convergedir;
+            for (Converge converge : convergeList) {
+                String path = converge.getFilePath();
+                Path dirPath = Paths.get(path);
+                if (!Files.exists(dirPath)) {
+                    throw new ServiceException("找不到汇交文件生成目录:"+converge.getId());
+                }
+                zipFiles[idx++] = dirPath.toFile();
+            }
+
+            String uuidStr = IdUtils.fastSimpleUUID();
+            File zipFile = new File(zipDirPath + uuidStr +".zip");
+            if(zipFiles.length>0){
+                ServiceFileUtil.zipByDir(zipFiles,null, zipFile);
+            }
+            // 4. 设置响应头并下载
+            String downName = uuidStr;
+            response.setContentType("application/zip");
+            response.setCharacterEncoding("utf-8");
+            String fileName = downName + ".zip";
+            // 对文件名进行 URL 编码,解决中文乱码导致的 Header 非法字符异常
+            String encodedFileName = URLEncoder.encode(fileName, "UTF-8").replaceAll("\\+", "%20");
+            response.setHeader("Content-Disposition", "attachment;filename=" + encodedFileName);
+            try (FileInputStream fis = new FileInputStream(zipFile)) {
+                byte[] buffer = new byte[4096];
+                int len;
+                while ((len = fis.read(buffer)) > 0) {
+                    response.getOutputStream().write(buffer, 0, len);
+                }
+            }
+            response.getOutputStream().flush();
+        } catch (Exception e) {
+            log.error("zip文件下载失败", e);
+            throw new RuntimeException("zip文件下载失败: " + e.getMessage());
+        }
+    }
+
     /**
      *
      * 不动产汇交数据生成主逻辑

+ 18 - 8
siwei-modules/siwei-apply/src/main/java/com/siwei/apply/service/impl/Gyjsydjfwscdjmpl.java

@@ -1,15 +1,15 @@
 package com.siwei.apply.service.impl;
 
-import com.siwei.apply.domain.Gyjsydjfwscdj;
-import com.siwei.apply.domain.Project;
+import com.siwei.apply.domain.*;
 import com.siwei.apply.domain.res.GyjsydjfwscdjRes;
 import com.siwei.apply.domain.res.GyjsydjfwscdjSinglRes;
 import com.siwei.apply.domain.vo.GyjsydjfwscdjUpdateVo;
 import com.siwei.apply.domain.vo.GyjsydjfwscdjVo;
-import com.siwei.apply.mapper.GyjsydjfwscdjMapper;
-import com.siwei.apply.mapper.ProjectMapper;
+import com.siwei.apply.mapper.*;
 import com.siwei.apply.service.GyjsydjfwscdjService;
 import com.siwei.apply.service.LandOneCodeService;
+import com.siwei.common.core.exception.ServiceException;
+import com.siwei.common.core.utils.StringUtils;
 import com.siwei.common.core.utils.bean.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -18,10 +18,7 @@ import static com.siwei.apply.common.Common.UserId;
 
 // 新增导入:项目流程相关
 import org.springframework.transaction.annotation.Transactional;
-import com.siwei.apply.domain.ProjectWorkflow;
-import com.siwei.apply.domain.Workflow;
-import com.siwei.apply.mapper.ProjectWorkflowMapper;
-import com.siwei.apply.mapper.WorkflowMapper;
+
 import java.util.List;
 
 /**
@@ -41,6 +38,11 @@ public class Gyjsydjfwscdjmpl implements GyjsydjfwscdjService {
     @Autowired
     LandOneCodeService landOneCodeService;
 
+
+    @Autowired
+    private FwmxMapper fwmxMapper;
+
+
     @Override
     public Boolean isExit(String projectId) {
         return gyjsydjfwscdjMapper.isExit(projectId);
@@ -128,4 +130,12 @@ public class Gyjsydjfwscdjmpl implements GyjsydjfwscdjService {
     }
 
 
+    @Override
+    public List<Fwmx> houseList(String businessId) {
+        if(StringUtils.isBlank(businessId)){
+            throw new ServiceException("业务号为空");
+        }
+        return fwmxMapper.list(businessId);
+    }
+
 }

+ 13 - 6
siwei-modules/siwei-apply/src/main/java/com/siwei/apply/service/impl/NodeAttachmentImpl.java

@@ -446,9 +446,13 @@ public class NodeAttachmentImpl implements NodeAttachmentService {
 
                 }else if(AloneWorkFlowEnum.NODE_3.getTableName().equalsIgnoreCase(nodeTableName)){
                     //处理-主体资格文件
-                    nodeAttachment = this.assemblyAttachment(projectId,GyjsydscdjAttachmentNameEnum.NAME_2,nodeAttachment);
-                    nodeAttachment = this.assemblyAttachment(projectId,GyjsydscdjAttachmentNameEnum.NAME_3,nodeAttachment);
-                    nodeAttachment = this.assemblyAttachment(projectId,GyjsydscdjAttachmentNameEnum.NAME_4,nodeAttachment);
+                    String sourceId =  projectMapper.getNodeSourceIdByTable(nodeId,nodeTableName);
+                    if(StringUtils.isBlank(sourceId)) {
+                        nodeAttachment = this.assemblyAttachment(projectId,GyjsydscdjAttachmentNameEnum.NAME_2,nodeAttachment);
+                        nodeAttachment = this.assemblyAttachment(projectId,GyjsydscdjAttachmentNameEnum.NAME_3,nodeAttachment);
+                        nodeAttachment = this.assemblyAttachment(projectId,GyjsydscdjAttachmentNameEnum.NAME_4,nodeAttachment);
+                    }
+
                 } else if(AloneWorkFlowEnum.NODE_4.getTableName().equalsIgnoreCase(nodeTableName)){
                     String sourceId =  projectMapper.getNodeSourceIdByTable(nodeId,nodeTableName);
                     if(StringUtils.isBlank(sourceId)){
@@ -470,9 +474,12 @@ public class NodeAttachmentImpl implements NodeAttachmentService {
                         nodeAttachment = this.assemblyAttachment(projectId, TdhyhsAttachmentNameEnum.NAME_5, nodeAttachment);
                     }
                 }else if(AloneWorkFlowEnum.NODE_7.getTableName().equalsIgnoreCase(nodeTableName)){
-                    nodeAttachment = this.assemblyAttachment(projectId,GyjsydjfwscdjAttachmentNameEnum.NAME_1,nodeAttachment);
-                    nodeAttachment = this.assemblyAttachment(projectId,GyjsydjfwscdjAttachmentNameEnum.NAME_2,nodeAttachment);
-                    nodeAttachment = this.assemblyAttachment(projectId,GyjsydjfwscdjAttachmentNameEnum.NAME_3,nodeAttachment);
+                    String sourceId =  projectMapper.getNodeSourceIdByTable(nodeId,nodeTableName);
+                    if(StringUtils.isBlank(sourceId)) {
+                        nodeAttachment = this.assemblyAttachment(projectId, GyjsydjfwscdjAttachmentNameEnum.NAME_1, nodeAttachment);
+                        nodeAttachment = this.assemblyAttachment(projectId, GyjsydjfwscdjAttachmentNameEnum.NAME_2, nodeAttachment);
+                        nodeAttachment = this.assemblyAttachment(projectId, GyjsydjfwscdjAttachmentNameEnum.NAME_3, nodeAttachment);
+                    }
                 }
 
             }

+ 2 - 1
siwei-modules/siwei-apply/src/main/java/com/siwei/apply/service/third/impl/DealExcelServiceImpl.java

@@ -652,7 +652,7 @@ public class DealExcelServiceImpl {
 
                 String gdUnit = tdgyExcel.get("面积单位");
                 if (StringUtils.isBlank(gdUnit)) {
-                    log.warn("供地面积为空,默认设置为0");
+                    log.warn("面积单位为空,默认设置为空字符");
                     gdUnit = "";
                 }
                 tdgyVo.setGdUnit(gdUnit);
@@ -977,6 +977,7 @@ public class DealExcelServiceImpl {
             fullFilePath = copyFileToDirectory(rootPathAll +"\\" + innerDirName + "\\" + projectFileName, targectDir + "\\" + projectFileName, nodeFileName);
         }
         if (StringUtils.isNotBlank(fullFilePath)) {
+
             //这里进行文件关联
             String nodeAttachmentId = associationFile(fullFilePath, projectId, nodeId);
             log.info("关于项目{}的土地供应环节,文件{}关联结果{}", projectId, nodeFileName, nodeAttachmentId);

+ 0 - 13
siwei-modules/siwei-apply/src/main/java/com/siwei/apply/service/third/impl/OfferDataServiceImpl.java

@@ -10,18 +10,13 @@ import com.siwei.apply.mapper.ProjectImmobileCodeMapper;
 import com.siwei.apply.mapper.ProjectMapper;
 import com.siwei.apply.mapper.ProjectWorkflowMapper;
 import com.siwei.apply.mapper.ThirdRecordStatusMapper;
-import com.siwei.apply.service.GyjsydjfwscdjService;
-import com.siwei.apply.service.GyjsydscdjService;
 import com.siwei.apply.service.NodeAttachmentService;
-import com.siwei.apply.service.NodeLandService;
 import com.siwei.apply.service.third.OfferDataService;
 import com.siwei.apply.service.third.TakeDataService;
 import com.siwei.apply.utils.ServiceUtil;
-import com.siwei.common.core.domain.R;
 import com.siwei.common.core.exception.ServiceException;
 import com.siwei.common.core.utils.uuid.IdUtils;
 import com.siwei.spatial.api.RemoteSpatialFilesDbService;
-import com.siwei.spatial.api.domain.file.TGeomDb;
 import lombok.extern.slf4j.Slf4j;
 
 import org.apache.commons.collections4.CollectionUtils;
@@ -47,18 +42,10 @@ public class OfferDataServiceImpl implements OfferDataService {
     @Autowired
     private ProjectWorkflowMapper projectWorkflowMapper;
 
-    @Autowired
-    private GyjsydscdjService gyjsydscdjService;
-
-    @Autowired
-    private GyjsydjfwscdjService gyjsydjfwscdjService;
 
     @Autowired
     private RemoteSpatialFilesDbService remoteSpatialFilesDbService;
 
-    @Autowired
-    private NodeLandService nodeLandService;
-
     @Autowired
     private ProjectMapper projectMapper;
 

+ 54 - 25
siwei-modules/siwei-apply/src/main/java/com/siwei/apply/service/third/impl/TakeDataServiceImpl.java

@@ -1,6 +1,7 @@
 package com.siwei.apply.service.third.impl;
 
 import com.alibaba.fastjson2.JSON;
+import com.alibaba.fastjson2.JSONArray;
 import com.alibaba.fastjson2.JSONObject;
 import com.siwei.apply.domain.*;
 
@@ -230,7 +231,6 @@ public class TakeDataServiceImpl implements TakeDataService {
     }
 
 
-
     /**
      * 远程获取国有建设用地使用权首次登记数据
      * 并且入库
@@ -255,8 +255,9 @@ public class TakeDataServiceImpl implements TakeDataService {
         //todo 这里进行远程请求,获取相关数据,解析后入库
         try {
             Map<String,Object> paramMap = new LinkedHashMap<>();
-            paramMap.put("ywbh","20260602500601");
-            paramMap.put("yfbdcdyh","360122014005GB60012");
+            paramMap.put("ywbh",ywh);
+            paramMap.put("yfbdcdyh",yfbdcdyh);
+
             String remoteResult = ServiceUtil.getRemoteDataByHttpClient("query.landRegist.datas",paramMap);
             JSONObject root = JSON.parseObject(remoteResult);
             //todo 这里需要确认用户返回的是数组还是对象
@@ -270,9 +271,8 @@ public class TakeDataServiceImpl implements TakeDataService {
                 }
                 //todo 这里需要确认是否返回ywh字段
                 if(StringUtils.isBlank(body.getYwbh())){
-                    body.setYwbh("20260602500601");
+                    body.setYwbh(ywh);
                 }
-
                 String needUpdateNodeId = "";
                 String projectId = immobileCodeRes.getProjectId();
                 String sourceId = body.getYwbh();
@@ -281,21 +281,42 @@ public class TakeDataServiceImpl implements TakeDataService {
                     needUpdateNodeId = existsNode.getId();
                 }
                 String addNodeId = addOrUpdateLandFirstRegistration(body,projectId,needUpdateNodeId);
-                //这里保存附件信息
-                if(Objects.nonNull(body.getAttachment()) && !body.getAttachment().isEmpty()){
-                    nodeAttachmentService.getThirdAttachment(projectId,addNodeId,AloneWorkFlowEnum.NODE_3.getName(),body.getAttachment());
-                }
+                retMap.put("projectId",projectId);
                 retMap.put("nodeId",addNodeId);
             }
         } catch (Exception e) {
             log.error("调用矢量保存文件错误,业务编号:{}: ", ywh);
             e.printStackTrace();
+            throw new RuntimeException(e);
+        }
+
+        //第二部分获取附件数据
+        try {
+            if(MapUtils.isNotEmpty(retMap)){
+                String projectId = retMap.get("projectId").toString();
+                String nodeId = retMap.get("nodeId").toString();
+                Map<String,Object> paramMap = new LinkedHashMap<>();
+                paramMap.put("ywbh",ywh);
+                String remoteResult = ServiceUtil.getRemoteDataByHttpClient("query.ywFiles.datas",paramMap);
+                JSONObject root = JSON.parseObject(remoteResult);
+                JSONObject innerData = root.getJSONObject("data").getJSONObject("data");
+                LandFirstParamVo body = JSON.parseObject(innerData.toString(), LandFirstParamVo.class);
+                //这里保存附件信息
+                if(Objects.nonNull(body) && Objects.nonNull(body.getAttachment()) && !body.getAttachment().isEmpty()){
+                    nodeAttachmentService.getThirdAttachment(projectId,nodeId,AloneWorkFlowEnum.NODE_3.getName(),body.getAttachment());
+                }
+            }
+        } catch (Exception e) {
+            log.error("调用不动产获取附件信息错误,业务号:{}: ", ywh);
+            e.printStackTrace();
+            throw new RuntimeException(e);
         }
         return retMap;
     }
 
 
 
+
     public String  addOrUpdateLandFirstRegistration(LandFirstParamVo body,String projectId,String needUpdateNodeId) {
         String addNodeId = "";
         if (StringUtils.isNotBlank(needUpdateNodeId)) {
@@ -433,7 +454,7 @@ public class TakeDataServiceImpl implements TakeDataService {
         try {
             Map<String,Object> paramMap = new LinkedHashMap<>();
             paramMap.put("ywbh",ywh);
-            String remoteResult = ServiceUtil.getRemoteDataByHttpClient("query.houseRegist.datas222",paramMap);
+            String remoteResult = ServiceUtil.getRemoteDataByHttpClient("query.ywFiles.datas",paramMap);
             JSONObject root = JSON.parseObject(remoteResult);
             //todo 这里需要确认返回数据是否是array结构
             JSONObject innerData = root.getJSONObject("data").getJSONObject("data");
@@ -444,12 +465,13 @@ public class TakeDataServiceImpl implements TakeDataService {
                     throw new ServiceException("检查预赋不动产单元号是否正确");
                 }
                 String projectId = immobileCodeRes.getProjectId();
-                String sourceId = body.getYwbh();
+                //todo 这里的业务号不一定等于房屋中的业务号ywh
                 String addNodeId = "";
-                Gyjsydjfwscdj existsNode = gyjsydjfwscdjService.getBySourceId(sourceId);//这里需要根据sourceId 检查已经存在
+                Gyjsydjfwscdj existsNode = gyjsydjfwscdjService.getBySourceId(ywh);//这里需要根据sourceId 检查已经存在
                 if(Objects.nonNull(existsNode)){ //如果已经存在不做处理
                     addNodeId = existsNode.getId();
                 }else  {
+                    body.setYwbh(ywh);
                     addNodeId = addOrUpdateHouseFirstRegistration(body,projectId,"");
                 }
                 //这里保存附件信息
@@ -463,6 +485,7 @@ public class TakeDataServiceImpl implements TakeDataService {
         } catch (Exception e) {
             log.error("调用不动产获取附件信息错误,业务号:{}: ", ywh);
             e.printStackTrace();
+            throw new RuntimeException(e);
         }
 
         // 第二部分,同步房屋的明细数据入库:
@@ -485,19 +508,25 @@ public class TakeDataServiceImpl implements TakeDataService {
                     paramMap.put("yfbdcdyh",yfbdcdyh);
                     paramMap.put("pageNumber",pageNumber);
                     paramMap.put("pageSize",pageSize);
-                    String remoteResult = ServiceUtil.getRemoteDataByHttpClient("query.houseRegist.datas333",paramMap);
+                    String remoteResult = ServiceUtil.getRemoteDataByHttpClient("query.houseRegist.datas",paramMap);
                     JSONObject root = JSON.parseObject(remoteResult);
                     //todo 这里需要确认返回数据是否是array结构
-                    JSONObject innerData = root.getJSONObject("data").getJSONObject("data");
+                    JSONObject innerData = root.getJSONObject("data");
                     if(Objects.nonNull(innerData.get("total")) && totalNum == 0){
                         totalNum = (Integer) innerData.get("total");//获取总条数
                     }
-                    FwmxVo body = JSON.parseObject(innerData.toString(), FwmxVo.class);
-                    if(Objects.nonNull(body)) {
-                        Fwmx fwmx = new Fwmx();
-                        fwmx.generateId();
-                        BeanUtils.copyProperties(body, fwmx);
-                        fwmxMapper.add(fwmx);
+                    JSONArray innerArr = innerData.getJSONArray("data");
+                    if(innerArr != null && !innerArr.isEmpty()) {
+                        for (int i = 0; i < innerArr.size(); i++) {
+                            JSONObject innerObj = innerArr.getJSONObject(i);
+                            FwmxVo body = JSON.parseObject(innerObj.toString(), FwmxVo.class);
+                            if (Objects.nonNull(body)) {
+                                Fwmx fwmx = new Fwmx();
+                                fwmx.generateId();
+                                BeanUtils.copyProperties(body, fwmx);
+                                fwmxMapper.add(fwmx);
+                            }
+                        }
                     }
                     pageNumber++;
                     //todo 这里是否需要考虑不满20条情况
@@ -508,21 +537,21 @@ public class TakeDataServiceImpl implements TakeDataService {
                 //这边直接更新当前数据
                 if(Objects.nonNull(statisticsData)){
                     HouseFirstParamVo body = new HouseFirstParamVo();
-                    body.setYwbh(statisticsData.getYwh()); //todo 这里的业务号不一定等于房屋中的业务号ywh
                     body.setGzdgzsj(statisticsData.getGzdgzsj());
                     body.setKfdw(statisticsData.getKfdw());
                     body.setBdcqk(statisticsData.getBdcqk());
                     body.setJzmj(statisticsData.getJzmj());
-                    body.setJzmjDw(statisticsData.getMjdw());
-                    body.setFtmj(statisticsData.getFtmj());
-                    body.setTnmjDw(statisticsData.getMjdw());
+                    body.setJzmjDw(statisticsData.getTdmjdw());
+                    body.setTnmj(statisticsData.getTnmj());
+                    body.setTnmjDw(statisticsData.getTdmjdw());
                     body.setFtmj(statisticsData.getFtmj());
-                    body.setFtmjDw(statisticsData.getMjdw());
+                    body.setFtmjDw(statisticsData.getTdmjdw());
                     addOrUpdateHouseFirstRegistration(body,retMap.get("projectId").toString(),retMap.get("nodeId").toString());
                 }
             }
         }catch (Exception e) {
                 log.error("调用不动产获取明细信息错误,业务号:{}: ", ywh);
+                throw new RuntimeException(e);
         }
         return retMap;
     }

+ 47 - 0
siwei-modules/siwei-apply/src/main/java/com/siwei/apply/utils/ServiceFileUtil.java

@@ -240,6 +240,53 @@ public class ServiceFileUtil {
     }
 
 
+
+    /**
+     * 压缩多个目录/文件到同一个zip包
+     * @param dirFiles 待压缩文件/目录数组,允许多个根目录
+     * @param entryName 统一根条目前缀;传null/空则使用各自文件名称作为根
+     * @param zipFile 输出zip文件
+     * @throws IOException IO异常
+     */
+    public static void zipByDir(File[] dirFiles, String entryName, File zipFile) throws IOException {
+        // 参数校验
+        if (dirFiles == null || dirFiles.length == 0) {
+            throw new RuntimeException("待压缩文件数组不能为空");
+        }
+        for (File file : dirFiles) {
+            if (file == null || !file.exists()) {
+                throw new RuntimeException("源文件或目录不存在:" + (file == null ? "null" : file.getAbsolutePath()));
+            }
+        }
+
+        // 统一前缀处理
+        String rootEntryPrefix = null;
+        if (entryName != null && !entryName.trim().isEmpty()) {
+            rootEntryPrefix = entryName.trim();
+            // 保证目录分隔符结尾
+            if (!rootEntryPrefix.endsWith("/")) {
+                rootEntryPrefix += "/";
+            }
+        }
+
+        try (ZipOutputStream zos = new ZipOutputStream(new FileOutputStream(zipFile), StandardCharsets.UTF_8)) {
+            if (rootEntryPrefix != null) {
+                // 全部多个目录放进同一个根文件夹 entryName/ 之下
+                for (File sourceFile : dirFiles) {
+                    String childEntry = rootEntryPrefix + sourceFile.getName();
+                    zipInternal(sourceFile, childEntry, zos);
+                }
+            } else {
+                // 不传根前缀:多个源直接平铺在zip根路径
+                for (File sourceFile : dirFiles) {
+                    zipInternal(sourceFile, sourceFile.getName(), zos);
+                }
+            }
+        }
+    }
+
+
+
     /**
      * 通过目录进行压缩
      * @param dirFile

+ 10 - 0
siwei-modules/siwei-apply/src/main/resources/mapper/ConvergeMapper.xml

@@ -30,6 +30,16 @@
         WHERE id = #{id}
     </select>
 
+    <select id="getByIds" resultMap="convergeMap">
+        SELECT *
+        FROM t_converge
+        WHERE id IN
+        <foreach collection="ids" item="id" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </select>
+
+
     <select id="getList" parameterType="com.siwei.apply.domain.vo.ConvergeFilterVo" resultMap="convergeMap">
         SELECT *
         FROM t_converge

+ 8 - 3
siwei-modules/siwei-apply/src/main/resources/mapper/FwmxMapper.xml

@@ -14,7 +14,7 @@
         <result property="jzmj" column="jzmj"/>
         <result property="tnmj" column="tnmj"/>
         <result property="ftmj" column="ftmj"/>
-        <result property="mjdw" column="mjdw"/>
+        <result property="tdmjdw" column="mjdw"/>
         <result property="fjh" column="fjh"/>
         <result property="bdcdyh" column="bdcdyh"/>
         <result property="bdcqzh" column="bdcqzh"/>
@@ -28,7 +28,7 @@
                            jzmj, tnmj, ftmj, mjdw, fjh, bdcdyh, bdcqzh, zl,
                            created_at, updated_at)
         VALUES (#{id}, #{ywh}, #{gzdgzsj}, #{kfdw}, #{bdcqk}, #{qlrmc}, #{qlrzjh},
-                #{jzmj}, #{tnmj}, #{ftmj}, #{mjdw}, #{fjh}, #{bdcdyh}, #{bdcqzh}, #{zl},
+                #{jzmj}, #{tnmj}, #{ftmj}, #{tdmjdw}, #{fjh}, #{bdcdyh}, #{bdcqzh}, #{zl},
                 now(), now())
     </insert>
 
@@ -36,6 +36,11 @@
     <select id="list" resultMap="FwmxResultMap">
         SELECT *
         FROM t_fwmx
+        <where>
+            <if test="businessId != null and businessId != ''">
+                AND ywh = #{businessId}
+            </if>
+        </where>
         ORDER BY created_at ASC
     </select>
 
@@ -77,7 +82,7 @@
             <if test="jzmj != null">jzmj = #{jzmj},</if>
             <if test="tnmj != null">tnmj = #{tnmj},</if>
             <if test="ftmj != null">ftmj = #{ftmj},</if>
-            <if test="mjdw != null">mjdw = #{mjdw},</if>
+            <if test="mjdw != null">mjdw = #{tdmjdw},</if>
             <if test="fjh != null">fjh = #{fjh},</if>
             <if test="bdcdyh != null">bdcdyh = #{bdcdyh},</if>
             <if test="bdcqzh != null">bdcqzh = #{bdcqzh},</if>

+ 41 - 47
siwei-modules/siwei-apply/src/main/resources/mapper/GjShijiShouchuMapper.xml

@@ -11,42 +11,40 @@
         <result column="scjg" property="scjg"/>
         <result column="scwh" property="scwh"/>
         <result column="scsj" property="scsj"/>
-        <result column="mj" property="mj"/>
         <result column="scfs" property="scfs"/>
         <result column="scnd" property="scnd"/>
         <result column="tdzl" property="tdzl"/>
-        <result column="ytdyt" property="ytdyt"/>
+        <result column="ghyt" property="ghyt"/>
         <result column="ytdsyqxz" property="ytdsyqxz"/>
         <result column="wzfbck" property="wzfbck"/>
         <result column="bz" property="bz"/>
-        <result column="bsm" property="bsm"/>
         <result column="xzq" property="xzq"/>
         <result column="dabh" property="dabh"/>
         <result column="shape_leng" property="shapeLeng"/>
         <result column="shape_area" property="shapeArea"/>
-        <result column="项目名" property="xmmc"/>
+        <result column="xmmc" property="xmmc"/>
         <result column="sccb" property="sccb"/>
-        <result column="面积_亩" property="mjMu"/>
+        <result column="mj_m" property="mjMu"/>
         <result column="geom" property="geom"/>
     </resultMap>
 
     <insert id="add" parameterType="com.siwei.apply.domain.GjShijiShouchu">
-        INSERT INTO vector.gj_shiji_shouchu (yqsdw, scmj, scjg, scwh, scsj, mj, scfs, scnd, tdzl, ytdyt, ytdsyqxz, wzfbck, bz, bsm, xzq, dabh, shape_leng, shape_area, "项目名", sccb, "面积_亩", geom)
-        VALUES (#{yqsdw}, #{scmj}, #{scjg}, #{scwh}, #{scsj}, #{mj}, #{scfs}, #{scnd}, #{tdzl}, #{ytdyt}, #{ytdsyqxz}, #{wzfbck}, #{bz}, #{bsm}, #{xzq}, #{dabh}, #{shapeLeng}, #{shapeArea}, #{xmmc}, #{sccb}, #{mjMu}, ST_GeomFromEWKT(#{geom}))
+        INSERT INTO vector.gj_shouchu_xiangmu_shiji (yqsdw, scmj, scjg, scwh, scsj, scfs, scnd, tdzl, ghyt, ytdsyqxz, wzfbck, bz, xzq, dabh, shape_leng, shape_area, xmmc, sccb, mj_m, geom)
+        VALUES (#{yqsdw}, #{scmj}, #{scjg}, #{scwh}, #{scsj}, #{scfs}, #{scnd}, #{tdzl}, #{ghyt}, #{ytdsyqxz}, #{wzfbck}, #{bz}, #{xzq}, #{dabh}, #{shapeLeng}, #{shapeArea}, #{xmmc}, #{sccb}, #{mjMu}, ST_GeomFromEWKT(#{geom}))
     </insert>
 
     <select id="get" resultMap="gjShijiShouchuMap">
-        SELECT gid, yqsdw, scmj, scjg, scwh, scsj, mj, scfs, scnd, tdzl, ytdyt, ytdsyqxz, wzfbck, bz, bsm, xzq, dabh, shape_leng, shape_area, "项目名", sccb, "面积_亩", ST_AsEWKT(geom) as geom
-        FROM vector.gj_shiji_shouchu
+        SELECT gid, yqsdw, scmj, scjg, scwh, scsj, scfs, scnd, tdzl, ghyt, ytdsyqxz, wzfbck, bz, xzq, dabh, shape_leng, shape_area, xmmc, sccb, mj_m, ST_AsEWKT(geom) as geom
+        FROM vector.gj_shouchu_xiangmu_shiji
         WHERE gid = #{gid}
     </select>
 
     <select id="getList" parameterType="com.siwei.apply.domain.vo.GjShijiShouchuFilterVo" resultMap="gjShijiShouchuMap">
-        SELECT gid, yqsdw, scmj, scjg, scwh, scsj, mj, scfs, scnd, tdzl, ytdyt, ytdsyqxz, wzfbck, bz, bsm, xzq, dabh, shape_leng, shape_area, "项目名", sccb, "面积_亩", ST_AsEWKT(geom) as geom
-        FROM vector.gj_shiji_shouchu
+        SELECT gid, yqsdw, scmj, scjg, scwh, scsj, scfs, scnd, tdzl, ghyt, ytdsyqxz, wzfbck, bz, xzq, dabh, shape_leng, shape_area, xmmc, sccb, mj_m, ST_AsEWKT(geom) as geom
+        FROM vector.gj_shouchu_xiangmu_shiji
         <where>
             <if test="xmmc != null and xmmc != ''">
-                AND "项目名" LIKE CONCAT('%', #{xmmc}, '%')
+                AND xmmc LIKE CONCAT('%', #{xmmc}, '%')
             </if>
             <if test="xzq != null and xzq != ''">
                 AND xzq = #{xzq}
@@ -67,10 +65,10 @@
 
     <select id="getCount" parameterType="com.siwei.apply.domain.vo.GjShijiShouchuFilterVo" resultType="int">
         SELECT COUNT(*)
-        FROM vector.gj_shiji_shouchu
+        FROM vector.gj_shouchu_xiangmu_shiji
         <where>
             <if test="xmmc != null and xmmc != ''">
-                AND "项目名" LIKE CONCAT('%', #{xmmc}, '%')
+                AND xmmc LIKE CONCAT('%', #{xmmc}, '%')
             </if>
             <if test="xzq != null and xzq != ''">
                 AND xzq = #{xzq}
@@ -88,36 +86,34 @@
     </select>
 
     <update id="update" parameterType="com.siwei.apply.domain.GjShijiShouchu">
-        UPDATE vector.gj_shiji_shouchu
+        UPDATE vector.gj_shouchu_xiangmu_shiji
         <set>
             <if test="yqsdw != null">yqsdw = #{yqsdw},</if>
             <if test="scmj != null">scmj = #{scmj},</if>
             <if test="scjg != null">scjg = #{scjg},</if>
             <if test="scwh != null">scwh = #{scwh},</if>
             <if test="scsj != null">scsj = #{scsj},</if>
-            <if test="mj != null">mj = #{mj},</if>
             <if test="scfs != null">scfs = #{scfs},</if>
             <if test="scnd != null">scnd = #{scnd},</if>
             <if test="tdzl != null">tdzl = #{tdzl},</if>
-            <if test="ytdyt != null">ytdyt = #{ytdyt},</if>
+            <if test="ghyt != null">ghyt = #{ghyt},</if>
             <if test="ytdsyqxz != null">ytdsyqxz = #{ytdsyqxz},</if>
             <if test="wzfbck != null">wzfbck = #{wzfbck},</if>
             <if test="bz != null">bz = #{bz},</if>
-            <if test="bsm != null">bsm = #{bsm},</if>
             <if test="xzq != null">xzq = #{xzq},</if>
             <if test="dabh != null">dabh = #{dabh},</if>
             <if test="shapeLeng != null">shape_leng = #{shapeLeng},</if>
             <if test="shapeArea != null">shape_area = #{shapeArea},</if>
-            <if test="xmmc != null">"项目名" = #{xmmc},</if>
+            <if test="xmmc != null">xmmc = #{xmmc},</if>
             <if test="sccb != null">sccb = #{sccb},</if>
-            <if test="mjMu != null">"面积_亩" = #{mjMu},</if>
+            <if test="mjMu != null">mj_m = #{mjMu},</if>
             <if test="geom != null">geom = ST_GeomFromEWKT(#{geom}),</if>
         </set>
         WHERE gid = #{gid}
     </update>
 
     <delete id="batchDelete">
-        DELETE FROM vector.gj_shiji_shouchu
+        DELETE FROM vector.gj_shouchu_xiangmu_shiji
         WHERE gid IN
         <foreach collection="gids" item="gid" open="(" separator="," close=")">
             #{gid}
@@ -128,11 +124,11 @@
     <select id="getCompleteStatsByMethod" resultType="map">
         SELECT
         COALESCE(scfs, '其他') AS category,
-        ROUND(COALESCE(SUM("面积_亩"), 0), 2) AS complate_area
-        FROM vector.gj_shiji_shouchu
+        ROUND(COALESCE(SUM(CAST(mj_m AS NUMERIC)), 0), 2) AS complate_area
+        FROM vector.gj_shouchu_xiangmu_shiji
         WHERE 1=1
         <if test="year != null and year != '' and year != '0'">
-            AND scnd = #{year}::NUMERIC
+            AND scnd = #{year}
         </if>
         GROUP BY COALESCE(scfs, '其他')
         ORDER BY complate_area DESC
@@ -142,54 +138,54 @@
 
     <select id="getStatsByYear" resultType="map">
         SELECT
-            COALESCE(CAST(scnd AS VARCHAR), '其它') AS year,
+            COALESCE(scnd, '其它') AS year,
             ROUND(COALESCE(SUM(CAST(scmj AS NUMERIC)), 0), 2) AS in_data_area
-        FROM vector.gj_shiji_shouchu
+        FROM vector.gj_shouchu_xiangmu_shiji
         GROUP BY scnd
         ORDER BY year
     </select>
 
     <select id="getStatsByYearAndUse" resultType="map">
         SELECT
-            COALESCE(ytdyt, '其它') AS use_name,
+            COALESCE(ghyt, '其它') AS use_name,
             ROUND(COALESCE(SUM(CAST(scmj AS NUMERIC)), 0), 2) AS in_data_area
-        FROM vector.gj_shiji_shouchu
+        FROM vector.gj_shouchu_xiangmu_shiji
         <where>
             <if test="year != null and year != '' and year != '0'">
-                AND CAST(scnd AS VARCHAR) = #{year}
+                AND scnd = #{year}
             </if>
         </where>
-        GROUP BY ytdyt
+        GROUP BY ghyt
         ORDER BY in_data_area DESC
     </select>
 
     <select id="getByGeomIntersects" resultMap="gjShijiShouchuMap">
-        SELECT gid, yqsdw, scmj, scjg, scwh, scsj, mj, scfs, scnd, tdzl, ytdyt, ytdsyqxz, wzfbck, bz, bsm, xzq, dabh, shape_leng, shape_area, "项目名", sccb, "面积_亩", ST_AsEWKT(geom) as geom
-        FROM vector.gj_shiji_shouchu
+        SELECT gid, yqsdw, scmj, scjg, scwh, scsj, scfs, scnd, tdzl, ghyt, ytdsyqxz, wzfbck, bz, xzq, dabh, shape_leng, shape_area, xmmc, sccb, mj_m, ST_AsEWKT(geom) as geom
+        FROM vector.gj_shouchu_xiangmu_shiji
         WHERE public.ST_Intersects(geom, public.ST_GeomFromEWKT(#{ewkt}))
     </select>
 
     <select id="gjShijiShouchuListByYear" resultType="com.siwei.apply.domain.res.TdgyStatisticsRes" parameterType="String">
         SELECT
             '' AS projectId,
-            "项目名" AS xmmc,
+            xmmc AS xmmc,
             yqsdw AS company,
             CAST(gid AS VARCHAR) AS nodeId,
-            COALESCE(ytdyt, '其它') AS tdyt,
+            COALESCE(ghyt, '其它') AS tdyt,
             scfs AS gyfs,
             to_timestamp(scsj, 'YYYY/MM/DD') AS gysj,
-            ROUND("面积_亩", 2) AS mjMu,
+            ROUND(CAST(mj_m AS NUMERIC), 2) AS mjMu,
             bz,
-            sccb AS cost,
+            CAST(sccb AS NUMERIC) AS cost,
             scnd   as nf,
             ST_AsEWKT(geom) AS geom
-        FROM vector.gj_shiji_shouchu
+        FROM vector.gj_shouchu_xiangmu_shiji
         WHERE 1=1
         <if test="year != null and year != '' and year != '0'">
-            AND CAST(scnd AS VARCHAR) = #{year}
+            AND scnd = #{year}
         </if>
         <if test="landTypeCode != null">
-            AND ytdyt LIKE CONCAT('%', #{landTypeCode}, '%')
+            AND ghyt LIKE CONCAT('%', #{landTypeCode}, '%')
         </if>
         <if test="startTime != null and startTime != ''">
             AND scsj &gt;= #{startTime}
@@ -198,9 +194,9 @@
             AND scsj &lt;= #{endTime}
         </if>
         <if test="(startYear != null and startYear != '') and (endYear != null and endYear != '')">
-            AND scnd::NUMERIC BETWEEN #{startYear}::NUMERIC AND #{endYear}::NUMERIC
+            AND CAST(scnd AS NUMERIC) BETWEEN #{startYear}::NUMERIC AND #{endYear}::NUMERIC
         </if>
-        order BY "项目名"
+        order BY xmmc
     </select>
 
     <select id="getActualProject" resultType="Map" parameterType="String">
@@ -211,23 +207,21 @@
             scjg,
             scwh,
             scsj,
-            mj,
             scfs,
             scnd,
             tdzl,
-            ytdyt,
+            ghyt,
             ytdsyqxz,
             wzfbck,
             bz,
-            bsm,
             xzq,
             dabh,
-            "项目名" AS xmmc,
+            xmmc,
             sccb,
-            "面积_亩" AS mj_mu,
+            mj_m,
             shape_area,
             ST_AsEWKT(geom) AS geom
-        FROM vector.gj_shiji_shouchu
+        FROM vector.gj_shouchu_xiangmu_shiji
         WHERE gid::varchar = #{gid}
         LIMIT 1
     </select>

+ 64 - 53
siwei-modules/siwei-apply/src/main/resources/mapper/GjShouchuJihuaMapper.xml

@@ -7,36 +7,36 @@
     <select id="getPlanSummaryByYear" resultType="map">
         SELECT
             COUNT(*) AS plan_project_count,
-            ROUND(COALESCE(SUM(mj_mu), 0), 2) AS plan_area,
+            ROUND(COALESCE(SUM(mj_m), 0), 2) AS plan_area,
             ROUND(COALESCE(SUM(sccb), 0), 2) AS plan_cost
-        FROM vector.gj_shouchu_jihua
+        FROM vector.gj_shouchu_xiangmu
         WHERE 1=1
         <if test="year != null and year != '' and year != '0'">
-            AND scnd = #{year}
+            AND scnf = #{year}
         </if>
     </select>
 
     <select id="getPlanStatsByLandUse" resultType="map">
         SELECT
-            COALESCE(tdyt, '其他') AS category,
-            ROUND(COALESCE(SUM(mj_mu), 0), 2) AS plan_area
-        FROM vector.gj_shouchu_jihua
+            COALESCE(ghyt, '其他') AS category,
+            ROUND(COALESCE(SUM(mj_m), 0), 2) AS plan_area
+        FROM vector.gj_shouchu_xiangmu
         WHERE 1=1
         <if test="year != null and year != '' and year != '0'">
-            AND scnd = #{year}
+            AND scnf = #{year}
         </if>
-        GROUP BY COALESCE(tdyt, '其他')
+        GROUP BY COALESCE(ghyt, '其他')
         ORDER BY plan_area DESC
     </select>
 
     <select id="getPlanStatsByMethod" resultType="map">
         SELECT
             COALESCE(scfs, '其他') AS category,
-            ROUND(COALESCE(SUM(mj_mu), 0), 2) AS plan_area
-        FROM vector.gj_shouchu_jihua
+            ROUND(COALESCE(SUM(mj_m), 0), 2) AS plan_area
+        FROM vector.gj_shouchu_xiangmu
         WHERE 1=1
         <if test="year != null and year != '' and year != '0'">
-            AND scnd = #{year}
+            AND scnf = #{year}
         </if>
         GROUP BY COALESCE(scfs, '其他')
         ORDER BY plan_area DESC
@@ -47,32 +47,30 @@
             CAST(gid AS VARCHAR) AS projectId,
             CAST(gid AS VARCHAR) AS nodeId,
             '暂无' AS company,
-            mj_pfm AS mjPfm,
-            ROUND(COALESCE(mj_mu, 0), 2) AS mjMu,
-            COALESCE(xmmc, htmc, xssmc, dzjgh, CONCAT('收储计划-', gid)) AS xmmc,
-            tdyt,
+            mj_12 AS mjPfm,
+            ROUND(COALESCE(mj_m, 0), 2) AS mjMu,
+            COALESCE(xmmc, htmc, dzjgh, CONCAT('收储计划-', gid)) AS xmmc,
+            ghyt AS tdyt,
             scfs AS gyfs,
-            COALESCE(qdrq, TO_DATE(scnd || '-01-01', 'YYYY-MM-DD')) AS gysj,
+            COALESCE(qdrq, TO_DATE(scnf || '-01-01', 'YYYY-MM-DD')) AS gysj,
             sccb AS cost,
-            bz,
             ST_AsEWKT(geom) AS geom
-        FROM vector.gj_shouchu_jihua
+        FROM vector.gj_shouchu_xiangmu
         WHERE 1=1
         <if test="year != null and year != '' and year != '0'">
-            AND scnd = #{year}
+            AND scnf = #{year}
         </if>
         <if test="keyWord != null and keyWord != ''">
             AND (
                 COALESCE(xmmc, '') LIKE CONCAT('%', #{keyWord}, '%')
                 OR COALESCE(htmc, '') LIKE CONCAT('%', #{keyWord}, '%')
-                OR COALESCE(xssmc, '') LIKE CONCAT('%', #{keyWord}, '%')
                 OR COALESCE(dzjgh, '') LIKE CONCAT('%', #{keyWord}, '%')
-                OR COALESCE(tdyt, '') LIKE CONCAT('%', #{keyWord}, '%')
+                OR COALESCE(ghyt, '') LIKE CONCAT('%', #{keyWord}, '%')
                 OR COALESCE(scfs, '') LIKE CONCAT('%', #{keyWord}, '%')
             )
         </if>
         <if test="(startYear != null and startYear != '') and (endYear != null and endYear != '')">
-            AND scnd::NUMERIC BETWEEN #{startYear}::NUMERIC AND #{endYear}::NUMERIC
+            AND scnf::NUMERIC BETWEEN #{startYear}::NUMERIC AND #{endYear}::NUMERIC
         </if>
         ORDER BY gid
     </select>
@@ -80,43 +78,35 @@
     <select id="getPlanProject" resultType="Map">
         SELECT
             gid,
-            scnd,
+            xmmc,
+            sccb,
+            scsj,
+            scnf,
+            tdyyt,
+            ghyt,
+            mj_m,
             scfs,
-            COALESCE(xmmc, htmc, xssmc, dzjgh, CONCAT('收储计划-', gid)) AS xmmc,
-            tdyt,
-            mj_pfm,
-            mj_mu,
-            bz,
-            xzqdm,
+            dkmc,
             xzqmc,
+            wz,
+            jhxzmj,
+            yscmj,
+            bndscmj,
+            qqkf,
+            bndkfmj,
+            bndwccb,
+            ngymj,
+            ngysj,
+            gyfs,
+            yjgysr,
+            mj_12,
+            xzqdm,
             dzjgh,
-            sqsmc,
-            xssmc,
             htbh,
             htmc,
-            gdfs,
             qdrq,
-            yddgrq,
-            ydjgrq,
-            sjkgsj,
-            sjjgsj,
-            lrxztdnf,
-            czfs,
-            dgzpzt,
-            sgxkzt,
-            nybz,
-            jk,
-            gdmj,
-            objectid,
-            fid,
-            shape_leng,
-            shape_area,
-            source_file,
-            source_layer,
-            source_id,
-            raw_props::text AS raw_props,
             ST_AsEWKT(geom) AS geom
-        FROM vector.gj_shouchu_jihua
+        FROM vector.gj_shouchu_xiangmu
         WHERE gid::varchar = #{gid}
         LIMIT 1
     </select>
@@ -216,6 +206,9 @@
         <if test="year != null and year != '' and year != '0'">
             AND scnd = #{year}
         </if>
+        <if test="nf != null and nf != '' and nf != '0'">
+            AND scnf = #{nf}
+        </if>
         <if test="sourceType != null and sourceType != ''">
             AND source_type = #{sourceType}
         </if>
@@ -223,7 +216,6 @@
     </select>
 
 
-
     <!-- 根据gid删除记录 -->
     <delete id="deleteByTable" parameterType="String">
         DELETE FROM vector.${tableName}
@@ -236,4 +228,23 @@
         </if>
     </delete>
 
+    <delete id="deleteByTableYear">
+        DELETE FROM vector.${tableName}
+        WHERE 1=1
+        <choose>
+            <when test="'0'.toString().equals(type) and (year != null and year != '' and year != '0')">
+                AND scnf = #{year} and source_type = '0'
+            </when>
+            <when test="'1'.toString().equals(type) and (year != null and year != '' and year != '0')">
+                AND scnf = #{year} and source_type = '1'
+            </when>
+            <when test="'2'.toString().equals(type) and (year != null and year != '' and year != '0')">
+                AND scnd = #{year}
+            </when>
+            <otherwise>
+                AND gid = 0
+            </otherwise>
+        </choose>
+    </delete>
+
 </mapper>

+ 122 - 46
siwei-modules/siwei-apply/src/main/resources/mapper/GongdiJihuaMapper.xml

@@ -7,30 +7,36 @@
     <resultMap id="gongdiJihuaMap" type="com.siwei.apply.domain.GongdiJihua">
         <id column="gid" property="gid"/>
         <result column="fid" property="fid"/>
-        <result column="mj_pfm" property="mjPfm"/>
-        <result column="mj_mu" property="mjMu"/>
+        <result column="mj_12" property="mj12"/>
+        <result column="mj_m" property="mjM"/>
         <result column="xmmc" property="xmmc"/>
         <result column="tdyt" property="tdyt"/>
         <result column="gyfs" property="gyfs"/>
-        <result column="gysj" property="gysj"/>
+        <result column="ngysj" property="ngysj"/>
+        <result column="nf" property="nf"/>
+        <result column="nydwz" property="nydwz"/>
+        <result column="xzqmc" property="xzqmc"/>
+        <result column="tgdw" property="tgdw"/>
+        <result column="ybpmj" property="ybpmj"/>
+        <result column="wbpmj" property="wbpmj"/>
         <result column="bz" property="bz"/>
         <result column="geom" property="geom"/>
     </resultMap>
 
     <insert id="add" parameterType="com.siwei.apply.domain.GongdiJihua">
-        INSERT INTO vector.gj_gongdi_jihua (fid, mj_pfm, mj_mu, xmmc, tdyt, gyfs, gysj, bz, geom)
-        VALUES (#{fid}, #{mjPfm}, #{mjMu}, #{xmmc}, #{tdyt}, #{gyfs}, #{gysj}, #{bz}, ST_GeomFromEWKT(#{geom}))
+        INSERT INTO vector.gj_gongdi_xiangmu_jihua (fid, mj_12, mj_m, xmmc, tdyt, gyfs, ngysj, nf, nydwz, xzqmc, tgdw, ybpmj, wbpmj, bz, geom)
+        VALUES (#{fid}, #{mj12}, #{mjM}, #{xmmc}, #{tdyt}, #{gyfs}, #{ngysj}, #{nf}, #{nydwz}, #{xzqmc}, #{tgdw}, #{ybpmj}, #{wbpmj}, #{bz}, ST_GeomFromEWKT(#{geom}))
     </insert>
 
     <select id="get" resultMap="gongdiJihuaMap">
-        SELECT gid, fid, mj_pfm, mj_mu, xmmc, tdyt, gyfs, gysj, bz, ST_AsEWKT(geom) as geom
-        FROM vector.gj_gongdi_jihua
+        SELECT gid, fid, mj_12, mj_m, xmmc, tdyt, gyfs, ngysj, nf, nydwz, xzqmc, tgdw, ybpmj, wbpmj, bz, ST_AsEWKT(geom) as geom
+        FROM vector.gj_gongdi_xiangmu_jihua
         WHERE gid = #{gid}
     </select>
 
     <select id="getList" parameterType="com.siwei.apply.domain.vo.GongdiJihuaFilterVo" resultMap="gongdiJihuaMap">
-        SELECT gid, fid, mj_pfm, mj_mu, xmmc, tdyt, gyfs, gysj, bz, ST_AsEWKT(geom) as geom
-        FROM vector.gj_gongdi_jihua
+        SELECT gid, fid, mj_12, mj_m, xmmc, tdyt, gyfs, ngysj, nf, nydwz, xzqmc, tgdw, ybpmj, wbpmj, bz, ST_AsEWKT(geom) as geom
+        FROM vector.gj_gongdi_xiangmu_jihua
         <where>
             <if test="xmmc != null and xmmc != ''">
                 AND xmmc LIKE CONCAT('%', #{xmmc}, '%')
@@ -42,30 +48,22 @@
                 AND gyfs = #{gyfs}
             </if>
             <if test="startDate != null and startDate != ''">
-                AND gysj &gt;= #{startDate}
+                AND ngysj &gt;= #{startDate}
             </if>
             <if test="endDate != null and endDate != ''">
-                AND gysj &lt;= #{endDate}
+                AND ngysj &lt;= #{endDate}
             </if>
             <if test="year != null and year != ''">
-                AND  TO_CHAR(gysj, 'YYYY') = #{year}
+                AND  TO_CHAR(ngysj, 'YYYY') = #{year}
             </if>
         </where>
         ORDER BY gid DESC
         LIMIT #{pageSize} OFFSET #{offset}
     </select>
 
-
-
-
-
-
-
-
-
     <select id="getCount" parameterType="com.siwei.apply.domain.vo.GongdiJihuaFilterVo" resultType="int">
         SELECT COUNT(*)
-        FROM vector.gj_gongdi_jihua
+        FROM vector.gj_gongdi_xiangmu_jihua
         <where>
             <if test="xmmc != null and xmmc != ''">
                 AND xmmc LIKE CONCAT('%', #{xmmc}, '%')
@@ -77,24 +75,30 @@
                 AND gyfs = #{gyfs}
             </if>
             <if test="startDate != null and startDate != ''">
-                AND gysj &gt;= #{startDate}
+                AND ngysj &gt;= #{startDate}
             </if>
             <if test="endDate != null and endDate != ''">
-                AND gysj &lt;= #{endDate}
+                AND ngysj &lt;= #{endDate}
             </if>
         </where>
     </select>
 
     <update id="update" parameterType="com.siwei.apply.domain.GongdiJihua">
-        UPDATE vector.gj_gongdi_jihua
+        UPDATE vector.gj_gongdi_xiangmu_jihua
         <set>
             <if test="fid != null">fid = #{fid},</if>
-            <if test="mjPfm != null">mj_pfm = #{mjPfm},</if>
-            <if test="mjMu != null">mj_mu = #{mjMu},</if>
+            <if test="mj12 != null">mj_12 = #{mj12},</if>
+            <if test="mjM != null">mj_m = #{mjM},</if>
             <if test="xmmc != null">xmmc = #{xmmc},</if>
             <if test="tdyt != null">tdyt = #{tdyt},</if>
             <if test="gyfs != null">gyfs = #{gyfs},</if>
-            <if test="gysj != null">gysj = #{gysj},</if>
+            <if test="ngysj != null">ngysj = #{ngysj},</if>
+            <if test="nf != null">nf = #{nf},</if>
+            <if test="nydwz != null">nydwz = #{nydwz},</if>
+            <if test="xzqmc != null">xzqmc = #{xzqmc},</if>
+            <if test="tgdw != null">tgdw = #{tgdw},</if>
+            <if test="ybpmj != null">ybpmj = #{ybpmj},</if>
+            <if test="wbpmj != null">wbpmj = #{wbpmj},</if>
             <if test="bz != null">bz = #{bz},</if>
             <if test="geom != null">geom = ST_GeomFromEWKT(#{geom}),</if>
         </set>
@@ -102,7 +106,7 @@
     </update>
 
     <delete id="batchDelete">
-        DELETE FROM vector.gj_gongdi_jihua
+        DELETE FROM vector.gj_gongdi_xiangmu_jihua
         WHERE gid IN
         <foreach collection="gids" item="gid" open="(" separator="," close=")">
             #{gid}
@@ -110,26 +114,26 @@
     </delete>
 
     <select id="getByGeomIntersects" resultMap="gongdiJihuaMap">
-        SELECT gid, fid, mj_pfm, mj_mu, xmmc, tdyt, gyfs, gysj, bz, ST_AsEWKT(geom) as geom
-        FROM vector.gj_gongdi_jihua
+        SELECT gid, fid, mj_12, mj_m, xmmc, tdyt, gyfs, ngysj, nf, nydwz, xzqmc, tgdw, ybpmj, wbpmj, bz, ST_AsEWKT(geom) as geom
+        FROM vector.gj_gongdi_xiangmu_jihua
         WHERE public.ST_Intersects(geom, public.ST_GeomFromEWKT(#{ewkt}))
     </select>
 
     <select id="getPlanSummaryByTimeRange" resultType="map">
         SELECT
-            COALESCE(SUM(mj_pfm), 0) AS planarea,
-            COALESCE(SUM(mj_mu), 0) AS planmu,
+            COALESCE(SUM(mj_12), 0) AS planarea,
+            COALESCE(SUM(mj_m), 0) AS planmu,
             COUNT(*) AS plancount,
             COALESCE(SUM(CASE WHEN gyfs = '出让' THEN 1 ELSE 0 END), 0) AS plantransfer,
             COALESCE(SUM(CASE WHEN gyfs = '划拨' THEN 1 ELSE 0 END), 0) AS planallocation,
             COALESCE(SUM(CASE WHEN gyfs IS NULL OR gyfs NOT IN ('出让', '划拨') THEN 1 ELSE 0 END), 0) AS planother
-        FROM vector.gj_gongdi_jihua
+        FROM vector.gj_gongdi_xiangmu_jihua
         <where>
             <if test="startTime != null and startTime != ''">
-                AND gysj &gt;= #{startTime}::date
+                AND ngysj &gt;= #{startTime}::date
             </if>
             <if test="endTime != null and endTime != ''">
-                AND gysj &lt;= #{endTime}::date
+                AND ngysj &lt;= #{endTime}::date
             </if>
         </where>
     </select>
@@ -137,20 +141,20 @@
     <select id="getPlanStatsByLandType" resultType="map">
         SELECT
             COALESCE(tdyt, '未知') AS category,
-            COALESCE(SUM(mj_pfm), 0) AS planarea,
-            COALESCE(SUM(mj_mu), 0) AS planmu,
+            COALESCE(SUM(mj_12), 0) AS planarea,
+            COALESCE(SUM(mj_m), 0) AS planmu,
             COUNT(*) AS plancount,
             COALESCE(SUM(CASE WHEN gyfs = '出让' THEN 1 ELSE 0 END), 0) AS plantransfer,
             COALESCE(SUM(CASE WHEN gyfs = '划拨' THEN 1 ELSE 0 END), 0) AS planallocation,
             COALESCE(SUM(CASE WHEN gyfs IS NULL OR gyfs NOT IN ('出让', '划拨') THEN 1 ELSE 0 END), 0) AS planother,
             '0%' AS supplyrate
-        FROM vector.gj_gongdi_jihua
+        FROM vector.gj_gongdi_xiangmu_jihua
         <where>
             <if test="startTime != null and startTime != ''">
-                AND gysj &gt;= #{startTime}::date
+                AND ngysj &gt;= #{startTime}::date
             </if>
             <if test="endTime != null and endTime != ''">
-                AND gysj &lt;= #{endTime}::date
+                AND ngysj &lt;= #{endTime}::date
             </if>
         </where>
         GROUP BY tdyt
@@ -160,24 +164,96 @@
     <select id="getPlanStatsBySupplyMode" resultType="map">
         SELECT
             COALESCE(gyfs, '未知') AS category,
-            COALESCE(SUM(mj_pfm), 0) AS planarea,
-            COALESCE(SUM(mj_mu), 0) AS planmu,
+            COALESCE(SUM(mj_12), 0) AS planarea,
+            COALESCE(SUM(mj_m), 0) AS planmu,
             COUNT(*) AS plancount,
             COALESCE(SUM(CASE WHEN gyfs = '出让' THEN 1 ELSE 0 END), 0) AS plantransfer,
             COALESCE(SUM(CASE WHEN gyfs = '划拨' THEN 1 ELSE 0 END), 0) AS planallocation,
             COALESCE(SUM(CASE WHEN gyfs IS NULL OR gyfs NOT IN ('出让', '划拨') THEN 1 ELSE 0 END), 0) AS planother,
             '0%' AS supplyrate
-        FROM vector.gj_gongdi_jihua
+        FROM vector.gj_gongdi_xiangmu_jihua
         <where>
             <if test="startTime != null and startTime != ''">
-                AND gysj &gt;= #{startTime}::date
+                AND ngysj &gt;= #{startTime}::date
             </if>
             <if test="endTime != null and endTime != ''">
-                AND gysj &lt;= #{endTime}::date
+                AND ngysj &lt;= #{endTime}::date
             </if>
         </where>
         GROUP BY gyfs
         ORDER BY planarea DESC
     </select>
 
-</mapper>
+    <select id="supplyList" resultType="map">
+        SELECT *
+        FROM vector.${tableName}
+        WHERE 1=1
+        <if test="year != null and year != '' and year != '0'">
+            AND nf = #{year}
+        </if>
+        ORDER BY gid ASC
+    </select>
+
+
+    <insert id="insertTableSupplyData" parameterType="map">
+        INSERT INTO vector.${tableName}
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="data.fid != null">fid,</if>
+            <if test="data.mj_12 != null">mj_12,</if>
+            <if test="data.mj_m != null">mj_m,</if>
+            <if test="data.xmmc != null">xmmc,</if>
+            <if test="data.tdyt != null">tdyt,</if>
+            <if test="data.gyfs != null">gyfs,</if>
+            <if test="data.ngysj != null">ngysj,</if>
+            <if test="data.nf != null">nf,</if>
+            <if test="data.nydwz != null">nydwz,</if>
+            <if test="data.xzqmc != null">xzqmc,</if>
+            <if test="data.tgdw != null">tgdw,</if>
+            <if test="data.ybpmj != null">ybpmj,</if>
+            <if test="data.wbpmj != null">wbpmj,</if>
+            <if test="data.bz != null">bz,</if>
+            <if test="data.the_geom != null">geom,</if>
+        </trim>
+        <trim prefix="VALUES (" suffix=")" suffixOverrides=",">
+            <if test="data.fid != null">#{data.fid}::int4,</if>
+            <if test="data.mj_12 != null">#{data.mj_12}::numeric,</if>
+            <if test="data.mj_m != null">#{data.mj_m}::numeric,</if>
+            <if test="data.xmmc != null">#{data.xmmc}::varchar,</if>
+            <if test="data.tdyt != null">#{data.tdyt}::varchar,</if>
+            <if test="data.gyfs != null">#{data.gyfs}::varchar,</if>
+            <if test="data.ngysj != null">#{data.ngysj}::date,</if>
+            <if test="data.nf != null">#{data.nf}::varchar,</if>
+            <if test="data.nydwz != null">#{data.nydwz}::varchar,</if>
+            <if test="data.xzqmc != null">#{data.xzqmc}::varchar,</if>
+            <if test="data.tgdw != null">#{data.tgdw}::varchar,</if>
+            <if test="data.ybpmj != null">#{data.ybpmj}::numeric,</if>
+            <if test="data.wbpmj != null">#{data.wbpmj}::numeric,</if>
+            <if test="data.bz != null">#{data.bz}::varchar,</if>
+            <if test="data.the_geom != null">public.st_transform(public.st_geomfromewkt(#{data.the_geom}), #{shpDbSRID}),</if>
+        </trim>
+    </insert>
+
+    <delete id="deleteByTable" parameterType="String">
+        DELETE FROM vector.${tableName}
+        WHERE 1=1
+        <if test="gid != null and gid !=''">
+            and gid = #{gid}
+        </if>
+    </delete>
+
+    <delete id="deleteByTableYear" parameterType="String">
+        DELETE FROM vector.${tableName}
+        WHERE 1=1
+        <choose>
+            <when test="'1'.toString().equals(type) and year != null and year != '' and year != '0'">
+                AND scnf = #{year}
+            </when>
+            <otherwise>
+                AND gid = 0
+            </otherwise>
+        </choose>
+    </delete>
+
+
+
+</mapper>

+ 2 - 3
siwei-modules/siwei-apply/src/main/resources/mapper/TdgyMapper.xml

@@ -136,7 +136,8 @@
                         WHEN t_node.gd_unit = '平方米' THEN
                             COALESCE ( t_node.gd_area, 0 ) / 666.6666667-- 平方米 -> 亩
                         WHEN t_node.gd_unit = '公顷' THEN
-                            COALESCE ( t_node.gd_area, 0 ) * 15-- 公顷 -> 亩 ELSE COALESCE ( t_node.gd_area, 0 ) -- 默认当作亩(含 '2')
+                            COALESCE ( t_node.gd_area, 0 ) * 15-- 公顷 -> 亩
+                            ELSE COALESCE ( t_node.gd_area, 0 ) -- 默认当作亩(含 '2')
                         END,
                     0
             ) AS mjMu,
@@ -167,7 +168,6 @@
         <if test="endTime != null and endTime != ''">
             AND t_node.hbcrht_date &lt;= #{endTime}
         </if>
-        LIMIT 41
     </select>
 
     <!-- 查询当前存量土地实际供应情况! -->
@@ -203,7 +203,6 @@
         <if test="endTime != null and endTime != ''">
             AND CAST(gj_gd_data.qdrq AS VARCHAR) &lt;= #{endTime}
         </if>
-        LIMIT 41
     </select>
 
     <!-- 根据年份查询当前存量土地实际供应情况! -->

+ 31 - 1
siwei-modules/siwei-apply/src/main/resources/mapper/YdbpDataMapper.xml

@@ -14,6 +14,7 @@
         <result property="bpDate" column="bp_date"/>
         <result property="pfwh" column="pfwh"/>
         <result property="pfDate" column="pf_date"/>
+        <result property="hasOnchain" column="has_onchain"/>
         <result property="creatorId" column="creator_id"/>
         <result property="createdAt" column="created_at"/>
         <result property="updatedAt" column="updated_at"/>
@@ -26,7 +27,7 @@
         )
     </insert>
     <select id="getById" parameterType="string" resultMap="YdbpDataResultMap">
-        SELECT id, name, yd_area, yd_unit, zs_area, zs_unit, has_zz, bp_date, pfwh, pf_date, creator_id, created_at, updated_at
+        SELECT id, name, yd_area, yd_unit, zs_area, zs_unit, has_zz, bp_date, pfwh, pf_date, creator_id, created_at, updated_at,has_onchain
         FROM t_ydbp_data
         WHERE id = #{id}
     </select>
@@ -108,4 +109,33 @@
         SET has_onchain = #{hasOnchain}, updated_at = now()
         WHERE id = #{id}
     </update>
+
+    <select id="getStatisticsList" resultMap="YdbpDataResultMap">
+        select
+        COALESCE (
+            CASE
+            WHEN zs_unit = '平方米' THEN
+            COALESCE ( zs_area, 0 ) / 666.6666667
+            WHEN zs_unit = '公顷' THEN
+            COALESCE ( zs_area, 0 ) * 15
+            WHEN zs_unit = '亩' THEN
+            COALESCE ( zs_area, 0 ) * 1
+            END,
+            0
+        ) AS zs_area ,
+        '亩' as  zs_unit,
+        has_zz, bp_date, pfwh, pf_date, creator_id, created_at, updated_at,has_onchain
+        FROM t_ydbp_data
+        WHERE has_onchain='t'
+        <if test="year != null and year != '' ">
+            AND left(pf_date,4) = #{year}
+        </if>
+    </select>
+
+
+
+
+
+
+
 </mapper>

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

@@ -48,6 +48,37 @@
         WHERE id = #{id}
     </select>
 
+    <select id="getStatisticsList" resultType="map">
+        SELECT
+            pro.ID AS project_id,
+            bp.ID AS node_id,
+            bp.zs_area,
+            bp.zs_unit,
+            COALESCE (
+                    CASE
+                        WHEN bp.zs_unit = '平方米' THEN
+                            COALESCE ( bp.zs_area, 0 ) / 666.6666667
+                        WHEN bp.zs_unit = '公顷' THEN
+                            COALESCE ( bp.zs_area, 0 ) * 15
+                        WHEN bp.zs_unit = '亩' THEN
+                            COALESCE ( bp.zs_area, 0 ) * 1
+                        END,
+                    0
+            ) AS mj_mu
+        FROM
+            t_ydbp bp
+                LEFT JOIN t_project pro ON bp.project_id = pro."id"
+        WHERE
+            pro.on_chain_num > 0
+          AND bp.has_onchain = 't'
+        <if test="year != null and year != '' ">
+            AND left(bp.pf_date,4) = #{year}
+        </if>
+    </select>
+
+
+
+
 
     <!-- 更新语句 -->
     <update id="update" parameterType="com.siwei.apply.domain.vo.YdbpUpdateVo">

+ 26 - 1
siwei-modules/siwei-spatial/src/main/java/com/siwei/spatial/service/file/impl/SpatialFilesDbServiceImpl.java

@@ -49,6 +49,7 @@ import java.io.Serializable;
 import java.math.BigDecimal;
 import java.nio.charset.Charset;
 import java.nio.charset.StandardCharsets;
+import java.nio.file.Files;
 import java.util.*;
 
 @Service
@@ -275,7 +276,7 @@ public class SpatialFilesDbServiceImpl implements ISpatialFilesDbService {
         String tableId = null;
         try {
             shapefileDataStore = new ShapefileDataStore(shpFile.toURI().toURL());
-            shapefileDataStore.setCharset(Charset.forName(readShpBM(shpFile.getAbsolutePath())));
+            shapefileDataStore.setCharset(Charset.forName(detectEncoding(shpFile.getAbsolutePath())));
             // 这个typeNamae不传递,默认是文件名称
             FeatureSource featuresource = shapefileDataStore.getFeatureSource(shapefileDataStore.getTypeNames()[0]);
 
@@ -348,6 +349,30 @@ public class SpatialFilesDbServiceImpl implements ISpatialFilesDbService {
         return retFeatureList;
     }
 
+
+
+
+    private String detectEncoding(String shpPath) {
+        // 1. 优先读 .cpg 文件
+        String cpgPath = shpPath.substring(0, shpPath.length() - 4) + ".cpg";
+        File cpgFile = new File(cpgPath);
+        if (cpgFile.exists()) {
+            try {
+                String encoding = new String(Files.readAllBytes(cpgFile.toPath()), "ASCII").trim();
+                System.out.println("从 .cpg 文件读取编码: " + encoding);
+                return encoding;  // 返回 "gb18030"
+            } catch (IOException e) {
+                // 忽略,走下面的兜底
+            }
+        }
+        // 2. 没有 .cpg,再读 DBF 的 LDID 兜底
+        return readShpBM(shpPath);
+    }
+
+
+
+
+
     private String readShpBM(String shpPath) {
         String dbfPath = shpPath.substring(0, shpPath.length() - 4) + ".dbf";
         try (FileInputStream fis = new FileInputStream(dbfPath)) {