Browse Source

비행실적통계 API 추가

pull/12/head
lkd9125(이경도) 10 months ago
parent
commit
a85492032b
  1. 57
      pav-server/src/main/java/com/palnet/biz/api/main/statistics/controller/MainStatisticsController.java
  2. 4
      pav-server/src/main/java/com/palnet/biz/api/main/statistics/model/FlightStcsModel.java
  3. 2
      pav-server/src/main/java/com/palnet/biz/api/main/statistics/model/FlightStcsValueModel.java
  4. 120
      pav-server/src/main/java/com/palnet/biz/api/main/statistics/service/MainStatisticsService.java
  5. 80
      pav-server/src/main/java/com/palnet/biz/jpa/repository/ctr/CtrCntrlQueryRepository.java
  6. 28
      pav-server/src/main/java/com/palnet/biz/jpa/repository/ctr/CtrCntrlWarnLogQueryRepository.java
  7. 316
      pav-server/src/main/java/com/palnet/biz/jpa/repository/flt/FltPlanQueryRepository.java

57
pav-server/src/main/java/com/palnet/biz/api/main/statistics/controller/MainStatisticsController.java

@ -14,7 +14,7 @@ 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.statistics.model.FlightStaticStcsModel;
import com.palnet.biz.api.main.statistics.model.FlightStcsValueModel;
import com.palnet.biz.api.main.statistics.model.FlightStcsModel;
import com.palnet.biz.api.main.statistics.service.MainStatisticsService;
@ -39,7 +39,7 @@ public class MainStatisticsController {
@Tag(name = "통계 컨트롤러", description = "통계 관련 API")
public ResponseEntity<? extends BasicResponse> fltStcsStatic(){
List<FlightStaticStcsModel> result = null;
List<FlightStcsValueModel> result = null;
try {
result = service.getFlightStaticStcs();
@ -51,7 +51,7 @@ public class MainStatisticsController {
.body(new ErrorResponse("Server Error", "-1"));
}
return ResponseEntity.ok().body(new SuccessResponse<List<FlightStaticStcsModel>>(result));
return ResponseEntity.ok().body(new SuccessResponse<List<FlightStcsValueModel>>(result));
}
@GetMapping("/flight/{type}")
@ -73,8 +73,8 @@ public class MainStatisticsController {
if(date == null) date = "";
formatParam = service.paramCheck(date,type);
List<FlightStaticStcsModel> graphData = service.fltStatics(cate, date, formatParam);
List<FlightStaticStcsModel> topData = service.fltTopStatics(cate, date, formatParam);
List<FlightStcsValueModel> graphData = service.fltStatics(cate, date, formatParam);
List<FlightStcsValueModel> topData = service.fltTopStatics(cate, date, formatParam);
result.setGraphData(graphData);
result.setTopData(topData);
@ -96,7 +96,7 @@ public class MainStatisticsController {
@Tag(name = "통계 컨트롤러", description = "통계 관련 API")
public ResponseEntity<? extends BasicResponse> warnStcsStatic(){
List<FlightStaticStcsModel> result = null;
List<FlightStcsValueModel> result = null;
try {
result = service.getWarnStaticStcs();
@ -108,7 +108,7 @@ public class MainStatisticsController {
.body(new ErrorResponse("Server Error", "-1"));
}
return ResponseEntity.ok().body(new SuccessResponse<List<FlightStaticStcsModel>>(result));
return ResponseEntity.ok().body(new SuccessResponse<List<FlightStcsValueModel>>(result));
}
@GetMapping("/warn/{type}")
@ -130,8 +130,8 @@ public class MainStatisticsController {
if(date == null) date = "";
formatParam = service.paramCheck(date,type);
List<FlightStaticStcsModel> graphData = service.warnStatics(cate, date, formatParam);
List<FlightStaticStcsModel> topData = service.warnTopStatics(cate, date, formatParam);
List<FlightStcsValueModel> graphData = service.warnStatics(cate, date, formatParam);
List<FlightStcsValueModel> topData = service.warnTopStatics(cate, date, formatParam);
result.setGraphData(graphData);
result.setTopData(topData);
@ -151,7 +151,7 @@ public class MainStatisticsController {
@Tag(name = "통계 컨트롤러", description = "통계 관련 API")
public ResponseEntity<? extends BasicResponse> fltResultStcs(){
List<FlightStaticStcsModel> result = null;
List<FlightStcsValueModel> result = null;
try {
result = service.getFltResultStaticStcs();
@ -163,7 +163,42 @@ public class MainStatisticsController {
.body(new ErrorResponse("Server Error", "-1"));
}
return ResponseEntity.ok().body(new SuccessResponse<List<FlightStaticStcsModel>>(result));
return ResponseEntity.ok().body(new SuccessResponse<List<FlightStcsValueModel>>(result));
}
@GetMapping("/flight/result/{type}")
@ApiOperation(value = "비정상상황 cate = ['FLT_RESULT' ,'FLT_PLAN', 'FLT_PLAN_APRVN'], type=['year','month','day','one-day']")
@Tag(name = "통계 컨트롤러", description = "통계 관련 API")
@ApiImplicitParams({
@ApiImplicitParam(name = "date",value = "날짜[2023]", dataTypeClass = String.class),
@ApiImplicitParam(name = "cate",value = "비행실적,비행계획서,비행계획승인[FLT_PLAN_APRVN]", dataTypeClass = String.class),
@ApiImplicitParam(name = "type",value = "날짜형식[month]", dataTypeClass = String.class)
})
public ResponseEntity<? extends BasicResponse> fltResultStcs(@RequestParam String cate, String date, @PathVariable String type){
log.warn("cate => {}, date => {}, type => {}", cate, date, type);
FlightStcsModel result = new FlightStcsModel();
try {
String[] formatParam = null;
if(date == null) date = "";
formatParam = service.paramCheck(date,type);
List<FlightStcsValueModel> graphData = service.getFltResultStcs(cate, date, formatParam);
List<FlightStcsValueModel> topData = service.getFltTopResultStcs(cate, date, formatParam);
result.setGraphData(graphData);
result.setTopData(topData);
log.warn("result => {}", result);
} 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<FlightStcsModel>(result));
}

4
pav-server/src/main/java/com/palnet/biz/api/main/statistics/model/FlightStcsModel.java

@ -7,8 +7,8 @@ import lombok.Data;
@Data
public class FlightStcsModel {
private List<FlightStaticStcsModel> graphData;
private List<FlightStcsValueModel> graphData;
private List<FlightStaticStcsModel> topData;
private List<FlightStcsValueModel> topData;
}

2
pav-server/src/main/java/com/palnet/biz/api/main/statistics/model/FlightStaticStcsModel.java → pav-server/src/main/java/com/palnet/biz/api/main/statistics/model/FlightStcsValueModel.java

@ -3,7 +3,7 @@ package com.palnet.biz.api.main.statistics.model;
import lombok.Data;
@Data
public class FlightStaticStcsModel {
public class FlightStcsValueModel {
private String name;

120
pav-server/src/main/java/com/palnet/biz/api/main/statistics/service/MainStatisticsService.java

@ -6,11 +6,13 @@ import java.util.List;
import org.springframework.stereotype.Service;
import com.palnet.biz.api.main.statistics.model.FlightStaticStcsModel;
import com.palnet.biz.api.main.statistics.model.FlightStcsValueModel;
import com.palnet.biz.jpa.entity.type.WarnType;
import com.palnet.biz.jpa.repository.ctr.CtrCntrlQueryRepository;
import com.palnet.biz.jpa.repository.ctr.CtrCntrlWarnLogQueryRepository;
import com.palnet.biz.jpa.repository.flt.FltPlanQueryRepository;
import com.palnet.comn.code.ErrorCode;
import com.palnet.comn.exception.CustomException;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@ -50,7 +52,7 @@ public class MainStatisticsService {
Integer.parseInt(date.trim());
result[0] = "%Y";
result[1] = "%m";
result[1] = "%Y-%m";
break;
case "day": // 3. 일단위 검색 -> Parameter 2023-09 등 월까지 있는경우
@ -60,7 +62,7 @@ public class MainStatisticsService {
}
result[0] = "%Y-%m";
result[1] = "%d";
result[1] = "%Y-%m-%d";
} else {
throw new NumberFormatException();
}
@ -75,7 +77,7 @@ public class MainStatisticsService {
}
result[0] = "%Y-%m-%d";
result[1] = "%d";
result[1] = "%Y-%m-%d";
} else {
throw new NumberFormatException();
}
@ -98,13 +100,13 @@ public class MainStatisticsService {
* 비행관련 고정 통계, 항상 DB 전체값에서 통계진행할것임
* @return
*/
public List<FlightStaticStcsModel> getFlightStaticStcs(){
public List<FlightStcsValueModel> getFlightStaticStcs(){
FlightStaticStcsModel time = cntrlQueryRepository.getFlightTimeStcs();
FlightStaticStcsModel distance = cntrlQueryRepository.getFlightDistanceStcs();
FlightStaticStcsModel fltCount = cntrlQueryRepository.getFlightCountStcs();
FlightStcsValueModel time = cntrlQueryRepository.getFlightTimeStcs();
FlightStcsValueModel distance = cntrlQueryRepository.getFlightDistanceStcs();
FlightStcsValueModel fltCount = cntrlQueryRepository.getFlightCountStcs();
List<FlightStaticStcsModel> result = Arrays.asList(time, distance, fltCount);
List<FlightStcsValueModel> result = Arrays.asList(time, distance, fltCount);
return result;
}
@ -116,9 +118,9 @@ public class MainStatisticsService {
* @param formatParam
* @return
*/
public List<FlightStaticStcsModel> fltStatics(String cate, String date, String[] formatParam){
public List<FlightStcsValueModel> fltStatics(String cate, String date, String[] formatParam){
List<FlightStaticStcsModel> resultList = null;
List<FlightStcsValueModel> resultList = null;
switch (cate) {
case "TIME":
@ -145,8 +147,8 @@ public class MainStatisticsService {
* @param formatParam
* @return
*/
public List<FlightStaticStcsModel> fltTopStatics(String cate, String date, String[] formatParam){
List<FlightStaticStcsModel> resultList = null;
public List<FlightStcsValueModel> fltTopStatics(String cate, String date, String[] formatParam){
List<FlightStcsValueModel> resultList = null;
switch (cate) {
case "TIME":
@ -163,6 +165,10 @@ public class MainStatisticsService {
break;
}
for(FlightStcsValueModel node : resultList){
if(node.getName().equals("")) node.setName(" ");
}
return resultList;
}
@ -170,16 +176,16 @@ public class MainStatisticsService {
* 비행관련 고정 통계, 항상 DB 전체값에서 통계진행할것임
* @return
*/
public List<FlightStaticStcsModel> getWarnStaticStcs(){
public List<FlightStcsValueModel> getWarnStaticStcs(){
// TODO:: 비행경로이탈, 고도이탈, 충돌위험 임시코드
String[] cate = {"PLAN" ,"ALTITUDE", "CRASH"};
// String[] cate = {WarnType.PLAN.getValue() ,WarnType.ALTITUDE.getValue(), WarnType.CRASH.getValue()};
List<FlightStaticStcsModel> result = new ArrayList<>();
List<FlightStcsValueModel> result = new ArrayList<>();
for(int i = 0; i < cate.length; i ++){
FlightStaticStcsModel node = ctrCntrlWarnLogQueryRepository.getWarnStaticStcs(cate[i]);
FlightStcsValueModel node = ctrCntrlWarnLogQueryRepository.getWarnStaticStcs(cate[i]);
result.add(node);
}
@ -193,9 +199,13 @@ public class MainStatisticsService {
* @param formatParam
* @return
*/
public List<FlightStaticStcsModel> warnStatics(String cate, String date, String[] formatParam){
public List<FlightStcsValueModel> warnStatics(String cate, String date, String[] formatParam){
List<FlightStaticStcsModel> resultList = ctrCntrlWarnLogQueryRepository.warnStcs(cate, date, formatParam);
List<FlightStcsValueModel> resultList = ctrCntrlWarnLogQueryRepository.warnStcs(cate, date, formatParam);
for(FlightStcsValueModel node : resultList){
if(node.getName().equals("")) node.setName(" ");
}
return resultList;
}
@ -207,9 +217,9 @@ public class MainStatisticsService {
* @param formatParam
* @return
*/
public List<FlightStaticStcsModel> warnTopStatics(String cate, String date, String[] formatParam){
public List<FlightStcsValueModel> warnTopStatics(String cate, String date, String[] formatParam){
List<FlightStaticStcsModel> resultList = ctrCntrlWarnLogQueryRepository.warnTopStcs(cate, date, formatParam);
List<FlightStcsValueModel> resultList = ctrCntrlWarnLogQueryRepository.warnTopStcs(cate, date, formatParam);
return resultList;
}
@ -218,14 +228,74 @@ public class MainStatisticsService {
* 비행실적, 비행계획서 기용, 비행승인이 많이 기체 데이터, 상단 고정 데이터
* @return
*/
public List<FlightStaticStcsModel> getFltResultStaticStcs(){
public List<FlightStcsValueModel> getFltResultStaticStcs(){
FlightStaticStcsModel fltResult = fltPlanQueryRepository.getFltResultStaticStcs();
FlightStaticStcsModel fltPlan = fltPlanQueryRepository.getFltPlanStaticStcs();
FlightStaticStcsModel fltPlanAprvn = fltPlanQueryRepository.getFltPlanAprvnStaticStcs();
FlightStcsValueModel fltResult = fltPlanQueryRepository.getFltResultStaticStcs();
FlightStcsValueModel fltPlan = fltPlanQueryRepository.getFltPlanStaticStcs();
FlightStcsValueModel fltPlanAprvn = fltPlanQueryRepository.getFltPlanAprvnStaticStcs();
List<FlightStaticStcsModel> result = Arrays.asList(fltResult,fltPlan, fltPlanAprvn);
List<FlightStcsValueModel> result = Arrays.asList(fltResult,fltPlan, fltPlanAprvn);
return result;
}
public List<FlightStcsValueModel> getFltResultStcs(String cate, String date, String[] formatParam){
List<FlightStcsValueModel> resultList = null;
switch (cate) {
case "FLT_RESULT":
resultList = fltPlanQueryRepository.fltResultStcs(date, formatParam);
break;
case "FLT_PLAN":
resultList = fltPlanQueryRepository.fltPlanStcs(date, formatParam);
break;
case "FLT_PLAN_APRVN":
resultList = fltPlanQueryRepository.fltPlanAprvnStcs(date, formatParam);
break;
default :
throw new CustomException(ErrorCode.NON_VALID_PARAMETER, cate, date);
}
for(FlightStcsValueModel node : resultList){
if(node.getName().equals("")) node.setName(" ");
}
return resultList;
}
public List<FlightStcsValueModel> getFltTopResultStcs(String cate, String date, String[] formatParam){
List<FlightStcsValueModel> resultList = null;
switch (cate) {
case "FLT_RESULT":
resultList = fltPlanQueryRepository.fltTopResultStcs(date, formatParam);
break;
case "FLT_PLAN":
resultList = fltPlanQueryRepository.fltTopPlanStcs(date, formatParam);
break;
case "FLT_PLAN_APRVN":
resultList = fltPlanQueryRepository.fltTopPlanAprvnStcs(date, formatParam);
break;
default :
throw new CustomException(ErrorCode.NON_VALID_PARAMETER, cate, date);
}
for(FlightStcsValueModel node : resultList){
if(node.getName().equals("")) node.setName(" ");
}
return resultList;
}
}

80
pav-server/src/main/java/com/palnet/biz/jpa/repository/ctr/CtrCntrlQueryRepository.java

@ -29,7 +29,7 @@ import com.palnet.biz.api.ctr.cntrl.model.CtrCntrlEndModel;
import com.palnet.biz.api.ctr.cntrl.model.CtrCntrlGroupArcrftModel;
import com.palnet.biz.api.ctr.cntrl.model.CtrCntrlGroupModel;
import com.palnet.biz.api.main.dash.model.MainDashStcsModel;
import com.palnet.biz.api.main.statistics.model.FlightStaticStcsModel;
import com.palnet.biz.api.main.statistics.model.FlightStcsValueModel;
import com.palnet.biz.jpa.entity.ComArcrftBas;
import com.palnet.biz.jpa.entity.ComIdntfBas;
import com.palnet.biz.jpa.entity.CtrCntrlHstry;
@ -1830,14 +1830,14 @@ public List<AnlsHstryDetailModel> listCntrlHstry(String id){
* DB 데이터내에 가장 많은 비행시간을 가진 기체, 비행시간 SELECT
* @return
*/
public FlightStaticStcsModel getFlightTimeStcs(){
FlightStaticStcsModel result = new FlightStaticStcsModel();
public FlightStcsValueModel getFlightTimeStcs(){
FlightStcsValueModel result = new FlightStcsValueModel();
QCtrCntrlBas qCtrCntrlBas = QCtrCntrlBas.ctrCntrlBas;
List<FlightStaticStcsModel> queryResult = query
List<FlightStcsValueModel> queryResult = query
.select(
Projections.bean(FlightStaticStcsModel.class,
Projections.bean(FlightStcsValueModel.class,
qCtrCntrlBas.idntfNum.as("name"), // 결과 객체의 프로퍼티 이름을 지정
Expressions.stringTemplate(
"CONCAT(SEC_TO_TIME(SUM(TIME_TO_SEC(TIMEDIFF({0}, {1})))))",
@ -1868,7 +1868,7 @@ public List<AnlsHstryDetailModel> listCntrlHstry(String id){
log.warn("a => {}", result);
} else {
FlightStaticStcsModel node = new FlightStaticStcsModel();
FlightStcsValueModel node = new FlightStcsValueModel();
node.setName("-");
node.setYear("noData");
node.setMonth("noData");
@ -1947,14 +1947,14 @@ public List<AnlsHstryDetailModel> listCntrlHstry(String id){
* 가장 많이 이동한 기체
* @return
*/
public FlightStaticStcsModel getFlightDistanceStcs(){
FlightStaticStcsModel result = new FlightStaticStcsModel();
public FlightStcsValueModel getFlightDistanceStcs(){
FlightStcsValueModel result = new FlightStcsValueModel();
QCtrCntrlBas qCtrCntrlBas = QCtrCntrlBas.ctrCntrlBas;
List<FlightStaticStcsModel> queryResult = query
List<FlightStcsValueModel> queryResult = query
.select(
Projections.bean(FlightStaticStcsModel.class,
Projections.bean(FlightStcsValueModel.class,
qCtrCntrlBas.idntfNum.as("name"), // 결과 객체의 프로퍼티 이름을 지정
qCtrCntrlBas.ttlDstnc.sum().as("value")
)
@ -1976,7 +1976,7 @@ public List<AnlsHstryDetailModel> listCntrlHstry(String id){
result.setMonth(getFltDistanceMonth(idntfNum));
result.setDay(getFltDistanceDay(idntfNum));
} else {
FlightStaticStcsModel node = new FlightStaticStcsModel();
FlightStcsValueModel node = new FlightStcsValueModel();
node.setName("-");
node.setYear("noData");
node.setMonth("noData");
@ -2043,14 +2043,14 @@ public List<AnlsHstryDetailModel> listCntrlHstry(String id){
* 가장 많이 비행한 기체
* @return
*/
public FlightStaticStcsModel getFlightCountStcs(){
FlightStaticStcsModel result = new FlightStaticStcsModel();
public FlightStcsValueModel getFlightCountStcs(){
FlightStcsValueModel result = new FlightStcsValueModel();
QCtrCntrlBas qCtrCntrlBas = QCtrCntrlBas.ctrCntrlBas;
List<FlightStaticStcsModel> queryResult = query
List<FlightStcsValueModel> queryResult = query
.select(
Projections.bean(FlightStaticStcsModel.class,
Projections.bean(FlightStcsValueModel.class,
qCtrCntrlBas.idntfNum.as("name"), // 결과 객체의 프로퍼티 이름을 지정
qCtrCntrlBas.cntrlId.count().as("value")
)
@ -2070,7 +2070,7 @@ public List<AnlsHstryDetailModel> listCntrlHstry(String id){
result.setMonth(getFltCountMonth(idntfNum));
result.setDay(getFltCountDay(idntfNum));
} else {
FlightStaticStcsModel node = new FlightStaticStcsModel();
FlightStcsValueModel node = new FlightStcsValueModel();
node.setName("-");
node.setYear("noData");
node.setMonth("noData");
@ -2141,7 +2141,7 @@ public List<AnlsHstryDetailModel> listCntrlHstry(String id){
* @param formatParam
* @return
*/
public List<FlightStaticStcsModel> fltTimeStcs(String date, String[] formatParam){
public List<FlightStcsValueModel> fltTimeStcs(String date, String[] formatParam){
// QCtrCntrlBas bas = QCtrCntrlBas.ctrCntrlBas;
QCtrCntrlBas bas = QCtrCntrlBas.ctrCntrlBas;
@ -2158,10 +2158,10 @@ public List<AnlsHstryDetailModel> listCntrlHstry(String id){
BooleanBuilder builder = new BooleanBuilder();
if(date != null && date.length() > 0) builder.and(formattedDate.eq(date));
List<FlightStaticStcsModel> result = query
List<FlightStcsValueModel> result = query
.select(
Projections.bean(
FlightStaticStcsModel.class ,
FlightStcsValueModel.class ,
formattedDate2.as("name"),
Expressions.stringTemplate(
"CONCAT(SEC_TO_TIME(SUM(TIME_TO_SEC(TIMEDIFF({0}, {1})))))",
@ -2176,7 +2176,7 @@ public List<AnlsHstryDetailModel> listCntrlHstry(String id){
.fetch();
if(result.size() <= 0){
FlightStaticStcsModel node = new FlightStaticStcsModel();
FlightStcsValueModel node = new FlightStcsValueModel();
node.setName("-");
node.setValue("NoData");
@ -2193,7 +2193,7 @@ public List<AnlsHstryDetailModel> listCntrlHstry(String id){
* @param formatParam
* @return
*/
public List<FlightStaticStcsModel> fltDistanceStcs(String date, String[] formatParam){
public List<FlightStcsValueModel> fltDistanceStcs(String date, String[] formatParam){
QCtrCntrlBas bas = QCtrCntrlBas.ctrCntrlBas;
@ -2210,10 +2210,10 @@ public List<AnlsHstryDetailModel> listCntrlHstry(String id){
BooleanBuilder builder = new BooleanBuilder();
if(date != null && date.length() > 0) builder.and(formattedDate.eq(date));
List<FlightStaticStcsModel> result = query
List<FlightStcsValueModel> result = query
.select(
Projections.bean(
FlightStaticStcsModel.class ,
FlightStcsValueModel.class ,
formattedDate2.as("name"),
bas.ttlDstnc.sum().as("value")
)
@ -2224,7 +2224,7 @@ public List<AnlsHstryDetailModel> listCntrlHstry(String id){
.fetch();
if(result.size() <= 0){
FlightStaticStcsModel node = new FlightStaticStcsModel();
FlightStcsValueModel node = new FlightStcsValueModel();
node.setName("-");
node.setValue("NoData");
@ -2241,7 +2241,7 @@ public List<AnlsHstryDetailModel> listCntrlHstry(String id){
* @param formatParam
* @return
*/
public List<FlightStaticStcsModel> fltCountStcs(String date, String[] formatParam){
public List<FlightStcsValueModel> fltCountStcs(String date, String[] formatParam){
QCtrCntrlBas bas = QCtrCntrlBas.ctrCntrlBas;
@ -2258,10 +2258,10 @@ public List<AnlsHstryDetailModel> listCntrlHstry(String id){
BooleanBuilder builder = new BooleanBuilder();
if(date != null && date.length() > 0) builder.and(formattedDate.eq(date));
List<FlightStaticStcsModel> result = query
List<FlightStcsValueModel> result = query
.select(
Projections.bean(
FlightStaticStcsModel.class ,
FlightStcsValueModel.class ,
formattedDate2.as("name"),
bas.cntrlId.count().as("value")
)
@ -2272,7 +2272,7 @@ public List<AnlsHstryDetailModel> listCntrlHstry(String id){
.fetch();
if(result.size() <= 0){
FlightStaticStcsModel node = new FlightStaticStcsModel();
FlightStcsValueModel node = new FlightStcsValueModel();
node.setName("-");
node.setValue("NoData");
@ -2289,7 +2289,7 @@ public List<AnlsHstryDetailModel> listCntrlHstry(String id){
* @param formatParam
* @return
*/
public List<FlightStaticStcsModel> fltTopTimeStcs(String date, String[] formatParam){
public List<FlightStcsValueModel> fltTopTimeStcs(String date, String[] formatParam){
QCtrCntrlBas bas = QCtrCntrlBas.ctrCntrlBas;
StringTemplate formattedDate = Expressions.stringTemplate(
@ -2300,9 +2300,9 @@ public List<AnlsHstryDetailModel> listCntrlHstry(String id){
BooleanBuilder builder = new BooleanBuilder();
if(date != null && date.length() > 0) builder.and(formattedDate.eq(date));
List<FlightStaticStcsModel> result = query
List<FlightStcsValueModel> result = query
.select(
Projections.bean(FlightStaticStcsModel.class,
Projections.bean(FlightStcsValueModel.class,
bas.idntfNum.as("name"), // 결과 객체의 프로퍼티 이름을 지정
Expressions.stringTemplate(
"CONCAT(SEC_TO_TIME(SUM(TIME_TO_SEC(TIMEDIFF({0}, {1})))))",
@ -2323,7 +2323,7 @@ public List<AnlsHstryDetailModel> listCntrlHstry(String id){
.fetch();
if(result.size() <= 0){
FlightStaticStcsModel node = new FlightStaticStcsModel();
FlightStcsValueModel node = new FlightStcsValueModel();
node.setName("-");
node.setValue("NoData");
@ -2340,7 +2340,7 @@ public List<AnlsHstryDetailModel> listCntrlHstry(String id){
* @param formatParam
* @return
*/
public List<FlightStaticStcsModel> fltTopDistanceStcs(String date, String[] formatParam){
public List<FlightStcsValueModel> fltTopDistanceStcs(String date, String[] formatParam){
QCtrCntrlBas bas = QCtrCntrlBas.ctrCntrlBas;
StringTemplate formattedDate = Expressions.stringTemplate(
@ -2351,9 +2351,9 @@ public List<AnlsHstryDetailModel> listCntrlHstry(String id){
BooleanBuilder builder = new BooleanBuilder();
if(date != null && date.length() > 0) builder.and(formattedDate.eq(date));
List<FlightStaticStcsModel> result = query
List<FlightStcsValueModel> result = query
.select(
Projections.bean(FlightStaticStcsModel.class,
Projections.bean(FlightStcsValueModel.class,
bas.idntfNum.as("name"), // 결과 객체의 프로퍼티 이름을 지정
bas.ttlDstnc.sum().as("value")
)
@ -2366,7 +2366,7 @@ public List<AnlsHstryDetailModel> listCntrlHstry(String id){
.fetch();
if(result.size() <= 0){
FlightStaticStcsModel node = new FlightStaticStcsModel();
FlightStcsValueModel node = new FlightStcsValueModel();
node.setName("-");
node.setValue("NoData");
@ -2383,7 +2383,7 @@ public List<AnlsHstryDetailModel> listCntrlHstry(String id){
* @param formatParam
* @return
*/
public List<FlightStaticStcsModel> fltTopCountStcs(String date, String[] formatParam){
public List<FlightStcsValueModel> fltTopCountStcs(String date, String[] formatParam){
QCtrCntrlBas bas = QCtrCntrlBas.ctrCntrlBas;
StringTemplate formattedDate = Expressions.stringTemplate(
@ -2394,9 +2394,9 @@ public List<AnlsHstryDetailModel> listCntrlHstry(String id){
BooleanBuilder builder = new BooleanBuilder();
if(date != null && date.length() > 0) builder.and(formattedDate.eq(date));
List<FlightStaticStcsModel> result = query
List<FlightStcsValueModel> result = query
.select(
Projections.bean(FlightStaticStcsModel.class,
Projections.bean(FlightStcsValueModel.class,
bas.idntfNum.as("name"), // 결과 객체의 프로퍼티 이름을 지정
bas.cntrlId.count().as("value")
)
@ -2409,7 +2409,7 @@ public List<AnlsHstryDetailModel> listCntrlHstry(String id){
.fetch();
if(result.size() <= 0){
FlightStaticStcsModel node = new FlightStaticStcsModel();
FlightStcsValueModel node = new FlightStcsValueModel();
node.setName("-");
node.setValue("NoData");

28
pav-server/src/main/java/com/palnet/biz/jpa/repository/ctr/CtrCntrlWarnLogQueryRepository.java

@ -6,7 +6,7 @@ import java.util.List;
import org.springframework.stereotype.Repository;
import com.palnet.biz.api.main.statistics.model.FlightStaticStcsModel;
import com.palnet.biz.api.main.statistics.model.FlightStcsValueModel;
import com.palnet.biz.jpa.entity.QCtrCntrlWarnLog;
import com.querydsl.core.BooleanBuilder;
import com.querydsl.core.types.ConstantImpl;
@ -30,17 +30,17 @@ public class CtrCntrlWarnLogQueryRepository {
* 비정상상황 고정 데이터, 카테고리별 집계[PLAN, ALTITUDE, CRASH]
* @return
*/
public FlightStaticStcsModel getWarnStaticStcs(String cate){
FlightStaticStcsModel result = new FlightStaticStcsModel();
public FlightStcsValueModel getWarnStaticStcs(String cate){
FlightStcsValueModel result = new FlightStcsValueModel();
QCtrCntrlWarnLog bas = QCtrCntrlWarnLog.ctrCntrlWarnLog;
BooleanBuilder builder = new BooleanBuilder();
builder.and(bas.warnType.eq(cate));
List<FlightStaticStcsModel> queryResult = query
List<FlightStcsValueModel> queryResult = query
.select(
Projections.bean(FlightStaticStcsModel.class,
Projections.bean(FlightStcsValueModel.class,
bas.idntfNum.as("name"), // 결과 객체의 프로퍼티 이름을 지정
bas.cntrlId.countDistinct().as("value") // 결과 객체의 프로퍼티 이름을 지정
)
@ -63,7 +63,7 @@ public class CtrCntrlWarnLogQueryRepository {
} else {
FlightStaticStcsModel node = new FlightStaticStcsModel();
FlightStcsValueModel node = new FlightStcsValueModel();
node.setName("-");
node.setYear("noData");
node.setMonth("noData");
@ -143,7 +143,7 @@ public class CtrCntrlWarnLogQueryRepository {
* @param formatParam
* @return
*/
public List<FlightStaticStcsModel> warnStcs(String cate, String date, String[] formatParam){
public List<FlightStcsValueModel> warnStcs(String cate, String date, String[] formatParam){
// QCtrCntrlBas bas = QCtrCntrlBas.ctrCntrlBas;
QCtrCntrlWarnLog bas = QCtrCntrlWarnLog.ctrCntrlWarnLog;
@ -161,10 +161,10 @@ public class CtrCntrlWarnLogQueryRepository {
builder.and(bas.warnType.eq(cate));
if(date != null && date.length() > 0) builder.and(formattedDate.eq(date));
List<FlightStaticStcsModel> result = query
List<FlightStcsValueModel> result = query
.select(
Projections.bean(
FlightStaticStcsModel.class ,
FlightStcsValueModel.class ,
formattedDate2.as("name"),
bas.cntrlId.countDistinct().as("value")
)
@ -175,7 +175,7 @@ public class CtrCntrlWarnLogQueryRepository {
.fetch();
if(result.size() <= 0){
FlightStaticStcsModel node = new FlightStaticStcsModel();
FlightStcsValueModel node = new FlightStcsValueModel();
node.setName("-");
node.setValue("NoData");
@ -193,7 +193,7 @@ public class CtrCntrlWarnLogQueryRepository {
* @param formatParam
* @return
*/
public List<FlightStaticStcsModel> warnTopStcs(String cate, String date, String[] formatParam){
public List<FlightStcsValueModel> warnTopStcs(String cate, String date, String[] formatParam){
QCtrCntrlWarnLog bas = QCtrCntrlWarnLog.ctrCntrlWarnLog;
@ -206,9 +206,9 @@ public class CtrCntrlWarnLogQueryRepository {
builder.and(bas.warnType.eq(cate));
if(date != null && date.length() > 0) builder.and(formattedDate.eq(date));
List<FlightStaticStcsModel> result = query
List<FlightStcsValueModel> result = query
.select(
Projections.bean(FlightStaticStcsModel.class,
Projections.bean(FlightStcsValueModel.class,
bas.idntfNum.as("name"), // 결과 객체의 프로퍼티 이름을 지정
bas.cntrlId.countDistinct().as("value") // 결과 객체의 프로퍼티 이름을 지정
)
@ -221,7 +221,7 @@ public class CtrCntrlWarnLogQueryRepository {
.fetch();
if(result.size() <= 0){
FlightStaticStcsModel node = new FlightStaticStcsModel();
FlightStcsValueModel node = new FlightStcsValueModel();
node.setName("-");
node.setValue("NoData");

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

@ -23,7 +23,7 @@ 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.MainDashStcsModel;
import com.palnet.biz.api.main.statistics.model.FlightStaticStcsModel;
import com.palnet.biz.api.main.statistics.model.FlightStcsValueModel;
import com.palnet.biz.jpa.entity.FltPlanBas;
import com.palnet.biz.jpa.entity.QComArcrftBas;
import com.palnet.biz.jpa.entity.QComFileBas;
@ -1181,17 +1181,17 @@ public class FltPlanQueryRepository {
* 비행실적 데이터, top 1
* @return
*/
public FlightStaticStcsModel getFltResultStaticStcs(){
FlightStaticStcsModel result = new FlightStaticStcsModel();
public FlightStcsValueModel getFltResultStaticStcs(){
FlightStcsValueModel result = new FlightStcsValueModel();
QFltPlanCtrCntrlRel bas = QFltPlanCtrCntrlRel.fltPlanCtrCntrlRel;
BooleanBuilder builder = new BooleanBuilder();
builder.and(bas.planSno.isNotNull());
List<FlightStaticStcsModel> queryResult = query
List<FlightStcsValueModel> queryResult = query
.select(
Projections.bean(FlightStaticStcsModel.class,
Projections.bean(FlightStcsValueModel.class,
bas.idntfNum.as("name") // 결과 객체의 프로퍼티 이름을 지정
)
)
@ -1212,7 +1212,7 @@ public class FltPlanQueryRepository {
result.setMonth(getFltResultMonth(idntfNum));
result.setDay(getFltResultDay(idntfNum));
} else {
FlightStaticStcsModel node = new FlightStaticStcsModel();
FlightStcsValueModel node = new FlightStcsValueModel();
node.setName("-");
node.setYear("NoData");
@ -1293,14 +1293,14 @@ public class FltPlanQueryRepository {
* 비행계획에 많이 기용된 기체 데이터, top 1
* @return
*/
public FlightStaticStcsModel getFltPlanStaticStcs(){
FlightStaticStcsModel result = new FlightStaticStcsModel();
public FlightStcsValueModel getFltPlanStaticStcs(){
FlightStcsValueModel result = new FlightStcsValueModel();
QFltPlanArcrft bas = QFltPlanArcrft.fltPlanArcrft;
List<FlightStaticStcsModel> queryResult = query
List<FlightStcsValueModel> queryResult = query
.select(
Projections.bean(FlightStaticStcsModel.class,
Projections.bean(FlightStcsValueModel.class,
bas.idntfNum.as("name") // 결과 객체의 프로퍼티 이름을 지정
)
)
@ -1320,7 +1320,7 @@ public class FltPlanQueryRepository {
result.setMonth(getFltPlanMonth(idntfNum));
result.setDay(getFltPlanDay(idntfNum));
} else {
FlightStaticStcsModel node = new FlightStaticStcsModel();
FlightStcsValueModel node = new FlightStcsValueModel();
node.setName("-");
node.setYear("NoData");
@ -1390,8 +1390,8 @@ public class FltPlanQueryRepository {
* 비행실적 많은 기체 데이터, top 1
* @return
*/
public FlightStaticStcsModel getFltPlanAprvnStaticStcs(){
FlightStaticStcsModel result = new FlightStaticStcsModel();
public FlightStcsValueModel getFltPlanAprvnStaticStcs(){
FlightStcsValueModel result = new FlightStcsValueModel();
QFltPlanArcrft qFltPlanArcrft = QFltPlanArcrft.fltPlanArcrft;
QFltPlanBas qFltPlanBas = QFltPlanBas.fltPlanBas;
@ -1400,9 +1400,9 @@ public class FltPlanQueryRepository {
builder.and(qFltPlanBas.aprvlYn.eq("Y"));
List<FlightStaticStcsModel> queryResult = query
List<FlightStcsValueModel> queryResult = query
.select(
Projections.bean(FlightStaticStcsModel.class,
Projections.bean(FlightStcsValueModel.class,
qFltPlanArcrft.idntfNum.as("name"), // 결과 객체의 프로퍼티 이름을 지정
qFltPlanArcrft.planSno.count().as("value") // 결과 객체의 프로퍼티 이름을 지정
)
@ -1425,7 +1425,7 @@ public class FltPlanQueryRepository {
result.setMonth(getFltPlanAprvnMonth(idntfNum));
result.setDay(getFltPlanAprvnDay(idntfNum));
} else {
FlightStaticStcsModel node = new FlightStaticStcsModel();
FlightStcsValueModel node = new FlightStcsValueModel();
node.setName("-");
node.setYear("NoData");
@ -1501,7 +1501,291 @@ public class FltPlanQueryRepository {
.fetchOne();
}
/**
* 비행실적 통계 카테고리 비행실적
* @param date
* @param formatParam
* @return
*/
public List<FlightStcsValueModel> fltResultStcs(String date, String[] formatParam){
// QCtrCntrlBas bas = QCtrCntrlBas.ctrCntrlBas;
QFltPlanBas qFltPlanBas = QFltPlanBas.fltPlanBas;
QFltPlanCtrCntrlRel qFltPlanCtrCntrlRel = QFltPlanCtrCntrlRel.fltPlanCtrCntrlRel;
StringTemplate formattedDate = Expressions.stringTemplate(
"DATE_FORMAT({0}, {1})"
, qFltPlanBas.createDt
, ConstantImpl.create(formatParam[0]));
StringTemplate formattedDate2 = Expressions.stringTemplate(
"DATE_FORMAT({0}, {1})"
, qFltPlanBas.createDt
, ConstantImpl.create(formatParam[1]));
BooleanBuilder builder = new BooleanBuilder();
if(date != null && date.length() > 0) builder.and(formattedDate.eq(date));
List<FlightStcsValueModel> result = query
.select(
Projections.bean(
FlightStcsValueModel.class ,
formattedDate2.as("name"),
qFltPlanCtrCntrlRel.planSno.countDistinct().as("value")
)
)
.from(qFltPlanCtrCntrlRel)
.leftJoin(qFltPlanBas)
.on(qFltPlanBas.planSno.eq(qFltPlanCtrCntrlRel.planSno))
.where(builder)
.groupBy(formattedDate2)
.fetch();
if(result.size() <= 0){
FlightStcsValueModel node = new FlightStcsValueModel();
node.setName("-");
node.setValue("NoData");
result.add(node);
}
return result;
}
/**
* 비행계획서 통계 카테고리 비행계획서
* @param date
* @param formatParam
* @return
*/
public List<FlightStcsValueModel> fltPlanStcs(String date, String[] formatParam){
// QCtrCntrlBas bas = QCtrCntrlBas.ctrCntrlBas;
QFltPlanBas qFltPlanBas = QFltPlanBas.fltPlanBas;
StringTemplate formattedDate = Expressions.stringTemplate(
"DATE_FORMAT({0}, {1})"
, qFltPlanBas.createDt
, ConstantImpl.create(formatParam[0]));
StringTemplate formattedDate2 = Expressions.stringTemplate(
"DATE_FORMAT({0}, {1})"
, qFltPlanBas.createDt
, ConstantImpl.create(formatParam[1]));
BooleanBuilder builder = new BooleanBuilder();
if(date != null && date.length() > 0) builder.and(formattedDate.eq(date));
List<FlightStcsValueModel> result = query
.select(
Projections.bean(
FlightStcsValueModel.class ,
formattedDate2.as("name"),
qFltPlanBas.planSno.count().as("value")
)
)
.from(qFltPlanBas)
.where(builder)
.groupBy(formattedDate2)
.fetch();
if(result.size() <= 0){
FlightStcsValueModel node = new FlightStcsValueModel();
node.setName("-");
node.setValue("NoData");
result.add(node);
}
return result;
}
/**
* 비행승인 통계 카테고리 비행승인
* @param date
* @param formatParam
* @return
*/
public List<FlightStcsValueModel> fltPlanAprvnStcs(String date, String[] formatParam){
// QCtrCntrlBas bas = QCtrCntrlBas.ctrCntrlBas;
QFltPlanBas qFltPlanBas = QFltPlanBas.fltPlanBas;
StringTemplate formattedDate = Expressions.stringTemplate(
"DATE_FORMAT({0}, {1})"
, qFltPlanBas.createDt
, ConstantImpl.create(formatParam[0]));
StringTemplate formattedDate2 = Expressions.stringTemplate(
"DATE_FORMAT({0}, {1})"
, qFltPlanBas.createDt
, ConstantImpl.create(formatParam[1]));
BooleanBuilder builder = new BooleanBuilder();
if(date != null && date.length() > 0) builder.and(formattedDate.eq(date));
builder.and(qFltPlanBas.aprvlYn.eq("Y"));
List<FlightStcsValueModel> result = query
.select(
Projections.bean(
FlightStcsValueModel.class ,
formattedDate2.as("name"),
qFltPlanBas.planSno.count().as("value")
)
)
.from(qFltPlanBas)
.where(builder)
.groupBy(formattedDate2)
.fetch();
if(result.size() <= 0){
FlightStcsValueModel node = new FlightStcsValueModel();
node.setName("-");
node.setValue("NoData");
result.add(node);
}
return result;
}
/**
* 비행 실적, 날짜데이터에 맞춘 TOP5
* @param date
* @param formatParam
* @return
*/
public List<FlightStcsValueModel> fltTopResultStcs(String date, String[] formatParam){
QFltPlanCtrCntrlRel qFltPlanCtrCntrlRel = QFltPlanCtrCntrlRel.fltPlanCtrCntrlRel;
QFltPlanBas qFltPlanBas = QFltPlanBas.fltPlanBas;
StringTemplate formattedDate = Expressions.stringTemplate(
"DATE_FORMAT({0}, {1})"
, qFltPlanBas.createDt
, ConstantImpl.create(formatParam[0]));
BooleanBuilder builder = new BooleanBuilder();
if(date != null && date.length() > 0) builder.and(formattedDate.eq(date));
List<FlightStcsValueModel> result = query
.select(
Projections.bean(FlightStcsValueModel.class,
qFltPlanCtrCntrlRel.idntfNum.as("name"), // 결과 객체의 프로퍼티 이름을 지정
qFltPlanCtrCntrlRel.planSno.countDistinct().as("value")
)
)
.from(qFltPlanCtrCntrlRel)
.leftJoin(qFltPlanBas)
.on(qFltPlanBas.planSno.eq(qFltPlanCtrCntrlRel.planSno))
.where(builder)
.orderBy(qFltPlanCtrCntrlRel.planSno.countDistinct().desc())
.limit(5)
.fetch();
if(result.size() <= 0){
FlightStcsValueModel node = new FlightStcsValueModel();
node.setName("-");
node.setValue("NoData");
result.add(node);
}
return result;
}
/**
* 비행 실적, 날짜데이터에 맞춘 TOP5
* @param date
* @param formatParam
* @return
*/
public List<FlightStcsValueModel> fltTopPlanStcs(String date, String[] formatParam){
QFltPlanArcrft qFltPlanArcrft = QFltPlanArcrft.fltPlanArcrft;
StringTemplate formattedDate = Expressions.stringTemplate(
"DATE_FORMAT({0}, {1})"
, qFltPlanArcrft.createDt
, ConstantImpl.create(formatParam[0]));
BooleanBuilder builder = new BooleanBuilder();
if(date != null && date.length() > 0) builder.and(formattedDate.eq(date));
List<FlightStcsValueModel> result = query
.select(
Projections.bean(FlightStcsValueModel.class,
qFltPlanArcrft.idntfNum.as("name"), // 결과 객체의 프로퍼티 이름을 지정
qFltPlanArcrft.planSno.countDistinct().as("value")
)
)
.from(qFltPlanArcrft)
.where(builder)
.orderBy(qFltPlanArcrft.planSno.countDistinct().desc())
.limit(5)
.fetch();
if(result.size() <= 0){
FlightStcsValueModel node = new FlightStcsValueModel();
node.setName("-");
node.setValue("NoData");
result.add(node);
}
return result;
}
/**
* 비행 실적, 날짜데이터에 맞춘 TOP5
* @param date
* @param formatParam
* @return
*/
public List<FlightStcsValueModel> fltTopPlanAprvnStcs(String date, String[] formatParam){
QFltPlanArcrft qFltPlanArcrft = QFltPlanArcrft.fltPlanArcrft;
QFltPlanBas qFltPlanBas = QFltPlanBas.fltPlanBas;
StringTemplate formattedDate = Expressions.stringTemplate(
"DATE_FORMAT({0}, {1})"
, qFltPlanBas.createDt
, ConstantImpl.create(formatParam[0]));
BooleanBuilder builder = new BooleanBuilder();
if(date != null && date.length() > 0) builder.and(formattedDate.eq(date));
builder.and(qFltPlanBas.aprvlYn.eq("Y"));
List<FlightStcsValueModel> result = query
.select(
Projections.bean(FlightStcsValueModel.class,
qFltPlanArcrft.idntfNum.as("name"), // 결과 객체의 프로퍼티 이름을 지정
qFltPlanArcrft.planSno.countDistinct().as("value")
)
)
.from(qFltPlanArcrft)
.leftJoin(qFltPlanBas)
.on(qFltPlanArcrft.planSno.eq(qFltPlanBas.planSno))
.where(builder)
.groupBy(qFltPlanArcrft.idntfNum)
.orderBy(qFltPlanArcrft.planSno.countDistinct().desc())
.limit(5)
.fetch();
if(result.size() <= 0){
FlightStcsValueModel node = new FlightStcsValueModel();
node.setName("-");
node.setValue("NoData");
result.add(node);
}
return result;
}
}
Loading…
Cancel
Save