From 8e909cdb0565dba3e32da11df73fee4bf8467678 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?lkd9125=28=EC=9D=B4=EA=B2=BD=EB=8F=84=29?= Date: Mon, 4 Dec 2023 15:33:28 +0900 Subject: [PATCH] =?UTF-8?q?=EC=A2=8C=ED=91=9C=EB=A1=9C=20=EA=B4=80?= =?UTF-8?q?=ED=95=A0=EC=B2=AD=20=EB=A7=A4=ED=95=91=EB=90=9C=EA=B3=B3=20?= =?UTF-8?q?=EA=B0=80=EC=A0=B8=EC=98=A4=EA=B8=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/ComnCoordinateController.java | 32 +++++ .../model/CompotentAuthorityRQ.java | 12 ++ .../model/CompotentAuthorityRS.java | 14 +++ .../service/ComnCoordinateService.java | 111 ++++++++++++++++++ ...ptAuthAdminDistrictBasQueryRepository.java | 44 +++++++ 5 files changed, 213 insertions(+) create mode 100644 pav-server/src/main/java/com/palnet/biz/api/comn/coordinate/controller/ComnCoordinateController.java create mode 100644 pav-server/src/main/java/com/palnet/biz/api/comn/coordinate/model/CompotentAuthorityRQ.java create mode 100644 pav-server/src/main/java/com/palnet/biz/api/comn/coordinate/model/CompotentAuthorityRS.java create mode 100644 pav-server/src/main/java/com/palnet/biz/api/comn/coordinate/service/ComnCoordinateService.java create mode 100644 pav-server/src/main/java/com/palnet/biz/jpa/repository/flt/FltCptAuthAdminDistrictBasQueryRepository.java diff --git a/pav-server/src/main/java/com/palnet/biz/api/comn/coordinate/controller/ComnCoordinateController.java b/pav-server/src/main/java/com/palnet/biz/api/comn/coordinate/controller/ComnCoordinateController.java new file mode 100644 index 0000000..03c7f4f --- /dev/null +++ b/pav-server/src/main/java/com/palnet/biz/api/comn/coordinate/controller/ComnCoordinateController.java @@ -0,0 +1,32 @@ +package com.palnet.biz.api.comn.coordinate.controller; + +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import com.palnet.biz.api.comn.coordinate.model.CompotentAuthorityRQ; +import com.palnet.biz.api.comn.coordinate.model.CompotentAuthorityRS; +import com.palnet.biz.api.comn.coordinate.service.ComnCoordinateService; + +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; + +@RestController +@RequiredArgsConstructor +@RequestMapping("/api/comn/coordinate") +@Slf4j +public class ComnCoordinateController { + + private final ComnCoordinateService comnCoordinateService; + + @GetMapping("/comptent-authority") + public ResponseEntity getCompetentAuthority(CompotentAuthorityRQ rq){ + log.warn("ComnCoordinateController - getCompetentAuthority()"); + log.warn("RQ => {}", rq); + + CompotentAuthorityRS result = comnCoordinateService.getCompetentAuthority(rq); + + return ResponseEntity.ok().body(result); + } +} diff --git a/pav-server/src/main/java/com/palnet/biz/api/comn/coordinate/model/CompotentAuthorityRQ.java b/pav-server/src/main/java/com/palnet/biz/api/comn/coordinate/model/CompotentAuthorityRQ.java new file mode 100644 index 0000000..b76efea --- /dev/null +++ b/pav-server/src/main/java/com/palnet/biz/api/comn/coordinate/model/CompotentAuthorityRQ.java @@ -0,0 +1,12 @@ +package com.palnet.biz.api.comn.coordinate.model; + +import lombok.Data; + +@Data +public class CompotentAuthorityRQ { + + private Double lat; + + private Double lon; + +} diff --git a/pav-server/src/main/java/com/palnet/biz/api/comn/coordinate/model/CompotentAuthorityRS.java b/pav-server/src/main/java/com/palnet/biz/api/comn/coordinate/model/CompotentAuthorityRS.java new file mode 100644 index 0000000..94450e7 --- /dev/null +++ b/pav-server/src/main/java/com/palnet/biz/api/comn/coordinate/model/CompotentAuthorityRS.java @@ -0,0 +1,14 @@ +package com.palnet.biz.api.comn.coordinate.model; + +import java.util.List; + +import com.palnet.biz.jpa.entity.FltCptAuthBas; + +import lombok.Data; + +@Data +public class CompotentAuthorityRS { + + private List fltCptpAuthBasList; + +} diff --git a/pav-server/src/main/java/com/palnet/biz/api/comn/coordinate/service/ComnCoordinateService.java b/pav-server/src/main/java/com/palnet/biz/api/comn/coordinate/service/ComnCoordinateService.java new file mode 100644 index 0000000..70ad168 --- /dev/null +++ b/pav-server/src/main/java/com/palnet/biz/api/comn/coordinate/service/ComnCoordinateService.java @@ -0,0 +1,111 @@ +package com.palnet.biz.api.comn.coordinate.service; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashSet; +import java.util.List; +import java.util.Set; + +import org.json.simple.JSONObject; +import org.json.simple.parser.ParseException; +import org.locationtech.jts.geom.Coordinate; +import org.springframework.stereotype.Service; + +import com.palnet.biz.api.comn.coordinate.model.CompotentAuthorityRQ; +import com.palnet.biz.api.comn.coordinate.model.CompotentAuthorityRS; +import com.palnet.biz.jpa.entity.FltCptAuthBas; +import com.palnet.biz.jpa.repository.flt.FltCptAuthAdminDistrictBasQueryRepository; +import com.palnet.comn.utils.FlightUtils; + +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; + +@Service +@RequiredArgsConstructor +@Slf4j +public class ComnCoordinateService { + + private final FltCptAuthAdminDistrictBasQueryRepository ffFltCptAuthAdminDistrictBasQueryRepository; + + + public CompotentAuthorityRS getCompetentAuthority(CompotentAuthorityRQ rq){ + + Coordinate coord = new Coordinate(rq.getLon(), rq.getLat()); + + JSONObject code = new JSONObject(); + try { + code = FlightUtils.getPlace(coord, false); + } catch (ParseException e) { + e.printStackTrace(); + } catch (IOException e){ + e.printStackTrace(); + } catch (Exception e){ + e.printStackTrace(); + } + + String[] scope = {"ctprvn", "sig", "emd", "li"}; + final String cd = (String) code.get("CD"); + + Set fltCptAuthBas = new HashSet(); + + for(int i = 0; i < scope.length; i++){ + + String cdParam = this.codeParsing(cd, scope[i]); + + log.warn("cdParam => {}", cdParam); + List authList = ffFltCptAuthAdminDistrictBasQueryRepository.geFltCptAuthBas(cdParam); + + fltCptAuthBas.addAll(new HashSet(authList)); + } + + CompotentAuthorityRS result = new CompotentAuthorityRS(); + result.setFltCptpAuthBasList(new ArrayList<>(fltCptAuthBas)); + + log.warn("result => {}", result); + + return result; + } + + private String codeParsing(String cd, String scope){ + + switch (scope) { + case "ctprvn": + + if(cd.length() < 2) break; + + cd = cd.substring(0, 2); + break; + case "sig": + + if(cd.length() < 5) break; + + cd = cd.substring(0, 5); + break; + case "emd": + + if(cd.length() < 8) break; + + cd = cd.substring(0, 8); + break; + case "li": + + if(cd.length() < 10) break; + + cd = cd.substring(0, 10); + break; + } + + int length = cd.length(); + int maxLength = 10; + + int difference = maxLength - length; + + for(int i = 0; i < difference; i++){ + cd += "0"; + } + + return cd; + } + +} diff --git a/pav-server/src/main/java/com/palnet/biz/jpa/repository/flt/FltCptAuthAdminDistrictBasQueryRepository.java b/pav-server/src/main/java/com/palnet/biz/jpa/repository/flt/FltCptAuthAdminDistrictBasQueryRepository.java new file mode 100644 index 0000000..2cd36aa --- /dev/null +++ b/pav-server/src/main/java/com/palnet/biz/jpa/repository/flt/FltCptAuthAdminDistrictBasQueryRepository.java @@ -0,0 +1,44 @@ +package com.palnet.biz.jpa.repository.flt; + +import java.util.List; + +import org.springframework.stereotype.Repository; + +import com.palnet.biz.jpa.entity.FltCptAuthBas; +import com.palnet.biz.jpa.entity.QFltCptAuthAdmDistrictRel; +import com.palnet.biz.jpa.entity.QFltCptAuthBas; +import com.querydsl.core.BooleanBuilder; +import com.querydsl.jpa.impl.JPAQueryFactory; + +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; + +@Repository +@RequiredArgsConstructor +@Slf4j +public class FltCptAuthAdminDistrictBasQueryRepository { + + private final JPAQueryFactory query; + + public List geFltCptAuthBas(String cd){ + + QFltCptAuthAdmDistrictRel qFltCptAuthAdmDistrictRel = QFltCptAuthAdmDistrictRel.fltCptAuthAdmDistrictRel; + QFltCptAuthBas qFltCptAuthBas = QFltCptAuthBas.fltCptAuthBas; + + BooleanBuilder builder = new BooleanBuilder(); + builder.and(qFltCptAuthAdmDistrictRel.id.ADM_CD.like(cd+"%")); + + List result = query + .selectDistinct( + qFltCptAuthBas + ) + .from(qFltCptAuthAdmDistrictRel) + .leftJoin(qFltCptAuthBas) + .on(qFltCptAuthAdmDistrictRel.id.CPT_AUTH_CODE.eq(qFltCptAuthBas.cptAuthCode)) + .where(builder) + .fetch(); + + + return result; + } +}