|
|
@@ -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("\\|"));
|
|
|
}
|