Browse Source

feat: Flt모듈 - Laanc승인 리스트 불러오기 기능 추가

pull/9/head
lkd9125(이경도) 7 months ago
parent
commit
b15ecf1f77
  1. 5
      data/com/src/main/java/kr/co/palnet/kac/data/com/repository/ComFileBasRepository.java
  2. 5
      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/model/FltPlanArcrft.java
  4. 7
      data/flt/src/main/java/kr/co/palnet/kac/data/flt/repository/FltPlanArcrftRepository.java
  5. 9
      data/flt/src/main/java/kr/co/palnet/kac/data/flt/repository/FltPlanAreaRepository.java
  6. 53
      data/flt/src/main/java/kr/co/palnet/kac/data/flt/repository/FltPlanQueryRepository.java
  7. 18
      data/flt/src/main/java/kr/co/palnet/kac/data/flt/service/FltPlanDomainService.java
  8. 3
      web/api-flight/src/main/java/kr/co/palnet/kac/api/util/FileUtils.java
  9. 10
      web/api-flight/src/main/java/kr/co/palnet/kac/api/v1/flight/laanc/controller/FlightLaancController.java
  10. 4
      web/api-flight/src/main/java/kr/co/palnet/kac/api/v1/flight/laanc/model/FltPlanArcrftDTO.java
  11. 37
      web/api-flight/src/main/java/kr/co/palnet/kac/api/v1/flight/laanc/model/create/BasLaancArcrftModel.java
  12. 20
      web/api-flight/src/main/java/kr/co/palnet/kac/api/v1/flight/laanc/model/create/BasLaancAreaModel.java
  13. 17
      web/api-flight/src/main/java/kr/co/palnet/kac/api/v1/flight/laanc/model/search/FileModel.java
  14. 28
      web/api-flight/src/main/java/kr/co/palnet/kac/api/v1/flight/laanc/model/search/SearchLaancAprvRQ.java
  15. 140
      web/api-flight/src/main/java/kr/co/palnet/kac/api/v1/flight/laanc/model/search/SearchLaancAprvRS.java
  16. 73
      web/api-flight/src/main/java/kr/co/palnet/kac/api/v1/flight/laanc/service/FlightLaancService.java

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

@ -3,10 +3,13 @@ package kr.co.palnet.kac.data.com.repository;
import kr.co.palnet.kac.data.com.domain.ComFileBas;
import org.springframework.data.jpa.repository.JpaRepository;
import java.util.List;
import java.util.Optional;
public interface ComFileBasRepository extends JpaRepository<ComFileBas, Integer> {
public interface ComFileBasRepository extends JpaRepository<ComFileBas, Long> {
Optional<ComFileBas> findFirstByOrderByFileGroupNoDesc();
Optional<List<ComFileBas>> findByFileGroupNoInAndDelYnOrderByCreateDtDesc(List<Long> fileGroupNos, String delYn);
}

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

@ -6,6 +6,7 @@ import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Optional;
@Service
@ -30,4 +31,8 @@ public class ComFileDomainService {
return 1L;
}
}
public Optional<List<ComFileBas>> findByFileGroupNoInAndDelYnOrderByCreateDtDesc(List<Long> fileGroupNos, String delYn){
return comFileBasRepository.findByFileGroupNoInAndDelYnOrderByCreateDtDesc(fileGroupNos, delYn);
}
}

2
data/flt/src/main/java/kr/co/palnet/kac/data/flt/model/FltPlanArcrft.java

@ -114,7 +114,7 @@ public class FltPlanArcrft {
// 보험유효기간
@Column(name = "INSURANCE_EXPERIOD", columnDefinition = "datetime")
private String insuranceExperiod;
private LocalDateTime insuranceExperiod;
// 법인명
@Column(name = "CORPORATION_NM", length = 100)

7
data/flt/src/main/java/kr/co/palnet/kac/data/flt/repository/FltPlanArcrftRepository.java

@ -3,6 +3,11 @@ package kr.co.palnet.kac.data.flt.repository;
import kr.co.palnet.kac.data.flt.model.FltPlanArcrft;
import org.springframework.data.jpa.repository.JpaRepository;
public interface FltPlanArcrftRepository extends JpaRepository<FltPlanArcrft, Integer> {
import java.util.List;
import java.util.Optional;
public interface FltPlanArcrftRepository extends JpaRepository<FltPlanArcrft, Long> {
public Optional<List<FltPlanArcrft>> findByPlanSno(Long planSno);
}

9
data/flt/src/main/java/kr/co/palnet/kac/data/flt/repository/FltPlanAreaRepository.java

@ -3,5 +3,12 @@ package kr.co.palnet.kac.data.flt.repository;
import kr.co.palnet.kac.data.flt.model.FltPlanArea;
import org.springframework.data.jpa.repository.JpaRepository;
public interface FltPlanAreaRepository extends JpaRepository<FltPlanArea, Integer> {
import java.util.List;
import java.util.Optional;
public interface FltPlanAreaRepository extends JpaRepository<FltPlanArea, Long> {
public Optional<List<FltPlanArea>> findByPlanSno(Long planSno);
}

53
data/flt/src/main/java/kr/co/palnet/kac/data/flt/repository/FltPlanQueryRepository.java

@ -0,0 +1,53 @@
package kr.co.palnet.kac.data.flt.repository;
import com.querydsl.core.BooleanBuilder;
import com.querydsl.jpa.impl.JPAQuery;
import com.querydsl.jpa.impl.JPAQueryFactory;
import kr.co.palnet.kac.data.flt.model.FltPlanBas;
import kr.co.palnet.kac.data.flt.model.QFltPlanArcrft;
import kr.co.palnet.kac.data.flt.model.QFltPlanArea;
import kr.co.palnet.kac.data.flt.model.QFltPlanBas;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Repository;
import org.springframework.util.StringUtils;
import java.time.Duration;
import java.time.Instant;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
@Repository
@Slf4j
@RequiredArgsConstructor
public class FltPlanQueryRepository {
private final JPAQueryFactory query;
public Optional<List<FltPlanBas>> findAllBySearch(String memberName, LocalDateTime createStDate, LocalDateTime createEndDate){
QFltPlanBas bas = QFltPlanBas.fltPlanBas;
BooleanBuilder builder = new BooleanBuilder();
if(StringUtils.hasText(memberName)){
builder.and(bas.memberName.contains(memberName));
}
if(createStDate != null) {
builder.and(bas.createDt.goe(createStDate));
}
if(createEndDate != null){
builder.and(bas.createDt.lt(createEndDate));
}
return Optional.ofNullable(query
.select(bas)
.from(bas)
.where(builder)
.orderBy(bas.createDt.desc())
.fetch());
}
}

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

@ -6,6 +6,10 @@ import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import java.time.LocalDateTime;
import java.util.List;
import java.util.Optional;
@Slf4j
@RequiredArgsConstructor
@Service
@ -13,6 +17,8 @@ public class FltPlanDomainService {
private final FltPlanBasRepository fltPlanBasRepository;
private final FltPlanQueryRepository fltPlanQueryRepository;
private final FltPlanAreaRepository fltPlanAreaRepository;
private final FltPlanAreaCoordRepository fltPlanAreaCoordRepository;
@ -21,11 +27,19 @@ public class FltPlanDomainService {
private final FltPlanArcrftRepository fltPlanArcrftRepository;
public Optional<List<FltPlanBas>> findAllFltPlanBasBySearch(String memberName, LocalDateTime createStDate, LocalDateTime createEndDate){
return fltPlanQueryRepository.findAllBySearch(memberName, createStDate, createEndDate);
}
public FltPlanBas saveFltPlanBas(FltPlanBas entity){
return fltPlanBasRepository.save(entity);
}
public Optional<List<FltPlanArea>> findFltPlanAreaByPlanSno(Long planSno){
return fltPlanAreaRepository.findByPlanSno(planSno);
}
public FltPlanArea saveFltPlanArea(FltPlanArea entity){
return fltPlanAreaRepository.save(entity);
}
@ -38,6 +52,10 @@ public class FltPlanDomainService {
return fltPlanPilotRepository.save(entity);
}
public Optional<List<FltPlanArcrft>> findFltPlanArcrftByPlanSno(Long planSno){
return fltPlanArcrftRepository.findByPlanSno(planSno);
}
public FltPlanArcrft saveFltPlanArcrft(FltPlanArcrft entity){
return fltPlanArcrftRepository.save(entity);
}

3
web/api-flight/src/main/java/kr/co/palnet/kac/api/util/FileUtils.java

@ -8,13 +8,14 @@ import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.io.IOUtils;
import org.springframework.core.io.ClassPathResource;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Service;
import java.io.IOException;
import java.io.InputStream;
import java.time.LocalDateTime;
@Service
@Component
@RequiredArgsConstructor
@Slf4j
public class FileUtils {

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

@ -5,6 +5,8 @@ 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.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;
import kr.co.palnet.kac.api.v1.flight.laanc.model.tsqr.LaancTsQRcodeRQ;
import kr.co.palnet.kac.api.v1.flight.laanc.model.tsqr.LaancTsQRcodeRS;
import kr.co.palnet.kac.api.v1.flight.laanc.model.valid.LaancAllowableElevationRS;
@ -74,6 +76,14 @@ public class FlightLaancController {
return ResponseEntity.ok().body(result);
}
@GetMapping("/list")
@Operation(summary = "LAANC 승인 목록", description = "LAANC 승인 목록")
public ResponseEntity<List<SearchLaancAprvRS>> getLaancAprvList(SearchLaancAprvRQ rq){
List<SearchLaancAprvRS> result = flightLaancService.getLaancAprvList(rq);
return ResponseEntity.ok().body(result);
}

4
web/api-flight/src/main/java/kr/co/palnet/kac/api/v1/flight/laanc/model/FltPlanArcrftDTO.java

@ -32,7 +32,7 @@ public class FltPlanArcrftDTO {
private String cameraYn; // 카메라탑재여부
private String insrncYn; // 보험가입여부
private String acrftInsuranceYn; // 기체보험유무
private String insuranceExperiod; // 보험유효기간
private LocalDateTime insuranceExperiod; // 보험유효기간
private String corporationNm; // 법인명
private String ownerNm; // 소유자명
private String createUserId; // 생성사용자ID
@ -64,7 +64,7 @@ public class FltPlanArcrftDTO {
dto.setCameraYn(model.getCameraYn());
dto.setInsrncYn(model.getInsrncYn());
dto.setAcrftInsuranceYn(model.getAcrftInsuranceYn());
dto.setInsuranceExperiod(model.getAcrftInsuranceYn());
dto.setInsuranceExperiod(model.getInsuranceExperiod());
dto.setCorporationNm(model.getCorporationNm());
dto.setOwnerNm(model.getOwnerNm());
dto.setCreateUserId(model.getCreateUserId());

37
web/api-flight/src/main/java/kr/co/palnet/kac/api/v1/flight/laanc/model/create/BasLaancArcrftModel.java

@ -3,6 +3,7 @@ package kr.co.palnet.kac.api.v1.flight.laanc.model.create;
import io.swagger.v3.oas.annotations.media.Schema;
import kr.co.palnet.kac.api.v1.flight.laanc.model.constant.ArcrftTypeCd;
import kr.co.palnet.kac.api.v1.flight.laanc.model.constant.ArcrftWghtCd;
import kr.co.palnet.kac.data.flt.model.FltPlanArcrft;
import lombok.Data;
import java.time.LocalDate;
@ -104,4 +105,40 @@ public class BasLaancArcrftModel {
@Schema(description = "자체중량코드", example = "10")
private ArcrftWghtCd arcrftWghtCd; // 기체 무게 코드 ----
public static BasLaancArcrftModel toModel(FltPlanArcrft entity){
BasLaancArcrftModel model = new BasLaancArcrftModel();
model.setPlanArcrftSno(entity.getPlanArcrftSno());
model.setPlanSno(entity.getPlanSno());
model.setArcrftSno(entity.getArcrftSno());
model.setIdntfNum(entity.getIdntfNum());
model.setGroupNm(entity.getGroupNm());
model.setPrdctNum(entity.getPrdctNum());
model.setArcrftTypeCd(ArcrftTypeCd.fromCode(entity.getArcrftTypeCd()));
model.setArcrftModelNm(entity.getArcrftModelNm());
model.setPrdctCmpnNm(entity.getPrdctCmpnNm());
model.setPrdctDate(entity.getPrdctDate());
model.setArcrftLngth(entity.getArcrftLngth());
model.setArcrftWdth(entity.getArcrftWdth());
model.setArcrftHght(entity.getArcrftHght());
model.setArcrftWght(entity.getArcrftWght());
model.setWghtTypeCd(entity.getWghtTypeCd());
model.setImageUrl(entity.getImageUrl());
model.setTakeoffWght(entity.getTakeoffWght());
model.setUseYn(entity.getUseYn());
model.setCameraYn(entity.getCameraYn());
model.setInsrncYn(entity.getInsrncYn());
model.setOwnerNm(entity.getOwnerNm());
model.setCreateUserId(entity.getCreateUserId());
model.setCreateDt(entity.getCreateDt());
model.setUpdateUserId(entity.getUpdateUserId());
model.setUpdateDt(entity.getUpdateDt());
model.setDocState(entity.getArcrftModelNm());
model.setAcrftInsuranceYn(entity.getAcrftInsuranceYn());
model.setInsuranceExperiod(entity.getInsuranceExperiod());
model.setCorporationNm(entity.getCorporationNm());
model.setArcrftWghtCd(ArcrftWghtCd.fromCode(entity.getArcrftWghtCd()));
return model;
}
}

20
web/api-flight/src/main/java/kr/co/palnet/kac/api/v1/flight/laanc/model/create/BasLaancAreaModel.java

@ -2,6 +2,7 @@ package kr.co.palnet.kac.api.v1.flight.laanc.model.create;
import io.swagger.v3.oas.annotations.media.Schema;
import kr.co.palnet.kac.api.v1.flight.laanc.model.constant.FltMethod;
import kr.co.palnet.kac.data.flt.model.FltPlanArea;
import lombok.Data;
import java.time.LocalDateTime;
@ -53,4 +54,23 @@ public class BasLaancAreaModel {
// kac 추가 필드
@Schema(description = "비행방식(기타)")
private String fltMothoeRm;
public static BasLaancAreaModel toModel(FltPlanArea entity){
BasLaancAreaModel model = new BasLaancAreaModel();
model.setPlanAreaSno(entity.getPlanAreaSno());
model.setPlanSno(entity.getPlanSno());
model.setAreaType(entity.getAreaType());
model.setFltMethod(FltMethod.fromCode(entity.getFltMethod()));
model.setFltAreaAddr(entity.getFltAreaAddr());
model.setBufferZone(entity.getBufferZone());
model.setFltElev(entity.getFltElev());
model.setCreateUserId(entity.getCreateUserId());
model.setCreateDt(entity.getCreateDt());
model.setUpdateUserId(entity.getUpdateUserId());
model.setUpdateDt(entity.getUpdateDt());
model.setDocState(entity.getAreaType());
model.setFltMothoeRm(entity.getFltMothoeRm());
return model;
}
}

17
web/api-flight/src/main/java/kr/co/palnet/kac/api/v1/flight/laanc/model/search/FileModel.java

@ -0,0 +1,17 @@
package kr.co.palnet.kac.api.v1.flight.laanc.model.search;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class FileModel {
private Long fileSno;
private Long fileGroupNo;
private String downloadUrl;
private String fileName;
}

28
web/api-flight/src/main/java/kr/co/palnet/kac/api/v1/flight/laanc/model/search/SearchLaancAprvRQ.java

@ -0,0 +1,28 @@
package kr.co.palnet.kac.api.v1.flight.laanc.model.search;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.time.LocalDateTime;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class SearchLaancAprvRQ {
@Schema(description = "작성자 이름", example = "팔")
private String memberName;
@Schema(description = "신청(등록)시작일자", example = "2023-12-12", implementation = String.class)
private LocalDateTime createStDate;
@Schema(description = "신청(등록)종료일자", example = "2023-12-12", implementation = String.class)
private LocalDateTime createEndDate;
}

140
web/api-flight/src/main/java/kr/co/palnet/kac/api/v1/flight/laanc/model/search/SearchLaancAprvRS.java

@ -0,0 +1,140 @@
package kr.co.palnet.kac.api.v1.flight.laanc.model.search;
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.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 SearchLaancAprvRS {
//비행계획서 일려번호
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 SearchLaancAprvRS toModel(FltPlanBas entity){
SearchLaancAprvRS model = new SearchLaancAprvRS();
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;
// }
}

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

@ -8,11 +8,16 @@ import kr.co.palnet.kac.api.util.*;
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.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;
import kr.co.palnet.kac.api.v1.flight.laanc.model.tsqr.LaancTsQRcodeRQ;
import kr.co.palnet.kac.api.v1.flight.laanc.model.tsqr.LaancTsQRcodeRS;
import kr.co.palnet.kac.api.v1.flight.laanc.model.valid.*;
import kr.co.palnet.kac.data.com.domain.ComConfirmBas;
import kr.co.palnet.kac.data.com.domain.ComFileBas;
import kr.co.palnet.kac.data.com.service.ComConfirmDomainService;
import kr.co.palnet.kac.data.flt.model.FltPlanArcrft;
import kr.co.palnet.kac.data.other.service.OtherDomainService;
import kr.co.palnet.kac.api.external.model.ComnSmsLaancAprovModel;
import kr.co.palnet.kac.api.external.model.CtrTrnsLctnModel;
@ -49,6 +54,7 @@ import org.locationtech.jts.geom.Geometry;
import java.io.IOException;
import java.time.LocalDateTime;
import java.util.*;
import java.util.stream.Collectors;
@Service
@Slf4j
@ -498,4 +504,71 @@ public class FlightLaancService {
return result;
}
@Transactional
public List<SearchLaancAprvRS> getLaancAprvList(SearchLaancAprvRQ rq) {
Optional<List<FltPlanBas>> fltPlanBasListData = fltPlanDomainService.findAllFltPlanBasBySearch(rq.getMemberName(), rq.getCreateStDate(), rq.getCreateEndDate());
List<SearchLaancAprvRS> result = new ArrayList<>();
if(fltPlanBasListData.isPresent() && !fltPlanBasListData.get().isEmpty()){
List<FltPlanBas> fltPlanBasList = fltPlanBasListData.get();
for(FltPlanBas fltPlanBas : fltPlanBasList){
SearchLaancAprvRS node = SearchLaancAprvRS.toModel(fltPlanBas);
Long planSno = node.getPlanSno();
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();
node.setAreaList(areaList);
}
if(fltPlanArcrftListData.isPresent()){
List<FltPlanArcrft> fltPlanArcrftList = fltPlanArcrftListData.get();
List<BasLaancArcrftModel> arcrftList = fltPlanArcrftList.stream().map(BasLaancArcrftModel::toModel).toList();
node.setArcrftList(arcrftList);
}
result.add(node);
}
}
List<Long> fileGroupNoList = result.stream().map(SearchLaancAprvRS::getFileGroupNo).filter(Objects::nonNull).collect(Collectors.toList());
Optional<List<ComFileBas>> filesData = comFileDomainService.findByFileGroupNoInAndDelYnOrderByCreateDtDesc(fileGroupNoList, "N");
List<FileModel> fileModels = new ArrayList<>();
if(filesData.isPresent() && !filesData.get().isEmpty()){
List<ComFileBas> files = filesData.get();
for (ComFileBas file : files) {
fileModels.add(FileModel.builder()
.fileGroupNo(file.getFileGroupNo())
.fileSno(file.getFileSno())
.fileName(file.getFileOriNm())
.downloadUrl(fileUtils.getDownloadUrl(file.getFileSno()))
.build());
}
}
result.forEach(dto -> {
if (dto.getFileGroupNo() != null) {
fileModels.stream()
.filter(file -> Objects.equals(file.getFileGroupNo(), dto.getFileGroupNo()))
.findFirst()
.ifPresent(file -> dto.setPdfUrl(file.getDownloadUrl()));
}
});
return result;
}
}

Loading…
Cancel
Save