Browse Source

feat: Flt모듈 - Laanc승인 상세조회 기능 추가

pull/9/head
lkd9125(이경도) 7 months ago
parent
commit
ad5a7b89af
  1. 2
      data/com/src/main/java/kr/co/palnet/kac/data/com/repository/ComFileBasRepository.java
  2. 4
      data/com/src/main/java/kr/co/palnet/kac/data/com/service/ComFileDomainService.java
  3. 2
      data/flt/src/main/java/kr/co/palnet/kac/data/flt/repository/FltPlanBasRepository.java
  4. 4
      data/flt/src/main/java/kr/co/palnet/kac/data/flt/service/FltPlanDomainService.java
  5. 20
      web/api-flight/src/main/java/kr/co/palnet/kac/api/v1/flight/laanc/controller/FlightLaancController.java
  6. 138
      web/api-flight/src/main/java/kr/co/palnet/kac/api/v1/flight/laanc/model/detail/SearchLaancAprvDetailRS.java
  7. 46
      web/api-flight/src/main/java/kr/co/palnet/kac/api/v1/flight/laanc/service/FlightLaancService.java

2
data/com/src/main/java/kr/co/palnet/kac/data/com/repository/ComFileBasRepository.java

@ -12,4 +12,6 @@ public interface ComFileBasRepository extends JpaRepository<ComFileBas, Long> {
Optional<List<ComFileBas>> findByFileGroupNoInAndDelYnOrderByCreateDtDesc(List<Long> fileGroupNos, String delYn);
Optional<ComFileBas> findFirstByFileGroupNoAndDelYnOrderByCreateDtDesc(Long fileGroupNo, String delYn);
}

4
data/com/src/main/java/kr/co/palnet/kac/data/com/service/ComFileDomainService.java

@ -35,4 +35,8 @@ public class ComFileDomainService {
public Optional<List<ComFileBas>> findByFileGroupNoInAndDelYnOrderByCreateDtDesc(List<Long> fileGroupNos, String delYn){
return comFileBasRepository.findByFileGroupNoInAndDelYnOrderByCreateDtDesc(fileGroupNos, delYn);
}
public Optional<ComFileBas> findFirstByFileGroupNoAndDelYnOrderByCreateDtDesc(Long fileGroupNo){
return comFileBasRepository.findFirstByFileGroupNoAndDelYnOrderByCreateDtDesc(fileGroupNo, "N");
}
}

2
data/flt/src/main/java/kr/co/palnet/kac/data/flt/repository/FltPlanBasRepository.java

@ -3,6 +3,6 @@ package kr.co.palnet.kac.data.flt.repository;
import kr.co.palnet.kac.data.flt.model.FltPlanBas;
import org.springframework.data.jpa.repository.JpaRepository;
public interface FltPlanBasRepository extends JpaRepository<FltPlanBas, Integer> {
public interface FltPlanBasRepository extends JpaRepository<FltPlanBas, Long> {
}

4
data/flt/src/main/java/kr/co/palnet/kac/data/flt/service/FltPlanDomainService.java

@ -32,6 +32,10 @@ public class FltPlanDomainService {
return fltPlanQueryRepository.findAllBySearch(memberName, createStDate, createEndDate);
}
public Optional<FltPlanBas> findById(Long planSno){
return fltPlanBasRepository.findById(planSno);
}
public FltPlanBas saveFltPlanBas(FltPlanBas entity){
return fltPlanBasRepository.save(entity);
}

20
web/api-flight/src/main/java/kr/co/palnet/kac/api/v1/flight/laanc/controller/FlightLaancController.java

@ -1,9 +1,11 @@
package kr.co.palnet.kac.api.v1.flight.laanc.controller;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
import kr.co.palnet.kac.api.v1.flight.laanc.model.create.CreateLaancPlanRQ;
import kr.co.palnet.kac.api.v1.flight.laanc.model.create.CreateLaancPlanRS;
import kr.co.palnet.kac.api.v1.flight.laanc.model.detail.SearchLaancAprvDetailRS;
import kr.co.palnet.kac.api.v1.flight.laanc.model.pliotvalid.PilotValidRs;
import kr.co.palnet.kac.api.v1.flight.laanc.model.search.SearchLaancAprvRQ;
import kr.co.palnet.kac.api.v1.flight.laanc.model.search.SearchLaancAprvRS;
@ -41,7 +43,7 @@ public class FlightLaancController {
}
@PostMapping("/ts/qr")
@Operation(summary = "TS QR 코드 생성", description = "조종사 자격증명 및 기체 보험 여부 등 조회하기 위한 QR 코드 생성")
@Operation(summary = "TS QR 코드 생성", description = "조종사 자격증명 및 기체 보험 여부 등 조회하기 위한 QR 코드 생성합니다.")
public ResponseEntity<LaancTsQRcodeRS> createQRcode(LaancTsQRcodeRQ rq){
LaancTsQRcodeRS result = flightLaancService.createQRcode(rq);
@ -50,7 +52,7 @@ public class FlightLaancController {
}
@GetMapping("/ts/qr/{confirmKey}")
@Operation(summary = "TS QR 코드 확인", description = "조종사 자격증명 및 기체 보험 여부 등 데이터를 받고 검증된 데이터인지 확인")
@Operation(summary = "TS QR 코드 확인", description = "조종사 자격증명 및 기체 보험 여부 등 데이터를 받고 검증된 데이터인지 확인합니다.")
public ResponseEntity<PilotValidRs> checkQrcode(@PathVariable("confirmKey") String confirmKey) {
PilotValidRs result = flightLaancService.checkQrcode(confirmKey);
@ -68,7 +70,7 @@ public class FlightLaancController {
}
@PostMapping("/valid/elev")
@Operation(summary = "비행구역 허용고도 조회", description = "좌표에 해당하는 허용고도 조회")
@Operation(summary = "비행구역 허용고도 조회", description = "좌표에 해당하는 허용고도 조회합니다.")
public ResponseEntity<LaancAllowableElevationRS> getAllowableElevation(@RequestBody List<LaancAreaByElevModel> rq){
LaancAllowableElevationRS result = flightLaancService.getAllowableElevation(rq);
@ -77,7 +79,7 @@ public class FlightLaancController {
}
@GetMapping("/list")
@Operation(summary = "LAANC 승인 목록", description = "LAANC 승인 목록")
@Operation(summary = "LAANC 승인 목록", description = "LAANC 승인 목록을 조회합니다.")
public ResponseEntity<List<SearchLaancAprvRS>> getLaancAprvList(SearchLaancAprvRQ rq){
List<SearchLaancAprvRS> result = flightLaancService.getLaancAprvList(rq);
@ -85,6 +87,16 @@ public class FlightLaancController {
return ResponseEntity.ok().body(result);
}
@GetMapping("/detail/{planSno}")
@Operation(summary = "LAANC 승인 상세 조회", description = "LAANC 승인 상세 조회합니다.")
@Parameter(name = "planSno", description = "LAANC 승인된 비행계획서 번호", required = true, example = "1")
public ResponseEntity<SearchLaancAprvDetailRS> getLaancAprvDetail(@PathVariable("planSno") Long planSno){
SearchLaancAprvDetailRS result = flightLaancService.getLaancAprvDetail(planSno);
return ResponseEntity.ok().body(result);
}

138
web/api-flight/src/main/java/kr/co/palnet/kac/api/v1/flight/laanc/model/detail/SearchLaancAprvDetailRS.java

@ -0,0 +1,138 @@
package kr.co.palnet.kac.api.v1.flight.laanc.model.detail;
import kr.co.palnet.kac.api.v1.flight.laanc.model.FltPlanPilotDTO;
import kr.co.palnet.kac.api.v1.flight.laanc.model.constant.ArcrftWghtCd;
import kr.co.palnet.kac.api.v1.flight.laanc.model.constant.FltPurpose;
import kr.co.palnet.kac.api.v1.flight.laanc.model.constant.FltType;
import kr.co.palnet.kac.api.v1.flight.laanc.model.create.BasLaancArcrftModel;
import kr.co.palnet.kac.api.v1.flight.laanc.model.create.BasLaancAreaModel;
import kr.co.palnet.kac.api.v1.flight.laanc.model.search.SearchLaancAprvRS;
import kr.co.palnet.kac.data.flt.model.FltPlanBas;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.time.LocalDateTime;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class SearchLaancAprvDetailRS {
//비행계획서 일려번호
private Long planSno;
//그룹 아이디
private String groupId;
//작성자 일련번호
private Long cstmrSno;
//작성자 이름
private String memberName;
//작성자 이메일
private String email;
//작성자 연락처
private String hpno;
//작성자 국가번호(연락처)
private String clncd;
//작성자 주소
private String addr;
//작성자 상세주소
private String addrDtlCn;
//작성자 우편번호
private String zip;
//비행시작일시
private LocalDateTime schFltStDt;
//비행종료일시
private LocalDateTime schFltEndDt;
//비행목적
private FltPurpose fltPurpose;
//상업/비사업 구분
private FltType fltType;
//상업/비사업 구분 코드
private String fltTypeNm;
//승인여부
private String aprvlYn;
//승인일자
private LocalDateTime aprvlDt;
//삭제여부
// private String delYn;
// 파일그룹번호
private Long fileGroupNo;
//등록자ID
private String createUserId;
//등록일시
private LocalDateTime createDt;
//수정자ID
private String updateUserId;
//수정일시
private LocalDateTime updateDt;
//서비스유형
private String serviceType;
//기업여부
private String corpRegYn;
//공문URL
private String pdfUrl;
private List<BasLaancAreaModel> areaList;
private List<BasLaancArcrftModel> arcrftList;
private List<FltPlanPilotDTO> pilotList;
public static SearchLaancAprvDetailRS toModel(FltPlanBas entity){
SearchLaancAprvDetailRS model = new SearchLaancAprvDetailRS();
model.setPlanSno(entity.getPlanSno());
model.setGroupId(entity.getGroupId());
model.setCstmrSno(entity.getCstmrSno());
model.setServiceType(entity.getServiceType());
model.setMemberName(entity.getMemberName());
model.setEmail(entity.getEmail());
model.setHpno(entity.getHpno());
model.setClncd(entity.getClncd());
model.setAddr(entity.getAddr());
model.setAddrDtlCn(entity.getAddrDtlCn());
model.setZip(entity.getZip());
model.setSchFltStDt(entity.getSchFltStDt());
model.setSchFltEndDt(entity.getSchFltEndDt());
model.setFltPurpose(FltPurpose.fromCode(entity.getFltPurpose()));
model.setFltType(FltType.fromCode(entity.getFltType()));
model.setCorpRegYn(entity.getCorpRegYn());
model.setAprvlYn(entity.getAprvlYn());
model.setAprvlDt(entity.getAprvlDt());
model.setFileGroupNo(entity.getFileGroupNo());
model.setCreateUserId(entity.getCreateUserId());
model.setCreateDt(entity.getCreateDt());
model.setUpdateUserId(entity.getUpdateUserId());
model.setUpdateDt(entity.getUpdateDt());
return model;
}
// 하나의 필드로 묶어서 처리
//기체 무게
public String getArcrftWght() {
if (arcrftList == null || arcrftList.isEmpty()) return null;
List<ArcrftWghtCd> arcrftWghtCdList = arcrftList.stream().map(BasLaancArcrftModel::getArcrftWghtCd).distinct().filter(Objects::nonNull).collect(Collectors.toList());
String ArcrftWghtType = arcrftWghtCdList.stream().map(ArcrftWghtCd::getValue).collect(Collectors.joining(","));
return ArcrftWghtType;
}
//고도
public String getElev() {
if (areaList == null || areaList.isEmpty()) return null;
List<String> elevList = areaList.stream().map(BasLaancAreaModel::getFltElev).distinct().filter(Objects::nonNull).collect(Collectors.toList());
String elev = String.join(",", elevList);
return elev;
}
//조종사 성명
// public String getPilotName() {
// if (pilotList == null || pilotList.isEmpty()) return null;
// List<String> pilotNameList = pilotList.stream().map(BasLaancPilotModel::getMemberName).distinct().filter(Objects::nonNull).collect(Collectors.toList());
// String pilotName = String.join(",", pilotNameList);
// return pilotName;
// }
}

46
web/api-flight/src/main/java/kr/co/palnet/kac/api/v1/flight/laanc/service/FlightLaancService.java

@ -5,10 +5,10 @@ import kr.co.palnet.kac.api.external.model.TsQRcodeRQ;
import kr.co.palnet.kac.api.external.service.CtrTrnsLctnService;
import kr.co.palnet.kac.api.external.service.TsService;
import kr.co.palnet.kac.api.util.*;
import kr.co.palnet.kac.api.v1.flight.laanc.model.constant.FltType;
import kr.co.palnet.kac.api.v1.flight.laanc.model.create.CstmrModel;
import kr.co.palnet.kac.api.v1.flight.laanc.model.*;
import kr.co.palnet.kac.api.v1.flight.laanc.model.create.*;
import kr.co.palnet.kac.api.v1.flight.laanc.model.detail.SearchLaancAprvDetailRS;
import kr.co.palnet.kac.api.v1.flight.laanc.model.search.FileModel;
import kr.co.palnet.kac.api.v1.flight.laanc.model.search.SearchLaancAprvRQ;
import kr.co.palnet.kac.api.v1.flight.laanc.model.search.SearchLaancAprvRS;
@ -575,4 +575,48 @@ public class FlightLaancService {
return result;
}
public SearchLaancAprvDetailRS getLaancAprvDetail(Long planSno) {
Optional<FltPlanBas> fltPlanBasData = fltPlanDomainService.findById(planSno);
if(fltPlanBasData.isPresent()){
FltPlanBas fltPlanBas = fltPlanBasData.get();
SearchLaancAprvDetailRS result = SearchLaancAprvDetailRS.toModel(fltPlanBas);
result.setHpno(EncryptUtil.decrypt(result.getHpno()));
result.setEmail(EncryptUtil.decrypt(result.getEmail()));
result.setFltTypeNm(result.getFltType().getValue());
Optional<List<FltPlanArea>> fltPlanAreaListData = fltPlanDomainService.findFltPlanAreaByPlanSno(planSno);
Optional<List<FltPlanArcrft>> fltPlanArcrftListData = fltPlanDomainService.findFltPlanArcrftByPlanSno(planSno);
if(fltPlanAreaListData.isPresent()){
List<FltPlanArea> fltPlanAreaList = fltPlanAreaListData.get();
List<BasLaancAreaModel> areaList = fltPlanAreaList.stream().map(BasLaancAreaModel::toModel).toList();
result.setAreaList(areaList);
}
if(fltPlanArcrftListData.isPresent()){
List<FltPlanArcrft> fltPlanArcrftList = fltPlanArcrftListData.get();
List<BasLaancArcrftModel> arcrftList = fltPlanArcrftList.stream().map(BasLaancArcrftModel::toModel).toList();
result.setArcrftList(arcrftList);
}
Optional<ComFileBas> comFileBasData = comFileDomainService.findFirstByFileGroupNoAndDelYnOrderByCreateDtDesc(fltPlanBas.getFileGroupNo());
// PDF URL 추출
if (comFileBasData.isPresent()) {
ComFileBas comFileBas = comFileBasData.get();
result.setPdfUrl(fileUtils.getDownloadUrl(comFileBas.getFileSno()));
}
return result;
} else {
throw new BaseException(BaseErrorCode.WEB_PARAM_INVALID);
}
}
}

Loading…
Cancel
Save