|
|
@@ -1,5 +1,6 @@
|
|
|
package com.siwei.apply.service.impl;
|
|
|
|
|
|
+import com.siwei.apply.common.Constant;
|
|
|
import com.siwei.apply.domain.Converge;
|
|
|
import com.siwei.apply.domain.res.ConvergeRes;
|
|
|
import com.siwei.apply.domain.vo.ConvergeFilterVo;
|
|
|
@@ -64,6 +65,8 @@ import java.util.concurrent.ExecutorService;
|
|
|
import java.util.concurrent.Executors;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
+import static com.siwei.apply.common.Constant.ZD_PROPERTY_TABLE_LIST;
|
|
|
+
|
|
|
/**
|
|
|
* 汇交服务实现
|
|
|
*/
|
|
|
@@ -158,8 +161,23 @@ public class ConvergeServiceImpl implements ConvergeService {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-
|
|
|
-
|
|
|
+ /**
|
|
|
+ *
|
|
|
+ *
|
|
|
+ * 1.表名
|
|
|
+ * 2.调查登记标识。
|
|
|
+ * 3.宗地id list
|
|
|
+ * 4.当前目录路径即可。(通过状态计算)
|
|
|
+ * 5.最终返回一个List<Map<String, Object>>
|
|
|
+ * 6.批量传递,分2次查询。一次一张表。
|
|
|
+ * 7.采用各自判断,多查一次。
|
|
|
+ * 二次if()else
|
|
|
+ *
|
|
|
+ *
|
|
|
+ *
|
|
|
+ * @param batch
|
|
|
+ * @param type
|
|
|
+ */
|
|
|
@Transactional
|
|
|
@Override
|
|
|
public void operationConverge(String batch,String type) {
|
|
|
@@ -190,8 +208,8 @@ public class ConvergeServiceImpl implements ConvergeService {
|
|
|
|
|
|
//这里进行数据汇交(异步执行)
|
|
|
ExecutorService executor = Executors.newSingleThreadExecutor();
|
|
|
- CompletableFuture<Object> future = CompletableFuture.supplyAsync(()-> {
|
|
|
- //-----------------------------------
|
|
|
+ //CompletableFuture<Object> future = CompletableFuture.supplyAsync(()-> {
|
|
|
+ //-------------------------------------------------
|
|
|
List<ConvergeRes> convergeTableList = new ArrayList<>();
|
|
|
Arrays.stream(ConvergeTableEnum.values()).forEach(e -> {
|
|
|
String tableName = e.getTableName();
|
|
|
@@ -222,96 +240,165 @@ public class ConvergeServiceImpl implements ConvergeService {
|
|
|
for (ConvergeRes convergeRes : convergeTableList) {
|
|
|
// 行政区
|
|
|
if (convergeRes.getTableName().equals(ConvergeTableEnum.TABLE_0.getTableName())) {
|
|
|
- convergeRes.setFilePath(basePath + "矢量空间数据/统一坐标");
|
|
|
+ convergeRes.setFilePath(basePath + "1行政区");
|
|
|
convergeRes.setFileName("01" + ConvergeTableEnum.TABLE_0.getTableName());
|
|
|
} else if (ConvergeTableEnum.TABLE_1.getTableName().equals(convergeRes.getTableName())) {
|
|
|
//地籍区
|
|
|
- convergeRes.setFilePath(basePath + "矢量空间数据/统一坐标");
|
|
|
+ convergeRes.setFilePath(basePath + "2地籍区");
|
|
|
convergeRes.setFileName("02" + ConvergeTableEnum.TABLE_1.getTableName());
|
|
|
} else if (ConvergeTableEnum.TABLE_2.getTableName().equals(convergeRes.getTableName())) {
|
|
|
//地籍子区
|
|
|
- convergeRes.setFilePath(basePath + "矢量空间数据/统一坐标");
|
|
|
+ convergeRes.setFilePath(basePath + "3地籍子区");
|
|
|
convergeRes.setFileName("03" + ConvergeTableEnum.TABLE_2.getTableName());
|
|
|
} else if (ConvergeTableEnum.TABLE_3.getTableName().equals(convergeRes.getTableName())) {
|
|
|
//宗地
|
|
|
- convergeRes.setFilePath(basePath + "矢量空间数据/统一坐标");
|
|
|
+ convergeRes.setFilePath(basePath + "");
|
|
|
convergeRes.setFileName("03" + ConvergeTableEnum.TABLE_3.getTableName());
|
|
|
//todo 这里需要对宗地,根据情况进行拆分,出来一个新的List
|
|
|
|
|
|
List<Map<String, Object>> zdList = convergeRes.getDataList();
|
|
|
|
|
|
- //建设用地使用权宗地
|
|
|
- List<Map<String, Object>> shyqzd_db_list = zdList.stream().filter(s-> ArrayUtils.contains(ArrayUtils.toArray("3","4","7","8","24","26"),s.get("qllx"))).collect(Collectors.toList());
|
|
|
-
|
|
|
- //宅基地使用权宗地
|
|
|
- List<Map<String, Object>> zjd_list = zdList.stream().filter(s-> ArrayUtils.contains(ArrayUtils.toArray("5","6","25"),s.get("qllx"))).collect(Collectors.toList());
|
|
|
-
|
|
|
- //国有农用地的使用权
|
|
|
- List<Map<String, Object>> gynydsyqzd_list =zdList.stream().filter(s-> ArrayUtils.contains(ArrayUtils.toArray("23"),s.get("qllx"))).collect(Collectors.toList());
|
|
|
-
|
|
|
- //集体农用地的使用权
|
|
|
- List<Map<String, Object>> jtnydsyqzd_list =zdList.stream().filter(s-> ArrayUtils.contains(ArrayUtils.toArray("30"),s.get("qllx"))).collect(Collectors.toList());
|
|
|
-
|
|
|
- //其它使用权
|
|
|
- List<Map<String, Object>> qtsyqzd_list = zdList.stream().filter(s-> !ArrayUtils.contains(ArrayUtils.toArray("3","4","7","8","24","26","5","6","25","23","30"),s.get("qllx"))).collect(Collectors.toList());
|
|
|
-
|
|
|
- if(CollectionUtils.isNotEmpty(shyqzd_db_list)){
|
|
|
- ConvergeRes convergeResTmp = new ConvergeRes();
|
|
|
- BeanUtils.copyProperties(convergeRes, convergeResTmp);
|
|
|
- convergeResTmp.setDataList(shyqzd_db_list);
|
|
|
- convergeResTmp.setFilePath(basePath + "矢量空间数据/统一坐标");
|
|
|
- convergeResTmp.setFileName("031" + "shyqzd_db");
|
|
|
- subConvergeTableList.add(convergeResTmp);
|
|
|
- }
|
|
|
-
|
|
|
- if(CollectionUtils.isNotEmpty(zjd_list)){
|
|
|
- ConvergeRes convergeResTmp = new ConvergeRes();
|
|
|
- BeanUtils.copyProperties(convergeRes, convergeResTmp);
|
|
|
- convergeResTmp.setDataList(zjd_list);
|
|
|
- convergeResTmp.setFilePath(basePath + "矢量空间数据/统一坐标");
|
|
|
- convergeResTmp.setFileName("032" + "zjd");
|
|
|
- subConvergeTableList.add(convergeResTmp);
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- if(CollectionUtils.isNotEmpty(gynydsyqzd_list)){
|
|
|
- ConvergeRes convergeResTmp = new ConvergeRes();
|
|
|
- BeanUtils.copyProperties(convergeRes, convergeResTmp);
|
|
|
- convergeResTmp.setDataList(gynydsyqzd_list);
|
|
|
- convergeResTmp.setFilePath(basePath + "矢量空间数据/统一坐标");
|
|
|
- convergeResTmp.setFileName("033" + "gynydsyqzd");
|
|
|
- subConvergeTableList.add(convergeResTmp);
|
|
|
+ //宅基地使用权宗地 宅基地使用权/房屋所有权
|
|
|
+ List<Map<String, Object>> zd_zjdsyq_list = zdList.stream().filter(s-> ArrayUtils.contains(ArrayUtils.toArray("5","6"),s.get("qllx"))).collect(Collectors.toList());
|
|
|
+
|
|
|
+ // 集体建设用地使用权 7 集体建设用地使用权/房屋所有权 8
|
|
|
+ List<Map<String, Object>> zd_jtjsydsyq_list =zdList.stream().filter(s-> ArrayUtils.contains(ArrayUtils.toArray("7","8"),s.get("qllx"))).collect(Collectors.toList());
|
|
|
+
|
|
|
+ // 国有建设用地使用权 3 国有建设用地使用权/房屋所有权 4
|
|
|
+ List<Map<String, Object>> zd_gyjsydsyq_list = zdList.stream().filter(s-> ArrayUtils.contains(ArrayUtils.toArray("3","4"),s.get("qllx"))).collect(Collectors.toList());
|
|
|
+
|
|
|
+ if(CollectionUtils.isNotEmpty(zd_zjdsyq_list)){
|
|
|
+ List<ConvergeRes> currentTypeConvergeTableList = new ArrayList<>();//衍生出的数据
|
|
|
+ //已调查已经登记
|
|
|
+ List<Map<String, Object>> zd_zjdsyq_ydcydj_list = zd_zjdsyq_list.stream().filter(s->"1".equals(s.get("djzt"))).collect(Collectors.toList());
|
|
|
+ //已调查未经登记
|
|
|
+ List<Map<String, Object>> zd_zjdsyq_ydcwdj_list = zd_zjdsyq_list.stream().filter(s->"2".equals(s.get("djzt"))).collect(Collectors.toList());
|
|
|
+ if(CollectionUtils.isNotEmpty(zd_zjdsyq_ydcydj_list)){
|
|
|
+ //空间数据
|
|
|
+ try{
|
|
|
+ ConvergeRes convergeResTmp = new ConvergeRes();
|
|
|
+ BeanUtils.copyProperties(convergeRes, convergeResTmp);
|
|
|
+ convergeResTmp.setDataList(zd_zjdsyq_ydcydj_list);
|
|
|
+ convergeResTmp.setFilePath(basePath + "4宅基地使用权和房屋所有权/01已调查已登记/01空间数据");
|
|
|
+ convergeResTmp.setFileName("0" + "zd_zjdsyq");
|
|
|
+ convergeResTmp.setType(1);
|
|
|
+ subConvergeTableList.add(convergeResTmp);
|
|
|
+
|
|
|
+ for(String tableName : Constant.ZD_GEOM_TABLE_LIST){
|
|
|
+ //这里处理所有属性数据(实现一个方法,把)遍历循环
|
|
|
+ ConvergeRes otherTableConvergeResTmp = getOtherTableDataList(tableName, convergeResTmp);
|
|
|
+ if(Objects.nonNull(otherTableConvergeResTmp)){
|
|
|
+ currentTypeConvergeTableList.add(otherTableConvergeResTmp);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }catch (Exception e){
|
|
|
+ e.printStackTrace();
|
|
|
+ throw new ServiceException("衍生数据查询失败");
|
|
|
+ }finally {
|
|
|
+ log.info("----------------宅基地使用权和房屋所有权/01已调查已登记处理end。。。。。");
|
|
|
+ }
|
|
|
+
|
|
|
+ //属性数据
|
|
|
+ try{
|
|
|
+ //这进行深copy,去掉geom数据
|
|
|
+ List<Map<String, Object>> new_zd_zjdsyq_ydcydj_list = zd_zjdsyq_ydcydj_list.stream()
|
|
|
+ .filter(Objects::nonNull)
|
|
|
+ .map(oldMap ->{
|
|
|
+ Map<String, Object> map = new HashMap<>(oldMap);
|
|
|
+ map.remove("geom");
|
|
|
+ return map;
|
|
|
+ }).collect(Collectors.toList());
|
|
|
+ ConvergeRes convergeResTmp = new ConvergeRes();
|
|
|
+ BeanUtils.copyProperties(convergeRes, convergeResTmp);
|
|
|
+ convergeResTmp.setDataList(new_zd_zjdsyq_ydcydj_list);
|
|
|
+
|
|
|
+ convergeResTmp.setFilePath(basePath + "4宅基地使用权和房屋所有权/01已调查已登记/02属性数据");
|
|
|
+ convergeResTmp.setFileName("0" + "zd_zjdsyq");
|
|
|
+ convergeResTmp.setType(2);
|
|
|
+ subConvergeTableList.add(convergeResTmp);
|
|
|
+
|
|
|
+ for(String tableName : Constant.ZD_PROPERTY_TABLE_LIST){
|
|
|
+ //这里处理所有属性数据(实现一个方法,把)遍历循环
|
|
|
+ ConvergeRes otherTableConvergeResTmp = getOtherTableDataList(tableName, convergeResTmp);
|
|
|
+ if(Objects.nonNull(otherTableConvergeResTmp)){
|
|
|
+ currentTypeConvergeTableList.add(otherTableConvergeResTmp);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }finally {
|
|
|
+ log.info("----------------宅基地使用权和房屋所有权/02已调查已登记 处理end。。。。。");
|
|
|
+ }
|
|
|
+ }//end if 已调查已经登记
|
|
|
+
|
|
|
+ if(CollectionUtils.isNotEmpty(zd_zjdsyq_ydcwdj_list)){
|
|
|
+ //空间数据
|
|
|
+ try{
|
|
|
+ ConvergeRes convergeResTmp = new ConvergeRes();
|
|
|
+ BeanUtils.copyProperties(convergeRes, convergeResTmp);
|
|
|
+ convergeResTmp.setDataList(zd_zjdsyq_ydcwdj_list);
|
|
|
+
|
|
|
+ convergeResTmp.setFilePath(basePath + "4宅基地使用权和房屋所有权/02已调查未登记/01空间数据");
|
|
|
+ convergeResTmp.setFileName("0" + "zd_zjdsyq_ydcwdj");
|
|
|
+ convergeResTmp.setType(1);
|
|
|
+ subConvergeTableList.add(convergeResTmp);
|
|
|
+
|
|
|
+ for(String tableName : Constant.ZD_GEOM_TABLE_LIST){
|
|
|
+ //这里处理所有属性数据(实现一个方法,把)遍历循环
|
|
|
+ ConvergeRes otherTableConvergeResTmp = getOtherTableDataList(tableName, convergeResTmp);
|
|
|
+ if(Objects.nonNull(otherTableConvergeResTmp)){
|
|
|
+ currentTypeConvergeTableList.add(otherTableConvergeResTmp);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }finally {
|
|
|
+ log.info("----------------宅基地使用权和房屋所有权/01已调查已登记处理end。。。。。");
|
|
|
+ }
|
|
|
+
|
|
|
+ //属性数据
|
|
|
+ try{
|
|
|
+ //进行深copy,去掉geom数据
|
|
|
+ List<Map<String, Object>> new_zd_zjdsyq_ydcwdj_list = zd_zjdsyq_ydcwdj_list.stream()
|
|
|
+ .filter(Objects::nonNull)
|
|
|
+ .map(oldMap ->{
|
|
|
+ Map<String, Object> map = new HashMap<>(oldMap);
|
|
|
+ map.remove("geom");
|
|
|
+ return map;
|
|
|
+ }).collect(Collectors.toList());
|
|
|
+ ConvergeRes convergeResTmp = new ConvergeRes();
|
|
|
+ BeanUtils.copyProperties(convergeRes, convergeResTmp);
|
|
|
+ convergeResTmp.setDataList(zd_zjdsyq_ydcwdj_list);
|
|
|
+
|
|
|
+ convergeResTmp.setFilePath(basePath + "4宅基地使用权和房屋所有权/02已调查未登记/02属性数据");
|
|
|
+ convergeResTmp.setFileName("0" + "zd_zjdsyq_ydcwdj");
|
|
|
+ convergeResTmp.setType(2);
|
|
|
+ subConvergeTableList.add(convergeResTmp);
|
|
|
+
|
|
|
+ for(String tableName : ZD_PROPERTY_TABLE_LIST){
|
|
|
+ //这里处理所有属性数据(实现一个方法,把)遍历循环
|
|
|
+ ConvergeRes otherTableConvergeResTmp = getOtherTableDataList(tableName, convergeResTmp);
|
|
|
+ if(Objects.nonNull(otherTableConvergeResTmp)){
|
|
|
+ currentTypeConvergeTableList.add(otherTableConvergeResTmp);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }finally {
|
|
|
+ log.info("----------------宅基地使用权和房屋所有权/01已调查已登记处理end。。。。。");
|
|
|
+ }
|
|
|
+
|
|
|
+ if (!currentTypeConvergeTableList.isEmpty()) {
|
|
|
+ subConvergeTableList.addAll(currentTypeConvergeTableList);
|
|
|
+ }
|
|
|
+ }//end if 已调查已经登记
|
|
|
}
|
|
|
-
|
|
|
-
|
|
|
- if(CollectionUtils.isNotEmpty(jtnydsyqzd_list)){
|
|
|
- ConvergeRes convergeResTmp = new ConvergeRes();
|
|
|
- BeanUtils.copyProperties(convergeRes, convergeResTmp);
|
|
|
- convergeResTmp.setDataList(jtnydsyqzd_list);
|
|
|
- convergeResTmp.setFilePath(basePath + "矢量空间数据/统一坐标");
|
|
|
- convergeResTmp.setFileName("034" + "jtnydsyqzd");
|
|
|
- subConvergeTableList.add(convergeResTmp);
|
|
|
- }
|
|
|
-
|
|
|
- if(CollectionUtils.isNotEmpty(qtsyqzd_list)){
|
|
|
- ConvergeRes convergeResTmp = new ConvergeRes();
|
|
|
- BeanUtils.copyProperties(convergeRes, convergeResTmp);
|
|
|
- convergeResTmp.setDataList(qtsyqzd_list);
|
|
|
- convergeResTmp.setFilePath(basePath + "矢量空间数据/统一坐标");
|
|
|
- convergeResTmp.setFileName("035" + "qtsyqzd");
|
|
|
- subConvergeTableList.add(convergeResTmp);
|
|
|
- }
|
|
|
-
|
|
|
convergeRes.setValid(-1);
|
|
|
|
|
|
- } else if (ConvergeTableEnum.TABLE_4.getTableName().equals(convergeRes.getTableName())) {
|
|
|
- //房屋
|
|
|
- convergeRes.setFilePath(basePath + "矢量空间数据/统一坐标");
|
|
|
- convergeRes.setFileName("04" + ConvergeTableEnum.TABLE_4.getTableName());
|
|
|
- } else {
|
|
|
- convergeRes.setFilePath(basePath + "属性数据");
|
|
|
- convergeRes.setFileName("00" + convergeRes.getTableName());
|
|
|
}
|
|
|
+
|
|
|
+// else if (ConvergeTableEnum.TABLE_4.getTableName().equals(convergeRes.getTableName())) {
|
|
|
+// //房屋
|
|
|
+// convergeRes.setFilePath(basePath + "矢量空间数据/统一坐标");
|
|
|
+// convergeRes.setFileName("04" + ConvergeTableEnum.TABLE_4.getTableName());
|
|
|
+// } else {
|
|
|
+// convergeRes.setFilePath(basePath + "属性数据");
|
|
|
+// convergeRes.setFileName("00" + convergeRes.getTableName());
|
|
|
+// }
|
|
|
}
|
|
|
if (!subConvergeTableList.isEmpty()) {
|
|
|
convergeTableList.addAll(subConvergeTableList);
|
|
|
@@ -336,8 +423,8 @@ public class ConvergeServiceImpl implements ConvergeService {
|
|
|
convergeMapper.update(updateVo);
|
|
|
fzssFxrwrzHandleService.insertFxrwrz(convergeId, "地籍库管理", "汇交数据文件创建成功。", "info");
|
|
|
}
|
|
|
- return "success";
|
|
|
- },executor);
|
|
|
+ // return "success";
|
|
|
+ //},executor);
|
|
|
executor.shutdown();
|
|
|
}
|
|
|
|
|
|
@@ -576,6 +663,12 @@ public class ConvergeServiceImpl implements ConvergeService {
|
|
|
// 统一路径分隔符,防止 Linux 环境下出现反斜杠导致的路径错误
|
|
|
mdbPath = mdbPath.replace("\\", File.separator).replace("/", File.separator);
|
|
|
|
|
|
+ //这里过滤掉二进制数据
|
|
|
+ columns = columns.stream()
|
|
|
+ .filter(col -> !"bytea".equals(col.get("data_type")))
|
|
|
+ .filter(col -> !"geom".equals(col.get("column_name")))
|
|
|
+ .collect(Collectors.toList());
|
|
|
+
|
|
|
// 4. 调用工具类生成 MDB 文件并写入数据
|
|
|
MdbUtil.writeMdbByTable(mdbPath, tableName, columns, dataList);
|
|
|
|
|
|
@@ -587,6 +680,42 @@ public class ConvergeServiceImpl implements ConvergeService {
|
|
|
}
|
|
|
|
|
|
|
|
|
+ //todo 需要查询当前表结构,根据表字段,确定是否有validFlag字段,还要确定,是通过,bdcdyh 或者 zddm 进行的查询
|
|
|
+ // dataType 1 矢量数据,2属性数据 dataStatus 1 已调查已登记,2 已调查未登记
|
|
|
+ public ConvergeRes getOtherTableDataList(String tableName , ConvergeRes convergeRes) {
|
|
|
+ ConvergeRes resultConvergeRes = null;
|
|
|
+ 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());
|
|
|
+ if(CollectionUtils.isNotEmpty(zddmList)) {
|
|
|
+ bdcdyhList = null;
|
|
|
+ }
|
|
|
+ String zddmKey = "zddm";
|
|
|
+ if(List.of("jzd").contains(tableName)){
|
|
|
+ zddmKey = "zdzhdm";
|
|
|
+ }
|
|
|
+ if(List.of("jzx").contains(tableName)){
|
|
|
+ zddmKey = "zdzhdm1";
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ List<Map<String, Object>> dataList = cadastreFileMapper.selectTableDataByZDDMorBDCDYH("",tableName,zddmList,zddmKey,bdcdyhList);
|
|
|
+ log.info("查询当前表-》{} 数据结果: {}", tableName, CollectionUtils.isEmpty(dataList) ? "无数据" : dataList.size() + " 条数据");
|
|
|
+ if(CollectionUtils.isNotEmpty(dataList)){
|
|
|
+ resultConvergeRes = new ConvergeRes();
|
|
|
+ BeanUtils.copyProperties(convergeRes, resultConvergeRes);
|
|
|
+ resultConvergeRes.setTableName(tableName);
|
|
|
+ if(2==convergeRes.getType()){ //如果是属性数据,删除掉当前表的空间数据,放到衍生数据目录下。
|
|
|
+ dataList.forEach(s-> s.remove("geom"));
|
|
|
+ }
|
|
|
+ resultConvergeRes.setDataList(dataList);
|
|
|
+ resultConvergeRes.setFileName("0"+tableName);
|
|
|
+ }
|
|
|
+ log.info("宗地衍生表{},返回成果: {}", tableName,resultConvergeRes);
|
|
|
+ return resultConvergeRes;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
|
|
|
|
|
|
}
|