diff --git a/http/server/server.http b/http/server/server.http index 5698d531..5e2def92 100644 --- a/http/server/server.http +++ b/http/server/server.http @@ -66,7 +66,8 @@ Authorization: {{accessToken}} GET {{appHost}}/api/bas/dos/plan ?searchStDt=2023-06-29 &searchEndDt=2024-06-29 - &sendProcStatus=S +# &sendStatus=S +# &sendProcStatus=S # &reviewedType=W # &reviewedProcType=W # &limitZoneCd= @@ -80,8 +81,8 @@ Authorization: {{accessToken}} const {planSno, applyNo, areaList} = d; console.log(`planSno: ${planSno}, applyNo: ${applyNo}`); areaList.forEach(a => { - const {planAreaSno, zoneNo, reviewedType, reviewedProcType, approvalCd, limitZoneCd} = a; - console.log(`planAreaSno: ${planAreaSno}, zoneNo: ${zoneNo}, reviewedType: ${reviewedType}, reviewedProcType: ${reviewedProcType}, approvalCd: ${approvalCd}, limitZoneCd: ${limitZoneCd}`); + const {planAreaSno, zoneNo, reviewedType, reviewedProcType, approvalCd, limitZoneCd, sendStatus} = a; + console.log(`planAreaSno: ${planAreaSno}, zoneNo: ${zoneNo}, reviewedType: ${reviewedType}, reviewedProcType: ${reviewedProcType}, approvalCd: ${approvalCd}, limitZoneCd: ${limitZoneCd}, sendStatus: ${sendStatus}`); }) }); @@ -273,7 +274,8 @@ Content-Type: application/json { "planAreaSnoList": [ - 17,18 + 17, + 18 ] } diff --git a/pav-server/src/main/java/com/palnet/biz/api/bas/dos/model/BasDosPlanAreaRs.java b/pav-server/src/main/java/com/palnet/biz/api/bas/dos/model/BasDosPlanAreaRs.java index 6d9c7fa2..3bc5e79a 100644 --- a/pav-server/src/main/java/com/palnet/biz/api/bas/dos/model/BasDosPlanAreaRs.java +++ b/pav-server/src/main/java/com/palnet/biz/api/bas/dos/model/BasDosPlanAreaRs.java @@ -2,6 +2,7 @@ package com.palnet.biz.api.bas.dos.model; import com.palnet.biz.jpa.entity.type.ReviewedProcType; import com.palnet.biz.jpa.entity.type.ReviewedType; +import com.palnet.biz.jpa.entity.type.SendStatusType; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -57,6 +58,8 @@ public class BasDosPlanAreaRs { private String reviewedReason; // 검토처리유형 private ReviewedProcType reviewedProcType; + // 전송상태 + private SendStatusType sendStatus; // 요청반경 private Long reqRadius; // 요청고도 diff --git a/pav-server/src/main/java/com/palnet/biz/api/bas/dos/model/BasDosPlanRq.java b/pav-server/src/main/java/com/palnet/biz/api/bas/dos/model/BasDosPlanRq.java index 2fa18e13..fdc043ab 100644 --- a/pav-server/src/main/java/com/palnet/biz/api/bas/dos/model/BasDosPlanRq.java +++ b/pav-server/src/main/java/com/palnet/biz/api/bas/dos/model/BasDosPlanRq.java @@ -53,6 +53,6 @@ public class BasDosPlanRq { @Schema(description = "전송상태(관제과)", example = "S", implementation = SendStatusType.class) private SendStatusType sendProcStatus; -// @Schema(description = "전송상태(운항과)", example = "S", implementation = SendStatusType.class) -// private SendStatusType sendPStatus; + @Schema(description = "전송상태(운항과)", example = "S", implementation = SendStatusType.class) + private SendStatusType sendStatus; } diff --git a/pav-server/src/main/java/com/palnet/biz/api/bas/dos/service/BasDosService.java b/pav-server/src/main/java/com/palnet/biz/api/bas/dos/service/BasDosService.java index 02e38df8..22405661 100644 --- a/pav-server/src/main/java/com/palnet/biz/api/bas/dos/service/BasDosService.java +++ b/pav-server/src/main/java/com/palnet/biz/api/bas/dos/service/BasDosService.java @@ -288,6 +288,7 @@ public class BasDosService { .reviewedType(reviewedType) .reviewedReason(area.getReviewedReason()) .reviewedProcType(area.getReviewedProcType()) + .sendStatus(area.getSendStatus()) .reqRadius(area.getReqRadius()) .allowRadius(area.getAllowRadius()) .limitZoneCd(area.getLimitZone()) @@ -419,7 +420,7 @@ public class BasDosService { // 상태 변경 알림 - if(!sharePlanAreaSnoList.isEmpty()) { + if (!sharePlanAreaSnoList.isEmpty()) { shareService.shareStateUpdate(sharePlanAreaSnoList); } } @@ -991,12 +992,13 @@ public class BasDosService { /** * 페이징처리 + * * @param rq * @param type * @return */ @Transactional(readOnly = true) - public SearchBasDosPlanRS getPagingDosPlan(SearchBasDosPlanRQ rq, PlanSelectType type){ + public SearchBasDosPlanRS getPagingDosPlan(SearchBasDosPlanRQ rq, PlanSelectType type) { List planBasList = dosFltPlanQueryRepository.findPlanByBasSearch(rq); if (planBasList.isEmpty()) { @@ -1008,9 +1010,10 @@ public class BasDosService { Long totalDataCount = dosFltPlanQueryRepository.countByPlanSnoInAndSearchOrderByZoneNoAsc(planSnoList, rq); Long totalPages = totalDataCount / rq.getPageDataSize(); - if(totalDataCount % rq.getPageDataSize() > 0) totalPages ++; + if (totalDataCount % rq.getPageDataSize() > 0) totalPages++; - if(rq.getPage() > totalPages || rq.getPage() < 1) throw new CustomException(ErrorCode.NON_VALID_PARAMETER, String.format("페이지는 [ %s ] page 부터 [ %s ] page 까지입니다.", 1, totalPages)); + if (rq.getPage() > totalPages || rq.getPage() < 1) + throw new CustomException(ErrorCode.NON_VALID_PARAMETER, String.format("페이지는 [ %s ] page 부터 [ %s ] page 까지입니다.", 1, totalPages)); Boolean isFirst = rq.getPage() == 1; Boolean isLast = rq.getPage().equals(totalPages); @@ -1023,8 +1026,8 @@ public class BasDosService { pagination.setIsFirst(isFirst); pagination.setIsLast(isLast); - Map fltPlanBasMap = this.getConvertMap(planBasList, "planSno", Long.class); - Map> fltDroneBasMap = dosFltPlanDroneRepository.findByPlanSnoIn(planSnoList).stream() + Map fltPlanBasMap = this.getConvertMap(planBasList, "planSno", Long.class); + Map> fltDroneBasMap = dosFltPlanDroneRepository.findByPlanSnoIn(planSnoList).stream() .map(drone -> { String weightCd = drone.getWeightCd(); WeightCdType weightCdType = WeightCdType.fromCode(weightCd); @@ -1038,19 +1041,20 @@ public class BasDosService { .planSno(drone.getPlanSno()) .build(); }) - .collect(Collectors.groupingBy(BasDosPlanDroneRs::getPlanSno));; - - Map> fltPliotBasMap = dosFltPlanPilotRepository.findByPlanSnoIn(planSnoList).stream() - .map(pilot -> { - return BasDosPlanPilotRs.builder() - .planPilotSno(pilot.getPlanPilotSno()) - .pilotNm(pilot.getPilotNm()) - .birthDate(pilot.getBirthDate()) - .crtfctNo(pilot.getCrtfctNo()) - .planSno(pilot.getPlanPilotSno()) - .build(); - }) - .collect(Collectors.groupingBy(BasDosPlanPilotRs::getPlanSno)); + .collect(Collectors.groupingBy(BasDosPlanDroneRs::getPlanSno)); + ; + + Map> fltPliotBasMap = dosFltPlanPilotRepository.findByPlanSnoIn(planSnoList).stream() + .map(pilot -> { + return BasDosPlanPilotRs.builder() + .planPilotSno(pilot.getPlanPilotSno()) + .pilotNm(pilot.getPilotNm()) + .birthDate(pilot.getBirthDate()) + .crtfctNo(pilot.getCrtfctNo()) + .planSno(pilot.getPlanPilotSno()) + .build(); + }) + .collect(Collectors.groupingBy(BasDosPlanPilotRs::getPlanSno)); List areaList = dosFltPlanQueryRepository.findByPlanSnoInAndSearchOrderByZoneNoAsc(planSnoList, rq); List resultList = dosFltPlanResultRepository.findByPlanSnoIn(planSnoList); @@ -1059,8 +1063,8 @@ public class BasDosService { Set removePlanSnoSet = new HashSet<>(planSnoList); removePlanSnoSet.removeAll(areaPlanSno); - List removeList = new ArrayList<>(removePlanSnoSet); - for(Long removePlanSno : removeList){ + List removeList = new ArrayList<>(removePlanSnoSet); + for (Long removePlanSno : removeList) { fltPlanBasMap.remove(removePlanSno); } @@ -1082,7 +1086,7 @@ public class BasDosService { LinkedHashMap::new )); - for(Map.Entry entry : sortedMap.entrySet()){ + for (Map.Entry entry : sortedMap.entrySet()) { Long planSno = entry.getKey(); DosFltPlanBas bas = entry.getValue(); @@ -1103,7 +1107,7 @@ public class BasDosService { List areaRsList = new ArrayList<>(); - for (int i = 0; i < areaList.size(); i ++) { + for (int i = 0; i < areaList.size(); i++) { DosFltPlanArea area = areaList.get(i); @@ -1306,7 +1310,7 @@ public class BasDosService { int count = 0; - for(int i = 0; i < rs.size(); i ++){ + for (int i = 0; i < rs.size(); i++) { BasDosPlanRs rsNode = rs.get(i); count += rsNode.getAreaList().size(); @@ -1322,13 +1326,14 @@ public class BasDosService { /** * List 노드객체의 컬럼중 하나를 Key값으로 잡아 Map을 만듬 * EX -> PlanBas의 planSno를 키값으로 잡아 Map 형태로 변환 - * @param list Map으로 바꿀 리스트 + * + * @param list Map으로 바꿀 리스트 * @param fieldName Map의 key가 될 컬럼 이름 - * @param keyType Map의 key가 될 클래스 타입 - * @return + * @param keyType Map의 key가 될 클래스 타입 * @param

* @param * @param + * @return */ private , C> Map getConvertMap(B list, String fieldName, Class

keyType) { Map result = new HashMap<>(); @@ -1357,12 +1362,12 @@ public class BasDosService { */ public void sendDosPlan(BasDosSendDosPlanRq rq) { List dosFltPlanAreaList = dosFltPlanAreaRepository.findByPlanAreaSnoIn(rq.getPlanAreaSnoList()); - if(dosFltPlanAreaList == null || dosFltPlanAreaList.isEmpty()) { + if (dosFltPlanAreaList == null || dosFltPlanAreaList.isEmpty()) { throw new CustomException(ErrorCode.DATA_NOTFIND); } boolean isNotSuccess = dosFltPlanAreaList.stream().anyMatch(area -> area.getReviewedType() != ReviewedType.SUCCESS); - if(isNotSuccess) { + if (isNotSuccess) { throw new CustomException(ErrorCode.DOS_NOT_VALID_REVIEWED_TYPE); } diff --git a/pav-server/src/main/java/com/palnet/biz/jpa/repository/dos/DosFltPlanQueryRepository.java b/pav-server/src/main/java/com/palnet/biz/jpa/repository/dos/DosFltPlanQueryRepository.java index 81ecf1ae..dd045e29 100644 --- a/pav-server/src/main/java/com/palnet/biz/jpa/repository/dos/DosFltPlanQueryRepository.java +++ b/pav-server/src/main/java/com/palnet/biz/jpa/repository/dos/DosFltPlanQueryRepository.java @@ -106,12 +106,16 @@ public class DosFltPlanQueryRepository { } // 관제과 전송여부 if (rq.getSendProcStatus() != null) { - if(rq.getSendProcStatus() == SendStatusType.SEND) { + if (rq.getSendProcStatus() == SendStatusType.SEND) { builder.and(qDosFltPlanArea.reviewedProcType.in(ReviewedProcType.CANCEL, ReviewedProcType.PROCESS, ReviewedProcType.RE_REVIEW, ReviewedProcType.SUCCESS)); - } else if(rq.getSendProcStatus() == SendStatusType.NOT_SEND) { + } else if (rq.getSendProcStatus() == SendStatusType.NOT_SEND) { builder.and(qDosFltPlanArea.reviewedProcType.eq(ReviewedProcType.WAIT)); } } + // 운항과 전송여부 + if (rq.getSendStatus() != null) { + builder.and(qDosFltPlanArea.sendStatus.eq(rq.getSendStatus())); + } return query .select(qDosFltPlanArea)