Browse Source

좌표로 관할청 매핑된곳 가져오기

pull/16/head
lkd9125(이경도) 10 months ago
parent
commit
cfb21cb66a
  1. 32
      pav-server/src/main/java/com/palnet/biz/api/comn/coordinate/controller/ComnCoordinateController.java
  2. 12
      pav-server/src/main/java/com/palnet/biz/api/comn/coordinate/model/CompotentAuthorityRQ.java
  3. 14
      pav-server/src/main/java/com/palnet/biz/api/comn/coordinate/model/CompotentAuthorityRS.java
  4. 110
      pav-server/src/main/java/com/palnet/biz/api/comn/coordinate/service/ComnCoordinateService.java
  5. 42
      pav-server/src/main/java/com/palnet/biz/jpa/repository/flt/FltCptAuthAdminDistrictBasQueryRepository.java

32
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<CompotentAuthorityRS> getCompetentAuthority(CompotentAuthorityRQ rq){
log.warn("ComnCoordinateController - getCompetentAuthority()");
log.warn("RQ => {}", rq);
CompotentAuthorityRS result = comnCoordinateService.getCompetentAuthority(rq);
return ResponseEntity.ok().body(result);
}
}

12
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;
}

14
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<FltCptAuthBas> fltCptpAuthBasList;
}

110
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> fltCptAuthBas = new HashSet<FltCptAuthBas>();
for(int i = 0; i < scope.length; i++){
String cdParam = this.codeParsing(cd, scope[i]);
log.warn("cdParam => {}", cdParam);
List<FltCptAuthBas> authList = ffFltCptAuthAdminDistrictBasQueryRepository.geFltCptAuthBas(cdParam);
fltCptAuthBas.addAll(new HashSet<FltCptAuthBas>(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;
}
}

42
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<FltCptAuthBas> geFltCptAuthBas(String cd){
QFltCptAuthAdmDistrictRel qFltCptAuthAdmDistrictRel = QFltCptAuthAdmDistrictRel.fltCptAuthAdmDistrictRel;
QFltCptAuthBas qFltCptAuthBas = QFltCptAuthBas.fltCptAuthBas;
BooleanBuilder builder = new BooleanBuilder();
builder.and(qFltCptAuthAdmDistrictRel.id.ADM_CD.like(cd+"%"));
List<FltCptAuthBas> result = query
.selectDistinct(
qFltCptAuthBas
)
.from(qFltCptAuthAdmDistrictRel)
.leftJoin(qFltCptAuthBas)
.on(qFltCptAuthAdmDistrictRel.id.CPT_AUTH_CODE.eq(qFltCptAuthBas.cptAuthCode))
.where(builder)
.fetch();
return result;
}
}
Loading…
Cancel
Save