Browse Source

自然资源表创建调整

chenendian 1 week ago
parent
commit
6c118c02df

+ 3 - 0
siwei-modules/siwei-apply/src/main/java/com/siwei/apply/common/Common.java

@@ -3,6 +3,9 @@ package com.siwei.apply.common;
 public class Common {
     public static String UserId = "123456789"; // 用户ID
 
+    public static final String DB_SCHEMA_NAME_NATURAL ="natural";
+    public static final String DB_SCHEMA_NAME_VECTOR ="vector";
+
     public static int ProjectTypeDdxz = 1;
     public static int ProjectTypePcbp = 2;
 }

+ 7 - 5
siwei-modules/siwei-apply/src/main/java/com/siwei/apply/controller/cadastre/CadastreManageController.java

@@ -80,12 +80,14 @@ public class CadastreManageController extends BaseController {
      * @param theFilePath
      * @param fileType
      * @param updateType
+     * @param cadastreType
+     * @param landRightType
      * @return
      */
     @PostMapping("/checkUploadDquality")
-    public R<CheckInfoResultVo> checkData(String theFileName, String theFilePath, String fileType, String updateType, @RequestParam(required = false,defaultValue = "") String landRightType) {
+    public R<CheckInfoResultVo> checkData(String theFileName, String theFilePath, String fileType, String updateType, String cadastreType,@RequestParam(required = false,defaultValue = "") String landRightType) {
         try {
-            CheckInfoResultVo res = cadastreManageService.checkFileData(theFileName, theFilePath, fileType, updateType, landRightType);
+            CheckInfoResultVo res = cadastreManageService.checkFileData(theFileName, theFilePath, fileType, updateType,cadastreType, landRightType);
             return R.ok(res);
         } catch (Exception e) {
             e.printStackTrace();
@@ -272,9 +274,9 @@ public class CadastreManageController extends BaseController {
     @RequestMapping("/testRun")
     public R<Object> testRun() {
         try {
-            String filePath = "C:\\Users\\Administrator\\Desktop\\08\\shp_create\\public_dict";
-            cadastreManageService.testBuildMdbFile("fdcq1", filePath, "public_dict");
-            //cadastreManageService.testRun();
+//            String filePath = "C:\\Users\\Administrator\\Desktop\\08\\shp_create\\public_dict";
+//            cadastreManageService.testBuildMdbFile("fdcq1", filePath, "public_dict");
+            cadastreManageService.testRun();
             return R.ok(null);
         } catch (Exception e) {
             e.printStackTrace();

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

@@ -34,5 +34,6 @@ public class CadastreFile extends BaseId {
     private Date updateTime;
     private Long fileSize;
     private String landRightType;
+    private String cadastreType;//地籍数据类型(1-不动产;2-自然资源)
 
 }

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

@@ -54,16 +54,16 @@ public interface CadastreFileMapper {
     /**
      * 查询当前表的所有列
      */
-    List<String> selectTableCollum(String tableName);
+    List<String> selectTableCollum(@Param("schemaName")String schemaName,@Param("tableName") String tableName);
 
-    List<Map<String,String>> selectTableCollumAndType(@Param("tableName") String tableName);
+    List<Map<String,String>> selectTableCollumAndType(@Param("schemaName") String schemaName, @Param("tableName") String tableName);
 
     List<String> selectDistinctValueByField(@Param("tableName") String tableName, @Param("fieldName") String fieldName,@Param("validFlag") String validFlag);
 
     /**
      * 查询所有表名
      */
-    List<String> selectAllTable();
+    List<String> selectAllTable(@Param("schemaName")String schemaName);
 
 
     /**
@@ -74,7 +74,7 @@ public interface CadastreFileMapper {
     int insertTableData(@Param("tableName") String tableName, @Param("data") Map<String, Object> data, @Param("shpDbSRID") Integer shpDbSRID);
 
 
-    String selectGeoms(@Param("tableName") String tableName,@Param("landRightType") String landRightType);
+    String selectGeoms(@Param("schemaName") String schemaName,@Param("tableName") String tableName,@Param("landRightType") String landRightType);
 
     /**
      * 增加valid_flag字段
@@ -83,10 +83,8 @@ public interface CadastreFileMapper {
 
     void updateValidFlag(@Param("validFlag") String validFlag, @Param("oldValidFlag") String oldValidFlag,@Param("landRightType") String landRightType, @Param("tableName") String tableName);
 
-
     void deleteByValidFlag(@Param("validFlag") String validFlag,@Param("landRightType") String landRightType,@Param("tableName") String tableName);
 
-
     Integer countByValidFlag(@Param("validFlag") String validFlag, @Param("tableName") String tableName);
 
     List<Map<String,Object>> selectTableData(@Param("validFlag") String validFlag,@Param("landRightType") String landRightType, @Param("tableName") String tableName);

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

@@ -19,13 +19,13 @@ public interface CadastreManageService {
 
     CompareResultVo getCompareData(String uploadId) ;
 
-    CadastreFile saveUploadFile(String theFileName, String theFilePath, String fileType,String updateType,String landRightType);
+    CadastreFile saveUploadFile(String theFileName, String theFilePath, String fileType,String updateType,String cadastreType,String landRightType);
 
     String addBatchGdbData(String uploadId);
 
     String addBatchMdbData(String uploadId);
 
-    CheckInfoResultVo checkFileData(String theFileName, String theFilePath, String fileType,String updateType,String landRightType);
+    CheckInfoResultVo checkFileData(String theFileName, String theFilePath, String fileType,String updateType,String cadastreType,String landRightType);
 
     /**
      * 获取列表

+ 46 - 19
siwei-modules/siwei-apply/src/main/java/com/siwei/apply/service/cadastre/impl/CadastreManageServiceImpl.java

@@ -1,6 +1,7 @@
 package com.siwei.apply.service.cadastre.impl;
 
 import com.fasterxml.jackson.databind.ObjectMapper;
+import com.siwei.apply.common.Common;
 import com.siwei.apply.domain.CadastreFile;
 import com.siwei.apply.domain.LayerAndDbData;
 import com.siwei.apply.domain.MdbAndDbData;
@@ -164,10 +165,10 @@ public class CadastreManageServiceImpl implements CadastreManageService {
                         if (checkCoordinateSystem(layer).equals(false)) {
                             throw new ServiceException(name + ":坐标系不正确,确认是否CGCS2000!");
                         }
-
                         boolean haveGeom = false;
+                        String schemaName = Common.DB_SCHEMA_NAME_VECTOR;
                         //获取字段信息
-                        List<String> dbFieldNameList = cadastreFileMapper.selectTableCollum(name.toLowerCase(Locale.ROOT));
+                        List<String> dbFieldNameList = cadastreFileMapper.selectTableCollum(schemaName,name.toLowerCase(Locale.ROOT));
                         if (dbFieldNameList.contains("geom")) {
                             haveGeom = true;
                         }
@@ -391,6 +392,13 @@ public class CadastreManageServiceImpl implements CadastreManageService {
             }
 
             fzssFxrwrzHandleService.insertFxrwrz(uploadId, "地籍库管理", "正在执行入库操作。。。", "info");
+
+            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);
@@ -398,17 +406,18 @@ public class CadastreManageServiceImpl implements CadastreManageService {
 
                 boolean haveGeom = false;
                 //获取字段信息
-                List<String> dbFieldNameList = cadastreFileMapper.selectTableCollum(layerName.toLowerCase(Locale.ROOT));
+                List<String> dbFieldNameList = cadastreFileMapper.selectTableCollum(schemaName,layerName.toLowerCase(Locale.ROOT));
                 if (dbFieldNameList.contains("geom")) {
                     haveGeom = true;
                 }
 
-                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"),
                         (existing, replacement) -> existing // 如果有重复键,保留第一个值
                 ));
+
                 List<Map<String, Object>> theValueList = getValueList(layer, dbFieldNameAndTypeMap, haveGeom);
                 fzssFxrwrzHandleService.insertFxrwrz(uploadId, "地籍库管理", "正在执行-" + layerName + "-入库", "info");
 
@@ -542,6 +551,7 @@ public class CadastreManageServiceImpl implements CadastreManageService {
             List<CompareGemoVo> gemos = new ArrayList<>();
             CadastreFile cadastreFile = cadastreFileMapper.get(uploadId);
             String landRightType = cadastreFile.getLandRightType();
+            String cadastreType = cadastreFile.getCadastreType();
 
             String gdbPath = cadastreFile.getUnzipPath();
             DataSource ds = ogr.Open(gdbPath + "/" + cadastreFile.getName(), 0); // 0 = 只读
@@ -558,7 +568,7 @@ public class CadastreManageServiceImpl implements CadastreManageService {
                 compareGemoVo.setLayerName(layerName);
                 List<String> layerGeom = getLayerGeom(layer);
                 compareGemoVo.setGeomData(layerGeom);
-                List<String> dbGeom = getDbGeom(layerName,landRightType);
+                List<String> dbGeom = getDbGeom(layerName,cadastreType,landRightType);
                 compareGemoVo.setOldGeomData(dbGeom);
                 //加入当前图层对比对象
                 gemos.add(compareGemoVo);
@@ -581,7 +591,7 @@ public class CadastreManageServiceImpl implements CadastreManageService {
      * @return
      */
     @Override
-    public CadastreFile saveUploadFile(String theFileName, String theFilePath, String fileType, String updateType,String landRightType) {
+    public CadastreFile saveUploadFile(String theFileName, String theFilePath, String fileType, String updateType,String cadastreType,String landRightType) {
         try {
             if (theFilePath == null || theFilePath.trim().isEmpty()) {
                 log.warn("处理文件失败:filePath不能为空");
@@ -657,6 +667,8 @@ public class CadastreManageServiceImpl implements CadastreManageService {
                     if (StringUtils.isNotBlank(landRightType)) {
                         cadastreFile.setLandRightType(landRightType);
                     }
+                    //地籍类型(2-自然资源局;1-不动产)
+                    cadastreFile.setCadastreType(cadastreType);
                     cadastreFile.setFileSize(fileSize);
                     cadastreFile.setStatus("0");
                     cadastreFile.setUploadUser("admin");
@@ -687,25 +699,29 @@ public class CadastreManageServiceImpl implements CadastreManageService {
      * @param theFilePath
      * @param fileType
      * @param updateType
+     * @param cadastreType 地籍数据类型(1-不动产;2-自然资源)
      * @return
      */
     @Override
-    public CheckInfoResultVo checkFileData(String theFileName, String theFilePath, String fileType, String updateType,String landRightType) {
+    public CheckInfoResultVo checkFileData(String theFileName, String theFilePath, String fileType, String updateType,String cadastreType,String landRightType) {
         CheckInfoResultVo checkInfoResult = new CheckInfoResultVo();
         checkInfoResult.setResultStatus(true);
         List<CheckInfoVo> checkInfoSuccessList = new ArrayList<>();
         List<CheckInfoVo> checkInfoFailList = new ArrayList<>();
 
-        CadastreFile uploadFile = this.saveUploadFile(theFileName, theFilePath, fileType, updateType,landRightType);
-
+        CadastreFile uploadFile = this.saveUploadFile(theFileName, theFilePath, fileType, updateType,cadastreType,landRightType);
         if (Objects.nonNull(uploadFile)) {
             //入库成功
             fzssFxrwrzHandleService.insertFxrwrz(uploadFile.getId(), "地籍库管理", "上传文件成功", "info");
             checkInfoResult.setUploadId(uploadFile.getId());
             String gdbPath = uploadFile.getUnzipPath();
             theFileName = uploadFile.getName();//这里需要使用解压处理后的文件名称进行读取
+            String schemaName = Common.DB_SCHEMA_NAME_VECTOR;
+            if(cadastreType.equals("2")){
+                schemaName = Common.DB_SCHEMA_NAME_NATURAL;
+            }
             //获取库中表名
-            List<String> allTableList = cadastreFileMapper.selectAllTable();
+            List<String> allTableList = cadastreFileMapper.selectAllTable(schemaName);
 
             //这里区分文件类型,矢量还是表格的读取方式不一样
             if (uploadFile.getFileType().equals("1")) { //矢量数据读取方式
@@ -720,7 +736,7 @@ public class CadastreManageServiceImpl implements CadastreManageService {
                     Layer layer = ds.GetLayer(i);
                     //todo 测试代码
                     //这里做质量检查
-                    CheckInfoVo checkRes = checkLayerInfo(layer, allTableList, uploadFile.getId(),landRightType);
+                    CheckInfoVo checkRes = checkLayerInfo(layer, allTableList, uploadFile.getId(),cadastreType,landRightType);
                     if (checkRes.getCheckStatus().equals(false)) { //检查出错
                         checkInfoFailList.add(checkRes);
                         checkInfoResult.setResultStatus(false);
@@ -742,7 +758,7 @@ public class CadastreManageServiceImpl implements CadastreManageService {
                             String talbleName = String.valueOf(tableMap.get("name"));
                             Map<String, Object> allMdbTableFieldMap = MdbUtil.MdbTableContent(gdbPath + "/" + theFileName, talbleName, "", "", 1, 1000);
                             //这里做质量检查
-                            CheckInfoVo checkRes = checkMdbInfo(talbleName, allTableList, allMdbTableFieldMap, uploadFile.getId(),landRightType);
+                            CheckInfoVo checkRes = checkMdbInfo(talbleName, allTableList, allMdbTableFieldMap, uploadFile.getId(),cadastreType,landRightType);
                             if (checkRes.getCheckStatus().equals(false)) { //检查出错
                                 checkInfoFailList.add(checkRes);
                                 checkInfoResult.setResultStatus(false);
@@ -775,7 +791,7 @@ public class CadastreManageServiceImpl implements CadastreManageService {
      * @param allTableList
      * @return
      */
-    private CheckInfoVo checkLayerInfo(Layer layer, List<String> allTableList, String uploadId,String landRightType) {
+    private CheckInfoVo checkLayerInfo(Layer layer, List<String> allTableList, String uploadId,String cadastreType,String landRightType) {
         //总返回对象
         CheckInfoVo checkInfoVo = new CheckInfoVo();
         checkInfoVo.setCheckStatus(true);//初始化检查通过
@@ -807,9 +823,13 @@ public class CadastreManageServiceImpl implements CadastreManageService {
             checkInfoVo.setCheckStatus(false);
         }
 
+        String schemaName = Common.DB_SCHEMA_NAME_VECTOR;
+        if(cadastreType.equals("2")){
+            schemaName = Common.DB_SCHEMA_NAME_NATURAL;
+        }
         boolean haveGeom = false;
         //获取字段信息
-        List<String> dbFieldNameList = cadastreFileMapper.selectTableCollum(name.toLowerCase(Locale.ROOT));
+        List<String> dbFieldNameList = cadastreFileMapper.selectTableCollum(schemaName,name.toLowerCase(Locale.ROOT));
         if (dbFieldNameList.contains("geom")) {
             haveGeom = true;
         }
@@ -866,7 +886,7 @@ public class CadastreManageServiceImpl implements CadastreManageService {
      * @param allTableList
      * @return
      */
-    private CheckInfoVo checkMdbInfo(String mdbTableName, List<String> allTableList, Map<String, Object> mdbTableFieldMap, String uploadId,String landRightType) {
+    private CheckInfoVo checkMdbInfo(String mdbTableName, List<String> allTableList, Map<String, Object> mdbTableFieldMap, String uploadId,String cadastreType ,String landRightType) {
         //总返回对象
         CheckInfoVo checkInfoVo = new CheckInfoVo();
         checkInfoVo.setCheckStatus(true);//初始化检查通过
@@ -889,7 +909,6 @@ public class CadastreManageServiceImpl implements CadastreManageService {
             }
         }
 
-
         //检查表名对应
         if (!allTableList.contains(mdbTableName.toLowerCase(Locale.ROOT))) {
             checkInfoList.add(mdbTableName + ":图层名称不在地籍库范围内!");
@@ -897,8 +916,12 @@ public class CadastreManageServiceImpl implements CadastreManageService {
             checkInfoVo.setCheckStatus(false);
         }
 
+        String schemaName = Common.DB_SCHEMA_NAME_VECTOR;
+        if(cadastreType.equals("2")){
+            schemaName = Common.DB_SCHEMA_NAME_NATURAL;
+        }
         //获取当前表数据库字段信息
-        List<String> dbFieldNameList = cadastreFileMapper.selectTableCollum(mdbTableName.toLowerCase(Locale.ROOT));
+        List<String> dbFieldNameList = cadastreFileMapper.selectTableCollum(schemaName,mdbTableName.toLowerCase(Locale.ROOT));
         //这里移除校验字段(非属mdb中的字段)
         dbFieldNameList.remove("valid_flag");
         // 判断是否包含相同的元素(不考虑顺序)
@@ -1259,10 +1282,14 @@ public class CadastreManageServiceImpl implements CadastreManageService {
      * @return
      */
 
-    private List<String> getDbGeom(String tableName,String landRightType) {
+    private List<String> getDbGeom(String tableName,String cadastreType,String landRightType) {
         List<String> list = new ArrayList<>();
         tableName = com.siwei.common.core.utils.StringUtils.toRootLowerCase(tableName);
-        String geomsStr = cadastreFileMapper.selectGeoms(tableName,landRightType);
+        String schemaName = Common.DB_SCHEMA_NAME_VECTOR;
+        if(cadastreType.equals("2")){
+            schemaName = Common.DB_SCHEMA_NAME_NATURAL;
+        }
+        String geomsStr = cadastreFileMapper.selectGeoms(schemaName,tableName,landRightType);
         if (StringUtils.isNotBlank(geomsStr)) {
             list = Arrays.asList(geomsStr.split("\\|"));
         }

+ 7 - 6
siwei-modules/siwei-apply/src/main/resources/mapper/cadastre/CadastreFileMapper.xml

@@ -109,7 +109,7 @@
     <select id="selectTableCollum" parameterType="String" resultType="String">
         select COLUMN_NAME FROM  information_schema.COLUMNS
         WHERE
-            table_schema = 'vector'
+            table_schema = #{schemaName}
           AND TABLE_NAME = #{tableName}
     </select>
 
@@ -117,7 +117,7 @@
     <select id="selectTableCollumAndType" parameterType="String" resultType="map">
         select COLUMN_NAME, DATA_TYPE FROM  information_schema.COLUMNS
         WHERE
-            table_schema = 'vector'
+            table_schema = #{schemaName}
           AND TABLE_NAME = #{tableName}
     </select>
 
@@ -131,12 +131,12 @@
 
     <select id="selectAllTable"  resultType="string">
         select table_name from information_schema.tables
-        where table_schema = 'vector'
+        where table_schema = #{schemaName}
     </select>
 
     <select id="selectAllTableNoView"  resultType="string">
         select table_name from information_schema.tables
-        where table_schema = 'vector'
+        where table_schema = 'natural'
     </select>
 
 
@@ -207,7 +207,7 @@
 
     <select id="selectGeoms"  resultType="string">
         SELECT array_to_string(array_agg(ST_AsEWKT(gd.geom)), '|') as "geoms"
-        from vector.${tableName} gd
+        from ${schemaName}.${tableName} gd
         <where>
             <if test="tableName=='zdjbxx'">
                 AND  gd.valid_flag = 0 AND   gd.zt IN ('1', '2')
@@ -226,8 +226,9 @@
     </select>
 
     <update id="addValidFlagColumn">
-            COMMENT ON COLUMN vector.${tableName}."valid_flag" IS '有效标识:0-当前版本,1-历史版本';
+            COMMENT ON COLUMN natural.${tableName}."valid_flag" IS '有效标识:0-当前版本,1-历史版本';
     </update>
+    
     <update id="addValidFlagColumn2">
         ALTER TABLE vector.${tableName} ADD COLUMN IF NOT EXISTS valid_flag int2
     </update>