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