Browse Source

Merge commit '254771dc4278d3145de39d1017ef1c72a892b60b' into feature/current/flight-plan

pull/13/head
lkd9125(이경도) 10 months ago
parent
commit
a65fc6be8c
  1. 20
      pav-server/src/main/java/com/palnet/biz/api/main/dash/controller/MainDashController.java
  2. 27
      pav-server/src/main/java/com/palnet/biz/api/main/dash/service/MainDashService.java
  3. 68
      pav-server/src/main/java/com/palnet/biz/jpa/repository/flt/FltPlanQueryRepository.java

20
pav-server/src/main/java/com/palnet/biz/api/main/dash/controller/MainDashController.java

@ -24,6 +24,7 @@ import com.palnet.biz.api.main.dash.model.MainDashListModel;
import com.palnet.biz.api.main.dash.model.MainDashStcsModel;
import com.palnet.biz.api.main.dash.service.MainDashService;
import com.palnet.comn.code.RSErrorCode;
import com.querydsl.core.Tuple;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
@ -304,6 +305,24 @@ public class MainDashController {
return ResponseEntity.ok().body(new SuccessResponse<List<MainDashStcsModel>>(result));
}
@GetMapping(value = "/stcs/dron-flight/")
@ApiOperation(value = "드론 비행 현황")
@Tag(name = "메인화면 컨트롤러", description = "메인화면 관련 API")
public ResponseEntity<? extends BasicResponse> dronFlightStcs(@RequestParam String groupId){
Map<String, String> result = null;
try {
result = service.mainDashDronFlightStcs(groupId);
}catch (Exception e) {
log.error("IGNORE : {}", e);
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
.body(new ErrorResponse("Server Error", "-1"));
}
return ResponseEntity.ok().body(new SuccessResponse< Map<String, String>>(result));
}
@GetMapping(value = "/dron-flight/list/")
@ApiOperation(value = "드론 별 비행운항 목록")
@Tag(name = "메인화면 컨트롤러", description = "메인화면 관련 API")
@ -343,5 +362,4 @@ public class MainDashController {
return ResponseEntity.ok().body(new SuccessResponse<List<MainCurrentStcsModel>>(result));
}
}

27
pav-server/src/main/java/com/palnet/biz/api/main/dash/service/MainDashService.java

@ -10,6 +10,7 @@ import com.palnet.biz.api.main.dash.model.MainCurrentStcsModel;
import com.palnet.biz.api.main.statistics.service.MainStatisticsService;
import com.palnet.biz.jpa.entity.FltPlanBas;
import com.palnet.biz.jpa.repository.pty.*;
import com.querydsl.core.Tuple;
import com.querydsl.core.BooleanBuilder;
import lombok.extern.slf4j.Slf4j;
@ -129,9 +130,6 @@ public class MainDashService {
String userAuth = token.getUserAuthByToken();
List<JwtGroupModel> userGroupList = token.getGroupAuthByToken();
log.info(">>>>>>>>> groupList {} " , userAuth);
BasGroupModel myFirstGroup = new BasGroupModel();
List<MainDashFlightListModel> resultList = new ArrayList<MainDashFlightListModel>();
@ -149,6 +147,29 @@ public class MainDashService {
return resultList;
}
public Map<String, String> mainDashDronFlightStcs(String groupId){
String userAuth = token.getUserAuthByToken();
List<JwtGroupModel> userGroupList = token.getGroupAuthByToken();
BasGroupModel myFirstGroup = new BasGroupModel();
Map<String, String> resultList = new HashMap<>();
if(userAuth.equals("SUPER")) {
resultList = fltPlanQueryRepository.getFlightDronStcs("KAC");
}else {
myFirstGroup = ptyGroupQueryRepository.myFirstGroup(userGroupList);
resultList = fltPlanQueryRepository.getFlightDronStcs(myFirstGroup.getGroupId());
}
return resultList;
}
/**
* 김포공항, 비행승인 통계
* @param yyyymm

68
pav-server/src/main/java/com/palnet/biz/jpa/repository/flt/FltPlanQueryRepository.java

@ -3,11 +3,12 @@ package com.palnet.biz.jpa.repository.flt;
import java.time.Duration;
import java.time.Instant;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.ZoneOffset;
import java.time.temporal.ChronoUnit;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import com.palnet.biz.api.main.dash.model.MainCurrentStcsModel;
@ -28,7 +29,6 @@ import com.palnet.biz.api.bas.flight.model.BasFlightPlanListRq;
import com.palnet.biz.api.bas.flight.model.BasFlightPlanModel;
import com.palnet.biz.api.bas.flight.model.BasFlightPlanPilotModel;
import com.palnet.biz.api.bas.flight.model.BasFlightScheduleRs;
import com.palnet.biz.api.comn.file.service.ComnFileService;
import com.palnet.biz.api.main.dash.model.MainDashFlightListModel;
import com.palnet.biz.api.main.dash.model.MainDashStcsModel;
import com.palnet.biz.api.main.statistics.model.FlightStcsValueModel;
@ -56,6 +56,7 @@ import com.palnet.biz.jpa.model.LaancPlanareaCoordDto;
import com.palnet.comn.utils.DateUtils;
import com.palnet.comn.utils.InstantUtils;
import com.querydsl.core.BooleanBuilder;
import com.querydsl.core.Tuple;
import com.querydsl.core.group.GroupBy;
import com.querydsl.core.types.ConstantImpl;
import com.querydsl.core.types.Expression;
@ -69,7 +70,6 @@ import com.querydsl.core.types.dsl.StringTemplate;
import com.querydsl.jpa.JPAExpressions;
import com.querydsl.jpa.impl.JPAQuery;
import com.querydsl.jpa.impl.JPAQueryFactory;
import com.querydsl.sql.SQLExpressions;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@ -1992,6 +1992,68 @@ public class FltPlanQueryRepository {
.orderBy(((ComparableExpressionBase<Integer>) groupOrder).desc(), cib.createDt.asc())
.fetch();
return result;
}
public Map<String, String> getFlightDronStcs(String groupId){
QComIdntfBas cib = QComIdntfBas.comIdntfBas;
QFltPlanArcrft fpa = QFltPlanArcrft.fltPlanArcrft;
QFltPlanBas fpb = QFltPlanBas.fltPlanBas;
QPtyGroupBas pgb = QPtyGroupBas.ptyGroupBas;
QFltPlanCtrCntrlRel fpccr = QFltPlanCtrCntrlRel.fltPlanCtrCntrlRel;
QCtrCntrlBas ccb = QCtrCntrlBas.ctrCntrlBas;
BooleanBuilder builder = new BooleanBuilder();
if(!groupId.equals("all")) {
builder.and(pgb.groupId.eq(groupId));
}
Instant now = Instant.now();
Instant todayStart = LocalDate.now().atStartOfDay().toInstant(ZoneOffset.UTC);
Instant todayEnd = LocalDate.now().plusDays(1).atStartOfDay().toInstant(ZoneOffset.UTC);
List<Tuple> res = query
.select(
new CaseBuilder()
.when(ccb.statusCd.eq("01")).then("비행 중")
.when(ccb.statusCd.eq("99")).then("비행 완료")
.when(fpb.planSno.isNotNull()).then("비행 대기 중")
.otherwise("비행 없음").as("status"),
fpb.count()
)
.from(fpa)
.leftJoin(fpb).on(fpb.planSno.eq(fpa.planSno))
.leftJoin(pgb).on(pgb.groupId.eq(fpb.groupId))
.leftJoin(cib).on(cib.idntfNum.eq(fpa.idntfNum))
.leftJoin(fpccr).on(fpccr.planSno.eq(fpb.planSno))
.leftJoin(ccb).on(ccb.cntrlId.eq(fpccr.cntrlId))
.where(
builder
.and(fpb.schFltStDt.between(
now.atZone(ZoneId.of("Asia/Seoul")).truncatedTo(ChronoUnit.DAYS).toInstant(),
now.atZone(ZoneId.of("Asia/Seoul")).truncatedTo(ChronoUnit.DAYS).plus(1, ChronoUnit.DAYS).toInstant()
))
.and(fpb.schFltEndDt.between(
now.atZone(ZoneId.of("Asia/Seoul")).truncatedTo(ChronoUnit.DAYS).toInstant(),
now.atZone(ZoneId.of("Asia/Seoul")).truncatedTo(ChronoUnit.DAYS).plus(1, ChronoUnit.DAYS).toInstant()
))
.and(fpb.planSno.isNotNull())
)
.groupBy(ccb.statusCd)
.fetch();
Map<String, String> result = new HashMap<>();
for (Tuple tuple : res) {
String status = tuple.get(0, String.class);
String count = tuple.get(1, Long.class).toString(); // Assuming count is at index 1
result.put(status, count);
}
return result;
}
}
Loading…
Cancel
Save