Browse Source

Merge commit '86e2daeb494da96aed6171d406b65a894fa605d5' into feature/current/flight-plan

pull/13/head
lkd9125(이경도) 10 months ago
parent
commit
cbc8f3f502
  1. 32
      pav-server/src/main/java/com/palnet/biz/api/main/dash/controller/MainDashController.java
  2. 4
      pav-server/src/main/java/com/palnet/biz/api/main/dash/model/MainDashFlightListModel.java
  3. 60
      pav-server/src/main/java/com/palnet/biz/api/main/dash/service/MainDashService.java
  4. 73
      pav-server/src/main/java/com/palnet/biz/jpa/repository/ctr/CtrCntrlWarnLogQueryRepository.java
  5. 4
      pav-server/src/main/java/com/palnet/biz/jpa/repository/pty/PtyCstmrQueryRepository.java

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

@ -1,6 +1,5 @@
package com.palnet.biz.api.main.dash.controller; package com.palnet.biz.api.main.dash.controller;
import java.time.LocalDate;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@ -24,7 +23,6 @@ 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.model.MainDashStcsModel;
import com.palnet.biz.api.main.dash.service.MainDashService; import com.palnet.biz.api.main.dash.service.MainDashService;
import com.palnet.comn.code.RSErrorCode; import com.palnet.comn.code.RSErrorCode;
import com.querydsl.core.Tuple;
import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiImplicitParams;
@ -308,12 +306,12 @@ public class MainDashController {
@GetMapping(value = "/stcs/dron-flight/") @GetMapping(value = "/stcs/dron-flight/")
@ApiOperation(value = "드론 비행 현황") @ApiOperation(value = "드론 비행 현황")
@Tag(name = "메인화면 컨트롤러", description = "메인화면 관련 API") @Tag(name = "메인화면 컨트롤러", description = "메인화면 관련 API")
public ResponseEntity<? extends BasicResponse> dronFlightStcs(@RequestParam String groupId){ public ResponseEntity<? extends BasicResponse> dronFlightStcs(){
Map<String, String> result = null; Map<String, String> result = null;
try { try {
result = service.mainDashDronFlightStcs(groupId); result = service.mainDashDronFlightStcs();
}catch (Exception e) { }catch (Exception e) {
log.error("IGNORE : {}", e); log.error("IGNORE : {}", e);
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR) return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
@ -341,17 +339,33 @@ public class MainDashController {
return ResponseEntity.ok().body(new SuccessResponse<List<MainDashFlightListModel>>(result)); return ResponseEntity.ok().body(new SuccessResponse<List<MainDashFlightListModel>>(result));
} }
@GetMapping("/current/flight-warn")
public ResponseEntity<? extends BasicResponse> currentFlightWarn(@RequestParam(required = false) String groupId){
List<MainCurrentStcsModel> result = new ArrayList<>();
try {
result = service.currentFlightWarn(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));
}
@GetMapping("/current/flight-plan") @GetMapping("/current/flight-plan")
@ApiOperation(value = "일일 비행통계") @ApiOperation(value = "김포공항, 비정상상황 비행 통계")
@Tag(name = "메인화면 컨트롤러", description = "메인화면 관련 API") @Tag(name = "메인화면 컨트롤러", description = "메인화면 관련 API")
@ApiImplicitParams({ @ApiImplicitParams({
@ApiImplicitParam(name = "groupId",value = "그룹아이디", dataTypeClass = String.class) @ApiImplicitParam(name = "date",value = "날짜", dataTypeClass = String.class),
@ApiImplicitParam(name = "type",value = "날짜형식", dataTypeClass = String.class)
}) })
public ResponseEntity<? extends BasicResponse> currentFlightPlan(@RequestParam(required = false) String groupId){ public ResponseEntity<? extends BasicResponse> currentFlightPlan(@RequestParam(required = false) String groupId){
log.warn("groupId => {}", groupId);
log.warn("groupId => {}", groupId);
List<MainCurrentStcsModel> result = new ArrayList<>(); List<MainCurrentStcsModel> result = new ArrayList<>();
try { try {
result = service.currentFlightPlan(groupId); result = service.currentFlightPlan(groupId);
} catch (Exception e){ } catch (Exception e){
@ -360,6 +374,8 @@ public class MainDashController {
.body(new ErrorResponse("Server Error", "-1")); .body(new ErrorResponse("Server Error", "-1"));
} }
return ResponseEntity.ok().body(new SuccessResponse<List<MainCurrentStcsModel>>(result)); return ResponseEntity.ok().body(new SuccessResponse<List<MainCurrentStcsModel>>(result));
} }
} }

4
pav-server/src/main/java/com/palnet/biz/api/main/dash/model/MainDashFlightListModel.java

@ -13,9 +13,9 @@ public class MainDashFlightListModel {
private String idntfNum; private String idntfNum;
private Instant schFltStDt; private Instant cntrlStDt;
private Instant schFltEndDt; private Instant cntrlEndDt;
private Object totalFlightTime; private Object totalFlightTime;

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

@ -1,7 +1,6 @@
package com.palnet.biz.api.main.dash.service; package com.palnet.biz.api.main.dash.service;
import java.util.*; import java.util.*;
import java.util.stream.Collectors;
import com.palnet.biz.api.acnt.jwt.model.JwtGroupModel; import com.palnet.biz.api.acnt.jwt.model.JwtGroupModel;
import com.palnet.biz.api.acnt.jwt.utils.JwtTokenUtil; import com.palnet.biz.api.acnt.jwt.utils.JwtTokenUtil;
@ -23,7 +22,10 @@ import org.springframework.stereotype.Service;
import com.palnet.biz.api.main.dash.model.MainDashFlightListModel; 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.MainDashListModel;
import com.palnet.biz.api.main.dash.model.MainDashStcsModel; 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; import com.palnet.biz.jpa.repository.ctr.CtrCntrlQueryRepository;
import com.palnet.biz.jpa.repository.ctr.CtrCntrlWarnLogQueryRepository;
import com.palnet.biz.jpa.repository.flt.FltPlanArcrftRepository; import com.palnet.biz.jpa.repository.flt.FltPlanArcrftRepository;
import com.palnet.biz.jpa.repository.flt.FltPlanQueryRepository; import com.palnet.biz.jpa.repository.flt.FltPlanQueryRepository;
@ -41,6 +43,9 @@ public class MainDashService {
@Autowired @Autowired
private FltPlanQueryRepository fltPlanQueryRepository; private FltPlanQueryRepository fltPlanQueryRepository;
@Autowired
private CtrCntrlWarnLogQueryRepository ctrCntrlWarnLogQueryRepository;
@Autowired @Autowired
private CtrCntrlQueryRepository query; private CtrCntrlQueryRepository query;
@ -52,8 +57,7 @@ public class MainDashService {
private FltPlanArcrftRepository fltPlanArcrftRepository; private FltPlanArcrftRepository fltPlanArcrftRepository;
@Autowired @Autowired
private JwtTokenUtil token; private JwtTokenUtil token;
/** /**
* 일별 비행횟수 통계 * 일별 비행횟수 통계
@ -148,7 +152,7 @@ public class MainDashService {
return resultList; return resultList;
} }
public Map<String, String> mainDashDronFlightStcs(String groupId){ public Map<String, String> mainDashDronFlightStcs(){
String userAuth = token.getUserAuthByToken(); String userAuth = token.getUserAuthByToken();
List<JwtGroupModel> userGroupList = token.getGroupAuthByToken(); List<JwtGroupModel> userGroupList = token.getGroupAuthByToken();
@ -325,4 +329,52 @@ public class MainDashService {
public List<MainCurrentStcsModel> currentFlightWarn(String groupId){
final int sumCount = 3; // 3번은 합계
boolean authCheck = mainStatisticsService.authCheck(groupId);
String[] dateCate = {"-2", "-1", "0", "1"};
List<MainCurrentStcsModel> result = new ArrayList<>();
for(String cate : dateCate){
List<CtrCntrlWarnLog> cntrlWarnLogs = ctrCntrlWarnLogQueryRepository.currentStcs(groupId, authCheck, cate);
int count = cntrlWarnLogs.size(); //
int plan = (int)cntrlWarnLogs.stream().filter(value -> value.getWarnType().equals(WarnType.PLAN.getValue())).count();
int altitude = (int)cntrlWarnLogs.stream().filter(value -> value.getWarnType().equals(WarnType.ALTITUDE.getValue())).count();
int crash = (int)cntrlWarnLogs.stream().filter(value -> value.getWarnType().equals(WarnType.CRASH.getValue())).count();
List<Integer> stcsValues = Arrays.asList(plan, altitude, crash, 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;
}
} }

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

@ -8,12 +8,15 @@ import org.springframework.stereotype.Repository;
import com.palnet.biz.api.acnt.jwt.utils.JwtTokenUtil; import com.palnet.biz.api.acnt.jwt.utils.JwtTokenUtil;
import com.palnet.biz.api.main.statistics.model.FlightStcsValueModel; import com.palnet.biz.api.main.statistics.model.FlightStcsValueModel;
import com.palnet.biz.jpa.entity.CtrCntrlWarnLog;
import com.palnet.biz.jpa.entity.FltPlanBas;
import com.palnet.biz.jpa.entity.QCtrCntrlWarnLog; import com.palnet.biz.jpa.entity.QCtrCntrlWarnLog;
import com.palnet.biz.jpa.entity.QFltPlanBas; import com.palnet.biz.jpa.entity.QFltPlanBas;
import com.palnet.biz.jpa.entity.QFltPlanCtrCntrlRel; import com.palnet.biz.jpa.entity.QFltPlanCtrCntrlRel;
import com.querydsl.core.BooleanBuilder; import com.querydsl.core.BooleanBuilder;
import com.querydsl.core.types.ConstantImpl; import com.querydsl.core.types.ConstantImpl;
import com.querydsl.core.types.Projections; import com.querydsl.core.types.Projections;
import com.querydsl.core.types.dsl.BooleanExpression;
import com.querydsl.core.types.dsl.Expressions; import com.querydsl.core.types.dsl.Expressions;
import com.querydsl.core.types.dsl.StringTemplate; import com.querydsl.core.types.dsl.StringTemplate;
import com.querydsl.jpa.impl.JPAQueryFactory; import com.querydsl.jpa.impl.JPAQueryFactory;
@ -284,4 +287,74 @@ public class CtrCntrlWarnLogQueryRepository {
return result; return result;
} }
public List<CtrCntrlWarnLog> currentStcs(String groupId, boolean authCheck, String cate){
QFltPlanBas qFltPlanBas = QFltPlanBas.fltPlanBas;
QFltPlanCtrCntrlRel qFltPlanCtrCntrlRel = QFltPlanCtrCntrlRel.fltPlanCtrCntrlRel;
QCtrCntrlWarnLog qCtrCntrlWarnLog = QCtrCntrlWarnLog.ctrCntrlWarnLog;
BooleanBuilder builder = getCurrentBooleanBuilder(groupId, authCheck, cate, qFltPlanBas, qCtrCntrlWarnLog);
List<CtrCntrlWarnLog> stcsValues = query
.select(
Projections.bean(
CtrCntrlWarnLog.class,
qCtrCntrlWarnLog.warnType
)
)
.from(qCtrCntrlWarnLog)
.leftJoin(qFltPlanCtrCntrlRel)
.on(qFltPlanCtrCntrlRel.cntrlId.eq(qCtrCntrlWarnLog.cntrlId))
.leftJoin(qFltPlanBas)
.on(qFltPlanCtrCntrlRel.planSno.eq(qFltPlanBas.planSno))
.where(builder)
.groupBy(qCtrCntrlWarnLog.cntrlId)
.fetch();
return stcsValues;
}
private BooleanBuilder getCurrentBooleanBuilder(String groupId, boolean authCheck, String cate, QFltPlanBas qFltPlanBas, QCtrCntrlWarnLog qCtrCntrlWarnLog){
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})", qCtrCntrlWarnLog.createDt, dateFormat)
.eq(LocalDate.now().minusDays(2).toString());
builder.and(dateExpression);
break;
case "-1":
dateExpression =
Expressions.stringTemplate("DATE_FORMAT({0}, {1})", qCtrCntrlWarnLog.createDt, dateFormat)
.eq(LocalDate.now().minusDays(1).toString());
builder.and(dateExpression);
break;
case "0":
dateExpression =
Expressions.stringTemplate("DATE_FORMAT({0}, {1})", qCtrCntrlWarnLog.createDt, dateFormat)
.eq(LocalDate.now().toString());
builder.and(dateExpression);
break;
case "1":
dateExpression =
Expressions.stringTemplate("DATE_FORMAT({0}, {1})", qCtrCntrlWarnLog.createDt, dateFormat)
.eq(LocalDate.now().plusDays(1).toString());
builder.and(dateExpression);
break;
}
return builder;
}
} }

4
pav-server/src/main/java/com/palnet/biz/jpa/repository/pty/PtyCstmrQueryRepository.java

@ -164,7 +164,6 @@ public class PtyCstmrQueryRepository {
model.setUserId(entity.getUserId()); model.setUserId(entity.getUserId());
model.setCstmrSno(entity.getCstmrSno()); model.setCstmrSno(entity.getCstmrSno());
model.setCstmrStatusCd(entity.getCstmrStatusCd()); model.setCstmrStatusCd(entity.getCstmrStatusCd());
model.setCptAuthCode(entity.getCptAuthCode());
model.setUserPswd(entity.getUserPswd()); model.setUserPswd(entity.getUserPswd());
if (pcgEntityList != null && !pcgEntityList.isEmpty()) { if (pcgEntityList != null && !pcgEntityList.isEmpty()) {
List<JwtGroupModel> groupModelList = new ArrayList<>(); List<JwtGroupModel> groupModelList = new ArrayList<>();
@ -278,8 +277,7 @@ public class PtyCstmrQueryRepository {
dtl.email, dtl.email,
dtl.hpno, dtl.hpno,
dtl.updateDt, dtl.updateDt,
bas.userId, bas.userId
bas.cptAuthCode
)) ))
.from(bas) .from(bas)
.leftJoin(dtl) .leftJoin(dtl)

Loading…
Cancel
Save