|
|
@@ -318,6 +318,8 @@ public class CadastreManageServiceImpl implements CadastreManageService {
|
|
|
checkInfoResult.setUploadId(uploadFile.getId());
|
|
|
String gdbPath = uploadFile.getUnzipPath();
|
|
|
theFileName = uploadFile.getName();//这里需要使用解压处理后的文件名称进行读取
|
|
|
+ //获取库中表名
|
|
|
+ List<String> allTableList = cadastreFileMapper.selectAllTable();
|
|
|
|
|
|
//这里区分文件类型,矢量还是表格的读取方式不一样
|
|
|
if(uploadFile.getFileType().equals("1")) { //矢量数据读取方式
|
|
|
@@ -327,8 +329,6 @@ public class CadastreManageServiceImpl implements CadastreManageService {
|
|
|
return checkInfoResult;
|
|
|
}
|
|
|
log.info("图层数量: {}", ds.GetLayerCount());
|
|
|
- //获取库中表名
|
|
|
- List<String> allTableList = cadastreFileMapper.selectAllTable();
|
|
|
//这里进行遍历每个图层
|
|
|
for (int i = 0; i < ds.GetLayerCount(); i++) {
|
|
|
Layer layer = ds.GetLayer(i);
|
|
|
@@ -356,23 +356,36 @@ public class CadastreManageServiceImpl implements CadastreManageService {
|
|
|
}
|
|
|
ds.delete();
|
|
|
} else if (uploadFile.getFileType().equals("2")) {//处理表格类型
|
|
|
-
|
|
|
try {
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
- MdbUtil.MdbTables(gdbPath + "/" + theFileName, "", "");
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
+ List<Map<String, Object>> allMdbTableList = MdbUtil.MdbTables(gdbPath + "/" + theFileName, "", "");
|
|
|
+ if(CollectionUtils.isNotEmpty(allTableList)) {
|
|
|
+ for (Map<String, Object> tableMap : allMdbTableList) {
|
|
|
+ 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());
|
|
|
+ if (checkRes.getCheckStatus().equals(false)) { //检查出错
|
|
|
+ checkInfoFailList.add(checkRes);
|
|
|
+ checkInfoResult.setResultStatus(false);
|
|
|
+ } else if (checkRes.getCheckStatus().equals(true)) {
|
|
|
+ //成功则更新文件上传状态
|
|
|
+ CadastreFile cadastreFile = new CadastreFile();
|
|
|
+ cadastreFile.setId(uploadFile.getId());
|
|
|
+ cadastreFile.setStatus("3");//校验通过
|
|
|
+ cadastreFileMapper.update(cadastreFile);
|
|
|
+ checkInfoSuccessList.add(checkRes);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
} catch (Exception e) {
|
|
|
- throw new ServiceException("可能入库失败或没有历史版本,无法回退");
|
|
|
+ log.error("表格数据校验异常,uploadId: {}", uploadFile.getId(), e);
|
|
|
+ throw new ServiceException("表格数据校验异常,uploadId:"+uploadFile.getId());
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
checkInfoResult.setCheckFailList(checkInfoFailList);
|
|
|
checkInfoResult.setCheckSuccessList(checkInfoSuccessList);
|
|
|
}
|
|
|
@@ -380,6 +393,10 @@ public class CadastreManageServiceImpl implements CadastreManageService {
|
|
|
}
|
|
|
|
|
|
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
/**
|
|
|
* 对每个图层进行数据格式校验
|
|
|
*
|
|
|
@@ -457,6 +474,76 @@ public class CadastreManageServiceImpl implements CadastreManageService {
|
|
|
}
|
|
|
|
|
|
|
|
|
+ /**
|
|
|
+ *
|
|
|
+ * 对表格属性数据进行数据格式校验
|
|
|
+ *
|
|
|
+ * @param mdbTableName
|
|
|
+ * @param allTableList
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ private CheckInfoVo checkMdbInfo(String mdbTableName, List<String> allTableList,Map<String, Object> mdbTableFieldMap ,String uploadId) {
|
|
|
+ //总返回对象
|
|
|
+ CheckInfoVo checkInfoVo = new CheckInfoVo();
|
|
|
+ checkInfoVo.setCheckStatus(true);//初始化检查通过
|
|
|
+ List<String> checkInfoList = new ArrayList<>();
|
|
|
+ checkInfoVo.setUploadFileTableName(mdbTableName);
|
|
|
+
|
|
|
+ //字段名称
|
|
|
+ List<String> mdbTableFieldNameList = (List<String>) mdbTableFieldMap.get("column");
|
|
|
+ //所有条数
|
|
|
+ List<Map<String, String>> dataList = (List<Map<String, String>>) mdbTableFieldMap.get("rows");
|
|
|
+
|
|
|
+ //检查表名对应
|
|
|
+ if (!allTableList.contains(mdbTableName.toLowerCase(Locale.ROOT))) {
|
|
|
+ checkInfoList.add(mdbTableName + ":图层名称不在地籍库范围内!");
|
|
|
+ fzssFxrwrzHandleService.insertFxrwrz(uploadId, "地籍库管理", mdbTableName + ":图层名称不在地籍库范围内!", "info");
|
|
|
+ checkInfoVo.setCheckStatus(false);
|
|
|
+ }
|
|
|
+
|
|
|
+ //获取当前表数据库字段信息
|
|
|
+ List<String> dbFieldNameList = cadastreFileMapper.selectTableCollum(mdbTableName.toLowerCase(Locale.ROOT));
|
|
|
+ //这里移除校验字段(非属mdb中的字段)
|
|
|
+ dbFieldNameList.remove("valid_flag");
|
|
|
+ // 判断是否包含相同的元素(不考虑顺序)
|
|
|
+ boolean areCollectionsEqual = CollectionUtils.isEqualCollection(dbFieldNameList, mdbTableFieldNameList);
|
|
|
+ if (!areCollectionsEqual) {
|
|
|
+ checkInfoList.add(mdbTableName + ":字段数据不一致!-" + dbFieldNameList);
|
|
|
+ fzssFxrwrzHandleService.insertFxrwrz(uploadId, "地籍库管理", mdbTableName + ":字段数据不一致!-" + dbFieldNameList, "info");
|
|
|
+ checkInfoVo.setCheckStatus(false);
|
|
|
+ }
|
|
|
+
|
|
|
+ //检查字段数据是否为空
|
|
|
+ //todo 这里根据表名获取相关校验字段信息
|
|
|
+ List<String> checkFieldList = new ArrayList<>();
|
|
|
+ //checkFieldList.add("111");
|
|
|
+ //checkFieldList.add("bz");
|
|
|
+
|
|
|
+ for (Map<String,String> theMap : dataList) {
|
|
|
+ for (String fieldName : checkFieldList) {
|
|
|
+ if (Objects.isNull(theMap.get(fieldName))) {
|
|
|
+ checkInfoList.add(mdbTableName + "--" + fieldName + "字段不能为空!");
|
|
|
+ checkInfoVo.setCheckStatus(false);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ checkInfoVo.setCheckInfoList(checkInfoList);
|
|
|
+ if(checkInfoVo.getCheckStatus().equals(true)){
|
|
|
+ checkInfoList.add("当前矢量数据:"+mdbTableName + "---" + "数据格式为gdb");
|
|
|
+ checkInfoList.add("当前矢量数据:"+mdbTableName + "---" + "坐标系是CGCS2000");
|
|
|
+ checkInfoList.add("当前矢量数据:"+mdbTableName + "---" + "检查校验通过!");
|
|
|
+ fzssFxrwrzHandleService.insertFxrwrz(uploadId, "地籍库管理", "当前矢量数据:"+mdbTableName + "---" + "数据格式为gdb", "info");
|
|
|
+ fzssFxrwrzHandleService.insertFxrwrz(uploadId, "地籍库管理", "当前矢量数据:"+mdbTableName + "---" + "坐标系是CGCS2000", "info");
|
|
|
+ fzssFxrwrzHandleService.insertFxrwrz(uploadId, "地籍库管理", "当前矢量数据:"+mdbTableName + "---" + "检查校验通过!", "info");
|
|
|
+ }
|
|
|
+ return checkInfoVo;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
/**
|
|
|
* 获取当前图层的所有属性字段名
|
|
|
*
|