Browse Source

TS - 조종사 자격 증명 여부 및 기체 보혐 여부 확인 api

pull/12/head
지대한 11 months ago
parent
commit
95c163888b
  1. 23
      pav-server/src/main/java/com/palnet/biz/api/bas/laanc/service/BasLaancService.java
  2. 8
      pav-server/src/main/java/com/palnet/biz/api/external/service/SunRiseSetService.java
  3. 68
      pav-server/src/main/java/com/palnet/biz/api/external/service/TsService.java
  4. 3
      pav-server/src/main/resources/application.properties
  5. 2
      pav-server/src/test/java/com/palnet/biz/api/external/service/SunRiseSetServiceTest.java
  6. 36
      pav-server/src/test/java/com/palnet/biz/api/external/service/TsServiceTest.java

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

@ -5,7 +5,6 @@ import java.time.LocalDateTime;
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.stream.Collectors;
@ -24,8 +23,6 @@ import com.palnet.biz.api.comn.file.model.LaancPdfModel;
import com.palnet.biz.api.comn.file.service.ComnFileService;
import com.palnet.biz.api.comn.sms.model.ComnSmsLaancAprovModel;
import com.palnet.biz.api.comn.sms.service.ComnSmsService;
import com.palnet.biz.api.comn.sunriseset.model.ComnSunrisesetCoordRq;
import com.palnet.biz.api.comn.sunriseset.model.ComnSunrisesetRs;
import com.palnet.biz.api.external.model.PilotValidRq;
import com.palnet.biz.api.external.model.PilotValidRs;
import com.palnet.biz.api.external.service.TsService;
@ -84,7 +81,6 @@ public class BasLaancService {
private final FltPlanPilotRepository fltPlanPilotRepository;
private final PtyCstmrQueryRepository ptyCstmrQueryRepository;
private final PtyTermsAgreeTxnRepository ptyTermsAgreeTxnRepository;
private final ComRiseSetQueryRepository comRiseSetQueryRepository;
private final TsService tsService;
private final CtrTrnsLctnService ctrTrnsLctnService;
private final ComnFileService comnFileService;
@ -92,8 +88,6 @@ public class BasLaancService {
private final JwtTokenUtil jwtTokenUtil;
private final AreaUtils areaUtils;
private final String FILE_DOWNLOAD_URL = "/api/comn/file/download";
// LAANC 검증
public BasLaancValidatedRs validationLaanc(BasLaancPlanRq rq) {
if (!this.laancParamValid(rq)) throw new CustomException(ErrorCode.NON_VALID_PARAMETER);
@ -131,7 +125,7 @@ public class BasLaancService {
.build();
}).collect(Collectors.toList());
List<PilotValidRs> pilotValidRsList = tsService.callPilotValid(pilotValidRqList);
List<PilotValidRs> pilotValidRsList = tsService.getAccountValidate(pilotValidRqList);
if (pilotValidRsList.isEmpty()) {
rs.setPilotQlfc(false);
rs.setArcrftInsurance(false);
@ -639,25 +633,22 @@ public class BasLaancService {
// TS 연동
public BasLaancTsRs getTsValid(List<String> idntfNumList) {
// List<String> idntfNumList = rq.getIdntfNumList();
Integer cstmrSno = jwtTokenUtil.getCstmrSnoByToken();
AnctCstmrModel cstmrInfo = ptyCstmrQueryRepository.findByCstmrSno(cstmrSno);
String userCi = cstmrInfo.getIpinCi();
List<PilotValidRq> pilotValidRqList = idntfNumList.stream().map(declarationnum -> {
// TODO 기체보험 확인, 조종사 자격 확인
return PilotValidRq.builder()
List<PilotValidRq> pilotValidRqList = idntfNumList.stream().map(
declarationnum -> PilotValidRq.builder()
.pilotci(userCi)
.declarationnum(declarationnum)
.build();
}).collect(Collectors.toList());
.build()
).collect(Collectors.toList());
List<PilotValidRs> pilotValidRsList = tsService.callPilotValid(pilotValidRqList);
List<PilotValidRs> pilotValidRsList = tsService.getAccountValidate(pilotValidRqList);
boolean isValid = pilotValidRsList.stream().noneMatch(pilotValidRs -> !"Y".equals(pilotValidRs.getPilotcredentialyn()) || !"Y".equals(pilotValidRs.getArcrftinsuranceyn()));
BasLaancTsRs rs = BasLaancTsRs.builder()
return BasLaancTsRs.builder()
.isValid(isValid)
.pilotValidRsList(pilotValidRsList)
.build();
return rs;
}
// 관제권 포함 여부

8
pav-server/src/main/java/com/palnet/biz/api/external/service/SunRiseSetService.java vendored

@ -5,7 +5,6 @@ import com.palnet.biz.api.external.model.SunRiseSetXmlRs;
import com.palnet.biz.jpa.entity.ComRiseSetBas;
import com.palnet.biz.jpa.entity.ComRiseSetBasPK;
import com.palnet.biz.jpa.repository.com.ComRiseSetBasRepository;
import com.palnet.comn.utils.InstantUtils;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
@ -17,11 +16,8 @@ import org.springframework.web.reactive.function.client.WebClient;
import org.springframework.web.util.UriComponentsBuilder;
import java.lang.reflect.Field;
import java.time.Instant;
import java.time.LocalDate;
import java.time.Period;
import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoUnit;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
@ -73,7 +69,7 @@ public class SunRiseSetService {
for (String location : locations) {
try {
cnt++;
List<SunRiseSetRs> results = getSunRiseSet(locdate, location);
List<SunRiseSetRs> results = callSunRiseSet(locdate, location);
// trim 제거 및 6자리로 맞추기
results.forEach(result -> {
Class<? extends SunRiseSetRs> aClass = result.getClass();
@ -123,7 +119,7 @@ public class SunRiseSetService {
}
public List<SunRiseSetRs> getSunRiseSet(String locdate, String location) {
public List<SunRiseSetRs> callSunRiseSet(String locdate, String location) {
String uriStr = UriComponentsBuilder.fromUriString(AREA_RISE_SEET_INFO_URL)
.queryParam("serviceKey", SUN_KEY)

68
pav-server/src/main/java/com/palnet/biz/api/external/service/TsService.java vendored

@ -4,8 +4,17 @@ import com.palnet.biz.api.external.model.PilotValidRq;
import com.palnet.biz.api.external.model.PilotValidRs;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service;
import org.springframework.web.reactive.function.client.WebClient;
import org.springframework.web.util.DefaultUriBuilderFactory;
import org.springframework.web.util.UriComponentsBuilder;
import org.springframework.web.util.UriUtils;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.List;
@ -25,25 +34,56 @@ import java.util.List;
@Service
public class TsService {
public List<PilotValidRs> callPilotValid(List<PilotValidRq> rqList) {
// if(rq.getPilotci() == null || rq.getDeclarationnum() == null) {
// return null;
// }
// TODO: call pilot valid api
@Value("${external.ts.url}")
private String TS_HOST;
private final String ACCOUNT_VALIDATE_URI = "/api/account/getValidate";
public List<PilotValidRs> getAccountValidate(List<PilotValidRq> rqList) {
// RS 임시코드 - 추후 조건에 따른 TRUE/FALSE 처리 필요
List<PilotValidRs> rsList = new ArrayList<>();
for (PilotValidRq rq : rqList) {
PilotValidRs pilotValidRs = new PilotValidRs();
pilotValidRs.setRspCode("200");
pilotValidRs.setRspMessage("success");
pilotValidRs.setPilotcredentialyn("Y");
pilotValidRs.setArcrftinsuranceyn("Y");
pilotValidRs.setArcrftdeclaration("Y");
pilotValidRs.setCorpregyn("Y");
PilotValidRs pilotValidRs = this.callAccountValidate(rq);
if (pilotValidRs == null) {
pilotValidRs = new PilotValidRs();
}
pilotValidRs.setRq(rq);
rsList.add(pilotValidRs);
}
return rsList;
}
}
public PilotValidRs callAccountValidate(PilotValidRq rq) {
String pilotciEnc = UriUtils.encode(rq.getPilotci(), StandardCharsets.UTF_8);
String uriStr = UriComponentsBuilder.fromUriString(ACCOUNT_VALIDATE_URI)
.queryParam("pilotci", pilotciEnc)
.queryParam("declarationnum", rq.getDeclarationnum())
.build()
.toUriString();
DefaultUriBuilderFactory factory = new DefaultUriBuilderFactory(TS_HOST);
factory.setEncodingMode(DefaultUriBuilderFactory.EncodingMode.NONE);
WebClient client = WebClient.builder()
.uriBuilderFactory(factory)
.defaultHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE)
.build();
ResponseEntity<PilotValidRs> resp = client.get()
.uri(uriStr)
.retrieve()
.toEntity(PilotValidRs.class)
.block();
PilotValidRs rs = null;
if (resp != null) {
rs = resp.getBody();
}
return rs;
}
}

3
pav-server/src/main/resources/application.properties

@ -15,6 +15,9 @@ external.sunriseset.url=http://apis.data.go.kr/B090041/openapi/service/RiseSetIn
#external.sunriseset.key=b%2FStm6AMT3EwXc5kOvwnjK%2FPB57Ay1WzkIGVx5WaMt0MyRt3TEPgcJ%2Fur45GrnVOZKs2sfIWKUX3BTl8eYwVFw%3D%3D
external.sunriseset.key=b/Stm6AMT3EwXc5kOvwnjK/PB57Ay1WzkIGVx5WaMt0MyRt3TEPgcJ/ur45GrnVOZKs2sfIWKUX3BTl8eYwVFw==
### TS ###
external.ts.url=http://121.137.95.45:8170
### Token key ######
spring.jwt.secret=jwtsecretkey
spring.jwt.prefix=palnet

2
pav-server/src/test/java/com/palnet/biz/api/external/service/SunRiseSetServiceTest.java vendored

@ -14,7 +14,7 @@ class SunRiseSetServiceTest {
@Test
void getSunRiseSet() {
service.getSunRiseSet("20231231", "김포");
service.callSunRiseSet("20231231", "김포");
}
@Test

36
pav-server/src/test/java/com/palnet/biz/api/external/service/TsServiceTest.java vendored

@ -0,0 +1,36 @@
package com.palnet.biz.api.external.service;
import com.palnet.biz.api.external.model.PilotValidRq;
import com.palnet.biz.api.external.model.PilotValidRs;
import lombok.extern.slf4j.Slf4j;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.ActiveProfiles;
@Slf4j
@ActiveProfiles("local")
@SpringBootTest
class TsServiceTest {
@Autowired
private TsService service;
@Value("${external.ts.url}")
private String TS_HOST;
private final String ACCOUNT_VALIDATE_URI = "/api/account/getValidate";
@Test
void callAccountValidate() {
PilotValidRq rq = PilotValidRq.builder()
.pilotci("wEi9oYSuekQGxT9MV4rKHG4CO+Zrp+onhLIIuembI8jx/0PLF5Ne3oMBxvUFlN4UmsgjeNErZfmpCVUFHsv8nq==")
.declarationnum("PA0001")
.build();
PilotValidRs rs = service.callAccountValidate(rq);
log.info(">>> rs : {}", rs);
}
}
Loading…
Cancel
Save