Browse Source

Merge commit 'd17ee11825ae516073261f377d0fea31e5269029' into develop

pull/16/head
lkd9125(이경도) 10 months ago
parent
commit
b47c6b2297
  1. 14
      pav-server/src/main/java/com/palnet/biz/api/bas/laanc/controller/BasLaancController.java
  2. 12
      pav-server/src/main/java/com/palnet/biz/api/bas/laanc/service/BasLaancService.java
  3. 28
      pav-server/src/main/java/com/palnet/biz/api/external/controller/ExternalLaancController.java
  4. 89
      pav-server/src/main/java/com/palnet/biz/api/external/model/TsPlanRq.java
  5. 13
      pav-server/src/main/java/com/palnet/comn/code/ErrorCode.java

14
pav-server/src/main/java/com/palnet/biz/api/bas/laanc/controller/BasLaancController.java

@ -132,7 +132,7 @@ public class BasLaancController {
resultMap.put("result", false);
resultMap.put("errorCode", e.getErrorCode());
resultMap.put("errorMessage", e.getMessage());
return ResponseEntity.ok().body(new SuccessResponse<Map>(resultMap));
return ResponseEntity.ok().body(new SuccessResponse<>(resultMap));
} catch (Exception e) {
log.error("IGNORE : ", e);
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
@ -156,7 +156,7 @@ public class BasLaancController {
resultMap.put("result", false);
resultMap.put("errorCode", e.getErrorCode());
resultMap.put("errorMessage", e.getMessage());
return ResponseEntity.ok().body(new SuccessResponse<Map>(resultMap));
return ResponseEntity.ok().body(new SuccessResponse<>(resultMap));
} catch (Exception e) {
log.error("IGNORE : ", e);
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
@ -179,7 +179,7 @@ public class BasLaancController {
resultMap.put("result", false);
resultMap.put("errorCode", e.getErrorCode());
resultMap.put("errorMessage", e.getMessage());
return ResponseEntity.ok().body(new SuccessResponse<Map>(resultMap));
return ResponseEntity.ok().body(new SuccessResponse<>(resultMap));
} catch (Exception e) {
log.error("IGNORE : ", e);
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
@ -188,7 +188,7 @@ public class BasLaancController {
}
return new ResponseEntity<>(new SuccessResponse<>(rs), HttpStatus.OK);
}
@GetMapping(value = "/ts/qr/{confirmKey}")
@ApiOperation(value = "TS QR 코드 확인 - RS왔는지 확인")
@Tag(name = "LAANC", description = "LAANC 관련 API")
@ -202,7 +202,10 @@ public class BasLaancController {
resultMap.put("result", false);
resultMap.put("errorCode", e.getErrorCode());
resultMap.put("errorMessage", e.getMessage());
return ResponseEntity.ok().body(new SuccessResponse<Map>(resultMap));
if (e.getParamArray() != null) {
resultMap.put("params", e.getParamArray());
}
return ResponseEntity.ok().body(new SuccessResponse<>(resultMap));
} catch (Exception e) {
log.error("IGNORE : ", e);
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
@ -213,5 +216,4 @@ public class BasLaancController {
}
}

12
pav-server/src/main/java/com/palnet/biz/api/bas/laanc/service/BasLaancService.java

@ -1,6 +1,7 @@
package com.palnet.biz.api.bas.laanc.service;
import com.google.zxing.WriterException;
import com.itextpdf.io.util.HashCode;
import com.palnet.biz.api.acnt.cstmr.model.AnctCstmrModel;
import com.palnet.biz.api.acnt.cstmr.model.AnctCstmrTermsModel;
import com.palnet.biz.api.acnt.jwt.utils.JwtTokenUtil;
@ -46,9 +47,7 @@ import java.time.LocalTime;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoUnit;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
import java.util.*;
import java.util.stream.Collectors;
/**
@ -668,7 +667,12 @@ public class BasLaancService {
String userIdByToken = jwtTokenUtil.getUserIdByToken();
ComConfirmBas entity = comConfirmBasRepository.findFirstByConfirmKeyOrderByCreateDtDesc(confirmKey);
if (entity == null || "RECEIVED".equals(entity.getStatus())) throw new CustomException(ErrorCode.DATA_NOTFIND, "QR코드 조회 실패");
if(entity == null) throw new CustomException(ErrorCode.DATA_NOTFIND, "QR코드 조회 실패");
if (!"RECEIVED".equals(entity.getStatus())){
Map<String, String> errorParam = new HashMap<>();
errorParam.put("status", entity.getStatus());
throw new CustomException(ErrorCode.DATA_NOTFIND, errorParam);
}
// TODO 일자 검증 - 3분 초과
Instant createDt = entity.getCreateDt().plus(3, ChronoUnit.MINUTES);

28
pav-server/src/main/java/com/palnet/biz/api/external/controller/ExternalLaancController.java vendored

@ -1,8 +1,10 @@
package com.palnet.biz.api.external.controller;
import com.palnet.biz.api.bas.laanc.service.BasLaancService;
import com.palnet.biz.api.external.model.TsPlanRq;
import com.palnet.biz.api.external.model.TsQrcodeRs;
import com.palnet.biz.api.external.service.TsService;
import com.palnet.comn.utils.JsonUtils;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.ResponseEntity;
@ -11,6 +13,9 @@ import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.HashMap;
import java.util.Map;
@Slf4j
@RequiredArgsConstructor
@RequestMapping("/api/external/laanc")
@ -20,10 +25,31 @@ public class ExternalLaancController {
private final BasLaancService basLaancService;
private final TsService tsService;
/*
error code
200 - 정상적으로 수신되었습니다.
300 - 메시지 규격이 다릅니다. - Json 포멧이 틀린 경우
301 - 필수 항목이 누락되었습니다. - 필수 항목이 누락된 경우
302 - 메시지 타입이 맞지 않습니다. - 메시지내 파라미터의 타입이 잘못된 경우
500 - 서버 연결이 되지 않습니다. - call측 network exception 처리
501 - 네트워크 연결이 지연 됩니다. - call측 network exception 처리
600 - 인증키가 유효하지 않습니다.
700 - 기타 오류 - 정의된 내용이 아닌 기타 오류인 경우
*/
// TS로 부터 비행 신청 정보 - endpoint
@PostMapping("/plan/ost")
@PostMapping("/plan/dos")
public ResponseEntity<?> createTsFltPlan(@RequestBody String body) {
log.info(">>>> /plan/ost body: {}", body);
try {
TsPlanRq tsPlanRq = JsonUtils.fromJson(body, TsPlanRq.class);
} catch (Exception e) {
log.error("IGNORE: ", e);
Map<String, String> error = new HashMap<>();
error.put("rspCode", "300");
error.put("rspMessage", "메시지 규격이 다릅니다.");
return ResponseEntity.status(300).body(error);
}
return ResponseEntity.ok().build();
}

89
pav-server/src/main/java/com/palnet/biz/api/external/model/TsPlanRq.java vendored

@ -0,0 +1,89 @@
package com.palnet.biz.api.external.model;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class TsPlanRq {
private List<TsFlightapprovalInfo> flightapprovalInfo;
private List<TsArcrftInfo> arcrftInfo;
private List<TsBusinessinfo> businessinfo;
private List<TsFlightInfo> flightInfo;
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public static class TsFlightapprovalInfo {
private List<Operatorinfo> operatorinfo;
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public static class Operatorinfo {
private String pilotname;
private String pilotcredentialno;
}
}
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public static class TsArcrftInfo {
private String arcrfttype;
private String declarationnum;
private String arcrftmodelnm;
private String prdctcmpnnm;
private String prdctnum;
private String arcrftlwh;
private String arcrftwght;
private String ownernm;
private String corporationnm;
private String insrncyn;
private String arcrftinsuranceyn;
private String insuranceexperiod;
}
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public static class TsBusinessinfo {
private String corpregyn;
}
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public static class TsFlightInfo {
private String fltareacnt;
private String fltmethod;
private String pltstdt;
private String pltenddt;
private String pltpurpose;
private List<TsAreaInfo> areaInfo;
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public static class TsAreaInfo {
private String addr;
private String coord;
private String elev;
private String radius;
}
}
}

13
pav-server/src/main/java/com/palnet/comn/code/ErrorCode.java

@ -8,15 +8,24 @@ public enum ErrorCode {
NOT_REGIST_ERROR_CODE("ER501", "등록되지 않은 오류 코드"),
DATA_NOTFIND("DT001","데이터 를 찾을수 없습니다."),
DATA_DUPLICATE("DT002","중복 데이터가 존재합니다."),
DATA_NOT_CHANGE("DT003","아직 갱신되지 않았습니다."),
DATA_NO("DT003", "데이터 미존재"),
DB_ERROR("DB001" , "디비 처리중 오류"),
PLAN_DATA_DUPLICATE("FT500", "이미 등록된 비행계획서의 비행구역과 비행시간이 일치합니다.\n비행시간 또는 비행구역을 수정하여 주십시오."),
ARCRFT_DATA_DUPLICATE("FT501", "해당 기체는 다른 비행계획서에서 이미 등록된 기체입니다.\n비행시간 또는 기체 정보를 확인하여 주십시오."),
PLAN_LAANC_NOT_VALID("FT502", "LAANC를 통과하지 못한 비행계획서입니다."),
EXTERNAL_API_ERROR("EA500", "외부서버 호출에 실패하였습니다."),
AUTH_NAUTHORIZED("AU001", "권한이 없습니다.");
AUTH_NAUTHORIZED("AU001", "권한이 없습니다."),
// TS 연동 ERROR CODE
TS_SUCCESS("TS200", "정상적으로 수신되었습니다."),
TS_PARAM("TS300", "메시지 규격이 다릅니다."), // Json 포멧이 틀린 경우
TS_PARAM_REQUIRED("TS301", "필수 항목이 누락되었습니다."), // 필수 항목이 누락된 경우
TS_TYPE("TS302", "메시지 타입이 맞지 않습니다."), // 메시지내 파라미터의 타입이 잘못된 경우
TS_SERVER_ERROR("TS500", "서버 연결이 되지 않습니다."), // call측 network exception 처리
TS_NT_LAZY("TS501", "네트워크 연결이 지연 됩니다."), // call측 network exception 처리
TS_AUTH_KEY("TS600", "인증키가 유효하지 않습니다."),
TS_ETC("TS700", "기타 오류"); // 기 정의된 내용이 아닌 기타 오류인 경우
private final String code;

Loading…
Cancel
Save