From cfb21cb66ad819fd79753cede8e658205059d6ec 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:39:58 +0900 Subject: [PATCH 1/2] =?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 | 110 ++++++++++++++++++ ...ptAuthAdminDistrictBasQueryRepository.java | 42 +++++++ 5 files changed, 210 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 00000000..03c7f4fc --- /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 00000000..b76efeae --- /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 00000000..94450e78 --- /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 00000000..83d3a4f0 --- /dev/null +++ b/pav-server/src/main/java/com/palnet/biz/api/comn/coordinate/service/ComnCoordinateService.java @@ -0,0 +1,110 @@ +package com.palnet.biz.api.comn.coordinate.service; + +import java.io.IOException; +import java.util.ArrayList; +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 00000000..0a6bb64c --- /dev/null +++ b/pav-server/src/main/java/com/palnet/biz/jpa/repository/flt/FltCptAuthAdminDistrictBasQueryRepository.java @@ -0,0 +1,42 @@ +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; + +@Repository +@RequiredArgsConstructor +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; + } +} From 6301df3673074bdfdf14b4fc2b7ca32588328d18 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 16:02:58 +0900 Subject: [PATCH 2/2] =?UTF-8?q?=EC=8A=A4=EC=9B=A8=EA=B1=B0=20=EC=96=B4?= =?UTF-8?q?=EB=85=B8=ED=85=8C=EC=9D=B4=EC=85=98=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/ComnCoordinateController.java | 42 ++++++++++++++++--- .../service/ComnCoordinateService.java | 21 ++++------ 2 files changed, 45 insertions(+), 18 deletions(-) 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 index 03c7f4fc..4d16e68d 100644 --- 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 @@ -1,5 +1,9 @@ package com.palnet.biz.api.comn.coordinate.controller; +import java.util.HashMap; +import java.util.Map; + +import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; @@ -8,7 +12,13 @@ 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 com.palnet.biz.api.comn.response.BasicResponse; +import com.palnet.biz.api.comn.response.ErrorResponse; +import com.palnet.biz.api.comn.response.SuccessResponse; +import com.palnet.comn.exception.CustomException; +import io.swagger.annotations.ApiOperation; +import io.swagger.v3.oas.annotations.tags.Tag; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -16,17 +26,39 @@ import lombok.extern.slf4j.Slf4j; @RequiredArgsConstructor @RequestMapping("/api/comn/coordinate") @Slf4j +@Tag(name = "공통 API", description = "공통 API") public class ComnCoordinateController { private final ComnCoordinateService comnCoordinateService; + /** + * 좌표로 관할기관 가져오기 + * @param rq + * @return + */ @GetMapping("/comptent-authority") - public ResponseEntity getCompetentAuthority(CompotentAuthorityRQ rq){ - log.warn("ComnCoordinateController - getCompetentAuthority()"); - log.warn("RQ => {}", rq); + @ApiOperation(value = "좌표로 관할 기관청 가져오기") + @Tag(name = "공통 API", description = "공통 API") + public ResponseEntity getCompetentAuthority(CompotentAuthorityRQ rq){ + + CompotentAuthorityRS result = new CompotentAuthorityRS(); + + try { + result = comnCoordinateService.getCompetentAuthority(rq); + } catch (CustomException e) { + Map resultMap = new HashMap<>(); + log.error("IGNORE : ", e); + resultMap.put("result", false); + resultMap.put("errorCode", e.getErrorCode()); + resultMap.put("errorMessage", e.getMessage()); + return ResponseEntity.ok().body(new SuccessResponse<>(resultMap)); + } catch (Exception e) { + log.error("IGNORE : ", e); + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR) + .body(new ErrorResponse("Server Error", "-1")); - CompotentAuthorityRS result = comnCoordinateService.getCompetentAuthority(rq); + } - return ResponseEntity.ok().body(result); + return ResponseEntity.ok().body(new SuccessResponse<>(result)); } } 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 index 83d3a4f0..39ccdcab 100644 --- 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 @@ -18,11 +18,9 @@ import com.palnet.biz.jpa.repository.flt.FltCptAuthAdminDistrictBasQueryReposito import com.palnet.comn.utils.FlightUtils; import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; @Service @RequiredArgsConstructor -@Slf4j public class ComnCoordinateService { private final FltCptAuthAdminDistrictBasQueryRepository ffFltCptAuthAdminDistrictBasQueryRepository; @@ -49,25 +47,19 @@ public class ComnCoordinateService { Set fltCptAuthBas = new HashSet(); for(int i = 0; i < scope.length; i++){ - - String cdParam = this.codeParsing(cd, scope[i]); - - log.warn("cdParam => {}", cdParam); + String cdParam = this.codeParsing(cd, scope[i]); List authList = ffFltCptAuthAdminDistrictBasQueryRepository.geFltCptAuthBas(cdParam); fltCptAuthBas.addAll(new HashSet(authList)); } CompotentAuthorityRS result = new CompotentAuthorityRS(); - result.setFltCptpAuthBasList(new ArrayList<>(fltCptAuthBas)); - - log.warn("result => {}", result); + result.setFltCptpAuthBasList(new ArrayList<>(fltCptAuthBas)); return result; } private String codeParsing(String cd, String scope){ - switch (scope) { case "ctprvn": @@ -100,11 +92,14 @@ public class ComnCoordinateService { int difference = maxLength - length; - for(int i = 0; i < difference; i++){ - cd += "0"; + StringBuilder sb = new StringBuilder(); + sb.append(cd); + + for(int i = 0; i < difference; i++){ + sb.append("0"); } - return cd; + return sb.toString(); } }