浏览代码

自然资源表入库更新增加模式。

chenendian 4 天之前
父节点
当前提交
6724cd3668

+ 55 - 18
siwei-modules/siwei-apply/src/main/java/com/siwei/apply/service/cadastre/impl/CadastreManageServiceImpl.java

@@ -77,7 +77,7 @@ public class CadastreManageServiceImpl implements CadastreManageService {
 
     /**
      * 解压文件并且根据情况进行拆分或合并的处理
-     * @param  上传文件名
+     * @param
      * @param theFilePath 文件路径
      * @param landRightType 宗地权利类型
      * @param landChangeMode 宗地变更模式
@@ -189,8 +189,7 @@ public class CadastreManageServiceImpl implements CadastreManageService {
 //                        2.写一个方法,通过交集求出变化和变更多少条
 //                         3. 	a.合并情况,假定excel中3条数据,先遍历excel 然后,每条数据key-然后求所有交集得到id 分组。
 //                        每一条数据获取到其 ewkt,然后进行,库中取查询,查询出所包含的数据的id
-
-                        List<Map<String, String>> dbFieldNameAndTypeList = cadastreFileMapper.selectTableCollumAndType(name.toLowerCase(Locale.ROOT));
+                        List<Map<String, String>> dbFieldNameAndTypeList = cadastreFileMapper.selectTableCollumAndType(schemaName,name.toLowerCase(Locale.ROOT));
                         Map<String, String> dbFieldNameAndTypeMap = dbFieldNameAndTypeList.stream().collect(Collectors.toMap(
                                 s -> s.get("column_name"),
                                 s -> s.get("data_type"),
@@ -427,12 +426,12 @@ public class CadastreManageServiceImpl implements CadastreManageService {
                 //这里直接数据入库,区分增量或者全量
                 if ("2".equalsIgnoreCase(cadastreFile.getReadStatus())) {
                     //增量更新
-                    addRes = incrementDataStorage(landRightType,layerName, theValueList);
+                    addRes = incrementDataStorage(landRightType,schemaName,layerName, theValueList);
                     if (addRes.equals(true)) {
                         fzssFxrwrzHandleService.insertFxrwrz(uploadId, "地籍库管理", "增量更新-" + layerName + "-成功", "info");
                     }
                 } else {
-                    addRes = fullDataStorage(landRightType,layerName, theValueList);
+                    addRes = fullDataStorage(landRightType,schemaName,layerName, theValueList);
                     if (addRes.equals(true)) {
                         fzssFxrwrzHandleService.insertFxrwrz(uploadId, "地籍库管理", "增量更新-" + layerName + "-成功", "info");
                     }
@@ -488,6 +487,14 @@ public class CadastreManageServiceImpl implements CadastreManageService {
             //如果是宗地需要区分权利类型(1.使用权数据,2.所有权数据)
             String landRightType =  cadastreFile.getLandRightType();
 
+            String cadastreType = cadastreFile.getCadastreType();
+            String schemaName = Common.DB_SCHEMA_NAME_VECTOR;
+            if(cadastreType.equals("2")){
+                schemaName = Common.DB_SCHEMA_NAME_NATURAL;
+            }
+
+
+
             for (Map<String, Object> tableMap : allMdbTableList) {
                 String talbleName = String.valueOf(tableMap.get("name"));
                 Map<String, Object> allMdbTableFieldMap = MdbUtil.MdbTableContent(gdbPath + "/" + cadastreFile.getName(), talbleName, "", "", 1, 1000);
@@ -496,12 +503,12 @@ public class CadastreManageServiceImpl implements CadastreManageService {
                 fzssFxrwrzHandleService.insertFxrwrz(uploadId, "地籍库管理", "正在执行-" + talbleName + "-入库", "info");
                 Boolean addRes;
                 if ("2".equalsIgnoreCase(cadastreFile.getReadStatus())) {
-                    addRes = incrementDataStorage(landRightType,talbleName, theValueList);
+                    addRes = incrementDataStorage(landRightType,schemaName,talbleName, theValueList);
                     if (addRes.equals(true)) {
                         fzssFxrwrzHandleService.insertFxrwrz(uploadId, "地籍库管理", "增量更新-" + talbleName + "-成功", "info");
                     }
                 } else {
-                    addRes = fullDataStorage(landRightType,talbleName, theValueList);
+                    addRes = fullDataStorage(landRightType,schemaName,talbleName, theValueList);
                     if (addRes.equals(true)) {
                         fzssFxrwrzHandleService.insertFxrwrz(uploadId, "地籍库管理", "全量更新-" + talbleName + "-成功", "info");
                     }
@@ -1297,6 +1304,8 @@ public class CadastreManageServiceImpl implements CadastreManageService {
     }
 
 
+
+
     /**
      * 这里需要开启事务
      * 数据全量入库
@@ -1306,11 +1315,12 @@ public class CadastreManageServiceImpl implements CadastreManageService {
      * @return
      */
     @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
-    public Boolean fullDataStorage(String landRightType,String tableName, List<Map<String, Object>> theValueList) {
+    public Boolean fullDataStorage(String landRightType,String schemaName,String tableName, List<Map<String, Object>> theValueList) {
         boolean addRes = false;
         Integer shpDbSRID = 4326;
+
         if (!CollectionUtils.isEmpty(theValueList)) {
-            List<String> dbFieldNameList = cadastreFileMapper.selectTableCollum(tableName.toLowerCase());
+            List<String> dbFieldNameList = cadastreFileMapper.selectTableCollum(schemaName,tableName.toLowerCase());
             theValueList = theValueList.stream().map(source -> {
                 Map<String, Object> newMap = new HashMap<>();
                 for (String dbLowField : dbFieldNameList) {
@@ -1325,7 +1335,7 @@ public class CadastreManageServiceImpl implements CadastreManageService {
                 return newMap;
             }).collect(Collectors.toList());
 
-            List<Map<String, String>> dbFieldNameAndTypeList = cadastreFileMapper.selectTableCollumAndType(tableName.toLowerCase(Locale.ROOT));
+            List<Map<String, String>> dbFieldNameAndTypeList = cadastreFileMapper.selectTableCollumAndType(schemaName,tableName.toLowerCase(Locale.ROOT));
             Map<String, String> columnTypeMap = new LinkedHashMap<>();
             for (Map<String, String> col : dbFieldNameAndTypeList) {
                 columnTypeMap.put(col.get("column_name"), col.get("data_type"));
@@ -1485,11 +1495,11 @@ public class CadastreManageServiceImpl implements CadastreManageService {
      * @return
      */
     @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
-    public Boolean incrementDataStorage(String landRightType ,String tableName, List<Map<String, Object>> theValueList) {
+    public Boolean incrementDataStorage(String landRightType ,String schemaName , String tableName, List<Map<String, Object>> theValueList) {
         boolean addRes = false;
         Integer shpDbSRID = 4326;
         if (!CollectionUtils.isEmpty(theValueList)) {
-            List<Map<String, String>> dbFieldNameAndTypeList = cadastreFileMapper.selectTableCollumAndType(tableName.toLowerCase(Locale.ROOT));
+            List<Map<String, String>> dbFieldNameAndTypeList = cadastreFileMapper.selectTableCollumAndType(schemaName,tableName.toLowerCase(Locale.ROOT));
             Map<String, String> columnTypeMap = new LinkedHashMap<>();
             for (Map<String, String> col : dbFieldNameAndTypeList) {
                 columnTypeMap.put(col.get("column_name"), col.get("data_type"));
@@ -1694,6 +1704,13 @@ public class CadastreManageServiceImpl implements CadastreManageService {
                 log.warn("无法打开 gdb");
                 throw new ServiceException("无法打开 gdb");
             }
+
+            String cadastreType = cadastreFile.getCadastreType();
+            String schemaName = Common.DB_SCHEMA_NAME_VECTOR;
+            if(cadastreType.equals("2")){
+                schemaName = Common.DB_SCHEMA_NAME_NATURAL;
+            }
+
             //这里进行遍历每个图层
             for (int i = 0; i < ds.GetLayerCount(); i++) {
                 Layer layer = ds.GetLayer(i);
@@ -1702,7 +1719,7 @@ public class CadastreManageServiceImpl implements CadastreManageService {
                 layerAndDbData.setCurrentTableName(layerName);
 
                 boolean haveGeom = false;//这里不需要geom信息
-                List<Map<String, String>> dbFieldNameAndTypeList = cadastreFileMapper.selectTableCollumAndType(layerName.toLowerCase(Locale.ROOT));
+                List<Map<String, String>> dbFieldNameAndTypeList = cadastreFileMapper.selectTableCollumAndType(schemaName,layerName.toLowerCase(Locale.ROOT));
                 Map<String, String> dbFieldNameAndTypeMap = dbFieldNameAndTypeList.stream().collect(Collectors.toMap(
                         s -> s.get("column_name"),
                         s -> s.get("data_type"),
@@ -1785,11 +1802,16 @@ public class CadastreManageServiceImpl implements CadastreManageService {
             String gdbPath = cadastreFile.getUnzipPath();
             List<Map<String, Object>> allMdbTableList = MdbUtil.MdbTables(gdbPath + "/" + cadastreFile.getName(), "", "");
 
+            String cadastreType = cadastreFile.getCadastreType();
+            String schemaName = Common.DB_SCHEMA_NAME_VECTOR;
+            if(cadastreType.equals("2")){
+                schemaName = Common.DB_SCHEMA_NAME_NATURAL;
+            }
             for (Map<String, Object> tableMap : allMdbTableList) {
                 String talbleName = String.valueOf(tableMap.get("name"));
                 MdbAndDbData mdbAndDbData = new MdbAndDbData();
                 mdbAndDbData.setCurrentTableName(talbleName);
-                List<Map<String, String>> dbFieldNameAndTypeList = cadastreFileMapper.selectTableCollumAndType(talbleName.toLowerCase(Locale.ROOT));
+                List<Map<String, String>> dbFieldNameAndTypeList = cadastreFileMapper.selectTableCollumAndType(schemaName,talbleName.toLowerCase(Locale.ROOT));
                 Map<String, String> dbFieldNameAndTypeMap = dbFieldNameAndTypeList.stream().collect(Collectors.toMap(
                         s -> s.get("column_name"),
                         s -> s.get("data_type"),
@@ -1846,8 +1868,14 @@ public class CadastreManageServiceImpl implements CadastreManageService {
             ywh = ywh.replaceAll("=(\\d+)", "='$1'");
         }
         List<Map<String,Object>> res = cadastreFileMapper.selectTableDataByCondition(validFlag,tableName,bsm,ywh,!pageQuery);
+
+        String schemaName = Common.DB_SCHEMA_NAME_VECTOR;
+        if("1".equals("2")){
+            schemaName = Common.DB_SCHEMA_NAME_NATURAL;
+        }
+
         if(CollectionUtils.isNotEmpty(res)){ //去掉geom字段和valid_flag字段
-            List<Map<String, String>> dbFieldNameAndTypeList = cadastreFileMapper.selectTableCollumAndType(tableName.toLowerCase(Locale.ROOT));
+            List<Map<String, String>> dbFieldNameAndTypeList = cadastreFileMapper.selectTableCollumAndType(schemaName,tableName.toLowerCase(Locale.ROOT));
             List<Object> filterCollumList =  dbFieldNameAndTypeList.stream().filter(s->s.get("data_type").equals("bytea")).map(s->s.get("column_name")).collect(Collectors.toList());
             filterCollumList.add("valid_flag");
             //res.forEach(m -> m.keySet().removeIf(k -> "valid_flag".equalsIgnoreCase(k)));
@@ -1876,7 +1904,11 @@ public class CadastreManageServiceImpl implements CadastreManageService {
 
     @Override
     public List<String> getTableFields(String tableName) {
-        List<String> res = cadastreFileMapper.selectTableCollum(tableName);
+        String schemaName = Common.DB_SCHEMA_NAME_VECTOR;
+        if("1".equals("2")){
+            schemaName = Common.DB_SCHEMA_NAME_NATURAL;
+        }
+        List<String> res = cadastreFileMapper.selectTableCollum(schemaName,tableName);
         res.remove("valid_flag");
         res.remove("geom");
         return res;
@@ -1886,7 +1918,12 @@ public class CadastreManageServiceImpl implements CadastreManageService {
     public List<String> getDistinctValueByField(String tableName,String fieldName) {
         List<String> res = new ArrayList<>();
         String validFlag =null;
-        List<String> collumList = cadastreFileMapper.selectTableCollum(tableName);
+
+        String schemaName = Common.DB_SCHEMA_NAME_VECTOR;
+        if("1".equals("2")){
+            schemaName = Common.DB_SCHEMA_NAME_NATURAL;
+        }
+        List<String> collumList = cadastreFileMapper.selectTableCollum(schemaName,tableName);
         if(!collumList.contains(fieldName)){
             return res;
         }
@@ -1972,7 +2009,7 @@ public class CadastreManageServiceImpl implements CadastreManageService {
     public void testBuildMdbFile(String tableName, String filePath, String fileName) {
         try {
             // 1. 获取表字段及类型信息
-            List<Map<String, String>> columns = cadastreFileMapper.selectTableCollumAndType(tableName);
+            List<Map<String, String>> columns = cadastreFileMapper.selectTableCollumAndType("",tableName);
             if (columns == null || columns.isEmpty()) {
                 log.warn("无法获取表字段信息: {}", tableName);
                 throw new ServiceException("无法获取表字段信息: "+tableName);