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