Browse Source

feat: 드론원스톱 목록 검색조건 추가 - 전송상태(운항과)

feature/dos/statistics
지대한 2 weeks ago
parent
commit
0a75d296cf
  1. 10
      http/server/server.http
  2. 3
      pav-server/src/main/java/com/palnet/biz/api/bas/dos/model/BasDosPlanAreaRs.java
  3. 4
      pav-server/src/main/java/com/palnet/biz/api/bas/dos/model/BasDosPlanRq.java
  4. 35
      pav-server/src/main/java/com/palnet/biz/api/bas/dos/service/BasDosService.java
  5. 8
      pav-server/src/main/java/com/palnet/biz/jpa/repository/dos/DosFltPlanQueryRepository.java

10
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
]
}

3
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;
// 요청고도

4
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;
}

35
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<DosFltPlanBas> 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<Long , DosFltPlanBas> fltPlanBasMap = this.getConvertMap(planBasList, "planSno", Long.class);
Map<Long , List<BasDosPlanDroneRs>> fltDroneBasMap = dosFltPlanDroneRepository.findByPlanSnoIn(planSnoList).stream()
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);
@ -1038,9 +1041,10 @@ public class BasDosService {
.planSno(drone.getPlanSno())
.build();
})
.collect(Collectors.groupingBy(BasDosPlanDroneRs::getPlanSno));;
.collect(Collectors.groupingBy(BasDosPlanDroneRs::getPlanSno));
;
Map<Long , List<BasDosPlanPilotRs>> fltPliotBasMap = dosFltPlanPilotRepository.findByPlanSnoIn(planSnoList).stream()
Map<Long, List<BasDosPlanPilotRs>> fltPliotBasMap = dosFltPlanPilotRepository.findByPlanSnoIn(planSnoList).stream()
.map(pilot -> {
return BasDosPlanPilotRs.builder()
.planPilotSno(pilot.getPlanPilotSno())
@ -1060,7 +1064,7 @@ public class BasDosService {
removePlanSnoSet.removeAll(areaPlanSno);
List<Long> removeList = new ArrayList<>(removePlanSnoSet);
for(Long removePlanSno : removeList){
for (Long removePlanSno : removeList) {
fltPlanBasMap.remove(removePlanSno);
}
@ -1082,7 +1086,7 @@ public class BasDosService {
LinkedHashMap::new
));
for(Map.Entry<Long, DosFltPlanBas> entry : sortedMap.entrySet()){
for (Map.Entry<Long, DosFltPlanBas> entry : sortedMap.entrySet()) {
Long planSno = entry.getKey();
DosFltPlanBas bas = entry.getValue();
@ -1103,7 +1107,7 @@ public class BasDosService {
List<BasDosPlanAreaRs> 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<planSno, PlanBas> 형태로 변환
*
* @param list Map으로 바꿀 리스트
* @param fieldName Map의 key가 컬럼 이름
* @param keyType Map의 key가 클래스 타입
* @return
* @param <P>
* @param <B>
* @param <C>
* @return
*/
private <P, B extends List<C>, C> Map<P, C> getConvertMap(B list, String fieldName, Class<P> keyType) {
Map<P, C> result = new HashMap<>();
@ -1357,12 +1362,12 @@ public class BasDosService {
*/
public void sendDosPlan(BasDosSendDosPlanRq rq) {
List<DosFltPlanArea> 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);
}

8
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)

Loading…
Cancel
Save