|
|
|
@ -1,23 +1,18 @@
|
|
|
|
|
package com.palnet.biz.api.main.dash.service; |
|
|
|
|
|
|
|
|
|
import java.time.Instant; |
|
|
|
|
import java.time.temporal.ChronoUnit; |
|
|
|
|
import java.util.ArrayList; |
|
|
|
|
import java.util.Arrays; |
|
|
|
|
import java.util.HashMap; |
|
|
|
|
import java.util.List; |
|
|
|
|
import java.util.Map; |
|
|
|
|
import java.util.*; |
|
|
|
|
import java.util.stream.Collectors; |
|
|
|
|
|
|
|
|
|
import com.palnet.biz.api.acnt.jwt.model.JwtGroupModel; |
|
|
|
|
import com.palnet.biz.api.acnt.jwt.utils.JwtTokenUtil; |
|
|
|
|
import com.palnet.biz.api.bas.group.model.BasGroupModel; |
|
|
|
|
import com.palnet.biz.api.main.dash.model.MainDashFlightNumStcsModel; |
|
|
|
|
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.flt.FltPlanBasRepository; |
|
|
|
|
import com.palnet.biz.jpa.repository.pty.*; |
|
|
|
|
import com.querydsl.core.Tuple; |
|
|
|
|
|
|
|
|
|
import com.querydsl.core.BooleanBuilder; |
|
|
|
|
import lombok.extern.slf4j.Slf4j; |
|
|
|
|
|
|
|
|
|
import org.slf4j.Logger; |
|
|
|
@ -25,13 +20,10 @@ import org.slf4j.LoggerFactory;
|
|
|
|
|
import org.springframework.beans.factory.annotation.Autowired; |
|
|
|
|
import org.springframework.stereotype.Service; |
|
|
|
|
|
|
|
|
|
import com.palnet.biz.api.main.dash.model.MainCurrentStcsModel; |
|
|
|
|
import com.palnet.biz.api.main.dash.model.MainDashFlightListModel; |
|
|
|
|
import com.palnet.biz.api.main.dash.model.MainDashListModel; |
|
|
|
|
import com.palnet.biz.api.main.dash.model.MainDashStcsModel; |
|
|
|
|
import com.palnet.biz.api.main.statistics.service.MainStatisticsService; |
|
|
|
|
import com.palnet.biz.jpa.entity.CtrCntrlWarnLog; |
|
|
|
|
import com.palnet.biz.jpa.entity.FltPlanBas; |
|
|
|
|
import com.palnet.biz.jpa.entity.type.WarnType; |
|
|
|
|
import com.palnet.biz.jpa.repository.ctr.CtrCntrlQueryRepository; |
|
|
|
|
import com.palnet.biz.jpa.repository.ctr.CtrCntrlWarnLogQueryRepository; |
|
|
|
@ -41,9 +33,7 @@ import com.palnet.biz.jpa.repository.flt.FltPlanQueryRepository;
|
|
|
|
|
@Service |
|
|
|
|
@Slf4j |
|
|
|
|
public class MainDashService { |
|
|
|
|
@Autowired |
|
|
|
|
private FltPlanBasRepository fltPlanBasRepository; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private Logger logger = LoggerFactory.getLogger(getClass()); |
|
|
|
|
|
|
|
|
|
@Autowired |
|
|
|
@ -59,17 +49,16 @@ public class MainDashService {
|
|
|
|
|
private CtrCntrlWarnLogQueryRepository ctrCntrlWarnLogQueryRepository; |
|
|
|
|
|
|
|
|
|
@Autowired |
|
|
|
|
private CtrCntrlQueryRepository query; |
|
|
|
|
private CtrCntrlQueryRepository query; |
|
|
|
|
|
|
|
|
|
@Autowired |
|
|
|
|
private FltPlanArcrftRepository fltPlanArcrftRepository; |
|
|
|
|
|
|
|
|
|
@Autowired |
|
|
|
|
private JwtTokenUtil token; |
|
|
|
|
private MainStatisticsService mainStatisticsService; |
|
|
|
|
|
|
|
|
|
@Autowired |
|
|
|
|
private MainStatisticsService mainStatisticsService; |
|
|
|
|
private FltPlanArcrftRepository fltPlanArcrftRepository; |
|
|
|
|
|
|
|
|
|
@Autowired |
|
|
|
|
private JwtTokenUtil token; |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 일별 비행횟수 통계 |
|
|
|
@ -293,58 +282,53 @@ public class MainDashService {
|
|
|
|
|
return result; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public List<MainDashFlightNumStcsModel> dailyFlightNumOfStcs(){ |
|
|
|
|
// 1. 전일 , 금일, 명일(내일)
|
|
|
|
|
Instant yesterdayStart = Instant.now().minus(1, ChronoUnit.DAYS).truncatedTo(ChronoUnit.DAYS); |
|
|
|
|
Instant yesterdayEnd = Instant.now().truncatedTo(ChronoUnit.DAYS).minus(1, ChronoUnit.SECONDS); |
|
|
|
|
Instant todayStart = Instant.now().truncatedTo(ChronoUnit.DAYS); |
|
|
|
|
Instant todayEnd = Instant.now().plus(1, ChronoUnit.DAYS).minus(1, ChronoUnit.SECONDS); |
|
|
|
|
Instant tomorrowStart = Instant.now().plus(1, ChronoUnit.DAYS).truncatedTo(ChronoUnit.DAYS); |
|
|
|
|
Instant tomorrowEnd = Instant.now().plus(2, ChronoUnit.DAYS).minus(1, ChronoUnit.SECONDS); |
|
|
|
|
|
|
|
|
|
// 2. 비행계획서 승인 항목 : 비행계획서 제출기준(승인된 건수로봐도 동일)
|
|
|
|
|
long yesterdayCount = fltPlanBasRepository.countByAprvlYnAndAprvlDtBetween("Y", yesterdayStart, yesterdayEnd); |
|
|
|
|
long todayCount = fltPlanBasRepository.countByAprvlYnAndAprvlDtBetween("Y", todayStart, todayEnd); |
|
|
|
|
long tomorrowCount = fltPlanBasRepository.countByAprvlYnAndAprvlDtBetween("Y", tomorrowStart, tomorrowEnd); |
|
|
|
|
|
|
|
|
|
// 3. 비행 완료 항목 : 실제 비행이 완료된 건수
|
|
|
|
|
long yesterdayCompleteCount = query.completeFlight(yesterdayStart,yesterdayEnd).size(); |
|
|
|
|
long todayCompleteCount = query.completeFlight(todayStart,todayEnd).size(); |
|
|
|
|
long tomorrowCompleteCount = query.completeFlight(tomorrowStart,tomorrowEnd).size(); |
|
|
|
|
|
|
|
|
|
// 4. 미 비행 항목 : 비행계획서는 제출했으나,실제 비행안한 건수
|
|
|
|
|
long yesterdayNotFlight = query.notFlight(yesterdayStart,yesterdayEnd).size(); |
|
|
|
|
long todayNotFlight = query.notFlight(todayStart, todayEnd).size(); |
|
|
|
|
long tomorrowNotFlight = query.notFlight(tomorrowStart,tomorrowEnd).size(); |
|
|
|
|
|
|
|
|
|
// 5. 비고 : 비행 완료 건수를 기준으로 상승 또는 하락폭 적용
|
|
|
|
|
// ex) 오늘 기준 오늘은 어제의 비행 완료 건수를 비교해서 적용
|
|
|
|
|
// 전일(어제)은 2일전 비행 완료 건수를 비교해서 적용
|
|
|
|
|
// 명일(내일)은 오늘 비행 완료 건수를 비교해서 적용
|
|
|
|
|
long yesterdayNote = yesterdayCompleteCount - query.completeFlight(yesterdayStart.minus(1, ChronoUnit.DAYS), yesterdayEnd.minus(1, ChronoUnit.DAYS)).size(); |
|
|
|
|
double yesterdayNotePercent = yesterdayCompleteCount != 0 ? ((double) yesterdayNote / yesterdayCompleteCount) * 100.0 : 0.0; |
|
|
|
|
double todayNotePercent = yesterdayCompleteCount != 0 ? ((double)(todayCompleteCount - yesterdayCompleteCount) / yesterdayCompleteCount) * 100.0 : 0.0; |
|
|
|
|
double tomorrowNotePercent = todayCompleteCount != 0 ? ((double) (tomorrowCompleteCount - todayCompleteCount) / todayCompleteCount) * 100.0 : 0.0; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
List<MainDashFlightNumStcsModel> result = new ArrayList<>(); |
|
|
|
|
result.add(createModel("yesterday", yesterdayCount,yesterdayCompleteCount,yesterdayNotFlight,yesterdayNotePercent)); |
|
|
|
|
result.add(createModel("today", todayCount,todayCompleteCount,todayNotFlight,todayNotePercent)); |
|
|
|
|
result.add(createModel("tomorrow", tomorrowCount,tomorrowCompleteCount,tomorrowNotFlight,tomorrowNotePercent)); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public List<MainCurrentStcsModel> currentFlightPlan(String groupId){ |
|
|
|
|
final int sumCount = 2; // 2번은 합계
|
|
|
|
|
|
|
|
|
|
boolean authCheck = mainStatisticsService.authCheck(groupId); |
|
|
|
|
|
|
|
|
|
String[] dateCate = {"-2", "-1", "0", "1"}; // 2일전, 전일, 금일, 명일
|
|
|
|
|
|
|
|
|
|
List<MainCurrentStcsModel> result = new ArrayList<>(); |
|
|
|
|
|
|
|
|
|
for(String cate : dateCate){ |
|
|
|
|
List<FltPlanBas> fltPlanBas = fltPlanQueryRepository.currentFlightStcs(groupId, authCheck, cate); |
|
|
|
|
|
|
|
|
|
int count = fltPlanBas.size(); |
|
|
|
|
int aprvnCount = (int)fltPlanBas.stream().filter(value -> value.getAprvlYn().equals("Y")).count(); |
|
|
|
|
|
|
|
|
|
List<Integer> stcsValues = Arrays.asList(count, aprvnCount, aprvnCount); |
|
|
|
|
|
|
|
|
|
MainCurrentStcsModel node = new MainCurrentStcsModel(); |
|
|
|
|
node.setStcsValues(stcsValues); |
|
|
|
|
|
|
|
|
|
result.add(node); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
for(int i = 0; i < result.size(); i++){ |
|
|
|
|
|
|
|
|
|
if(i == 0) continue;; |
|
|
|
|
|
|
|
|
|
int prevSum = result.get(i-1).getStcsValues().get(sumCount); // 전날 합계 [기준]
|
|
|
|
|
int sum = result.get(i).getStcsValues().get(sumCount); // 합계
|
|
|
|
|
|
|
|
|
|
double percent = 0; |
|
|
|
|
|
|
|
|
|
if(prevSum != 0){ |
|
|
|
|
percent = ((sum - prevSum) / (double) prevSum) * 100; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
result.get(i).setPercent(percent); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
result.remove(0); |
|
|
|
|
|
|
|
|
|
return result; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private MainDashFlightNumStcsModel createModel(String dateType, long flightPlanCount, long completeCount, long notFlight, double note) { |
|
|
|
|
MainDashFlightNumStcsModel model = new MainDashFlightNumStcsModel(); |
|
|
|
|
model.setDateType(dateType); |
|
|
|
|
model.setFlightPlan(flightPlanCount); |
|
|
|
|
model.setCompleteFlight(completeCount); |
|
|
|
|
model.setNotFlight(notFlight); |
|
|
|
|
model.setNote(note); |
|
|
|
|
return model; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public List<MainCurrentStcsModel> currentFlightWarn(String groupId){ |
|
|
|
|