Browse Source

충돌 해결

pull/15/head
leehagjoon(이학준) 10 months ago
parent
commit
efb8e810f3
  1. 20
      pav-server/src/main/java/com/palnet/biz/api/main/dash/controller/MainDashController.java
  2. 65
      pav-server/src/main/java/com/palnet/biz/api/main/dash/service/MainDashService.java

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

@ -4,7 +4,7 @@ import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import com.palnet.biz.api.main.dash.model.MainCurrentStcsModel;
import com.palnet.biz.api.main.dash.model.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
@ -18,9 +18,6 @@ import org.springframework.web.bind.annotation.RestController;
import com.palnet.biz.api.comn.response.BasicResponse;
import com.palnet.biz.api.comn.response.ErrorResponse;
import com.palnet.biz.api.comn.response.SuccessResponse;
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.dash.service.MainDashService;
import com.palnet.comn.code.RSErrorCode;
@ -384,4 +381,19 @@ public class MainDashController {
return ResponseEntity.ok().body(new SuccessResponse<List<MainCurrentStcsModel>>(result));
}
@GetMapping("/stcs/dailyflight")
@ApiOperation(value = "일일 비행횟수 현황")
@Tag(name = "메인화면 컨트롤러",description = "메인화면 관련 API")
public ResponseEntity<? extends BasicResponse> getDailyFlightNumOfStcs(){
List<MainDashFlightNumStcsModel> result = null;
try {
result = service.dailyFlightNumOfStcs();
}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<List<MainDashFlightNumStcsModel>>(result));
}
}

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

@ -1,14 +1,17 @@
package com.palnet.biz.api.main.dash.service;
import java.time.Instant;
import java.time.temporal.ChronoUnit;
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.MainCurrentStcsModel;
import com.palnet.biz.api.main.dash.model.*;
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;
@ -20,9 +23,6 @@ import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
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.jpa.entity.CtrCntrlWarnLog;
import com.palnet.biz.jpa.entity.type.WarnType;
import com.palnet.biz.jpa.repository.ctr.CtrCntrlQueryRepository;
@ -56,6 +56,9 @@ public class MainDashService {
@Autowired
private FltPlanArcrftRepository fltPlanArcrftRepository;
@Autowired
private FltPlanBasRepository fltPlanBasRepository;
@Autowired
private JwtTokenUtil token;
@ -378,4 +381,58 @@ 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));
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;
}
}

Loading…
Cancel
Save