|
|
@ -5,9 +5,13 @@ import java.util.ArrayList; |
|
|
|
import java.util.HashSet; |
|
|
|
import java.util.HashSet; |
|
|
|
import java.util.List; |
|
|
|
import java.util.List; |
|
|
|
import java.util.Set; |
|
|
|
import java.util.Set; |
|
|
|
|
|
|
|
import java.util.regex.Pattern; |
|
|
|
|
|
|
|
import java.util.stream.Collectors; |
|
|
|
|
|
|
|
|
|
|
|
import com.palnet.biz.api.acnt.jwt.utils.JwtTokenUtil; |
|
|
|
import com.palnet.biz.api.acnt.jwt.utils.JwtTokenUtil; |
|
|
|
import com.palnet.biz.api.comn.coordinate.model.*; |
|
|
|
import com.palnet.biz.api.comn.coordinate.model.*; |
|
|
|
|
|
|
|
import com.palnet.biz.jpa.entity.ComAdmDistrictBas; |
|
|
|
|
|
|
|
import com.palnet.biz.jpa.repository.com.ComAdmDistrictBasRepository; |
|
|
|
import com.palnet.biz.jpa.repository.flt.FltCptAuthAdmDistrictRelRepository; |
|
|
|
import com.palnet.biz.jpa.repository.flt.FltCptAuthAdmDistrictRelRepository; |
|
|
|
import com.palnet.comn.code.ErrorCode; |
|
|
|
import com.palnet.comn.code.ErrorCode; |
|
|
|
import com.palnet.comn.exception.CustomException; |
|
|
|
import com.palnet.comn.exception.CustomException; |
|
|
@ -29,6 +33,8 @@ import lombok.RequiredArgsConstructor; |
|
|
|
@Slf4j |
|
|
|
@Slf4j |
|
|
|
public class ComnCoordinateService { |
|
|
|
public class ComnCoordinateService { |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private final ComAdmDistrictBasRepository comAdmDistrictBasRepository; |
|
|
|
|
|
|
|
|
|
|
|
private final FltCptAuthAdmDistrictRelRepository fltCptAuthAdmDistrictRelRepository; |
|
|
|
private final FltCptAuthAdmDistrictRelRepository fltCptAuthAdmDistrictRelRepository; |
|
|
|
|
|
|
|
|
|
|
|
private final FltCptAuthAdminDistrictBasQueryRepository fltCptAuthAdminDistrictBasQueryRepository; |
|
|
|
private final FltCptAuthAdminDistrictBasQueryRepository fltCptAuthAdminDistrictBasQueryRepository; |
|
|
@ -99,7 +105,7 @@ public class ComnCoordinateService { |
|
|
|
|
|
|
|
|
|
|
|
String regexp = this.getLowScopeRegexp(address); |
|
|
|
String regexp = this.getLowScopeRegexp(address); |
|
|
|
|
|
|
|
|
|
|
|
List<String> lowAddress = fltCptAuthAdmDistrictRelRepository.findLowestAdmSectNmByPattren(regexp); |
|
|
|
List<String> lowAddress = comAdmDistrictBasRepository.findLowestAdmSectNmByPattren(regexp); |
|
|
|
|
|
|
|
|
|
|
|
SearchLowAddressRS result = new SearchLowAddressRS(); |
|
|
|
SearchLowAddressRS result = new SearchLowAddressRS(); |
|
|
|
result.setLowAddressList(lowAddress); |
|
|
|
result.setLowAddressList(lowAddress); |
|
|
@ -159,13 +165,47 @@ public class ComnCoordinateService { |
|
|
|
for(LocationCdAddressModel model : addressList){ |
|
|
|
for(LocationCdAddressModel model : addressList){ |
|
|
|
try { |
|
|
|
try { |
|
|
|
String scope = CoordUtils.getInstance().getScope(model.getAddress()); |
|
|
|
String scope = CoordUtils.getInstance().getScope(model.getAddress()); |
|
|
|
List<CoordUtils.LocationCoordinateModel> locationCoordinateModelList = CoordUtils.getInstance().getCoordinateByAddress(model.getAdmCd(), scope); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SearchDepartmentBoundaryRS.BoundaryModel boundaryModel = new SearchDepartmentBoundaryRS.BoundaryModel(); |
|
|
|
|
|
|
|
boundaryModel.setCoordinates(locationCoordinateModelList); |
|
|
|
|
|
|
|
boundaryModel.setLocation(model.getAddress()); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
boundaryModels.add(boundaryModel); |
|
|
|
List<CoordUtils.LocationCoordinateModel> locationCoordinateModelList = null; |
|
|
|
|
|
|
|
Boolean accurateSearch = false; |
|
|
|
|
|
|
|
try { |
|
|
|
|
|
|
|
locationCoordinateModelList = CoordUtils.getInstance().getCoordinateByAddress(model.getAdmCd(), scope); |
|
|
|
|
|
|
|
} catch (CustomException e){ |
|
|
|
|
|
|
|
log.error("FAIL INFO => {} : {}", model.getAddress(), model.getAdmCd()); |
|
|
|
|
|
|
|
log.error("",e); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
accurateSearch = this.accurateSearchValidation(model.getAddress()); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 경기도 용인시, 경기도 고양시 등 "~도 ~시"인 주소 데이터인 경우 "~도 ~시 ~구" 까지 데이터를 조회
|
|
|
|
|
|
|
|
if(accurateSearch){ |
|
|
|
|
|
|
|
String regexp = "^" + model.getAddress() + " [^ ]+구$"; |
|
|
|
|
|
|
|
List<ComAdmDistrictBas> entites = comAdmDistrictBasRepository.findLowestAdmCdByPattren(regexp); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
HashSet<ComAdmDistrictBas> entitySet = new HashSet<>(entites); |
|
|
|
|
|
|
|
entitySet.removeIf(node -> node.getAdmCd().equals(model.getAdmCd())); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
List<ComAdmDistrictBas> entityList = new ArrayList<>(entitySet); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
for(ComAdmDistrictBas entity : entityList){ |
|
|
|
|
|
|
|
List<CoordUtils.LocationCoordinateModel> coordModelList = CoordUtils.getInstance().getCoordinateByAddress(entity.getAdmCd(), scope); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SearchDepartmentBoundaryRS.BoundaryModel boundaryModel = new SearchDepartmentBoundaryRS.BoundaryModel(); |
|
|
|
|
|
|
|
boundaryModel.setCoordinates(coordModelList); |
|
|
|
|
|
|
|
boundaryModel.setLocation(entity.getAdmSectNm()); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
boundaryModels.add(boundaryModel); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} else { |
|
|
|
|
|
|
|
SearchDepartmentBoundaryRS.BoundaryModel boundaryModel = new SearchDepartmentBoundaryRS.BoundaryModel(); |
|
|
|
|
|
|
|
boundaryModel.setCoordinates(locationCoordinateModelList); |
|
|
|
|
|
|
|
boundaryModel.setLocation(model.getAddress()); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
boundaryModels.add(boundaryModel); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
} catch (CustomException e){ |
|
|
|
} catch (CustomException e){ |
|
|
|
log.error("FAIL INFO => {} : {}", model.getAddress(), model.getAdmCd()); |
|
|
|
log.error("FAIL INFO => {} : {}", model.getAddress(), model.getAdmCd()); |
|
|
|
log.error("",e); |
|
|
|
log.error("",e); |
|
|
@ -177,4 +217,10 @@ public class ComnCoordinateService { |
|
|
|
|
|
|
|
|
|
|
|
return result; |
|
|
|
return result; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public Boolean accurateSearchValidation(String address){ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return Pattern.matches("^[^ ]+도 [^ ]+시$", address); |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|