Browse Source

비정상상황 권한개입추가

pull/11/head
lkd9125(이경도) 10 months ago
parent
commit
25b59937bd
  1. 14
      pav-server/src/main/java/com/palnet/biz/api/main/statistics/controller/MainStatisticsController.java
  2. 18
      pav-server/src/main/java/com/palnet/biz/api/main/statistics/service/MainStatisticsService.java
  3. 85
      pav-server/src/main/java/com/palnet/biz/jpa/repository/ctr/CtrCntrlWarnLogQueryRepository.java

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

@ -102,7 +102,7 @@ public class MainStatisticsController {
List<FlightStcsValueModel> result = null;
try {
result = service.getWarnStaticStcs();
result = service.getWarnStaticStcs(groupId);
log.warn("result => {}", result);
} catch (Exception e) {
@ -122,19 +122,19 @@ public class MainStatisticsController {
@ApiImplicitParam(name = "cate",value = "비행시간,거리,횟수[TIME]", dataTypeClass = String.class),
@ApiImplicitParam(name = "type",value = "날짜형식[month]", dataTypeClass = String.class)
})
public ResponseEntity<? extends BasicResponse> warnStcs(@RequestParam String cate, String date, @PathVariable String type){
log.warn("cate => {}, date => {}, type => {}", cate, date, type);
public ResponseEntity<? extends BasicResponse> warnStcs(FlightStcsRQ rq, @PathVariable String type){
log.warn("rq => {}",rq);
FlightStcsModel result = new FlightStcsModel();
try {
String[] formatParam = null;
if(date == null) date = "";
formatParam = service.paramCheck(date,type);
if(rq.getDate() == null) rq.setDate("");
formatParam = service.paramCheck(rq.getDate(),type);
List<FlightStcsValueModel> graphData = service.warnStatics(cate, date, formatParam);
List<FlightStcsValueModel> topData = service.warnTopStatics(cate, date, formatParam);
List<FlightStcsValueModel> graphData = service.warnStatics(rq, formatParam);
List<FlightStcsValueModel> topData = service.warnTopStatics(rq, formatParam);
result.setGraphData(graphData);
result.setTopData(topData);

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

@ -236,7 +236,9 @@ public class MainStatisticsService {
* 비행관련 고정 통계, 항상 DB 전체값에서 통계진행할것임
* @return
*/
public List<FlightStcsValueModel> getWarnStaticStcs(){
public List<FlightStcsValueModel> getWarnStaticStcs(String groupId){
boolean authCheck = authCheck(groupId);
// TODO:: 비행경로이탈, 고도이탈, 충돌위험 임시코드
String[] cate = {"PLAN" ,"ALTITUDE", "CRASH"};
@ -245,7 +247,7 @@ public class MainStatisticsService {
List<FlightStcsValueModel> result = new ArrayList<>();
for(int i = 0; i < cate.length; i ++){
FlightStcsValueModel node = ctrCntrlWarnLogQueryRepository.getWarnStaticStcs(cate[i]);
FlightStcsValueModel node = ctrCntrlWarnLogQueryRepository.getWarnStaticStcs(cate[i], authCheck, groupId);
result.add(node);
}
@ -263,9 +265,11 @@ public class MainStatisticsService {
* @param formatParam
* @return
*/
public List<FlightStcsValueModel> warnStatics(String cate, String date, String[] formatParam){
public List<FlightStcsValueModel> warnStatics(FlightStcsRQ rq, String[] formatParam){
boolean authCheck = authCheck(rq.getGroupId());
List<FlightStcsValueModel> resultList = ctrCntrlWarnLogQueryRepository.warnStcs(cate, date, formatParam);
List<FlightStcsValueModel> resultList = ctrCntrlWarnLogQueryRepository.warnStcs(rq.getCate(), rq.getDate(), rq.getGroupId(), authCheck, formatParam);
for(FlightStcsValueModel node : resultList){
if(node.getName() == null || node.getName().equals("")) node.setName(" ");
@ -281,9 +285,11 @@ public class MainStatisticsService {
* @param formatParam
* @return
*/
public List<FlightStcsValueModel> warnTopStatics(String cate, String date, String[] formatParam){
public List<FlightStcsValueModel> warnTopStatics(FlightStcsRQ rq, String[] formatParam){
boolean authCheck = authCheck(rq.getGroupId());
List<FlightStcsValueModel> resultList = ctrCntrlWarnLogQueryRepository.warnTopStcs(cate, date, formatParam);
List<FlightStcsValueModel> resultList = ctrCntrlWarnLogQueryRepository.warnTopStcs(rq.getCate(), rq.getDate(), rq.getGroupId(), authCheck, formatParam);
return resultList;
}

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

@ -6,8 +6,11 @@ import java.util.List;
import org.springframework.stereotype.Repository;
import com.palnet.biz.api.acnt.jwt.utils.JwtTokenUtil;
import com.palnet.biz.api.main.statistics.model.FlightStcsValueModel;
import com.palnet.biz.jpa.entity.QCtrCntrlWarnLog;
import com.palnet.biz.jpa.entity.QFltPlanBas;
import com.palnet.biz.jpa.entity.QFltPlanCtrCntrlRel;
import com.querydsl.core.BooleanBuilder;
import com.querydsl.core.types.ConstantImpl;
import com.querydsl.core.types.Projections;
@ -25,30 +28,40 @@ public class CtrCntrlWarnLogQueryRepository {
private final JPAQueryFactory query;
private final JwtTokenUtil jwtTokenUtil;
/**
* 비정상상황 고정 데이터, 카테고리별 집계[PLAN, ALTITUDE, CRASH]
* @return
*/
public FlightStcsValueModel getWarnStaticStcs(String cate){
public FlightStcsValueModel getWarnStaticStcs(String cate, boolean authCheck, String groupId){
FlightStcsValueModel result = new FlightStcsValueModel();
QCtrCntrlWarnLog bas = QCtrCntrlWarnLog.ctrCntrlWarnLog;
QCtrCntrlWarnLog qCtrCntrlWarnLog = QCtrCntrlWarnLog.ctrCntrlWarnLog;
QFltPlanCtrCntrlRel qFltPlanCtrCntrlRel = QFltPlanCtrCntrlRel.fltPlanCtrCntrlRel;
QFltPlanBas qFltPlanBas = QFltPlanBas.fltPlanBas;
BooleanBuilder builder = new BooleanBuilder();
builder.and(bas.warnType.eq(cate));
builder.and(qCtrCntrlWarnLog.warnType.eq(cate));
if(groupId != null && !(groupId.equals(""))) builder.and(qFltPlanBas.groupId.eq(groupId));
if(authCheck) builder.and(qFltPlanBas.cstmrSno.eq(jwtTokenUtil.getCstmrSnoByToken()));
List<FlightStcsValueModel> queryResult = query
.select(
Projections.bean(FlightStcsValueModel.class,
bas.idntfNum.as("name"), // 결과 객체의 프로퍼티 이름을 지정
bas.cntrlId.countDistinct().as("value") // 결과 객체의 프로퍼티 이름을 지정
qCtrCntrlWarnLog.idntfNum.as("name"), // 결과 객체의 프로퍼티 이름을 지정
qCtrCntrlWarnLog.cntrlId.countDistinct().as("value") // 결과 객체의 프로퍼티 이름을 지정
)
)
.from(bas)
.from(qCtrCntrlWarnLog)
.leftJoin(qFltPlanCtrCntrlRel)
.on(qFltPlanCtrCntrlRel.cntrlId.eq(qCtrCntrlWarnLog.cntrlId))
.leftJoin(qFltPlanBas)
.on(qFltPlanCtrCntrlRel.planSno.eq(qFltPlanBas.planSno))
.where(builder)
.groupBy(bas.idntfNum)
.orderBy(bas.cntrlId.countDistinct().desc())
.groupBy(qCtrCntrlWarnLog.idntfNum)
.orderBy(qCtrCntrlWarnLog.cntrlId.countDistinct().desc())
.limit(1)
.fetch();
@ -57,9 +70,9 @@ public class CtrCntrlWarnLogQueryRepository {
String idntfNum = result.getName();
result.setYear(getWarnYear(idntfNum, cate));
result.setMonth(getWarnMonth(idntfNum, cate));
result.setDay(getWarnDay(idntfNum, cate));
result.setYear(getWarnYear(idntfNum, cate, authCheck, groupId));
result.setMonth(getWarnMonth(idntfNum, cate, authCheck, groupId));
result.setDay(getWarnDay(idntfNum, cate, authCheck, groupId));
} else {
@ -76,13 +89,17 @@ public class CtrCntrlWarnLogQueryRepository {
}
private String getWarnDay(String idntfNum, String cate){
private String getWarnDay(String idntfNum, String cate, boolean authCheck, String groupId){
QCtrCntrlWarnLog bas = QCtrCntrlWarnLog.ctrCntrlWarnLog;
QFltPlanCtrCntrlRel qFltPlanCtrCntrlRel = QFltPlanCtrCntrlRel.fltPlanCtrCntrlRel;
QFltPlanBas qFltPlanBas = QFltPlanBas.fltPlanBas;
BooleanBuilder builder = new BooleanBuilder();
builder.and(bas.idntfNum.eq(idntfNum));
builder.and(bas.createDt.eq(LocalDate.now().atStartOfDay().atZone(ZoneId.of("Asia/Seoul")).toInstant()));
builder.and(bas.warnType.eq(cate));
if(groupId != null && !(groupId.equals(""))) builder.and(qFltPlanBas.groupId.eq(groupId));
if(authCheck) builder.and(qFltPlanBas.cstmrSno.eq(jwtTokenUtil.getCstmrSnoByToken()));
return query
.select(
@ -91,18 +108,26 @@ public class CtrCntrlWarnLogQueryRepository {
)
)
.from(bas)
.leftJoin(qFltPlanCtrCntrlRel)
.on(qFltPlanCtrCntrlRel.cntrlId.eq(bas.cntrlId))
.leftJoin(qFltPlanBas)
.on(qFltPlanCtrCntrlRel.planSno.eq(qFltPlanBas.planSno))
.where(builder)
.fetchOne();
}
private String getWarnMonth(String idntfNum, String cate){
private String getWarnMonth(String idntfNum, String cate, boolean authCheck, String groupId){
QCtrCntrlWarnLog bas = QCtrCntrlWarnLog.ctrCntrlWarnLog;
QFltPlanCtrCntrlRel qFltPlanCtrCntrlRel = QFltPlanCtrCntrlRel.fltPlanCtrCntrlRel;
QFltPlanBas qFltPlanBas = QFltPlanBas.fltPlanBas;
BooleanBuilder builder = new BooleanBuilder();
builder.and(bas.idntfNum.eq(idntfNum));
builder.and(bas.warnType.eq(cate));
builder.and(bas.createDt.goe(LocalDate.now().minusMonths(1).atStartOfDay().atZone(ZoneId.of("Asia/Seoul")).toInstant()));
builder.and(bas.createDt.loe(LocalDate.now().atStartOfDay().atZone(ZoneId.of("Asia/Seoul")).toInstant()));
if(groupId != null && !(groupId.equals(""))) builder.and(qFltPlanBas.groupId.eq(groupId));
if(authCheck) builder.and(qFltPlanBas.cstmrSno.eq(jwtTokenUtil.getCstmrSnoByToken()));
return query
.select(
@ -111,18 +136,26 @@ public class CtrCntrlWarnLogQueryRepository {
)
)
.from(bas)
.leftJoin(qFltPlanCtrCntrlRel)
.on(qFltPlanCtrCntrlRel.cntrlId.eq(bas.cntrlId))
.leftJoin(qFltPlanBas)
.on(qFltPlanCtrCntrlRel.planSno.eq(qFltPlanBas.planSno))
.where(builder)
.fetchOne();
}
private String getWarnYear(String idntfNum, String cate){
private String getWarnYear(String idntfNum, String cate, boolean authCheck, String groupId){
QCtrCntrlWarnLog bas = QCtrCntrlWarnLog.ctrCntrlWarnLog;
QFltPlanCtrCntrlRel qFltPlanCtrCntrlRel = QFltPlanCtrCntrlRel.fltPlanCtrCntrlRel;
QFltPlanBas qFltPlanBas = QFltPlanBas.fltPlanBas;
BooleanBuilder builder = new BooleanBuilder();
builder.and(bas.idntfNum.eq(idntfNum));
builder.and(bas.warnType.eq(cate));
builder.and(bas.createDt.goe(LocalDate.now().minusYears(1).atStartOfDay().atZone(ZoneId.of("Asia/Seoul")).toInstant()));
builder.and(bas.createDt.loe(LocalDate.now().atStartOfDay().atZone(ZoneId.of("Asia/Seoul")).toInstant()));
if(groupId != null && !(groupId.equals(""))) builder.and(qFltPlanBas.groupId.eq(groupId));
if(authCheck) builder.and(qFltPlanBas.cstmrSno.eq(jwtTokenUtil.getCstmrSnoByToken()));
return query
.select(
@ -131,6 +164,10 @@ public class CtrCntrlWarnLogQueryRepository {
)
)
.from(bas)
.leftJoin(qFltPlanCtrCntrlRel)
.on(qFltPlanCtrCntrlRel.cntrlId.eq(bas.cntrlId))
.leftJoin(qFltPlanBas)
.on(qFltPlanCtrCntrlRel.planSno.eq(qFltPlanBas.planSno))
.where(builder)
.fetchOne();
}
@ -143,9 +180,11 @@ public class CtrCntrlWarnLogQueryRepository {
* @param formatParam
* @return
*/
public List<FlightStcsValueModel> warnStcs(String cate, String date, String[] formatParam){
public List<FlightStcsValueModel> warnStcs(String cate, String date, String groupId, boolean authCheck, String[] formatParam){
// QCtrCntrlBas bas = QCtrCntrlBas.ctrCntrlBas;
QCtrCntrlWarnLog bas = QCtrCntrlWarnLog.ctrCntrlWarnLog;
QFltPlanCtrCntrlRel qFltPlanCtrCntrlRel = QFltPlanCtrCntrlRel.fltPlanCtrCntrlRel;
QFltPlanBas qFltPlanBas = QFltPlanBas.fltPlanBas;
StringTemplate formattedDate = Expressions.stringTemplate(
"DATE_FORMAT({0}, {1})"
@ -160,6 +199,8 @@ public class CtrCntrlWarnLogQueryRepository {
BooleanBuilder builder = new BooleanBuilder();
builder.and(bas.warnType.eq(cate));
if(date != null && date.length() > 0) builder.and(formattedDate.eq(date));
if(groupId != null && !(groupId.equals(""))) builder.and(qFltPlanBas.groupId.eq(groupId));
if(authCheck) builder.and(qFltPlanBas.cstmrSno.eq(jwtTokenUtil.getCstmrSnoByToken()));
List<FlightStcsValueModel> result = query
.select(
@ -170,6 +211,10 @@ public class CtrCntrlWarnLogQueryRepository {
)
)
.from(bas)
.leftJoin(qFltPlanCtrCntrlRel)
.on(qFltPlanCtrCntrlRel.cntrlId.eq(bas.cntrlId))
.leftJoin(qFltPlanBas)
.on(qFltPlanCtrCntrlRel.planSno.eq(qFltPlanBas.planSno))
.where(builder)
.groupBy(formattedDate2)
.fetch();
@ -193,9 +238,11 @@ public class CtrCntrlWarnLogQueryRepository {
* @param formatParam
* @return
*/
public List<FlightStcsValueModel> warnTopStcs(String cate, String date, String[] formatParam){
public List<FlightStcsValueModel> warnTopStcs(String cate, String date, String groupId, boolean authCheck, String[] formatParam){
QCtrCntrlWarnLog bas = QCtrCntrlWarnLog.ctrCntrlWarnLog;
QFltPlanCtrCntrlRel qFltPlanCtrCntrlRel = QFltPlanCtrCntrlRel.fltPlanCtrCntrlRel;
QFltPlanBas qFltPlanBas = QFltPlanBas.fltPlanBas;
StringTemplate formattedDate = Expressions.stringTemplate(
"DATE_FORMAT({0}, {1})"
@ -205,6 +252,8 @@ public class CtrCntrlWarnLogQueryRepository {
BooleanBuilder builder = new BooleanBuilder();
builder.and(bas.warnType.eq(cate));
if(date != null && date.length() > 0) builder.and(formattedDate.eq(date));
if(groupId != null && !(groupId.equals(""))) builder.and(qFltPlanBas.groupId.eq(groupId));
if(authCheck) builder.and(qFltPlanBas.cstmrSno.eq(jwtTokenUtil.getCstmrSnoByToken()));
List<FlightStcsValueModel> result = query
.select(
@ -215,6 +264,10 @@ public class CtrCntrlWarnLogQueryRepository {
)
.from(bas)
.where(builder)
.leftJoin(qFltPlanCtrCntrlRel)
.on(qFltPlanCtrCntrlRel.cntrlId.eq(bas.cntrlId))
.leftJoin(qFltPlanBas)
.on(qFltPlanCtrCntrlRel.planSno.eq(qFltPlanBas.planSno))
.groupBy(bas.idntfNum)
.orderBy(bas.cntrlId.countDistinct().desc())
.limit(5)

Loading…
Cancel
Save