|
|
@@ -77,7 +77,7 @@ public class CadastreManageServiceImpl implements CadastreManageService {
|
|
|
|
|
|
/**
|
|
|
* 解压文件并且根据情况进行拆分或合并的处理
|
|
|
- * @param 上传文件名
|
|
|
+ * @param
|
|
|
* @param theFilePath 文件路径
|
|
|
* @param landRightType 宗地权利类型
|
|
|
* @param landChangeMode 宗地变更模式
|
|
|
@@ -189,8 +189,7 @@ public class CadastreManageServiceImpl implements CadastreManageService {
|
|
|
// 2.写一个方法,通过交集求出变化和变更多少条
|
|
|
// 3. a.合并情况,假定excel中3条数据,先遍历excel 然后,每条数据key-然后求所有交集得到id 分组。
|
|
|
// 每一条数据获取到其 ewkt,然后进行,库中取查询,查询出所包含的数据的id
|
|
|
-
|
|
|
- List<Map<String, String>> dbFieldNameAndTypeList = cadastreFileMapper.selectTableCollumAndType(name.toLowerCase(Locale.ROOT));
|
|
|
+ List<Map<String, String>> dbFieldNameAndTypeList = cadastreFileMapper.selectTableCollumAndType(schemaName,name.toLowerCase(Locale.ROOT));
|
|
|
Map<String, String> dbFieldNameAndTypeMap = dbFieldNameAndTypeList.stream().collect(Collectors.toMap(
|
|
|
s -> s.get("column_name"),
|
|
|
s -> s.get("data_type"),
|
|
|
@@ -427,12 +426,12 @@ public class CadastreManageServiceImpl implements CadastreManageService {
|
|
|
//这里直接数据入库,区分增量或者全量
|
|
|
if ("2".equalsIgnoreCase(cadastreFile.getReadStatus())) {
|
|
|
//增量更新
|
|
|
- addRes = incrementDataStorage(landRightType,layerName, theValueList);
|
|
|
+ addRes = incrementDataStorage(landRightType,schemaName,layerName, theValueList);
|
|
|
if (addRes.equals(true)) {
|
|
|
fzssFxrwrzHandleService.insertFxrwrz(uploadId, "地籍库管理", "增量更新-" + layerName + "-成功", "info");
|
|
|
}
|
|
|
} else {
|
|
|
- addRes = fullDataStorage(landRightType,layerName, theValueList);
|
|
|
+ addRes = fullDataStorage(landRightType,schemaName,layerName, theValueList);
|
|
|
if (addRes.equals(true)) {
|
|
|
fzssFxrwrzHandleService.insertFxrwrz(uploadId, "地籍库管理", "增量更新-" + layerName + "-成功", "info");
|
|
|
}
|
|
|
@@ -488,6 +487,14 @@ public class CadastreManageServiceImpl implements CadastreManageService {
|
|
|
//如果是宗地需要区分权利类型(1.使用权数据,2.所有权数据)
|
|
|
String landRightType = cadastreFile.getLandRightType();
|
|
|
|
|
|
+ String cadastreType = cadastreFile.getCadastreType();
|
|
|
+ String schemaName = Common.DB_SCHEMA_NAME_VECTOR;
|
|
|
+ if(cadastreType.equals("2")){
|
|
|
+ schemaName = Common.DB_SCHEMA_NAME_NATURAL;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
for (Map<String, Object> tableMap : allMdbTableList) {
|
|
|
String talbleName = String.valueOf(tableMap.get("name"));
|
|
|
Map<String, Object> allMdbTableFieldMap = MdbUtil.MdbTableContent(gdbPath + "/" + cadastreFile.getName(), talbleName, "", "", 1, 1000);
|
|
|
@@ -496,12 +503,12 @@ public class CadastreManageServiceImpl implements CadastreManageService {
|
|
|
fzssFxrwrzHandleService.insertFxrwrz(uploadId, "地籍库管理", "正在执行-" + talbleName + "-入库", "info");
|
|
|
Boolean addRes;
|
|
|
if ("2".equalsIgnoreCase(cadastreFile.getReadStatus())) {
|
|
|
- addRes = incrementDataStorage(landRightType,talbleName, theValueList);
|
|
|
+ addRes = incrementDataStorage(landRightType,schemaName,talbleName, theValueList);
|
|
|
if (addRes.equals(true)) {
|
|
|
fzssFxrwrzHandleService.insertFxrwrz(uploadId, "地籍库管理", "增量更新-" + talbleName + "-成功", "info");
|
|
|
}
|
|
|
} else {
|
|
|
- addRes = fullDataStorage(landRightType,talbleName, theValueList);
|
|
|
+ addRes = fullDataStorage(landRightType,schemaName,talbleName, theValueList);
|
|
|
if (addRes.equals(true)) {
|
|
|
fzssFxrwrzHandleService.insertFxrwrz(uploadId, "地籍库管理", "全量更新-" + talbleName + "-成功", "info");
|
|
|
}
|
|
|
@@ -1297,6 +1304,8 @@ public class CadastreManageServiceImpl implements CadastreManageService {
|
|
|
}
|
|
|
|
|
|
|
|
|
+
|
|
|
+
|
|
|
/**
|
|
|
* 这里需要开启事务
|
|
|
* 数据全量入库
|
|
|
@@ -1306,11 +1315,12 @@ public class CadastreManageServiceImpl implements CadastreManageService {
|
|
|
* @return
|
|
|
*/
|
|
|
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
|
|
|
- public Boolean fullDataStorage(String landRightType,String tableName, List<Map<String, Object>> theValueList) {
|
|
|
+ public Boolean fullDataStorage(String landRightType,String schemaName,String tableName, List<Map<String, Object>> theValueList) {
|
|
|
boolean addRes = false;
|
|
|
Integer shpDbSRID = 4326;
|
|
|
+
|
|
|
if (!CollectionUtils.isEmpty(theValueList)) {
|
|
|
- List<String> dbFieldNameList = cadastreFileMapper.selectTableCollum(tableName.toLowerCase());
|
|
|
+ List<String> dbFieldNameList = cadastreFileMapper.selectTableCollum(schemaName,tableName.toLowerCase());
|
|
|
theValueList = theValueList.stream().map(source -> {
|
|
|
Map<String, Object> newMap = new HashMap<>();
|
|
|
for (String dbLowField : dbFieldNameList) {
|
|
|
@@ -1325,7 +1335,7 @@ public class CadastreManageServiceImpl implements CadastreManageService {
|
|
|
return newMap;
|
|
|
}).collect(Collectors.toList());
|
|
|
|
|
|
- List<Map<String, String>> dbFieldNameAndTypeList = cadastreFileMapper.selectTableCollumAndType(tableName.toLowerCase(Locale.ROOT));
|
|
|
+ List<Map<String, String>> dbFieldNameAndTypeList = cadastreFileMapper.selectTableCollumAndType(schemaName,tableName.toLowerCase(Locale.ROOT));
|
|
|
Map<String, String> columnTypeMap = new LinkedHashMap<>();
|
|
|
for (Map<String, String> col : dbFieldNameAndTypeList) {
|
|
|
columnTypeMap.put(col.get("column_name"), col.get("data_type"));
|
|
|
@@ -1485,11 +1495,11 @@ public class CadastreManageServiceImpl implements CadastreManageService {
|
|
|
* @return
|
|
|
*/
|
|
|
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
|
|
|
- public Boolean incrementDataStorage(String landRightType ,String tableName, List<Map<String, Object>> theValueList) {
|
|
|
+ public Boolean incrementDataStorage(String landRightType ,String schemaName , String tableName, List<Map<String, Object>> theValueList) {
|
|
|
boolean addRes = false;
|
|
|
Integer shpDbSRID = 4326;
|
|
|
if (!CollectionUtils.isEmpty(theValueList)) {
|
|
|
- List<Map<String, String>> dbFieldNameAndTypeList = cadastreFileMapper.selectTableCollumAndType(tableName.toLowerCase(Locale.ROOT));
|
|
|
+ List<Map<String, String>> dbFieldNameAndTypeList = cadastreFileMapper.selectTableCollumAndType(schemaName,tableName.toLowerCase(Locale.ROOT));
|
|
|
Map<String, String> columnTypeMap = new LinkedHashMap<>();
|
|
|
for (Map<String, String> col : dbFieldNameAndTypeList) {
|
|
|
columnTypeMap.put(col.get("column_name"), col.get("data_type"));
|
|
|
@@ -1694,6 +1704,13 @@ public class CadastreManageServiceImpl implements CadastreManageService {
|
|
|
log.warn("无法打开 gdb");
|
|
|
throw new ServiceException("无法打开 gdb");
|
|
|
}
|
|
|
+
|
|
|
+ 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);
|
|
|
@@ -1702,7 +1719,7 @@ public class CadastreManageServiceImpl implements CadastreManageService {
|
|
|
layerAndDbData.setCurrentTableName(layerName);
|
|
|
|
|
|
boolean haveGeom = false;//这里不需要geom信息
|
|
|
- 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"),
|
|
|
@@ -1785,11 +1802,16 @@ public class CadastreManageServiceImpl implements CadastreManageService {
|
|
|
String gdbPath = cadastreFile.getUnzipPath();
|
|
|
List<Map<String, Object>> allMdbTableList = MdbUtil.MdbTables(gdbPath + "/" + cadastreFile.getName(), "", "");
|
|
|
|
|
|
+ String cadastreType = cadastreFile.getCadastreType();
|
|
|
+ String schemaName = Common.DB_SCHEMA_NAME_VECTOR;
|
|
|
+ if(cadastreType.equals("2")){
|
|
|
+ schemaName = Common.DB_SCHEMA_NAME_NATURAL;
|
|
|
+ }
|
|
|
for (Map<String, Object> tableMap : allMdbTableList) {
|
|
|
String talbleName = String.valueOf(tableMap.get("name"));
|
|
|
MdbAndDbData mdbAndDbData = new MdbAndDbData();
|
|
|
mdbAndDbData.setCurrentTableName(talbleName);
|
|
|
- List<Map<String, String>> dbFieldNameAndTypeList = cadastreFileMapper.selectTableCollumAndType(talbleName.toLowerCase(Locale.ROOT));
|
|
|
+ List<Map<String, String>> dbFieldNameAndTypeList = cadastreFileMapper.selectTableCollumAndType(schemaName,talbleName.toLowerCase(Locale.ROOT));
|
|
|
Map<String, String> dbFieldNameAndTypeMap = dbFieldNameAndTypeList.stream().collect(Collectors.toMap(
|
|
|
s -> s.get("column_name"),
|
|
|
s -> s.get("data_type"),
|
|
|
@@ -1846,8 +1868,14 @@ public class CadastreManageServiceImpl implements CadastreManageService {
|
|
|
ywh = ywh.replaceAll("=(\\d+)", "='$1'");
|
|
|
}
|
|
|
List<Map<String,Object>> res = cadastreFileMapper.selectTableDataByCondition(validFlag,tableName,bsm,ywh,!pageQuery);
|
|
|
+
|
|
|
+ String schemaName = Common.DB_SCHEMA_NAME_VECTOR;
|
|
|
+ if("1".equals("2")){
|
|
|
+ schemaName = Common.DB_SCHEMA_NAME_NATURAL;
|
|
|
+ }
|
|
|
+
|
|
|
if(CollectionUtils.isNotEmpty(res)){ //去掉geom字段和valid_flag字段
|
|
|
- List<Map<String, String>> dbFieldNameAndTypeList = cadastreFileMapper.selectTableCollumAndType(tableName.toLowerCase(Locale.ROOT));
|
|
|
+ List<Map<String, String>> dbFieldNameAndTypeList = cadastreFileMapper.selectTableCollumAndType(schemaName,tableName.toLowerCase(Locale.ROOT));
|
|
|
List<Object> filterCollumList = dbFieldNameAndTypeList.stream().filter(s->s.get("data_type").equals("bytea")).map(s->s.get("column_name")).collect(Collectors.toList());
|
|
|
filterCollumList.add("valid_flag");
|
|
|
//res.forEach(m -> m.keySet().removeIf(k -> "valid_flag".equalsIgnoreCase(k)));
|
|
|
@@ -1876,7 +1904,11 @@ public class CadastreManageServiceImpl implements CadastreManageService {
|
|
|
|
|
|
@Override
|
|
|
public List<String> getTableFields(String tableName) {
|
|
|
- List<String> res = cadastreFileMapper.selectTableCollum(tableName);
|
|
|
+ String schemaName = Common.DB_SCHEMA_NAME_VECTOR;
|
|
|
+ if("1".equals("2")){
|
|
|
+ schemaName = Common.DB_SCHEMA_NAME_NATURAL;
|
|
|
+ }
|
|
|
+ List<String> res = cadastreFileMapper.selectTableCollum(schemaName,tableName);
|
|
|
res.remove("valid_flag");
|
|
|
res.remove("geom");
|
|
|
return res;
|
|
|
@@ -1886,7 +1918,12 @@ public class CadastreManageServiceImpl implements CadastreManageService {
|
|
|
public List<String> getDistinctValueByField(String tableName,String fieldName) {
|
|
|
List<String> res = new ArrayList<>();
|
|
|
String validFlag =null;
|
|
|
- List<String> collumList = cadastreFileMapper.selectTableCollum(tableName);
|
|
|
+
|
|
|
+ String schemaName = Common.DB_SCHEMA_NAME_VECTOR;
|
|
|
+ if("1".equals("2")){
|
|
|
+ schemaName = Common.DB_SCHEMA_NAME_NATURAL;
|
|
|
+ }
|
|
|
+ List<String> collumList = cadastreFileMapper.selectTableCollum(schemaName,tableName);
|
|
|
if(!collumList.contains(fieldName)){
|
|
|
return res;
|
|
|
}
|
|
|
@@ -1972,7 +2009,7 @@ public class CadastreManageServiceImpl implements CadastreManageService {
|
|
|
public void testBuildMdbFile(String tableName, String filePath, String fileName) {
|
|
|
try {
|
|
|
// 1. 获取表字段及类型信息
|
|
|
- List<Map<String, String>> columns = cadastreFileMapper.selectTableCollumAndType(tableName);
|
|
|
+ List<Map<String, String>> columns = cadastreFileMapper.selectTableCollumAndType("",tableName);
|
|
|
if (columns == null || columns.isEmpty()) {
|
|
|
log.warn("无法获取表字段信息: {}", tableName);
|
|
|
throw new ServiceException("无法获取表字段信息: "+tableName);
|