|
@@ -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
|
|
@Override
|
|
|
public List<MdbAndDbData> getMdbCompareData(String uploadId) {
|
|
public List<MdbAndDbData> getMdbCompareData(String uploadId) {
|
|
|
List<MdbAndDbData> resList = new ArrayList<>();
|
|
List<MdbAndDbData> resList = new ArrayList<>();
|
|
@@ -1067,8 +1196,6 @@ public class CadastreManageServiceImpl implements CadastreManageService {
|
|
|
|
|
|
|
|
MdbAndDbData mdbAndDbData = new MdbAndDbData();
|
|
MdbAndDbData mdbAndDbData = new MdbAndDbData();
|
|
|
mdbAndDbData.setCurrentTableName(talbleName);
|
|
mdbAndDbData.setCurrentTableName(talbleName);
|
|
|
-
|
|
|
|
|
- boolean haveGeom = false;//这里不需要geom信息
|
|
|
|
|
List<Map<String, String>> dbFieldNameAndTypeList = cadastreFileMapper.selectTableCollumAndType(talbleName.toLowerCase(Locale.ROOT));
|
|
List<Map<String, String>> dbFieldNameAndTypeList = cadastreFileMapper.selectTableCollumAndType(talbleName.toLowerCase(Locale.ROOT));
|
|
|
Map<String, String> dbFieldNameAndTypeMap = dbFieldNameAndTypeList.stream().collect(Collectors.toMap(
|
|
Map<String, String> dbFieldNameAndTypeMap = dbFieldNameAndTypeList.stream().collect(Collectors.toMap(
|
|
|
s -> s.get("column_name"),
|
|
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, String>> theValueList = (List<Map<String, String>>) allMdbTableFieldMap.get("rows");
|
|
|
List<Map<String, Object>> dbDataList = cadastreFileMapper.selectTableData("0", talbleName);
|
|
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.setMdbFileDataList(theValueList);
|
|
|
mdbAndDbData.setDbDataList(dbDataList);
|
|
mdbAndDbData.setDbDataList(dbDataList);
|
|
|
resList.add(mdbAndDbData);
|
|
resList.add(mdbAndDbData);
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
} catch (Exception e) {
|
|
} 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;
|
|
return resList;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
+
|
|
|
}
|
|
}
|