좌표로 관할청 매핑된곳 가져오기 #16
Merged
dhji
merged 3 commits from feature/coordinate/comptent-authority
into develop
9 months ago
5 changed files with 237 additions and 0 deletions
@ -0,0 +1,64 @@
|
||||
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; |
||||
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; |
||||
|
||||
@RestController |
||||
@RequiredArgsConstructor |
||||
@RequestMapping("/api/comn/coordinate") |
||||
@Slf4j |
||||
@Tag(name = "공통 API", description = "공통 API") |
||||
public class ComnCoordinateController { |
||||
|
||||
private final ComnCoordinateService comnCoordinateService; |
||||
|
||||
/** |
||||
* 좌표로 관할기관 가져오기 |
||||
* @param rq |
||||
* @return |
||||
*/ |
||||
@GetMapping("/comptent-authority") |
||||
@ApiOperation(value = "좌표로 관할 기관청 가져오기") |
||||
@Tag(name = "공통 API", description = "공통 API") |
||||
public ResponseEntity<? extends BasicResponse> getCompetentAuthority(CompotentAuthorityRQ rq){ |
||||
|
||||
CompotentAuthorityRS result = new CompotentAuthorityRS(); |
||||
|
||||
try { |
||||
result = comnCoordinateService.getCompetentAuthority(rq); |
||||
} catch (CustomException e) { |
||||
Map<String, Object> 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")); |
||||
|
||||
} |
||||
|
||||
return ResponseEntity.ok().body(new SuccessResponse<>(result)); |
||||
} |
||||
} |
@ -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; |
||||
|
||||
} |
@ -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; |
||||
|
||||
} |
@ -0,0 +1,105 @@
|
||||
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; |
||||
|
||||
@Service |
||||
@RequiredArgsConstructor |
||||
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]); |
||||
List<FltCptAuthBas> authList = ffFltCptAuthAdminDistrictBasQueryRepository.geFltCptAuthBas(cdParam); |
||||
|
||||
fltCptAuthBas.addAll(new HashSet<FltCptAuthBas>(authList)); |
||||
} |
||||
|
||||
CompotentAuthorityRS result = new CompotentAuthorityRS(); |
||||
result.setFltCptpAuthBasList(new ArrayList<>(fltCptAuthBas)); |
||||
|
||||
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; |
||||
|
||||
StringBuilder sb = new StringBuilder(); |
||||
sb.append(cd); |
||||
|
||||
for(int i = 0; i < difference; i++){ |
||||
sb.append("0"); |
||||
} |
||||
|
||||
return sb.toString(); |
||||
} |
||||
|
||||
} |
@ -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…
Reference in new issue