Compare commits

..

2 Commits

  1. 4
      pav-server/src/main/java/com/palnet/biz/api/bas/dos/model/BasDosPlanDroneRs.java
  2. 4
      pav-server/src/main/java/com/palnet/biz/api/bas/dos/model/BasDosPlanPilotRs.java
  3. 87
      pav-server/src/main/java/com/palnet/biz/api/bas/dos/service/BasDosService.java
  4. 2
      pav-server/src/main/java/com/palnet/biz/jpa/repository/dos/DosFltPlanDroneRepository.java
  5. 2
      pav-server/src/main/java/com/palnet/biz/jpa/repository/dos/DosFltPlanPilotRepository.java

4
pav-server/src/main/java/com/palnet/biz/api/bas/dos/model/BasDosPlanDroneRs.java

@ -1,5 +1,6 @@
package com.palnet.biz.api.bas.dos.model;
import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
@ -22,4 +23,7 @@ public class BasDosPlanDroneRs {
private String weightNm;
// 가입여부
private String insrncJoinYn;
// planSno
@JsonIgnore
private Long planSno;
}

4
pav-server/src/main/java/com/palnet/biz/api/bas/dos/model/BasDosPlanPilotRs.java

@ -1,5 +1,6 @@
package com.palnet.biz.api.bas.dos.model;
import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
@ -18,4 +19,7 @@ public class BasDosPlanPilotRs {
private String birthDate;
// 조종사 자격번호
private String crtfctNo;
@JsonIgnore
private Long planSno;
}

87
pav-server/src/main/java/com/palnet/biz/api/bas/dos/service/BasDosService.java

@ -15,6 +15,7 @@ import com.palnet.biz.api.external.model.DosApprovalResult;
import com.palnet.biz.api.external.service.DronOneStopService;
import com.palnet.biz.jpa.entity.DosFltPlanArea;
import com.palnet.biz.jpa.entity.DosFltPlanBas;
import com.palnet.biz.jpa.entity.DosFltPlanDrone;
import com.palnet.biz.jpa.entity.DosFltPlanResult;
import com.palnet.biz.jpa.entity.type.ReviewedProcType;
import com.palnet.biz.jpa.entity.type.ReviewedType;
@ -989,10 +990,10 @@ public class BasDosService {
Long totalDataCount = dosFltPlanQueryRepository.countByPlanSnoInAndSearchOrderByZoneNoAsc(planSnoList, rq);
Long totalPages = totalDataCount / rq.getPageDataSize();
if(rq.getPage() > totalPages || rq.getPage() < 1) throw new CustomException(ErrorCode.NON_VALID_PARAMETER, String.format("페이지는 [ %s ] page 부터 [ %s ] page 까지입니다.", 1, 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));
Boolean isFirst = rq.getPage() == 1;
Boolean isLast = rq.getPage().equals(totalPages);
@ -1005,6 +1006,33 @@ public class BasDosService {
pagination.setIsLast(isLast);
Map<Long , DosFltPlanBas> fltPlanBasMap = this.getConvertMap(planBasList, "planSno", Long.class);
Map<Long , List<BasDosPlanDroneRs>> fltDroneBasMap = dosFltPlanDroneRepository.findByPlanSnoIn(planSnoList).stream()
.map(drone -> {
String weightCd = drone.getWeightCd();
WeightCdType weightCdType = WeightCdType.fromCode(weightCd);
return BasDosPlanDroneRs.builder()
.planDroneSno(drone.getPlanDroneSno())
.fbctnNo(drone.getFbctnNo())
.benefit(drone.getBenefit())
.weightCd(drone.getWeightCd())
.weightNm(weightCdType != null ? weightCdType.getMessage() : null)
.insrncJoinYn(drone.getInsrncJoinYn())
.planSno(drone.getPlanSno())
.build();
})
.collect(Collectors.groupingBy(BasDosPlanDroneRs::getPlanSno));;
Map<Long , List<BasDosPlanPilotRs>> 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<DosFltPlanArea> areaList = dosFltPlanQueryRepository.findByPlanSnoInAndSearchOrderByZoneNoAsc(planSnoList, rq);
List<DosFltPlanResult> resultList = dosFltPlanResultRepository.findByPlanSnoIn(planSnoList);
@ -1021,7 +1049,22 @@ public class BasDosService {
List<BasDosPlanRs> rs = new ArrayList<>();
List<Geometry> boundary = null;
for(Map.Entry<Long, DosFltPlanBas> entry : fltPlanBasMap.entrySet()){
Map<Long, DosFltPlanBas> sortedMap = fltPlanBasMap.entrySet().stream()
.sorted((e1, e2) -> {
int cmp = e2.getValue().getApplyDt().compareTo(e1.getValue().getApplyDt());
if (cmp == 0) {
return e2.getValue().getApplyNo().compareTo(e1.getValue().getApplyNo());
}
return cmp;
})
.collect(Collectors.toMap(
Map.Entry::getKey,
Map.Entry::getValue,
(e1, e2) -> e1,
LinkedHashMap::new
));
for(Map.Entry<Long, DosFltPlanBas> entry : sortedMap.entrySet()){
Long planSno = entry.getKey();
DosFltPlanBas bas = entry.getValue();
@ -1046,6 +1089,9 @@ public class BasDosService {
DosFltPlanArea area = areaList.get(i);
// TOOD :: 추후 리스트를 삭제하며 돌 수 있도록 수정 필요
// Boolean addResult = false;
if (area.getPlanSno().equals(planSno)) {
Optional<DosFltPlanResult> first = resultList.stream().filter(result -> result.getPlanAreaSno().equals(area.getPlanAreaSno())).findFirst();
ApprovalCd approvalCd = null;
@ -1205,37 +1251,18 @@ public class BasDosService {
.bufferCoordList(bufferCoordList)
.reqBufferCoordList(reqBufferCoordList)
.build();
// addResult =
areaRsList.add(areaRs);
}
areaList.remove(area);
// if(addResult) areaList.remove(i);
}
// TODO :: 속도이슈 걸리는 곳.. [paging 하면 완화됨]
List<BasDosPlanDroneRs> droneList = null;
List<BasDosPlanPilotRs> pilotList = null;
if (type == PlanSelectType.LIST) {
droneList = dosFltPlanDroneRepository.findByPlanSno(planSno).stream().map(drone -> {
String weightCd = drone.getWeightCd();
WeightCdType weightCdType = WeightCdType.fromCode(weightCd);
return BasDosPlanDroneRs.builder()
.planDroneSno(drone.getPlanDroneSno())
.fbctnNo(drone.getFbctnNo())
.benefit(drone.getBenefit())
.weightCd(drone.getWeightCd())
.weightNm(weightCdType != null ? weightCdType.getMessage() : null)
.insrncJoinYn(drone.getInsrncJoinYn())
.build();
}).collect(Collectors.toList());
pilotList = dosFltPlanPilotRepository.findByPlanSno(planSno).stream().map(pilot -> {
return BasDosPlanPilotRs.builder()
.planPilotSno(pilot.getPlanPilotSno())
.pilotNm(pilot.getPilotNm())
.birthDate(pilot.getBirthDate())
.crtfctNo(pilot.getCrtfctNo())
.build();
}).collect(Collectors.toList());
droneList = fltDroneBasMap.get(planSno);
pilotList = fltPliotBasMap.get(planSno);
}
@ -1259,6 +1286,14 @@ public class BasDosService {
}
int count = 0;
for(int i = 0; i < rs.size(); i ++){
BasDosPlanRs rsNode = rs.get(i);
count += rsNode.getAreaList().size();
}
SearchBasDosPlanRS result = new SearchBasDosPlanRS();
result.setContent(rs);
result.setPagination(pagination);

2
pav-server/src/main/java/com/palnet/biz/jpa/repository/dos/DosFltPlanDroneRepository.java

@ -9,4 +9,6 @@ import java.util.List;
@Repository
public interface DosFltPlanDroneRepository extends JpaRepository<DosFltPlanDrone, Long> {
List<DosFltPlanDrone> findByPlanSno(Long planSno);
List<DosFltPlanDrone> findByPlanSnoIn(List<Long> planSnot);
}

2
pav-server/src/main/java/com/palnet/biz/jpa/repository/dos/DosFltPlanPilotRepository.java

@ -9,4 +9,6 @@ import java.util.List;
@Repository
public interface DosFltPlanPilotRepository extends JpaRepository<DosFltPlanPilot, Long> {
List<DosFltPlanPilot> findByPlanSno(Long planSno);
List<DosFltPlanPilot> findByPlanSnoIn (List<Long> planSno);
}

Loading…
Cancel
Save