Browse Source

메인화면 일일비행 추가

pull/13/head
lkd9125(이경도) 10 months ago
parent
commit
f709d99133
  1. 25
      pav-server/src/main/java/com/palnet/biz/api/main/dash/controller/MainDashController.java
  2. 15
      pav-server/src/main/java/com/palnet/biz/api/main/dash/model/MainCurrentStcsModel.java
  3. 60
      pav-server/src/main/java/com/palnet/biz/api/main/dash/service/MainDashService.java
  4. 2
      pav-server/src/main/java/com/palnet/biz/api/main/statistics/service/MainStatisticsService.java
  5. 78
      pav-server/src/main/java/com/palnet/biz/jpa/repository/flt/FltPlanQueryRepository.java

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

@ -1,8 +1,11 @@
package com.palnet.biz.api.main.dash.controller;
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import com.palnet.biz.api.main.dash.model.MainCurrentStcsModel;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
@ -300,7 +303,29 @@ public class MainDashController {
return ResponseEntity.ok().body(new SuccessResponse<List<MainDashStcsModel>>(result));
}
@GetMapping("/current/flight-plan")
@ApiOperation(value = "김포공항, 비정상상황 비행 통계")
@Tag(name = "메인화면 컨트롤러", description = "메인화면 관련 API")
@ApiImplicitParams({
@ApiImplicitParam(name = "date",value = "날짜", dataTypeClass = String.class),
@ApiImplicitParam(name = "type",value = "날짜형식", dataTypeClass = String.class)
})
public ResponseEntity<? extends BasicResponse> currentFlightPlan(@RequestParam(required = false) String groupId){
log.warn("groupId => {}", groupId);
List<MainCurrentStcsModel> result = new ArrayList<>();
try {
result = service.currentFlightPlan(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<List<MainCurrentStcsModel>>(result));
}

15
pav-server/src/main/java/com/palnet/biz/api/main/dash/model/MainCurrentStcsModel.java

@ -0,0 +1,15 @@
package com.palnet.biz.api.main.dash.model;
import lombok.Data;
import java.util.List;
@Data
public class MainCurrentStcsModel {
private List<Integer> stcsValues;
private Double percent;
}

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

@ -1,14 +1,15 @@
package com.palnet.biz.api.main.dash.service;
import java.util.ArrayList;
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.bas.group.model.BasGroupModel;
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.BooleanBuilder;
import lombok.extern.slf4j.Slf4j;
import org.slf4j.Logger;
@ -39,6 +40,9 @@ public class MainDashService {
@Autowired
private CtrCntrlQueryRepository query;
@Autowired
private MainStatisticsService mainStatisticsService;
@ -219,4 +223,52 @@ public class MainDashService {
return result;
}
public List<MainCurrentStcsModel> currentFlightPlan(String groupId){
final int sumCount = 2; // 2번은 합계
boolean authCheck = mainStatisticsService.authCheck(groupId);
String[] dateCate = {"-2", "-1", "0", "1"};
List<MainCurrentStcsModel> result = new ArrayList<>();
for(String cate : dateCate){
List<FltPlanBas> fltPlanBas = fltPlanQueryRepository.currentStcs(groupId, authCheck, cate);
int count = fltPlanBas.size();
Long aprvnCount = fltPlanBas.stream().filter(value -> value.getAprvlYn().equals("Y")).count();
List<Integer> stcsValues = Arrays.asList(count, aprvnCount.intValue(), count);
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;
}
}

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

@ -111,7 +111,7 @@ public class MainStatisticsService {
* @param groupId
* @return
*/
private Boolean authCheck(String groupId){
public Boolean authCheck(String groupId){
if(groupId == null || groupId.equals("")) return false;

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

@ -7,6 +7,8 @@ import java.time.ZoneId;
import java.util.List;
import java.util.Optional;
import com.palnet.biz.api.main.dash.model.MainCurrentStcsModel;
import com.querydsl.core.types.dsl.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.data.domain.Page;
@ -54,10 +56,6 @@ import com.querydsl.core.group.GroupBy;
import com.querydsl.core.types.ConstantImpl;
import com.querydsl.core.types.ExpressionUtils;
import com.querydsl.core.types.Projections;
import com.querydsl.core.types.dsl.CaseBuilder;
import com.querydsl.core.types.dsl.DateTemplate;
import com.querydsl.core.types.dsl.Expressions;
import com.querydsl.core.types.dsl.StringTemplate;
import com.querydsl.jpa.JPAExpressions;
import com.querydsl.jpa.impl.JPAQuery;
import com.querydsl.jpa.impl.JPAQueryFactory;
@ -1817,8 +1815,8 @@ public class FltPlanQueryRepository {
BooleanBuilder builder = new BooleanBuilder();
if(date != null && date.length() > 0) builder.and(formattedDate.eq(date));
builder.and(qFltPlanBas.aprvlYn.eq("Y"));
if(groupId != null && !(groupId.equals(""))) builder.and(qFltPlanBas.groupId.eq(groupId));
if(authCheck) builder.and(qFltPlanBas.cstmrSno.eq(jwtTokenUtil.getCstmrSnoByToken()));
if(groupId != null && !(groupId.equals(""))) builder.and(qFltPlanBas.groupId.eq(groupId));
List<FlightStcsValueModel> result = query
.select(
@ -1847,4 +1845,74 @@ public class FltPlanQueryRepository {
return result;
}
public List<FltPlanBas> currentStcs(String groupId, boolean authCheck, String cate){
QFltPlanBas qFltPlanBas = QFltPlanBas.fltPlanBas;
BooleanBuilder builder = getCurrentBooleanBuilder(groupId, authCheck, cate, qFltPlanBas);
List<FltPlanBas> stcsValues = query
.select(
Projections.bean(
FltPlanBas.class,
qFltPlanBas.planSno,
qFltPlanBas.aprvlYn
)
)
.from(qFltPlanBas)
.where(builder)
.fetch();
return stcsValues;
}
private BooleanBuilder getCurrentBooleanBuilder(String groupId, boolean authCheck, String cate, QFltPlanBas qFltPlanBas){
BooleanBuilder builder = new BooleanBuilder();
builder.and(qFltPlanBas.groupId.eq(groupId));
if(authCheck) builder.and(qFltPlanBas.cstmrSno.eq(jwtTokenUtil.getCstmrSnoByToken()));
String dateFormat = "%Y-%m-%d";
BooleanExpression dateExpression = null;
switch (cate){
case "-2" :
dateExpression =
Expressions.stringTemplate("DATE_FORMAT({0}, {1})", qFltPlanBas.createDt, "%Y-%m-%d")
.eq(LocalDate.now().minusDays(2).toString());
builder.and(dateExpression);
break;
case "-1":
dateExpression =
Expressions.stringTemplate("DATE_FORMAT({0}, {1})", qFltPlanBas.createDt, "%Y-%m-%d")
.eq(LocalDate.now().minusDays(1).toString());
builder.and(dateExpression);
break;
case "0":
dateExpression =
Expressions.stringTemplate("DATE_FORMAT({0}, {1})", qFltPlanBas.createDt, "%Y-%m-%d")
.eq(LocalDate.now().toString());
builder.and(dateExpression);
break;
case "1":
dateExpression =
Expressions.stringTemplate("DATE_FORMAT({0}, {1})", qFltPlanBas.createDt, "%Y-%m-%d")
.eq(LocalDate.now().plusDays(1).toString());
builder.and(dateExpression);
break;
}
return builder;
}
}
Loading…
Cancel
Save