Jelajahi Sumber

新增获取对比数据接口

chenendian 2 bulan lalu
induk
melakukan
14cfba1714

+ 17 - 0
siwei-modules/siwei-apply/src/main/java/com/siwei/apply/controller/cadastre/CadastreManageController.java

@@ -1,6 +1,7 @@
 package com.siwei.apply.controller.cadastre;
 package com.siwei.apply.controller.cadastre;
 
 
 import com.siwei.apply.domain.FzssFxrwrz;
 import com.siwei.apply.domain.FzssFxrwrz;
+import com.siwei.apply.domain.LayerAndDbData;
 import com.siwei.apply.domain.vo.CadastreFileFilterVo;
 import com.siwei.apply.domain.vo.CadastreFileFilterVo;
 import com.siwei.apply.domain.vo.CheckInfoResultVo;
 import com.siwei.apply.domain.vo.CheckInfoResultVo;
 import com.siwei.apply.domain.vo.CompareResultVo;
 import com.siwei.apply.domain.vo.CompareResultVo;
@@ -174,6 +175,22 @@ public class CadastreManageController extends BaseController {
     }
     }
 
 
 
 
+    @PostMapping("/getLayerData")
+    public R<List<LayerAndDbData>> getLayerData(String uploadId) {
+        try {
+            List<LayerAndDbData> res = cadastreManageService.getLayerData(uploadId);
+            return R.ok(res);
+        } catch (Exception e) {
+            e.printStackTrace();
+            return R.fail(e.getMessage());
+        }
+    }
+
+
+
+
+
+
 
 
     @PostMapping("/backToOld")
     @PostMapping("/backToOld")
     public R<String> backToOld(String uploadId) {
     public R<String> backToOld(String uploadId) {

+ 36 - 0
siwei-modules/siwei-apply/src/main/java/com/siwei/apply/domain/LayerAndDbData.java

@@ -0,0 +1,36 @@
+package com.siwei.apply.domain;
+
+import lombok.Data;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 更新历史的条数
+ *
+ * @author siwei
+ * @date 2026-02-11
+ */
+@Data
+public class LayerAndDbData {
+
+    /** 当前标识名称 */
+    private String currentTableName;
+
+    /** 更新记录总数 */
+    private Integer addTotalNum;
+
+    /** 更新记录数 */
+    private Integer insertNum;
+
+    /** 标记历史数 */
+    private Integer markHistoryNum;
+
+    /** 新增的数据 */
+    private List<Map<String,Object>>  insertDataList;
+
+    /** 标记历史的数据 */
+    private List<Map<String,Object>>  markHistoryDataList;
+
+
+}

+ 6 - 0
siwei-modules/siwei-apply/src/main/java/com/siwei/apply/mapper/CadastreFileMapper.java

@@ -88,4 +88,10 @@ public interface CadastreFileMapper {
 
 
 
 
     Integer countByValidFlag(@Param("validFlag") String validFlag, @Param("tableName") String tableName);
     Integer countByValidFlag(@Param("validFlag") String validFlag, @Param("tableName") String tableName);
+
+
+    List<Map<String,Object>> selectTableData(@Param("validFlag") String validFlag, @Param("tableName") String tableName);
+
+
+
 }
 }

+ 6 - 0
siwei-modules/siwei-apply/src/main/java/com/siwei/apply/service/cadastre/CadastreManageService.java

@@ -2,6 +2,7 @@ package com.siwei.apply.service.cadastre;
 
 
 import com.siwei.apply.domain.CadastreFile;
 import com.siwei.apply.domain.CadastreFile;
 import com.siwei.apply.domain.FzssFxrwrz;
 import com.siwei.apply.domain.FzssFxrwrz;
+import com.siwei.apply.domain.LayerAndDbData;
 import com.siwei.apply.domain.vo.CadastreFileFilterVo;
 import com.siwei.apply.domain.vo.CadastreFileFilterVo;
 import com.siwei.apply.domain.vo.CheckInfoResultVo;
 import com.siwei.apply.domain.vo.CheckInfoResultVo;
 import com.siwei.apply.domain.vo.CompareResultVo;
 import com.siwei.apply.domain.vo.CompareResultVo;
@@ -35,4 +36,9 @@ public interface CadastreManageService {
 
 
     String backToOldData(String uploadId);
     String backToOldData(String uploadId);
 
 
+
+    List<LayerAndDbData> getLayerData(String uploadId);
+
+
+
 }
 }

+ 65 - 1
siwei-modules/siwei-apply/src/main/java/com/siwei/apply/service/cadastre/impl/CadastreManageServiceImpl.java

@@ -2,6 +2,7 @@ package com.siwei.apply.service.cadastre.impl;
 
 
 import com.siwei.apply.domain.CadastreFile;
 import com.siwei.apply.domain.CadastreFile;
 import com.siwei.apply.domain.FzssFxrwrz;
 import com.siwei.apply.domain.FzssFxrwrz;
+import com.siwei.apply.domain.LayerAndDbData;
 import com.siwei.apply.domain.vo.*;
 import com.siwei.apply.domain.vo.*;
 import com.siwei.apply.mapper.CadastreFileMapper;
 import com.siwei.apply.mapper.CadastreFileMapper;
 import com.siwei.apply.mapper.FzssFxrwrzMapper;
 import com.siwei.apply.mapper.FzssFxrwrzMapper;
@@ -353,7 +354,7 @@ public class CadastreManageServiceImpl implements CadastreManageService {
         //todo 这里根据表名获取相关校验字段信息
         //todo 这里根据表名获取相关校验字段信息
         List<String> checkFieldList = new ArrayList<>();
         List<String> checkFieldList = new ArrayList<>();
         //checkFieldList.add("111");
         //checkFieldList.add("111");
-        checkFieldList.add("bz");
+        //checkFieldList.add("bz");
         //仅获取图层属性
         //仅获取图层属性
         List<Map<String, Object>> theValueList = getValueList(layer,new LinkedHashMap<>(), false);
         List<Map<String, Object>> theValueList = getValueList(layer,new LinkedHashMap<>(), false);
         for (Map<String, Object> theMap : theValueList) {
         for (Map<String, Object> theMap : theValueList) {
@@ -719,6 +720,69 @@ public class CadastreManageServiceImpl implements CadastreManageService {
 
 
 
 
 
 
+    //1.获取图层中所有数据
+    //2.获取库中所有数据
+    //3.进行对比返回
+    @Override
+    public List<LayerAndDbData> getLayerData(String uploadId) {
+        List<LayerAndDbData> resList = new ArrayList<>();
+        try {
+            CadastreFile cadastreFile = cadastreFileMapper.get(uploadId);
+            //这里判断是否校验通过
+            if (!cadastreFile.getStatus().equalsIgnoreCase("3")) {
+                log.info("校验未通过,不能入库");
+                throw new ServiceException("校验未通过,不能入库");
+            }
+            String gdbPath = cadastreFile.getUnzipPath();
+            DataSource ds = ogr.Open(gdbPath + "/" + cadastreFile.getName(), 0); // 0 = 只读
+            if (ds == null) {
+                log.warn("无法打开 gdb");
+                throw new ServiceException("无法打开 gdb");
+            }
+            //这里进行遍历每个图层
+            for (int i = 0; i < ds.GetLayerCount(); i++) {
+                Layer layer = ds.GetLayer(i);
+                String layerName = layer.GetName();
+                //todo 相关代码
+                if (!layerName.equalsIgnoreCase("T_CGZJ_CWTC_M")) {
+                    continue;
+                }
+                LayerAndDbData layerAndDbData = new LayerAndDbData();
+                layerAndDbData.setCurrentTableName(layerName);
+
+                boolean haveGeom = false;//这里不需要geom信息
+                List<Map<String,String>> dbFieldNameAndTypeList = cadastreFileMapper.selectTableCollumAndType(layerName.toLowerCase(Locale.ROOT));
+                Map<String,String> dbFieldNameAndTypeMap = dbFieldNameAndTypeList.stream().collect(Collectors.toMap(
+                        s ->  s.get("column_name"),
+                        s -> s.get("data_type"),
+                        (existing, replacement) -> existing // 如果有重复键,保留第一个值
+                ));
+                List<Map<String, Object>> theValueList = getValueList(layer,dbFieldNameAndTypeMap, haveGeom);
+                List<Map<String, Object>> dbDataList = cadastreFileMapper.selectTableData("0",layerName);
+
+                layerAndDbData.setAddTotalNum(theValueList.size());
+                layerAndDbData.setInsertNum(theValueList.size());
+                layerAndDbData.setMarkHistoryNum(dbDataList.size());
+                layerAndDbData.setInsertDataList(theValueList);
+                layerAndDbData.setMarkHistoryDataList(dbDataList);
+                resList.add(layerAndDbData);
+            }
+        } catch (Exception e) {
+            log.error("矢量数据入库异常,uploadId: {}", uploadId, e);
+            throw new ServiceException("矢量数据入库异常," + e.getMessage());
+        }
+
+        return resList;
+    }
+
+
+
+
+
+
+
+
+
 
 
 
 
 
 

+ 8 - 0
siwei-modules/siwei-apply/src/main/resources/mapper/cadastre/CadastreFileMapper.xml

@@ -230,4 +230,12 @@
     <delete id="deleteByValidFlag">
     <delete id="deleteByValidFlag">
         DELETE  FROM  vector.${tableName}   WHERE valid_flag = ${validFlag}
         DELETE  FROM  vector.${tableName}   WHERE valid_flag = ${validFlag}
     </delete>
     </delete>
+
+    <select id="selectTableData"   resultType="Map">
+        SELECT *
+        FROM vector.${tableName}
+        WHERE valid_flag = ${validFlag}
+    </select>
+
+
 </mapper>
 </mapper>