|
|
@@ -1,5 +1,6 @@
|
|
|
package com.siwei.apply.service.impl;
|
|
|
|
|
|
+import com.siwei.apply.common.Common;
|
|
|
import com.siwei.apply.common.Constant;
|
|
|
import com.siwei.apply.domain.Converge;
|
|
|
import com.siwei.apply.domain.res.ConvergeRes;
|
|
|
@@ -74,6 +75,8 @@ import static com.siwei.apply.common.Constant.ZD_PROPERTY_TABLE_LIST;
|
|
|
@Service
|
|
|
public class ConvergeServiceImpl implements ConvergeService {
|
|
|
|
|
|
+ private static final ThreadLocal<String> CURRENT_SCHEMA_NAME = new ThreadLocal<>();
|
|
|
+
|
|
|
///home/siwei/uploadPath/converge/
|
|
|
@Value("${converge_dir}")
|
|
|
private String convergedir;
|
|
|
@@ -241,6 +244,18 @@ public class ConvergeServiceImpl implements ConvergeService {
|
|
|
log.warn("类型错误:"+type);
|
|
|
throw new ServiceException("汇交入参,类型错误"+type);
|
|
|
}
|
|
|
+
|
|
|
+ String schemaName = "";
|
|
|
+ if(type.equals("2")){
|
|
|
+ schemaName = Common.DB_SCHEMA_NAME_NATURAL;
|
|
|
+ }else if(type.equals("1")){
|
|
|
+ schemaName = Common.DB_SCHEMA_NAME_VECTOR;
|
|
|
+ }
|
|
|
+ CURRENT_SCHEMA_NAME.set(schemaName);
|
|
|
+
|
|
|
+ // 且每次调用都需要执行相同的逻辑,
|
|
|
+ // 那么可以考虑将这个逻辑提取出来,封装成一个独立的方法B,然后在A方法中调用B方法。这样可以提高代码的复用性和可维护性。
|
|
|
+
|
|
|
if (StringUtils.isBlank(batch)) {
|
|
|
batch = DateUtils.dateTimeNow(DateUtils.YYYYMMDDHHMMSS);
|
|
|
//batch = "123";
|
|
|
@@ -265,13 +280,16 @@ public class ConvergeServiceImpl implements ConvergeService {
|
|
|
//这里进行数据汇交(异步执行)
|
|
|
ExecutorService executor = Executors.newSingleThreadExecutor();
|
|
|
CompletableFuture<Object> future = CompletableFuture.supplyAsync(()-> {
|
|
|
+
|
|
|
+
|
|
|
//-------------------------------------------------
|
|
|
List<ConvergeRes> convergeTableList = new ArrayList<>();
|
|
|
Arrays.stream(ConvergeTableEnum.values()).forEach(e -> {
|
|
|
String tableName = e.getTableName();
|
|
|
List<Map<String,Object>> tableDataList = cadastreFileMapper.selectTableData("","",tableName);
|
|
|
if(CollectionUtils.isNotEmpty(tableDataList)){
|
|
|
- List<Map<String,String>> tableFieldList = cadastreFileMapper.selectTableCollumAndType(tableName);
|
|
|
+ String currentSchemaName = CURRENT_SCHEMA_NAME.get(); //获取当前线程的schemaName
|
|
|
+ List<Map<String,String>> tableFieldList = cadastreFileMapper.selectTableCollumAndType(currentSchemaName,tableName);
|
|
|
int convergeType = 2;
|
|
|
//如果当前表存在geom 字段,视同为矢量
|
|
|
if(tableFieldList.stream().anyMatch(s->s.get("column_name").equals("geom"))){
|
|
|
@@ -374,7 +392,7 @@ public class ConvergeServiceImpl implements ConvergeService {
|
|
|
convergeResTmp.setType(2);
|
|
|
subConvergeTableList.add(convergeResTmp);
|
|
|
|
|
|
- for(String tableName : Constant.ZD_PROPERTY_TABLE_LIST){
|
|
|
+ for(String tableName : ZD_PROPERTY_TABLE_LIST){
|
|
|
//这里处理所有属性数据(实现一个方法,把)遍历循环
|
|
|
ConvergeRes otherTableConvergeResTmp = getOtherTableDataList(tableName, convergeResTmp);
|
|
|
if(Objects.nonNull(otherTableConvergeResTmp)){
|
|
|
@@ -503,7 +521,7 @@ public class ConvergeServiceImpl implements ConvergeService {
|
|
|
convergeResTmp.setType(2);
|
|
|
subConvergeTableList.add(convergeResTmp);
|
|
|
|
|
|
- for(String tableName : Constant.ZD_PROPERTY_TABLE_LIST){
|
|
|
+ for(String tableName : ZD_PROPERTY_TABLE_LIST){
|
|
|
//这里处理所有属性数据(实现一个方法,把)遍历循环
|
|
|
ConvergeRes otherTableConvergeResTmp = getOtherTableDataList(tableName, convergeResTmp);
|
|
|
if(Objects.nonNull(otherTableConvergeResTmp)){
|
|
|
@@ -634,7 +652,7 @@ public class ConvergeServiceImpl implements ConvergeService {
|
|
|
convergeResTmp.setType(2);
|
|
|
subConvergeTableList.add(convergeResTmp);
|
|
|
|
|
|
- for(String tableName : Constant.ZD_PROPERTY_TABLE_LIST){
|
|
|
+ for(String tableName : ZD_PROPERTY_TABLE_LIST){
|
|
|
//这里处理所有属性数据(实现一个方法,把)遍历循环
|
|
|
ConvergeRes otherTableConvergeResTmp = getOtherTableDataList(tableName, convergeResTmp);
|
|
|
if(Objects.nonNull(otherTableConvergeResTmp)){
|
|
|
@@ -970,7 +988,7 @@ public class ConvergeServiceImpl implements ConvergeService {
|
|
|
} else if (dataType.contains("numeric") || dataType.contains("decimal") || dataType.contains("double") || dataType.contains("float") || dataType.contains("real")) {
|
|
|
return Double.class;
|
|
|
} else if (dataType.contains("date") || dataType.contains("time")) {
|
|
|
- return java.util.Date.class;
|
|
|
+ return Date.class;
|
|
|
} else if (dataType.contains("boolean")) {
|
|
|
return Boolean.class;
|
|
|
}
|
|
|
@@ -1024,6 +1042,8 @@ public class ConvergeServiceImpl implements ConvergeService {
|
|
|
*/
|
|
|
public ConvergeRes getOtherTableDataList(String tableName , ConvergeRes convergeRes) {
|
|
|
ConvergeRes resultConvergeRes = null;
|
|
|
+ //获取当前schema
|
|
|
+ String schemaName = CURRENT_SCHEMA_NAME.get();
|
|
|
List<Map<String, Object>> paramDataList = convergeRes.getDataList();
|
|
|
List<String> zddmList = paramDataList.stream().map(s->s.get("zddm")).filter(Objects::nonNull).map(String::valueOf).collect(Collectors.toList());
|
|
|
List<String> bdcdyhList = paramDataList.stream().map(s->s.get("bdcdyh")).filter(Objects::nonNull).map(String::valueOf).collect(Collectors.toList());
|
|
|
@@ -1041,7 +1061,7 @@ public class ConvergeServiceImpl implements ConvergeService {
|
|
|
List<Map<String, Object>> dataList = cadastreFileMapper.selectTableDataByZDDMorBDCDYH("",tableName,zddmList,zddmKey,bdcdyhList);
|
|
|
log.info("查询当前表-》{} 数据结果: {}", tableName, CollectionUtils.isEmpty(dataList) ? "无数据" : dataList.size() + " 条数据");
|
|
|
if(CollectionUtils.isNotEmpty(dataList)){
|
|
|
- List<Map<String,String>> tableFieldList = cadastreFileMapper.selectTableCollumAndType(tableName);
|
|
|
+ List<Map<String,String>> tableFieldList = cadastreFileMapper.selectTableCollumAndType(schemaName,tableName);
|
|
|
resultConvergeRes = new ConvergeRes();
|
|
|
resultConvergeRes.setType(convergeRes.getType());
|
|
|
resultConvergeRes.setFilePath(convergeRes.getFilePath());
|
|
|
@@ -1057,4 +1077,6 @@ public class ConvergeServiceImpl implements ConvergeService {
|
|
|
|
|
|
|
|
|
|
|
|
+
|
|
|
+
|
|
|
}
|