diff --git a/pav-server/src/main/java/com/palnet/biz/api/bas/laanc/model/BasLaancAprvRs.java b/pav-server/src/main/java/com/palnet/biz/api/bas/laanc/model/BasLaancAprvRs.java index 44136c90..cdca995b 100644 --- a/pav-server/src/main/java/com/palnet/biz/api/bas/laanc/model/BasLaancAprvRs.java +++ b/pav-server/src/main/java/com/palnet/biz/api/bas/laanc/model/BasLaancAprvRs.java @@ -1,6 +1,7 @@ package com.palnet.biz.api.bas.laanc.model; import com.fasterxml.jackson.annotation.JsonIgnore; +import com.palnet.biz.api.comn.file.model.ComnFileModel; import com.palnet.biz.jpa.entity.type.ArcrftTypeCd; import com.palnet.biz.jpa.entity.type.ArcrftWghtCd; import com.palnet.biz.jpa.entity.type.FltPurpose; @@ -82,6 +83,8 @@ public class BasLaancAprvRs { private String serviceType; @ApiParam(name = "기업여부") private String corpRegYn; + @ApiParam(name = "공문URL") + private String pdfUrl; // 하나의 필드로 묶어서 처리 @ApiParam(name = "기체 무게") @@ -112,4 +115,5 @@ public class BasLaancAprvRs { private List arcrftList; private List pilotList; + } diff --git a/pav-server/src/main/java/com/palnet/biz/api/bas/laanc/service/BasLaancAprvService.java b/pav-server/src/main/java/com/palnet/biz/api/bas/laanc/service/BasLaancAprvService.java index 603e2fad..aa9e1650 100644 --- a/pav-server/src/main/java/com/palnet/biz/api/bas/laanc/service/BasLaancAprvService.java +++ b/pav-server/src/main/java/com/palnet/biz/api/bas/laanc/service/BasLaancAprvService.java @@ -2,6 +2,8 @@ package com.palnet.biz.api.bas.laanc.service; import com.palnet.biz.api.bas.laanc.model.BasLaancAprvListRq; import com.palnet.biz.api.bas.laanc.model.BasLaancAprvRs; +import com.palnet.biz.api.comn.file.model.ComnFileModel; +import com.palnet.biz.api.comn.file.service.ComnFileService; import com.palnet.biz.jpa.model.LaancAprvSearchDto; import com.palnet.biz.jpa.model.LaancPlanDto; import com.palnet.biz.jpa.repository.flt.FltPlanQueryRepository; @@ -15,6 +17,8 @@ import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; import java.util.List; +import java.util.Objects; +import java.util.stream.Collectors; /** * packageName : com.palnet.biz.api.bas.laanc.service @@ -33,9 +37,11 @@ import java.util.List; public class BasLaancAprvService { private final FltPlanQueryRepository fltPlanQueryRepository; + private final ComnFileService comnFileService; /** * laanc 승인 목록 + * * @param rq * @param pageable * @return @@ -46,21 +52,38 @@ public class BasLaancAprvService { Page rs = PageUtils.convert(result, BasLaancAprvMapper.MAPPER.toRsList(result.getContent())); return rs; } + public List getLaancAprvList2(BasLaancAprvListRq rq) { LaancAprvSearchDto searchDto = BasLaancAprvMapper.MAPPER.toDto(rq); List result = fltPlanQueryRepository.findAllAprvListBySearch2(searchDto); + List fileGroupNoList = result.stream().map(LaancPlanDto::getFileGroupNo).filter(Objects::nonNull).collect(Collectors.toList()); + List fileListByGroupNoList = comnFileService.getFileListByGroupNoList(fileGroupNoList); + result.forEach(dto -> { + if (dto.getFileGroupNo() != null) { + fileListByGroupNoList.stream() + .filter(file -> Objects.equals(file.getFileGroupNo(), dto.getFileGroupNo())) + .findFirst() + .ifPresent(file -> dto.setPdfUrl(file.getDownloadUrl())); + } + }); List rs = BasLaancAprvMapper.MAPPER.toRsList(result); + return rs; } /** * laanc 승인 상세 + * * @param planSno * @return */ public BasLaancAprvRs getLaancAprvDetail(String planSno) { - if(planSno == null) throw new CustomException(ErrorCode.NON_VALID_PARAMETER); + if (planSno == null) throw new CustomException(ErrorCode.NON_VALID_PARAMETER); LaancPlanDto result = fltPlanQueryRepository.findAprvById(Integer.parseInt(planSno)); + if (result != null && result.getFileGroupNo() != null) { + ComnFileModel comnFileModel = comnFileService.getOfficialDocumentFileListByGroupNo(result.getFileGroupNo()); + if (comnFileModel != null) result.setPdfUrl(comnFileModel.getDownloadUrl()); + } BasLaancAprvRs rs = BasLaancAprvMapper.MAPPER.toRs(result); return rs; } diff --git a/pav-server/src/main/java/com/palnet/biz/api/bas/laanc/service/BasLaancService.java b/pav-server/src/main/java/com/palnet/biz/api/bas/laanc/service/BasLaancService.java index fe029a3b..9ca710d6 100644 --- a/pav-server/src/main/java/com/palnet/biz/api/bas/laanc/service/BasLaancService.java +++ b/pav-server/src/main/java/com/palnet/biz/api/bas/laanc/service/BasLaancService.java @@ -296,7 +296,10 @@ public class BasLaancService { ComFileBas comFileBas = comnFileService.makePdf(laancPdfModel); - String sb = FILE_DOWNLOAD_URL + "?fileSno=" + comFileBas.getFileSno(); + rBasEntity.setFileGroupNo(comFileBas.getFileGroupNo()); + fltPlanBasRepository.save(rBasEntity); + + String downloadUrl = comnFileService.getDownloadUrl(comFileBas.getFileSno()); // SMS 전송 try { @@ -320,7 +323,7 @@ public class BasLaancService { } BasLaancLastRs rs = BasLaancLastRs.builder() - .pdfUrl(sb) + .pdfUrl(downloadUrl) .address(address) .build(); diff --git a/pav-server/src/main/java/com/palnet/biz/api/comn/file/model/ComnFileModel.java b/pav-server/src/main/java/com/palnet/biz/api/comn/file/model/ComnFileModel.java index 95c842b4..09708a3b 100644 --- a/pav-server/src/main/java/com/palnet/biz/api/comn/file/model/ComnFileModel.java +++ b/pav-server/src/main/java/com/palnet/biz/api/comn/file/model/ComnFileModel.java @@ -22,6 +22,7 @@ import lombok.NoArgsConstructor; @Builder public class ComnFileModel { private Integer fileSno; + private Integer fileGroupNo; private String downloadUrl; private String fileName; } diff --git a/pav-server/src/main/java/com/palnet/biz/api/comn/file/service/ComnFileService.java b/pav-server/src/main/java/com/palnet/biz/api/comn/file/service/ComnFileService.java index 6136dcce..7e6c9346 100644 --- a/pav-server/src/main/java/com/palnet/biz/api/comn/file/service/ComnFileService.java +++ b/pav-server/src/main/java/com/palnet/biz/api/comn/file/service/ComnFileService.java @@ -394,13 +394,46 @@ public class ComnFileService { List result = new ArrayList<>(); for (ComFileBas file : files) { result.add(ComnFileModel.builder() + .fileGroupNo(file.getFileGroupNo()) .fileSno(file.getFileSno()) .fileName(file.getFileOriNm()) - .downloadUrl(DOWNLOAD_URL + "/" + file.getFileSno()) + .downloadUrl(getDownloadUrl(file.getFileSno())) .build()); } return result; + } + + public ComnFileModel getOfficialDocumentFileListByGroupNo(Integer fileGroupNo) { + ComFileBas file = comFileBasRepository.findFirstByFileGroupNoAndDelYnOrderByCreateDtDesc(fileGroupNo, "N"); + + ComnFileModel result = ComnFileModel.builder() + .fileGroupNo(file.getFileGroupNo()) + .fileSno(file.getFileSno()) + .fileName(file.getFileOriNm()) + .downloadUrl(getDownloadUrl(file.getFileSno())) + .build(); + return result; + } + + public String getDownloadUrl(Integer fileSno) { + if(fileSno == null) return null; + return DOWNLOAD_URL + "/" + fileSno; + } + + public List getFileListByGroupNoList(List fileGroupNoList) { + List files = comFileBasRepository.findByFileGroupNoInAndDelYnOrderByCreateDtDesc(fileGroupNoList, "N"); + List result = new ArrayList<>(); + for (ComFileBas file : files) { + result.add(ComnFileModel.builder() + .fileGroupNo(file.getFileGroupNo()) + .fileSno(file.getFileSno()) + .fileName(file.getFileOriNm()) + .downloadUrl(getDownloadUrl(file.getFileSno())) + .build()); + } + + return result; } } diff --git a/pav-server/src/main/java/com/palnet/biz/config/WebSecurityConfig.java b/pav-server/src/main/java/com/palnet/biz/config/WebSecurityConfig.java index ebab2e11..19067c97 100644 --- a/pav-server/src/main/java/com/palnet/biz/config/WebSecurityConfig.java +++ b/pav-server/src/main/java/com/palnet/biz/config/WebSecurityConfig.java @@ -40,6 +40,7 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter { "/api/ctr/cntrl/id/**", "/api/server/**", "/api/comn/file/download", + "/api/comn/file/download/**", /* swagger v2 */ "/v2/api-docs", "/swagger-resources", diff --git a/pav-server/src/main/java/com/palnet/biz/jpa/entity/FltPlanBas.java b/pav-server/src/main/java/com/palnet/biz/jpa/entity/FltPlanBas.java index fd4c7b07..ac8e564f 100644 --- a/pav-server/src/main/java/com/palnet/biz/jpa/entity/FltPlanBas.java +++ b/pav-server/src/main/java/com/palnet/biz/jpa/entity/FltPlanBas.java @@ -71,9 +71,13 @@ public class FltPlanBas { @Column(name = "DEL_YN") private String delYn; + @Column(name = "FILE_GROUP_NO") + private Integer fileGroupNo; + @Column(name = "CREATE_USER_ID") private String createUserId; + @CreationTimestamp // @Temporal(TemporalType.TIMESTAMP) @Column(name = "CREATE_DT", columnDefinition = "TIMESTAMP") diff --git a/pav-server/src/main/java/com/palnet/biz/jpa/model/LaancPlanDto.java b/pav-server/src/main/java/com/palnet/biz/jpa/model/LaancPlanDto.java index 7a85d837..4a7fe772 100644 --- a/pav-server/src/main/java/com/palnet/biz/jpa/model/LaancPlanDto.java +++ b/pav-server/src/main/java/com/palnet/biz/jpa/model/LaancPlanDto.java @@ -29,6 +29,7 @@ public class LaancPlanDto { private Integer planSno; private String groupId; private Integer cstmrSno; + private String serviceType; private String memberName; private String email; private String hpno; @@ -40,15 +41,16 @@ public class LaancPlanDto { private Instant schFltEndDt; private FltPurpose fltPurpose; private FltType fltType; + private String corpRegYn; private String aprvlYn; private Instant aprvlDt; private String delYn; + private Integer fileGroupNo; private String createUserId; private Instant createDt; private String updateUserId; private Instant updateDt; - private String serviceType; - private String corpRegYn; + private String pdfUrl; private List areaList; private List arcrftList; private List pilotList; diff --git a/pav-server/src/main/java/com/palnet/biz/jpa/repository/com/ComFileBasRepository.java b/pav-server/src/main/java/com/palnet/biz/jpa/repository/com/ComFileBasRepository.java index 439f94bf..f8e474be 100644 --- a/pav-server/src/main/java/com/palnet/biz/jpa/repository/com/ComFileBasRepository.java +++ b/pav-server/src/main/java/com/palnet/biz/jpa/repository/com/ComFileBasRepository.java @@ -8,6 +8,8 @@ import java.util.List; @Repository public interface ComFileBasRepository extends JpaRepository{ + List findByFileGroupNoInAndDelYnOrderByCreateDtDesc(List fileGroupNos, String delYn); + ComFileBas findFirstByFileGroupNoAndDelYnOrderByCreateDtDesc(int fileGroupNo, String delYn); List findByFileSnoInAndDelYn(List fileSnos, String delYn); ComFileBas findFirstByOrderByFileSnoDesc(); diff --git a/pav-server/src/main/java/com/palnet/biz/jpa/repository/flt/FltPlanQueryRepository.java b/pav-server/src/main/java/com/palnet/biz/jpa/repository/flt/FltPlanQueryRepository.java index 3593b49c..5c8d631c 100644 --- a/pav-server/src/main/java/com/palnet/biz/jpa/repository/flt/FltPlanQueryRepository.java +++ b/pav-server/src/main/java/com/palnet/biz/jpa/repository/flt/FltPlanQueryRepository.java @@ -1,6 +1,7 @@ package com.palnet.biz.jpa.repository.flt; import com.palnet.biz.api.bas.flight.model.*; +import com.palnet.biz.api.comn.file.service.ComnFileService; import com.palnet.biz.api.main.dash.model.MainDashStcsModel; import com.palnet.biz.jpa.entity.*; import com.palnet.biz.jpa.model.*; @@ -39,6 +40,7 @@ public class FltPlanQueryRepository { private final JPAQueryFactory query; + private final ComnFileService comnFileService; // 비행계획서 목록 @@ -784,6 +786,7 @@ public class FltPlanQueryRepository { bas.fltPurpose, bas.aprvlYn, bas.delYn, + bas.fileGroupNo, bas.createUserId, bas.createDt, bas.updateUserId, @@ -858,6 +861,7 @@ public class FltPlanQueryRepository { QFltPlanBas bas = QFltPlanBas.fltPlanBas; QFltPlanArea area = QFltPlanArea.fltPlanArea; QFltPlanArcrft arcrft = QFltPlanArcrft.fltPlanArcrft; + QComFileBas fileBas = QComFileBas.comFileBas; // serach BooleanBuilder builder = new BooleanBuilder(); @@ -917,6 +921,7 @@ public class FltPlanQueryRepository { bas.fltPurpose, bas.aprvlYn, bas.delYn, + bas.fileGroupNo, bas.createUserId, bas.createDt, bas.updateUserId, @@ -1015,6 +1020,7 @@ public class FltPlanQueryRepository { bas.fltPurpose, bas.aprvlYn, bas.delYn, + bas.fileGroupNo, bas.createUserId, bas.createDt, bas.updateUserId,