package com.shkpr.service.alambizplugin.components.checker;
import com.global.base.log.LogLevelFlag;
import com.global.base.log.LogPrintMgr;
import com.shkpr.service.alambizplugin.commtools.BeanUtil;
import com.shkpr.service.alambizplugin.components.GisSurveySystemCheckResultManager;
import com.shkpr.service.alambizplugin.constants.GisMetadataDefine;
import com.shkpr.service.alambizplugin.constants.GisSurveyImportDefine;
import com.shkpr.service.alambizplugin.constants.GisSurveySystemCheckResultPath;
import com.shkpr.service.alambizplugin.constants.LogFlagBusiType;
import com.shkpr.service.alambizplugin.dto.GisSurveyLayerApplyPoint;
import com.shkpr.service.alambizplugin.dto.GisSurveySystemCheckElement;
import com.shkpr.service.alambizplugin.dto.GisSurveySystemCheckId;
import com.shkpr.service.alambizplugin.dto.GisSurveySystemCheckResultDetail;
import com.shkpr.service.alambizplugin.dto.GisSurveyThirdImportElement;
import com.shkpr.service.alambizplugin.dto.GisSurveyThirdImportResultDetail;
import com.shkpr.service.alambizplugin.dto.TypeDefine;
import org.apache.commons.lang3.StringUtils;
import org.locationtech.jts.geom.Coordinate;
import org.springframework.scheduling.annotation.Async;
import org.springframework.scheduling.annotation.AsyncResult;
import org.springframework.stereotype.Component;
import org.springframework.util.concurrent.ListenableFuture;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* 重复点寻找器
*
* @author 欧阳劲驰
* @since 1.0.0
*/
@Component
public class DuplicatePointsFinder {
/**
* 经纬度默认精度
*/
private final static int DEFAULT_SCALE = 6;
/**
* 经度key
*/
private final static String LNG_KEY = "lng";
/**
* 纬度key
*/
private final static String LAT_KEY = "lat";
/**
* log
*/
private final String mStrClassName;
private final String mBizType;
private final GisSurveySystemCheckResultManager gisSurveySystemCheckResultManager;
public DuplicatePointsFinder(GisSurveySystemCheckResultManager gisSurveySystemCheckResultManager) {
mStrClassName = "DuplicatePointsFinder";
mBizType = LogFlagBusiType.BUSI_GIS_SURVEY.toStrValue();
this.gisSurveySystemCheckResultManager = gisSurveySystemCheckResultManager;
}
/**
* 寻找重复点
*
根据 code 匹配
*
* @param points 点集合
* @return 重复点
*/
@Async
public ListenableFuture>> findDuplicatePoints(List