|
@@ -1,35 +1,44 @@
|
|
|
package com.onemap.apply.service.impl.fzss.hgxfxjg;
|
|
|
|
|
|
+import com.alibaba.nacos.shaded.com.google.gson.Gson;
|
|
|
+import com.alibaba.nacos.shaded.com.google.gson.JsonElement;
|
|
|
+import com.alibaba.nacos.shaded.com.google.gson.JsonObject;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
import com.onemap.apply.domain.config.fzss.*;
|
|
|
+import com.onemap.apply.domain.table.TableDataVo;
|
|
|
import com.onemap.apply.mapper.fzss.*;
|
|
|
+import com.onemap.apply.service.analyse.HttpAnalyseService;
|
|
|
import com.onemap.common.core.utils.StringUtils;
|
|
|
import com.onemap.common.core.web.domain.RequestResult;
|
|
|
import com.onemap.system.api.AnalyseService;
|
|
|
+import com.onemap.system.api.domain.*;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.scheduling.annotation.Async;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
+import javax.annotation.Resource;
|
|
|
import java.util.*;
|
|
|
|
|
|
@Service
|
|
|
public class HgxfxHandleService {
|
|
|
- @Autowired
|
|
|
+ @Resource
|
|
|
private HgxfxMapper hgxfxMapper;
|
|
|
- @Autowired
|
|
|
+ @Resource
|
|
|
private HgxfxScxMapper hgxfxScxMapper;
|
|
|
- @Autowired
|
|
|
+ @Resource
|
|
|
private HgxfxScxRwMapper hgxfxScxRwMapper;
|
|
|
- @Autowired
|
|
|
+ @Resource
|
|
|
private HgxfxRwJgMapper hgxfxRwJgMapper;
|
|
|
- @Autowired
|
|
|
+ @Resource
|
|
|
private HgxfxScxTableMapper hgxfxScxTableMapper;
|
|
|
- @Autowired
|
|
|
+ @Resource
|
|
|
private HgxfxScxSortationMapper hgxfxScxSortationMapper;
|
|
|
- @Autowired
|
|
|
+ @Resource
|
|
|
private AnalyseService analyseService;
|
|
|
- @Autowired
|
|
|
+ @Resource
|
|
|
private FxrwrzMapper fxrwrzMapper;
|
|
|
+ @Autowired
|
|
|
+ private HttpAnalyseService httpAnalyseService;
|
|
|
|
|
|
public void hgxfxHandle(String bsm, String ewkt) {
|
|
|
System.out.println("进入hgxfxHandle.....................");
|
|
@@ -60,7 +69,7 @@ public class HgxfxHandleService {
|
|
|
}
|
|
|
|
|
|
|
|
|
- private void getHgxfxScx(String rwbsm, String ewkt, String scxPBsm) {
|
|
|
+ private int getHgxfxScx(String rwbsm, String ewkt, String scxPBsm) {
|
|
|
if (StringUtils.isEmpty(scxPBsm)) {
|
|
|
scxPBsm = "0";
|
|
|
}
|
|
@@ -69,20 +78,48 @@ public class HgxfxHandleService {
|
|
|
String bsm = v01_scx.getBsm();
|
|
|
String scxbsm = v01_scx.getScxbsm();
|
|
|
String scxName = v01_scx.getScxname();
|
|
|
+ String scxParameter = v01_scx.getParameter();
|
|
|
+ Gson gson = new Gson();
|
|
|
+ JsonObject jsonObject = null;
|
|
|
+ if (StringUtils.isNotEmpty(scxParameter)) {
|
|
|
+ jsonObject = gson.fromJson(scxParameter, JsonObject.class);
|
|
|
+ }
|
|
|
// 任务开始时间
|
|
|
Date kssj = new Date();
|
|
|
- QueryWrapper<HgxfxScxTableDTO> v1_select = new QueryWrapper<HgxfxScxTableDTO>();
|
|
|
- v1_select.eq("bsm", v01_scx.getScxbsm());
|
|
|
- List<HgxfxScxTableDTO> data_table_list = hgxfxScxTableMapper.selectList(v1_select);
|
|
|
+ List<HgxfxScxTableDTO> data_table_list = hgxfxScxTableMapper.selectListByBsm(v01_scx.getScxbsm());
|
|
|
for (HgxfxScxTableDTO v_dataTable : data_table_list) {
|
|
|
- List<String> idsList = getHgxfxScxJgIntersects(bsm, rwbsm, scxbsm, ewkt, v_dataTable);
|
|
|
- List<Map> dataList = getHgxfxScxJgIntersection(bsm, rwbsm, scxbsm, ewkt, idsList, v_dataTable);
|
|
|
+
|
|
|
+ JsonElement fildObject = jsonObject.get("find");
|
|
|
+ if (fildObject.isJsonNull()) {
|
|
|
+ return 3;
|
|
|
+ }
|
|
|
+ String fildString = fildObject.getAsString();
|
|
|
+ if (StringUtils.isEmpty(fildString)) {
|
|
|
+ return 3;
|
|
|
+ }
|
|
|
+ List<Map> dataList = new ArrayList<>();
|
|
|
+ if ("intersection".equals(fildString)) {
|
|
|
+ //先获取交集
|
|
|
+ List<String> idsList = getHgxfxScxJgIntersects(bsm, rwbsm, scxbsm, ewkt, v_dataTable);
|
|
|
+ dataList = getHgxfxScxJgIntersection(bsm, rwbsm, scxbsm, ewkt, idsList, v_dataTable);
|
|
|
+ } else if ("distance".equals(fildString)) {
|
|
|
+ JsonElement findValueObject = jsonObject.get("findvalue");
|
|
|
+ if (findValueObject.isJsonNull()) {
|
|
|
+ return 3;
|
|
|
+ }
|
|
|
+ int d_FindValue = findValueObject.getAsInt();
|
|
|
+ if (d_FindValue <= 0) {
|
|
|
+ return 3;
|
|
|
+ }
|
|
|
+ dataList = getHgxfxScxJgDistance(bsm, rwbsm, scxbsm, ewkt, null, v_dataTable, d_FindValue);
|
|
|
+ }
|
|
|
insertHgxfxScxJgIntersection(bsm, rwbsm, scxbsm, dataList, v_dataTable);
|
|
|
}
|
|
|
getHgxfxScx(rwbsm, ewkt, v01_scx.getScxbsm());
|
|
|
// 任务开始时间
|
|
|
insertFxrwrz(bsm, rwbsm, scxName, null);
|
|
|
}
|
|
|
+ return 0;
|
|
|
}
|
|
|
|
|
|
private void insertFxrwrz(String bsm, String rwbsm, String scxName, String rznr) {
|
|
@@ -101,22 +138,49 @@ public class HgxfxHandleService {
|
|
|
}
|
|
|
|
|
|
private List<String> getHgxfxScxJgIntersects(String bsm, String rwbsm, String scxbsm, String ewkt, HgxfxScxTableDTO dataTable) {
|
|
|
+ IntersectsTableWktVo analyseUtilsVo = new IntersectsTableWktVo();
|
|
|
+ analyseUtilsVo.setTableName(dataTable.getSjy());
|
|
|
+ analyseUtilsVo.setEwkt(ewkt);
|
|
|
+ return httpAnalyseService.intersectsTableWkt(analyseUtilsVo);
|
|
|
+ }
|
|
|
+
|
|
|
+ private List<Map> getHgxfxScxJgDistance(String bsm, String rwbsm, String scxbsm, String ewkt, List<String> idsList, HgxfxScxTableDTO dataTable, int findValue) {
|
|
|
+ List<Map> retList = new ArrayList<Map>();
|
|
|
String v_sjy = dataTable.getSjy();
|
|
|
Integer v_sjy_srid = dataTable.getSjySrid();
|
|
|
Integer v_analyse_srid = dataTable.getAnalyseSrid();
|
|
|
- RequestResult result = analyseService.intersectsTableWkt(v_sjy, v_sjy_srid, null, ewkt, v_analyse_srid);
|
|
|
- Integer statuscode = (Integer) result.get("statuscode");
|
|
|
- if (statuscode == 200) {
|
|
|
- Object resultDataObject = result.get("data");
|
|
|
- if (StringUtils.isNotNull(resultDataObject)) {
|
|
|
- List<String> idsList = (List<String>) resultDataObject;
|
|
|
- return idsList;
|
|
|
- }
|
|
|
+ List<String> outputColumn = null;
|
|
|
+ if (StringUtils.isNotEmpty(dataTable.getAnalyseTjzd())) {
|
|
|
+ outputColumn = Arrays.asList(dataTable.getAnalyseTjzd().split(","));
|
|
|
+ }
|
|
|
+
|
|
|
+ DistanceTableWktVo distanceTableWktVo = new DistanceTableWktVo();
|
|
|
+ distanceTableWktVo.setEwkt(ewkt);
|
|
|
+ distanceTableWktVo.setTableIds(idsList);
|
|
|
+ distanceTableWktVo.setTableName(v_sjy);
|
|
|
+ distanceTableWktVo.setDistanceType(4);
|
|
|
+ distanceTableWktVo.setDistance(findValue);
|
|
|
+ Object from_kj_data = httpAnalyseService.getHttpAnalyse(distanceTableWktVo);
|
|
|
+ if (StringUtils.isNull(from_kj_data)) {
|
|
|
+ return retList;
|
|
|
+ }
|
|
|
+ List<String> fromkjdataList = (List<String>) from_kj_data;
|
|
|
+
|
|
|
+ RawTableLengthVo rawTableLengthVo = new RawTableLengthVo();
|
|
|
+ rawTableLengthVo.setRawTableName(v_sjy);
|
|
|
+ rawTableLengthVo.setIds(fromkjdataList);
|
|
|
+ rawTableLengthVo.setColumns(outputColumn);
|
|
|
+ rawTableLengthVo.setSiweiLength(true);
|
|
|
+ rawTableLengthVo.setEwkt(ewkt);
|
|
|
+ Object newRetList = httpAnalyseService.getHttpAnalyse(rawTableLengthVo);
|
|
|
+ if (newRetList == null) {
|
|
|
+ return retList;
|
|
|
}
|
|
|
- return null;
|
|
|
+ return (List<Map>) newRetList;
|
|
|
}
|
|
|
|
|
|
private List<Map> getHgxfxScxJgIntersection(String bsm, String rwbsm, String scxbsm, String ewkt, List<String> idsList, HgxfxScxTableDTO dataTable) {
|
|
|
+ List<Map> retList = new ArrayList<Map>();
|
|
|
if (StringUtils.isNotEmpty(idsList)) {
|
|
|
String v_sjy = dataTable.getSjy();
|
|
|
Integer v_sjy_srid = dataTable.getSjySrid();
|
|
@@ -125,17 +189,31 @@ public class HgxfxHandleService {
|
|
|
if (StringUtils.isNotEmpty(dataTable.getAnalyseTjzd())) {
|
|
|
outputColumn = Arrays.asList(dataTable.getAnalyseTjzd().split(","));
|
|
|
}
|
|
|
- RequestResult result = analyseService.intersectionTableWkt(v_sjy, v_sjy_srid, idsList, ewkt, v_analyse_srid, outputColumn);
|
|
|
- Integer statuscode = (Integer) result.get("statuscode");
|
|
|
- if (statuscode == 200) {
|
|
|
- Object resultDataObject = result.get("data");
|
|
|
- if (StringUtils.isNotNull(resultDataObject)) {
|
|
|
- List<Map> resultList = (List<Map>) resultDataObject;
|
|
|
- return resultList;
|
|
|
- }
|
|
|
+
|
|
|
+ IntersectionTableWktVo intersectionTableWktVo = new IntersectionTableWktVo();
|
|
|
+ intersectionTableWktVo.setEwkt(ewkt);
|
|
|
+ intersectionTableWktVo.setTableIds(idsList);
|
|
|
+ intersectionTableWktVo.setTableName(v_sjy);
|
|
|
+ String from_kj_data = httpAnalyseService.intersectionTableWkt(intersectionTableWktVo);
|
|
|
+ if (StringUtils.isEmpty(from_kj_data)) {
|
|
|
+ return retList;
|
|
|
+ }
|
|
|
+
|
|
|
+ TargetTableVo targetTableVo = new TargetTableVo();
|
|
|
+ targetTableVo.setTargetTableName(from_kj_data);
|
|
|
+ targetTableVo.setColumns(outputColumn);
|
|
|
+ targetTableVo.setRawTableName(v_sjy);
|
|
|
+ targetTableVo.setIsGeography(false);
|
|
|
+ targetTableVo.setSiweiArea(true);
|
|
|
+ targetTableVo.setSrid(v_analyse_srid);
|
|
|
+ List<Map> newRetList = httpAnalyseService.targetTable(targetTableVo);
|
|
|
+ if (newRetList == null || newRetList.size() <= 0) {
|
|
|
+ return retList;
|
|
|
}
|
|
|
+ return newRetList;
|
|
|
}
|
|
|
- return null;
|
|
|
+ ;
|
|
|
+ return retList;
|
|
|
}
|
|
|
|
|
|
private void insertHgxfxScxJgIntersection(String bsm, String rwbsm, String scxbsm, List<Map> dataList, HgxfxScxTableDTO dataTable) {
|
|
@@ -145,13 +223,22 @@ public class HgxfxHandleService {
|
|
|
outputColumn = Arrays.asList(dataTable.getAnalyseTjzd().split(","));
|
|
|
}
|
|
|
for (Map<String, Object> v_data : dataList) {
|
|
|
+ Object siweiarea = v_data.get("siweiarea");
|
|
|
+ Object siweilength = v_data.get("siweilength");
|
|
|
+ Double mj = null;
|
|
|
+ if (StringUtils.isNotNull(siweiarea)) {
|
|
|
+ mj = Double.parseDouble(siweiarea.toString());
|
|
|
+ }
|
|
|
+ if (StringUtils.isNotNull(siweilength)) {
|
|
|
+ mj = Double.parseDouble(siweilength.toString());
|
|
|
+ }
|
|
|
HgxfxRwJgDTO dtoRk = new HgxfxRwJgDTO();
|
|
|
dtoRk.setBsm(bsm);
|
|
|
dtoRk.setRwbsm(rwbsm);
|
|
|
dtoRk.setScxbsm(scxbsm);
|
|
|
dtoRk.setYslx(outputColumn.size() > 0 ? v_data.get(outputColumn.get(0).toString()).toString() : null);
|
|
|
dtoRk.setYslxmc(outputColumn.size() > 1 ? v_data.get(outputColumn.get(1).toString()).toString() : null);
|
|
|
- dtoRk.setMj(Double.parseDouble(v_data.get("geom_area").toString()));
|
|
|
+ dtoRk.setMj(mj);
|
|
|
dtoRk.setGeom(v_data.get("geom").toString());
|
|
|
hgxfxRwJgMapper.insert(dtoRk);
|
|
|
}
|