Browse Source

mdb接口开发

chenendian 3 months ago
parent
commit
f2808b21cd

+ 145 - 10
siwei-modules/siwei-apply/src/main/java/com/siwei/apply/service/cadastre/impl/CadastreManageServiceImpl.java

@@ -149,6 +149,83 @@ public class CadastreManageServiceImpl implements CadastreManageService {
     }
 
 
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public String addBatchMdbData(String uploadId) {
+        String result = "success";
+        try {
+            CadastreFile cadastreFile = cadastreFileMapper.get(uploadId);
+            //这里判断是否校验通过
+            if (!cadastreFile.getStatus().equalsIgnoreCase("3")) {
+                log.info("校验未通过,不能入库");
+                result = "校验未通过,不能入库";
+                fzssFxrwrzHandleService.insertFxrwrz(uploadId, "地籍库管理", result, "info");
+                return result;
+            }
+
+            String gdbPath = cadastreFile.getUnzipPath();
+            List<Map<String, Object>> allMdbTableList = MdbUtil.MdbTables(gdbPath + "/" + cadastreFile.getName(), "", "");
+
+            if (allMdbTableList == null) {
+                log.warn("无法打开 mdb");
+                result = "无法打开mdb文件,不能入库";
+                fzssFxrwrzHandleService.insertFxrwrz(uploadId, "地籍库管理", result, "info");
+                return result;
+            }
+
+            fzssFxrwrzHandleService.insertFxrwrz(uploadId, "地籍库管理", "正在执行入库操作。。。", "info");
+            for (Map<String, Object> tableMap : allMdbTableList) {
+                String talbleName = String.valueOf(tableMap.get("name"));
+                if (
+                        !talbleName.equalsIgnoreCase("City") &&
+                                !talbleName.equalsIgnoreCase("XZQ")
+                ) {
+                    continue;
+                }
+
+                //List<Map<String, Object>> theValueList = getValueList(layer, dbFieldNameAndTypeMap, haveGeom);
+                Map<String, Object> allMdbTableFieldMap = MdbUtil.MdbTableContent(gdbPath + "/" + cadastreFile.getName(), talbleName, "", "", 1, 1000);
+                List<Map<String, Object>> theValueList = (List<Map<String, Object>>) allMdbTableFieldMap.get("rows");
+
+                fzssFxrwrzHandleService.insertFxrwrz(uploadId, "地籍库管理", "正在执行-" + talbleName + "-入库", "info");
+                //这里直接数据入库,区分增量或者全量
+                Boolean addRes;
+                if ("2".equalsIgnoreCase(cadastreFile.getReadStatus())) {
+                    //增量更新
+                    addRes = incrementDataStorage(talbleName, theValueList);
+                    if (addRes.equals(true)) {
+                        fzssFxrwrzHandleService.insertFxrwrz(uploadId, "地籍库管理", "增量更新-" + talbleName + "-成功", "info");
+                    }
+                } else {
+                    addRes = fullDataStorage(talbleName, theValueList);
+                    if (addRes.equals(true)) {
+                        fzssFxrwrzHandleService.insertFxrwrz(uploadId, "地籍库管理", "增量更新-" + talbleName + "-成功", "info");
+                    }
+                }
+                log.error("当前属性名{},入库结果 {}", talbleName, addRes);
+            }
+            //成功则更新状态
+            CadastreFile updateCadastreFile = new CadastreFile();
+            updateCadastreFile.setId(cadastreFile.getId());
+            updateCadastreFile.setStatus("1");//入库成功
+            updateCadastreFile.setReadMessage("入库成功");//入库成功
+            cadastreFileMapper.update(updateCadastreFile);
+            fzssFxrwrzHandleService.insertFxrwrz(uploadId, "地籍库管理", "当前批次-" + cadastreFile.getId() + "-入库成功", "info");
+        } catch (Exception e) {
+            log.error("mdb表格数据入库异常,uploadId: {}", uploadId, e);
+            //更新状态
+            CadastreFile updateCadastreFile = new CadastreFile();
+            updateCadastreFile.setId(uploadId);
+            updateCadastreFile.setStatus("2");//入库成功
+            updateCadastreFile.setReadMessage("入库失败");//入库成功
+            cadastreFileMapper.update(updateCadastreFile);
+            fzssFxrwrzHandleService.insertFxrwrz(uploadId, "地籍库管理", "当前批次-" + uploadId + "-入库失败", "info");
+            throw new ServiceException("矢量数据入库异常," + e.getMessage());
+        }
+        return result;
+    }
+
+
     /**
      * 获取比较数据
      *
@@ -1043,6 +1120,58 @@ public class CadastreManageServiceImpl implements CadastreManageService {
     }
 
 
+    /**
+     * 获取表格数据进行对比
+     * @param uploadId
+     * @return
+     */
+    @Override
+    public List<LayerAndDbData> getMdbPropertyData(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();
+            List<Map<String, Object>> allMdbTableList = MdbUtil.MdbTables(gdbPath + "/" + cadastreFile.getName(), "", "");
+
+            for (Map<String, Object> tableMap : allMdbTableList) {
+                String talbleName = String.valueOf(tableMap.get("name"));
+                if (
+                        !talbleName.equalsIgnoreCase("City") &&
+                                !talbleName.equalsIgnoreCase("XZQ")
+                ) {
+                    continue;
+                }
+
+                LayerAndDbData layerAndDbData = new LayerAndDbData();
+                layerAndDbData.setCurrentTableName(talbleName);
+
+                Map<String, Object> allMdbTableFieldMap = MdbUtil.MdbTableContent(gdbPath + "/" + cadastreFile.getName(), talbleName, "", "", 1, 1000);
+                List<Map<String, Object>> theValueList = (List<Map<String, Object>>) allMdbTableFieldMap.get("rows");
+                List<Map<String, Object>> dbDataList = cadastreFileMapper.selectTableData("0", talbleName);
+
+                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;
+    }
+
+
+
+
+
     @Override
     public List<MdbAndDbData> getMdbCompareData(String uploadId) {
         List<MdbAndDbData> resList = new ArrayList<>();
@@ -1067,8 +1196,6 @@ public class CadastreManageServiceImpl implements CadastreManageService {
 
                 MdbAndDbData mdbAndDbData = new MdbAndDbData();
                 mdbAndDbData.setCurrentTableName(talbleName);
-
-                boolean haveGeom = false;//这里不需要geom信息
                 List<Map<String, String>> dbFieldNameAndTypeList = cadastreFileMapper.selectTableCollumAndType(talbleName.toLowerCase(Locale.ROOT));
                 Map<String, String> dbFieldNameAndTypeMap = dbFieldNameAndTypeList.stream().collect(Collectors.toMap(
                         s -> s.get("column_name"),
@@ -1080,23 +1207,31 @@ public class CadastreManageServiceImpl implements CadastreManageService {
                 List<Map<String, String>> theValueList = (List<Map<String, String>>) allMdbTableFieldMap.get("rows");
                 List<Map<String, Object>> dbDataList = cadastreFileMapper.selectTableData("0", talbleName);
 
+                //这里进行遍历dbDataList,判断是否存在bsm字段,且bsm字段是否存在于theValueList中
+                Set<String> mdbBsmSet = theValueList.stream()
+                        .map(v -> v.get("bsm"))
+                        .filter(bsm -> bsm != null)
+                        .map(String::valueOf)
+                        .collect(Collectors.toSet());
+
+                dbDataList.stream()
+                        .filter(dbData -> {
+                            Object bsmObj = dbData.get("bsm");
+                            return bsmObj != null && mdbBsmSet.contains(String.valueOf(bsmObj));
+                        })
+                        .forEach(dbData -> dbData.put("valid_flag", 100));
 
                 mdbAndDbData.setMdbFileDataList(theValueList);
                 mdbAndDbData.setDbDataList(dbDataList);
                 resList.add(mdbAndDbData);
-
-
             }
-
-
         } catch (Exception e) {
-            log.error("矢量数据入库异常,uploadId: {}", uploadId, e);
-            throw new ServiceException("矢量数据入库异常," + e.getMessage());
+            log.error("获取mdb对比数据异常,uploadId: {}", uploadId, e);
+            throw new ServiceException("获取mdb对比数据异常," + e.getMessage());
         }
-
-
         return resList;
     }
 
 
+
 }