Browse Source

비행실적 권한 개입 추가

pull/11/head
lkd9125(이경도) 10 months ago
parent
commit
53452ebcce
  1. 20
      pav-server/src/main/java/com/palnet/biz/api/main/statistics/controller/MainStatisticsController.java
  2. 58
      pav-server/src/main/java/com/palnet/biz/api/main/statistics/service/MainStatisticsService.java
  3. 202
      pav-server/src/main/java/com/palnet/biz/jpa/repository/ctr/CtrCntrlQueryRepository.java
  4. 149
      pav-server/src/main/java/com/palnet/biz/jpa/repository/flt/FltPlanQueryRepository.java

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

@ -97,7 +97,7 @@ public class MainStatisticsController {
@GetMapping("/warn-static")
@ApiOperation(value = "비정상 상황 상단 데이터[DB전체 통계데이터]")
@Tag(name = "통계 컨트롤러", description = "통계 관련 API")
public ResponseEntity<? extends BasicResponse> warnStcsStatic(){
public ResponseEntity<? extends BasicResponse> warnStcsStatic(String groupId){
List<FlightStcsValueModel> result = null;
@ -152,12 +152,14 @@ public class MainStatisticsController {
@GetMapping("/flight/result-static")
@ApiOperation(value = "비행실적 상단데이터 통계 [DB전체 통계데이터]")
@Tag(name = "통계 컨트롤러", description = "통계 관련 API")
public ResponseEntity<? extends BasicResponse> fltResultStcs(){
public ResponseEntity<? extends BasicResponse> fltResultStcs(String groupId){
log.warn("Group => {}", groupId);
List<FlightStcsValueModel> result = null;
try {
result = service.getFltResultStaticStcs();
result = service.getFltResultStaticStcs(groupId);
log.warn("result => {}", result);
} catch (Exception e) {
@ -177,19 +179,19 @@ public class MainStatisticsController {
@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 groupNm, String date, @PathVariable String type){
log.warn("cate => {}, group => {}, date => {}, type => {}", cate, groupNm, date, type);
public ResponseEntity<? extends BasicResponse> fltResultStcs(FlightStcsRQ rq, @PathVariable String type){
log.warn("cate => {}, group => {}, date => {}, type => {}", rq.getCate(), rq.getGroupId(), rq.getDate(), type);
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.getFltResultStcs(cate, date, formatParam);
List<FlightStcsValueModel> topData = service.getFltTopResultStcs(cate, date, formatParam);
List<FlightStcsValueModel> graphData = service.getFltResultStcs(rq, formatParam);
List<FlightStcsValueModel> topData = service.getFltTopResultStcs(rq, formatParam);
result.setGraphData(graphData);
result.setTopData(topData);

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

@ -113,6 +113,8 @@ public class MainStatisticsService {
*/
private Boolean authCheck(String groupId){
if(groupId == null || groupId.equals("")) return false;
BasGroupUserListModel param = new BasGroupUserListModel();
param.setCstmrSno(jwtTokenUtil.getCstmrSnoByToken());
param.setGroupId(groupId);
@ -200,19 +202,22 @@ public class MainStatisticsService {
* @return
*/
public List<FlightStcsValueModel> fltTopStatics(FlightStcsRQ rq, String[] formatParam){
boolean authCheck = authCheck(rq.getGroupId());
List<FlightStcsValueModel> resultList = new ArrayList<>();
switch (rq.getCate()) {
case "TIME":
resultList = cntrlQueryRepository.fltTopTimeStcs(rq.getDate(), formatParam);
resultList = cntrlQueryRepository.fltTopTimeStcs(rq.getDate(), rq.getGroupId(), authCheck, formatParam);
break;
case "DISTANCE":
resultList = cntrlQueryRepository.fltTopDistanceStcs(rq.getDate(), formatParam);
resultList = cntrlQueryRepository.fltTopDistanceStcs(rq.getDate(), rq.getGroupId(), authCheck, formatParam);
break;
case "FLT_COUNT":
resultList = cntrlQueryRepository.fltTopCountStcs(rq.getDate(), formatParam);
resultList = cntrlQueryRepository.fltTopCountStcs(rq.getDate(), rq.getGroupId(), authCheck, formatParam);
break;
default :
@ -287,37 +292,49 @@ public class MainStatisticsService {
* 비행실적, 비행계획서 기용, 비행승인이 많이 기체 데이터, 상단 고정 데이터
* @return
*/
public List<FlightStcsValueModel> getFltResultStaticStcs(){
public List<FlightStcsValueModel> getFltResultStaticStcs(String groupId){
FlightStcsValueModel fltResult = fltPlanQueryRepository.getFltResultStaticStcs();
FlightStcsValueModel fltPlan = fltPlanQueryRepository.getFltPlanStaticStcs();
FlightStcsValueModel fltPlanAprvn = fltPlanQueryRepository.getFltPlanAprvnStaticStcs();
// 권한이 유저권한, 그룹권한 모두 user면 true , user가 하나라도 아닐 경우 모두 false;
boolean authCheck = authCheck(groupId);
FlightStcsValueModel fltResult = fltPlanQueryRepository.getFltResultStaticStcs(authCheck, groupId);
FlightStcsValueModel fltPlan = fltPlanQueryRepository.getFltPlanStaticStcs(authCheck, groupId);
FlightStcsValueModel fltPlanAprvn = fltPlanQueryRepository.getFltPlanAprvnStaticStcs(authCheck, groupId);
List<FlightStcsValueModel> result = Arrays.asList(fltResult,fltPlan, fltPlanAprvn);
return result;
}
public List<FlightStcsValueModel> getFltResultStcs(String cate, String date, String[] formatParam){
/**
* 비행실적 날짜데이터
* @param rq
* @param formatParam
* @return
*/
public List<FlightStcsValueModel> getFltResultStcs(FlightStcsRQ rq, String[] formatParam){
List<FlightStcsValueModel> resultList = null;
switch (cate) {
// 권한이 유저권한, 그룹권한 모두 user면 true , user가 하나라도 아닐 경우 모두 false;
boolean authCheck = authCheck(rq.getGroupId());
switch (rq.getCate()) {
case "FLT_RESULT":
resultList = fltPlanQueryRepository.fltResultStcs(date, formatParam);
resultList = fltPlanQueryRepository.fltResultStcs(rq.getDate(), rq.getGroupId(), authCheck, formatParam);
break;
case "FLT_PLAN":
resultList = fltPlanQueryRepository.fltPlanStcs(date, formatParam);
resultList = fltPlanQueryRepository.fltPlanStcs(rq.getDate(), rq.getGroupId(), authCheck, formatParam);
break;
case "FLT_PLAN_APRVN":
resultList = fltPlanQueryRepository.fltPlanAprvnStcs(date, formatParam);
resultList = fltPlanQueryRepository.fltPlanAprvnStcs(rq.getDate(), rq.getGroupId(), authCheck, formatParam);
break;
default :
throw new CustomException(ErrorCode.NON_VALID_PARAMETER, cate, date);
throw new CustomException(ErrorCode.NON_VALID_PARAMETER, rq.getCate(), rq.getDate());
}
for(FlightStcsValueModel node : resultList){
@ -327,26 +344,29 @@ public class MainStatisticsService {
return resultList;
}
public List<FlightStcsValueModel> getFltTopResultStcs(String cate, String date, String[] formatParam){
public List<FlightStcsValueModel> getFltTopResultStcs(FlightStcsRQ rq, String[] formatParam){
List<FlightStcsValueModel> resultList = null;
switch (cate) {
// 권한이 유저권한, 그룹권한 모두 user면 true , user가 하나라도 아닐 경우 모두 false;
boolean authCheck = authCheck(rq.getGroupId());
switch (rq.getCate()) {
case "FLT_RESULT":
resultList = fltPlanQueryRepository.fltTopResultStcs(date, formatParam);
resultList = fltPlanQueryRepository.fltTopResultStcs(rq.getDate(), rq.getGroupId(), authCheck, formatParam);
break;
case "FLT_PLAN":
resultList = fltPlanQueryRepository.fltTopPlanStcs(date, formatParam);
resultList = fltPlanQueryRepository.fltTopPlanStcs(rq.getDate(), rq.getGroupId(), authCheck, formatParam);
break;
case "FLT_PLAN_APRVN":
resultList = fltPlanQueryRepository.fltTopPlanAprvnStcs(date, formatParam);
resultList = fltPlanQueryRepository.fltTopPlanAprvnStcs(rq.getDate(), rq.getGroupId(), authCheck, formatParam);
break;
default :
throw new CustomException(ErrorCode.NON_VALID_PARAMETER, cate, date);
throw new CustomException(ErrorCode.NON_VALID_PARAMETER, rq.getCate(), rq.getDate());
}
for(FlightStcsValueModel node : resultList){

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

@ -1839,7 +1839,7 @@ public List<AnlsHstryDetailModel> listCntrlHstry(String id){
QFltPlanBas qFltPlanBas = QFltPlanBas.fltPlanBas;
BooleanBuilder builder = new BooleanBuilder();
if(groupId != null && groupId.equals("")) builder.and(qFltPlanBas.groupId.eq(groupId));
if(groupId != null && !(groupId.equals(""))) builder.and(qFltPlanBas.groupId.eq(groupId));
if(authCheck) builder.and(qFltPlanBas.cstmrSno.eq(jwtTokenUtil.getCstmrSnoByToken()));
List<FlightStcsValueModel> queryResult = query
@ -1868,11 +1868,9 @@ public List<AnlsHstryDetailModel> listCntrlHstry(String id){
String idntfNum = result.getName();
result.setDay(getFltTimeDay(idntfNum));
result.setYear(getFltTimeYear(idntfNum));
result.setMonth(getFltTimeMonth(idntfNum));
log.warn("a => {}", result);
result.setDay(getFltTimeDay(idntfNum, authCheck, groupId));
result.setYear(getFltTimeYear(idntfNum, authCheck, groupId));
result.setMonth(getFltTimeMonth(idntfNum, authCheck, groupId));
} else {
FlightStcsValueModel node = new FlightStcsValueModel();
@ -1888,12 +1886,16 @@ public List<AnlsHstryDetailModel> listCntrlHstry(String id){
return result;
}
private Long getFltTimeDay(String idntfNum){
private Long getFltTimeDay(String idntfNum, boolean authCheck, String groupId){
QCtrCntrlBas qCtrCntrlBas = QCtrCntrlBas.ctrCntrlBas;
QFltPlanCtrCntrlRel qFltPlanCtrCntrlRel = QFltPlanCtrCntrlRel.fltPlanCtrCntrlRel;
QFltPlanBas qFltPlanBas = QFltPlanBas.fltPlanBas;
BooleanBuilder builder = new BooleanBuilder();
builder.and(qCtrCntrlBas.idntfNum.eq(idntfNum));
builder.and(qCtrCntrlBas.createDt.eq(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 Long.parseLong(query
.select(
@ -1904,17 +1906,25 @@ public List<AnlsHstryDetailModel> listCntrlHstry(String id){
) // 결과 객체의 프로퍼티 이름을 지정
)
.from(qCtrCntrlBas)
.leftJoin(qFltPlanCtrCntrlRel)
.on(qCtrCntrlBas.cntrlId.eq(qFltPlanCtrCntrlRel.cntrlId))
.leftJoin(qFltPlanBas)
.on(qFltPlanCtrCntrlRel.planSno.eq(qFltPlanBas.planSno))
.where(builder)
.fetchOne());
}
private Long getFltTimeMonth(String idntfNum){
private Long getFltTimeMonth(String idntfNum, boolean authCheck, String groupId){
QCtrCntrlBas qCtrCntrlBas = QCtrCntrlBas.ctrCntrlBas;
QFltPlanCtrCntrlRel qFltPlanCtrCntrlRel = QFltPlanCtrCntrlRel.fltPlanCtrCntrlRel;
QFltPlanBas qFltPlanBas = QFltPlanBas.fltPlanBas;
BooleanBuilder builder = new BooleanBuilder();
builder.and(qCtrCntrlBas.idntfNum.eq(idntfNum));
builder.and(qCtrCntrlBas.createDt.goe(LocalDate.now().minusMonths(1).atStartOfDay().atZone(ZoneId.of("Asia/Seoul")).toInstant()));
builder.and(qCtrCntrlBas.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 Long.parseLong(query
.select(
@ -1925,17 +1935,25 @@ public List<AnlsHstryDetailModel> listCntrlHstry(String id){
) // 결과 객체의 프로퍼티 이름을 지정
)
.from(qCtrCntrlBas)
.leftJoin(qFltPlanCtrCntrlRel)
.on(qCtrCntrlBas.cntrlId.eq(qFltPlanCtrCntrlRel.cntrlId))
.leftJoin(qFltPlanBas)
.on(qFltPlanCtrCntrlRel.planSno.eq(qFltPlanBas.planSno))
.where(builder)
.fetchOne());
}
private Long getFltTimeYear(String idntfNum){
private Long getFltTimeYear(String idntfNum, boolean authCheck, String groupId){
QCtrCntrlBas qCtrCntrlBas = QCtrCntrlBas.ctrCntrlBas;
QFltPlanCtrCntrlRel qFltPlanCtrCntrlRel = QFltPlanCtrCntrlRel.fltPlanCtrCntrlRel;
QFltPlanBas qFltPlanBas = QFltPlanBas.fltPlanBas;
BooleanBuilder builder = new BooleanBuilder();
builder.and(qCtrCntrlBas.idntfNum.eq(idntfNum));
builder.and(qCtrCntrlBas.createDt.goe(LocalDate.now().minusYears(1).atStartOfDay().atZone(ZoneId.of("Asia/Seoul")).toInstant()));
builder.and(qCtrCntrlBas.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 Long.parseLong(query
.select(
@ -1946,6 +1964,10 @@ public List<AnlsHstryDetailModel> listCntrlHstry(String id){
) // 결과 객체의 프로퍼티 이름을 지정
)
.from(qCtrCntrlBas)
.leftJoin(qFltPlanCtrCntrlRel)
.on(qCtrCntrlBas.cntrlId.eq(qFltPlanCtrCntrlRel.cntrlId))
.leftJoin(qFltPlanBas)
.on(qFltPlanCtrCntrlRel.planSno.eq(qFltPlanBas.planSno))
.where(builder)
.fetchOne());
}
@ -1962,7 +1984,7 @@ public List<AnlsHstryDetailModel> listCntrlHstry(String id){
QFltPlanBas qFltPlanBas = QFltPlanBas.fltPlanBas;
BooleanBuilder builder = new BooleanBuilder();
if(groupId != null && groupId.equals("")) builder.and(qFltPlanBas.groupId.eq(groupId));
if(groupId != null && !(groupId.equals(""))) builder.and(qFltPlanBas.groupId.eq(groupId));
if(authCheck) builder.and(qFltPlanBas.cstmrSno.eq(jwtTokenUtil.getCstmrSnoByToken()));
@ -1988,9 +2010,9 @@ public List<AnlsHstryDetailModel> listCntrlHstry(String id){
String idntfNum = result.getName();
result.setYear(getFltDistanceYear(idntfNum));
result.setMonth(getFltDistanceMonth(idntfNum));
result.setDay(getFltDistanceDay(idntfNum));
result.setYear(getFltDistanceYear(idntfNum, authCheck, groupId));
result.setMonth(getFltDistanceMonth(idntfNum, authCheck, groupId));
result.setDay(getFltDistanceDay(idntfNum, authCheck, groupId));
} else {
FlightStcsValueModel node = new FlightStcsValueModel();
node.setName("-");
@ -2004,29 +2026,41 @@ public List<AnlsHstryDetailModel> listCntrlHstry(String id){
return result;
}
private Double getFltDistanceDay(String idntfNum){
private Double getFltDistanceDay(String idntfNum, boolean authCheck, String groupId){
QCtrCntrlBas qCtrCntrlBas = QCtrCntrlBas.ctrCntrlBas;
QFltPlanCtrCntrlRel qFltPlanCtrCntrlRel = QFltPlanCtrCntrlRel.fltPlanCtrCntrlRel;
QFltPlanBas qFltPlanBas = QFltPlanBas.fltPlanBas;
BooleanBuilder builder = new BooleanBuilder();
builder.and(qCtrCntrlBas.idntfNum.eq(idntfNum));
builder.and(qCtrCntrlBas.createDt.eq(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(
qCtrCntrlBas.ttlDstnc.sum() // 결과 객체의 프로퍼티 이름을 지정
)
.from(qCtrCntrlBas)
.leftJoin(qFltPlanCtrCntrlRel)
.on(qCtrCntrlBas.cntrlId.eq(qFltPlanCtrCntrlRel.cntrlId))
.leftJoin(qFltPlanBas)
.on(qFltPlanCtrCntrlRel.planSno.eq(qFltPlanBas.planSno))
.where(builder)
.fetchOne();
}
private Double getFltDistanceMonth(String idntfNum){
private Double getFltDistanceMonth(String idntfNum, boolean authCheck, String groupId){
QCtrCntrlBas qCtrCntrlBas = QCtrCntrlBas.ctrCntrlBas;
QFltPlanCtrCntrlRel qFltPlanCtrCntrlRel = QFltPlanCtrCntrlRel.fltPlanCtrCntrlRel;
QFltPlanBas qFltPlanBas = QFltPlanBas.fltPlanBas;
BooleanBuilder builder = new BooleanBuilder();
builder.and(qCtrCntrlBas.idntfNum.eq(idntfNum));
builder.and(qCtrCntrlBas.createDt.goe(LocalDate.now().minusMonths(1).atStartOfDay().atZone(ZoneId.of("Asia/Seoul")).toInstant()));
builder.and(qCtrCntrlBas.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(
@ -2034,23 +2068,35 @@ public List<AnlsHstryDetailModel> listCntrlHstry(String id){
)
.from(qCtrCntrlBas)
.leftJoin(qFltPlanCtrCntrlRel)
.on(qCtrCntrlBas.cntrlId.eq(qFltPlanCtrCntrlRel.cntrlId))
.leftJoin(qFltPlanBas)
.on(qFltPlanCtrCntrlRel.planSno.eq(qFltPlanBas.planSno))
.where(builder)
.fetchOne();
}
private Double getFltDistanceYear(String idntfNum){
private Double getFltDistanceYear(String idntfNum, boolean authCheck, String groupId){
QCtrCntrlBas qCtrCntrlBas = QCtrCntrlBas.ctrCntrlBas;
QFltPlanCtrCntrlRel qFltPlanCtrCntrlRel = QFltPlanCtrCntrlRel.fltPlanCtrCntrlRel;
QFltPlanBas qFltPlanBas = QFltPlanBas.fltPlanBas;
BooleanBuilder builder = new BooleanBuilder();
builder.and(qCtrCntrlBas.idntfNum.eq(idntfNum));
builder.and(qCtrCntrlBas.createDt.goe(LocalDate.now().minusYears(1).atStartOfDay().atZone(ZoneId.of("Asia/Seoul")).toInstant()));
builder.and(qCtrCntrlBas.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(
qCtrCntrlBas.ttlDstnc.sum() // 결과 객체의 프로퍼티 이름을 지정
)
.from(qCtrCntrlBas)
.leftJoin(qFltPlanCtrCntrlRel)
.on(qCtrCntrlBas.cntrlId.eq(qFltPlanCtrCntrlRel.cntrlId))
.leftJoin(qFltPlanBas)
.on(qFltPlanCtrCntrlRel.planSno.eq(qFltPlanBas.planSno))
.where(builder)
.fetchOne();
}
@ -2067,7 +2113,7 @@ public List<AnlsHstryDetailModel> listCntrlHstry(String id){
QFltPlanBas qFltPlanBas = QFltPlanBas.fltPlanBas;
BooleanBuilder builder = new BooleanBuilder();
if(groupId != null && groupId.equals("")) builder.and(qFltPlanBas.groupId.eq(groupId));
if(groupId != null && !(groupId.equals(""))) builder.and(qFltPlanBas.groupId.eq(groupId));
if(authCheck) builder.and(qFltPlanBas.cstmrSno.eq(jwtTokenUtil.getCstmrSnoByToken()));
List<FlightStcsValueModel> queryResult = query
@ -2093,9 +2139,9 @@ public List<AnlsHstryDetailModel> listCntrlHstry(String id){
String idntfNum = result.getName();
result.setYear(getFltCountYear(idntfNum));
result.setMonth(getFltCountMonth(idntfNum));
result.setDay(getFltCountDay(idntfNum));
result.setYear(getFltCountYear(idntfNum, authCheck, groupId));
result.setMonth(getFltCountMonth(idntfNum, authCheck, groupId));
result.setDay(getFltCountDay(idntfNum, authCheck, groupId));
} else {
FlightStcsValueModel node = new FlightStcsValueModel();
node.setName("-");
@ -2109,52 +2155,76 @@ public List<AnlsHstryDetailModel> listCntrlHstry(String id){
return result;
}
private Long getFltCountDay(String idntfNum){
private Long getFltCountDay(String idntfNum, boolean authCheck, String groupId){
QCtrCntrlBas qCtrCntrlBas = QCtrCntrlBas.ctrCntrlBas;
QFltPlanCtrCntrlRel qFltPlanCtrCntrlRel = QFltPlanCtrCntrlRel.fltPlanCtrCntrlRel;
QFltPlanBas qFltPlanBas = QFltPlanBas.fltPlanBas;
BooleanBuilder builder = new BooleanBuilder();
builder.and(qCtrCntrlBas.idntfNum.eq(idntfNum));
builder.and(qCtrCntrlBas.createDt.eq(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(
qCtrCntrlBas.cntrlId.count() // 결과 객체의 프로퍼티 이름을 지정
)
.from(qCtrCntrlBas)
.leftJoin(qFltPlanCtrCntrlRel)
.on(qCtrCntrlBas.cntrlId.eq(qFltPlanCtrCntrlRel.cntrlId))
.leftJoin(qFltPlanBas)
.on(qFltPlanCtrCntrlRel.planSno.eq(qFltPlanBas.planSno))
.where(builder)
.fetchOne();
}
private Long getFltCountMonth(String idntfNum){
private Long getFltCountMonth(String idntfNum, boolean authCheck, String groupId){
QCtrCntrlBas qCtrCntrlBas = QCtrCntrlBas.ctrCntrlBas;
QFltPlanCtrCntrlRel qFltPlanCtrCntrlRel = QFltPlanCtrCntrlRel.fltPlanCtrCntrlRel;
QFltPlanBas qFltPlanBas = QFltPlanBas.fltPlanBas;
BooleanBuilder builder = new BooleanBuilder();
builder.and(qCtrCntrlBas.idntfNum.eq(idntfNum));
builder.and(qCtrCntrlBas.createDt.goe(LocalDate.now().minusMonths(1).atStartOfDay().atZone(ZoneId.of("Asia/Seoul")).toInstant()));
builder.and(qCtrCntrlBas.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(
qCtrCntrlBas.cntrlId.count() // 결과 객체의 프로퍼티 이름을 지정
)
.from(qCtrCntrlBas)
.leftJoin(qFltPlanCtrCntrlRel)
.on(qCtrCntrlBas.cntrlId.eq(qFltPlanCtrCntrlRel.cntrlId))
.leftJoin(qFltPlanBas)
.on(qFltPlanCtrCntrlRel.planSno.eq(qFltPlanBas.planSno))
.where(builder)
.fetchOne();
}
private Long getFltCountYear(String idntfNum){
private Long getFltCountYear(String idntfNum, boolean authCheck, String groupId){
QCtrCntrlBas qCtrCntrlBas = QCtrCntrlBas.ctrCntrlBas;
QFltPlanCtrCntrlRel qFltPlanCtrCntrlRel = QFltPlanCtrCntrlRel.fltPlanCtrCntrlRel;
QFltPlanBas qFltPlanBas = QFltPlanBas.fltPlanBas;
BooleanBuilder builder = new BooleanBuilder();
builder.and(qCtrCntrlBas.idntfNum.eq(idntfNum));
builder.and(qCtrCntrlBas.createDt.goe(LocalDate.now().minusYears(1).atStartOfDay().atZone(ZoneId.of("Asia/Seoul")).toInstant()));
builder.and(qCtrCntrlBas.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(
qCtrCntrlBas.cntrlId.count() // 결과 객체의 프로퍼티 이름을 지정
)
.from(qCtrCntrlBas)
.leftJoin(qFltPlanCtrCntrlRel)
.on(qCtrCntrlBas.cntrlId.eq(qFltPlanCtrCntrlRel.cntrlId))
.leftJoin(qFltPlanBas)
.on(qFltPlanCtrCntrlRel.planSno.eq(qFltPlanBas.planSno))
.where(builder)
.fetchOne();
}
@ -2186,7 +2256,7 @@ public List<AnlsHstryDetailModel> listCntrlHstry(String id){
BooleanBuilder builder = new BooleanBuilder();
if(date != null && date.length() > 0) builder.and(formattedDate.eq(date));
if(groupId != null && groupId.equals("")) builder.and(qFltPlanBas.groupId.eq(groupId));
if(groupId != null && !(groupId.equals(""))) builder.and(qFltPlanBas.groupId.eq(groupId));
if(authCheck) builder.and(qFltPlanBas.cstmrSno.eq(jwtTokenUtil.getCstmrSnoByToken()));
List<FlightStcsValueModel> result = query
@ -2246,7 +2316,7 @@ public List<AnlsHstryDetailModel> listCntrlHstry(String id){
BooleanBuilder builder = new BooleanBuilder();
if(date != null && date.length() > 0) builder.and(formattedDate.eq(date));
if(groupId != null && groupId.equals("")) builder.and(qFltPlanBas.groupId.eq(groupId));
if(groupId != null && !(groupId.equals(""))) builder.and(qFltPlanBas.groupId.eq(groupId));
if(authCheck) builder.and(qFltPlanBas.cstmrSno.eq(jwtTokenUtil.getCstmrSnoByToken()));
List<FlightStcsValueModel> result = query
@ -2302,7 +2372,7 @@ public List<AnlsHstryDetailModel> listCntrlHstry(String id){
BooleanBuilder builder = new BooleanBuilder();
if(date != null && date.length() > 0) builder.and(formattedDate.eq(date));
if(groupId != null && groupId.equals("")) builder.and(qFltPlanBas.groupId.eq(groupId));
if(groupId != null && !(groupId.equals(""))) builder.and(qFltPlanBas.groupId.eq(groupId));
if(authCheck) builder.and(qFltPlanBas.cstmrSno.eq(jwtTokenUtil.getCstmrSnoByToken()));
List<FlightStcsValueModel> result = query
@ -2340,35 +2410,44 @@ public List<AnlsHstryDetailModel> listCntrlHstry(String id){
* @param formatParam
* @return
*/
public List<FlightStcsValueModel> fltTopTimeStcs(String date, String[] formatParam){
QCtrCntrlBas bas = QCtrCntrlBas.ctrCntrlBas;
public List<FlightStcsValueModel> fltTopTimeStcs(String date, String groupId, boolean authCheck, String[] formatParam){
QCtrCntrlBas qCtrCntrlBas = QCtrCntrlBas.ctrCntrlBas;
QFltPlanCtrCntrlRel qFltPlanCtrCntrlRel = QFltPlanCtrCntrlRel.fltPlanCtrCntrlRel;
QFltPlanBas qFltPlanBas = QFltPlanBas.fltPlanBas;
StringTemplate formattedDate = Expressions.stringTemplate(
"DATE_FORMAT({0}, {1})"
, bas.createDt
, qCtrCntrlBas.createDt
, ConstantImpl.create(formatParam[0]));
BooleanBuilder builder = new BooleanBuilder();
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(
Projections.bean(FlightStcsValueModel.class,
bas.idntfNum.as("name"), // 결과 객체의 프로퍼티 이름을 지정
qCtrCntrlBas.idntfNum.as("name"), // 결과 객체의 프로퍼티 이름을 지정
Expressions.stringTemplate(
"CONCAT(SEC_TO_TIME(SUM(TIME_TO_SEC(TIMEDIFF({0}, {1})))))",
bas.cntrlEndDt,
bas.cntrlStDt
qCtrCntrlBas.cntrlEndDt,
qCtrCntrlBas.cntrlStDt
).as("value") // 결과 객체의 프로퍼티 이름을 지정
)
)
.from(bas)
.from(qCtrCntrlBas)
.leftJoin(qFltPlanCtrCntrlRel)
.on(qCtrCntrlBas.cntrlId.eq(qFltPlanCtrCntrlRel.cntrlId))
.leftJoin(qFltPlanBas)
.on(qFltPlanCtrCntrlRel.planSno.eq(qFltPlanBas.planSno))
.where(builder)
.groupBy(bas.idntfNum)
.groupBy(qCtrCntrlBas.idntfNum)
.orderBy(Expressions.stringTemplate(
"SEC_TO_TIME(SUM(TIME_TO_SEC(TIMEDIFF({0}, {1}))))",
bas.cntrlEndDt,
bas.cntrlStDt
qCtrCntrlBas.cntrlEndDt,
qCtrCntrlBas.cntrlStDt
).desc())
.limit(5)
.fetch();
@ -2391,28 +2470,38 @@ public List<AnlsHstryDetailModel> listCntrlHstry(String id){
* @param formatParam
* @return
*/
public List<FlightStcsValueModel> fltTopDistanceStcs(String date, String[] formatParam){
QCtrCntrlBas bas = QCtrCntrlBas.ctrCntrlBas;
public List<FlightStcsValueModel> fltTopDistanceStcs(String date, String groupId, boolean authCheck, String[] formatParam){
QCtrCntrlBas qCtrCntrlBas = QCtrCntrlBas.ctrCntrlBas;
QFltPlanCtrCntrlRel qFltPlanCtrCntrlRel = QFltPlanCtrCntrlRel.fltPlanCtrCntrlRel;
QFltPlanBas qFltPlanBas = QFltPlanBas.fltPlanBas;
StringTemplate formattedDate = Expressions.stringTemplate(
"DATE_FORMAT({0}, {1})"
, bas.createDt
, qCtrCntrlBas.createDt
, ConstantImpl.create(formatParam[0]));
BooleanBuilder builder = new BooleanBuilder();
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(
Projections.bean(FlightStcsValueModel.class,
bas.idntfNum.as("name"), // 결과 객체의 프로퍼티 이름을 지정
bas.ttlDstnc.sum().as("value")
qCtrCntrlBas.idntfNum.as("name"), // 결과 객체의 프로퍼티 이름을 지정
qCtrCntrlBas.ttlDstnc.sum().as("value")
)
)
.from(bas)
.from(qCtrCntrlBas)
.leftJoin(qFltPlanCtrCntrlRel)
.on(qCtrCntrlBas.cntrlId.eq(qFltPlanCtrCntrlRel.cntrlId))
.leftJoin(qFltPlanBas)
.on(qFltPlanCtrCntrlRel.planSno.eq(qFltPlanBas.planSno))
.where(builder)
.groupBy(bas.idntfNum)
.orderBy(bas.ttlDstnc.sum().desc())
.groupBy(qCtrCntrlBas.idntfNum)
.orderBy(qCtrCntrlBas.ttlDstnc.sum().desc())
.limit(5)
.fetch();
@ -2434,28 +2523,37 @@ public List<AnlsHstryDetailModel> listCntrlHstry(String id){
* @param formatParam
* @return
*/
public List<FlightStcsValueModel> fltTopCountStcs(String date, String[] formatParam){
QCtrCntrlBas bas = QCtrCntrlBas.ctrCntrlBas;
public List<FlightStcsValueModel> fltTopCountStcs(String date, String groupId, boolean authCheck, String[] formatParam){
QCtrCntrlBas qCtrCntrlBas = QCtrCntrlBas.ctrCntrlBas;
QFltPlanCtrCntrlRel qFltPlanCtrCntrlRel = QFltPlanCtrCntrlRel.fltPlanCtrCntrlRel;
QFltPlanBas qFltPlanBas = QFltPlanBas.fltPlanBas;
StringTemplate formattedDate = Expressions.stringTemplate(
"DATE_FORMAT({0}, {1})"
, bas.createDt
, qCtrCntrlBas.createDt
, ConstantImpl.create(formatParam[0]));
BooleanBuilder builder = new BooleanBuilder();
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(
Projections.bean(FlightStcsValueModel.class,
bas.idntfNum.as("name"), // 결과 객체의 프로퍼티 이름을 지정
bas.cntrlId.count().as("value")
qCtrCntrlBas.idntfNum.as("name"), // 결과 객체의 프로퍼티 이름을 지정
qCtrCntrlBas.cntrlId.count().as("value")
)
)
.from(bas)
.from(qCtrCntrlBas)
.leftJoin(qFltPlanCtrCntrlRel)
.on(qCtrCntrlBas.cntrlId.eq(qFltPlanCtrCntrlRel.cntrlId))
.leftJoin(qFltPlanBas)
.on(qFltPlanCtrCntrlRel.planSno.eq(qFltPlanBas.planSno))
.where(builder)
.groupBy(bas.idntfNum)
.orderBy(bas.cntrlId.count().desc())
.groupBy(qCtrCntrlBas.idntfNum)
.orderBy(qCtrCntrlBas.cntrlId.count().desc())
.limit(5)
.fetch();

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

@ -7,6 +7,7 @@ import java.time.ZoneId;
import java.util.List;
import java.util.Optional;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageImpl;
@ -14,6 +15,7 @@ import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Repository;
import org.springframework.util.StringUtils;
import com.palnet.biz.api.acnt.jwt.utils.JwtTokenUtil;
import com.palnet.biz.api.bas.flight.model.BasFlightPlanArcrftModel;
import com.palnet.biz.api.bas.flight.model.BasFlightPlanAreaCoordRq;
import com.palnet.biz.api.bas.flight.model.BasFlightPlanAreaModel;
@ -70,7 +72,8 @@ public class FltPlanQueryRepository {
private final JPAQueryFactory query;
private final ComnFileService comnFileService;
private final JwtTokenUtil jwtTokenUtil;
// 비행계획서 목록
@ -1181,24 +1184,29 @@ public class FltPlanQueryRepository {
* 비행실적 데이터, top 1
* @return
*/
public FlightStcsValueModel getFltResultStaticStcs(){
public FlightStcsValueModel getFltResultStaticStcs(boolean authCheck, String groupId){
FlightStcsValueModel result = new FlightStcsValueModel();
QFltPlanCtrCntrlRel bas = QFltPlanCtrCntrlRel.fltPlanCtrCntrlRel;
QFltPlanCtrCntrlRel qFltPlanCtrCntrlRel = QFltPlanCtrCntrlRel.fltPlanCtrCntrlRel;
QFltPlanBas qFltPlanBas = QFltPlanBas.fltPlanBas;
BooleanBuilder builder = new BooleanBuilder();
builder.and(bas.planSno.isNotNull());
builder.and(qFltPlanCtrCntrlRel.planSno.isNotNull());
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") // 결과 객체의 프로퍼티 이름을 지정
qFltPlanCtrCntrlRel.idntfNum.as("name") // 결과 객체의 프로퍼티 이름을 지정
)
)
.from(bas)
.from(qFltPlanCtrCntrlRel)
.leftJoin(qFltPlanBas)
.on(qFltPlanCtrCntrlRel.planSno.eq(qFltPlanBas.planSno))
.where(builder)
.groupBy(bas.idntfNum)
.orderBy(bas.planSno.countDistinct().desc())
.groupBy(qFltPlanCtrCntrlRel.idntfNum)
.orderBy(qFltPlanCtrCntrlRel.planSno.countDistinct().desc())
.limit(1)
.fetch();
@ -1208,9 +1216,9 @@ public class FltPlanQueryRepository {
String idntfNum = result.getName();
result.setYear(getFltResultYear(idntfNum));
result.setMonth(getFltResultMonth(idntfNum));
result.setDay(getFltResultDay(idntfNum));
result.setYear(getFltResultYear(idntfNum, authCheck, groupId));
result.setMonth(getFltResultMonth(idntfNum, authCheck, groupId));
result.setDay(getFltResultDay(idntfNum, authCheck, groupId));
} else {
FlightStcsValueModel node = new FlightStcsValueModel();
@ -1226,7 +1234,8 @@ public class FltPlanQueryRepository {
}
private Long getFltResultDay(String idntfNum){
private Long getFltResultDay(String idntfNum, boolean authCheck, String groupId){
QFltPlanCtrCntrlRel qFltPlanCtrCntrlRel = QFltPlanCtrCntrlRel.fltPlanCtrCntrlRel;
QFltPlanBas qFltPlanBas = QFltPlanBas.fltPlanBas;
@ -1234,6 +1243,8 @@ public class FltPlanQueryRepository {
builder.and(qFltPlanCtrCntrlRel.idntfNum.eq(idntfNum));
builder.and(qFltPlanBas.createDt.eq(LocalDate.now().atStartOfDay().atZone(ZoneId.of("Asia/Seoul")).toInstant()));
builder.and(qFltPlanCtrCntrlRel.planSno.isNotNull());
if(groupId != null && !(groupId.equals(""))) builder.and(qFltPlanBas.groupId.eq(groupId));
if(authCheck) builder.and(qFltPlanBas.cstmrSno.eq(jwtTokenUtil.getCstmrSnoByToken()));
return query
.select(
@ -1246,7 +1257,7 @@ public class FltPlanQueryRepository {
.fetchOne();
}
private Long getFltResultMonth(String idntfNum){
private Long getFltResultMonth(String idntfNum, boolean authCheck, String groupId){
QFltPlanCtrCntrlRel qFltPlanCtrCntrlRel = QFltPlanCtrCntrlRel.fltPlanCtrCntrlRel;
QFltPlanBas qFltPlanBas = QFltPlanBas.fltPlanBas;
@ -1255,6 +1266,8 @@ public class FltPlanQueryRepository {
builder.and(qFltPlanCtrCntrlRel.planSno.isNotNull());
builder.and(qFltPlanBas.createDt.goe(LocalDate.now().minusMonths(1).atStartOfDay().atZone(ZoneId.of("Asia/Seoul")).toInstant()));
builder.and(qFltPlanBas.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(
@ -1267,7 +1280,7 @@ public class FltPlanQueryRepository {
.fetchOne();
}
private Long getFltResultYear(String idntfNum){
private Long getFltResultYear(String idntfNum, boolean authCheck, String groupId){
QFltPlanCtrCntrlRel qFltPlanCtrCntrlRel = QFltPlanCtrCntrlRel.fltPlanCtrCntrlRel;
QFltPlanBas qFltPlanBas = QFltPlanBas.fltPlanBas;
@ -1276,6 +1289,8 @@ public class FltPlanQueryRepository {
builder.and(qFltPlanCtrCntrlRel.planSno.isNotNull());
builder.and(qFltPlanBas.createDt.goe(LocalDate.now().minusYears(1).atStartOfDay().atZone(ZoneId.of("Asia/Seoul")).toInstant()));
builder.and(qFltPlanBas.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(
@ -1293,32 +1308,41 @@ public class FltPlanQueryRepository {
* 비행계획에 많이 기용된 기체 데이터, top 1
* @return
*/
public FlightStcsValueModel getFltPlanStaticStcs(){
public FlightStcsValueModel getFltPlanStaticStcs(boolean authCheck, String groupId){
FlightStcsValueModel result = new FlightStcsValueModel();
QFltPlanArcrft bas = QFltPlanArcrft.fltPlanArcrft;
QFltPlanArcrft qFltPlanArcrft = QFltPlanArcrft.fltPlanArcrft;
QFltPlanBas qFltPlanBas = QFltPlanBas.fltPlanBas;
BooleanBuilder builder = new BooleanBuilder();
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") // 결과 객체의 프로퍼티 이름을 지정
qFltPlanArcrft.idntfNum.as("name") // 결과 객체의 프로퍼티 이름을 지정
)
)
.from(bas)
.groupBy(bas.idntfNum)
.orderBy(bas.planSno.count().desc())
.from(qFltPlanArcrft)
.leftJoin(qFltPlanBas)
.on(qFltPlanArcrft.planSno.eq(qFltPlanBas.planSno))
.groupBy(qFltPlanArcrft.idntfNum)
.orderBy(qFltPlanArcrft.planSno.count().desc())
.limit(1)
.fetch();
log.warn("que => {}", queryResult);
if(queryResult.size() > 0){
result = queryResult.get(0);
if(result.getName().equals("")) result.setName(" ");
String idntfNum = result.getName();
result.setYear(getFltPlanYear(idntfNum));
result.setMonth(getFltPlanMonth(idntfNum));
result.setDay(getFltPlanDay(idntfNum));
result.setYear(getFltPlanYear(idntfNum, authCheck, groupId));
result.setMonth(getFltPlanMonth(idntfNum, authCheck, groupId));
result.setDay(getFltPlanDay(idntfNum, authCheck, groupId));
} else {
FlightStcsValueModel node = new FlightStcsValueModel();
@ -1333,52 +1357,67 @@ public class FltPlanQueryRepository {
return result;
}
private Long getFltPlanDay(String idntfNum){
private Long getFltPlanDay(String idntfNum, boolean authCheck, String groupId){
QFltPlanArcrft bas = QFltPlanArcrft.fltPlanArcrft;
QFltPlanBas qFltPlanBas = QFltPlanBas.fltPlanBas;
BooleanBuilder builder = new BooleanBuilder();
builder.and(bas.idntfNum.eq(idntfNum.trim()));
builder.and(bas.createDt.eq(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(
bas.planSno.count() // 결과 객체의 프로퍼티 이름을 지정
)
.from(bas)
.leftJoin(qFltPlanBas)
.on(qFltPlanBas.planSno.eq(bas.planSno))
.where(builder)
.fetchOne();
}
private Long getFltPlanMonth(String idntfNum){
private Long getFltPlanMonth(String idntfNum, boolean authCheck, String groupId){
QFltPlanArcrft bas = QFltPlanArcrft.fltPlanArcrft;
QFltPlanBas qFltPlanBas = QFltPlanBas.fltPlanBas;
BooleanBuilder builder = new BooleanBuilder();
builder.and(bas.idntfNum.eq(idntfNum.trim()));
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(
bas.planSno.count() // 결과 객체의 프로퍼티 이름을 지정
)
.from(bas)
.leftJoin(qFltPlanBas)
.on(qFltPlanBas.planSno.eq(bas.planSno))
.where(builder)
.fetchOne();
}
private Long getFltPlanYear(String idntfNum){
private Long getFltPlanYear(String idntfNum, boolean authCheck, String groupId){
QFltPlanArcrft bas = QFltPlanArcrft.fltPlanArcrft;
QFltPlanBas qFltPlanBas = QFltPlanBas.fltPlanBas;
BooleanBuilder builder = new BooleanBuilder();
builder.and(bas.idntfNum.eq(idntfNum.trim()));
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(
bas.planSno.count()
)
.from(bas)
.leftJoin(qFltPlanBas)
.on(qFltPlanBas.planSno.eq(bas.planSno))
.where(builder)
.fetchOne();
}
@ -1387,10 +1426,10 @@ public class FltPlanQueryRepository {
/**
* 비행실적 많은 기체 데이터, top 1
* 비행승인 많은 기체 데이터, top 1
* @return
*/
public FlightStcsValueModel getFltPlanAprvnStaticStcs(){
public FlightStcsValueModel getFltPlanAprvnStaticStcs(boolean authCheck, String groupId){
FlightStcsValueModel result = new FlightStcsValueModel();
QFltPlanArcrft qFltPlanArcrft = QFltPlanArcrft.fltPlanArcrft;
@ -1398,18 +1437,19 @@ public class FltPlanQueryRepository {
BooleanBuilder builder = new BooleanBuilder();
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()));
List<FlightStcsValueModel> queryResult = query
.select(
Projections.bean(FlightStcsValueModel.class,
qFltPlanArcrft.idntfNum.as("name"), // 결과 객체의 프로퍼티 이름을 지정
qFltPlanArcrft.planSno.count().as("value") // 결과 객체의 프로퍼티 이름을 지정
qFltPlanArcrft.idntfNum.as("name") // 결과 객체의 프로퍼티 이름을 지정
)
)
.from(qFltPlanArcrft)
.leftJoin(qFltPlanBas)
.on(qFltPlanArcrft.planSno.eq(qFltPlanBas.planSno))
.on(qFltPlanArcrft.planSno.eq(qFltPlanBas.planSno))
.where(builder)
.groupBy(qFltPlanArcrft.idntfNum)
.orderBy(qFltPlanArcrft.planSno.count().desc())
@ -1421,9 +1461,9 @@ public class FltPlanQueryRepository {
if(result.getName().equals("")) result.setName(" ");
String idntfNum = result.getName();
result.setYear(getFltPlanAprvnYear(idntfNum));
result.setMonth(getFltPlanAprvnMonth(idntfNum));
result.setDay(getFltPlanAprvnDay(idntfNum));
result.setYear(getFltPlanAprvnYear(idntfNum, authCheck, groupId));
result.setMonth(getFltPlanAprvnMonth(idntfNum, authCheck, groupId));
result.setDay(getFltPlanAprvnDay(idntfNum, authCheck, groupId));
} else {
FlightStcsValueModel node = new FlightStcsValueModel();
@ -1438,7 +1478,7 @@ public class FltPlanQueryRepository {
return result;
}
private Long getFltPlanAprvnDay(String idntfNum){
private Long getFltPlanAprvnDay(String idntfNum, boolean authCheck, String groupId){
QFltPlanArcrft qFltPlanArcrft = QFltPlanArcrft.fltPlanArcrft;
QFltPlanBas qFltPlanBas = QFltPlanBas.fltPlanBas;
@ -1446,6 +1486,8 @@ public class FltPlanQueryRepository {
builder.and(qFltPlanArcrft.idntfNum.eq(idntfNum));
builder.and(qFltPlanBas.aprvlYn.eq("Y"));
builder.and(qFltPlanBas.createDt.eq(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(
@ -1458,7 +1500,7 @@ public class FltPlanQueryRepository {
.fetchOne();
}
private Long getFltPlanAprvnMonth(String idntfNum){
private Long getFltPlanAprvnMonth(String idntfNum, boolean authCheck, String groupId){
QFltPlanArcrft qFltPlanArcrft = QFltPlanArcrft.fltPlanArcrft;
QFltPlanBas qFltPlanBas = QFltPlanBas.fltPlanBas;
@ -1468,6 +1510,8 @@ public class FltPlanQueryRepository {
builder.and(qFltPlanBas.aprvlYn.eq("Y"));
builder.and(qFltPlanBas.createDt.goe(LocalDate.now().minusMonths(1).atStartOfDay().atZone(ZoneId.of("Asia/Seoul")).toInstant()));
builder.and(qFltPlanBas.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(
@ -1480,7 +1524,7 @@ public class FltPlanQueryRepository {
.fetchOne();
}
private Long getFltPlanAprvnYear(String idntfNum){
private Long getFltPlanAprvnYear(String idntfNum, boolean authCheck, String groupId){
QFltPlanArcrft qFltPlanArcrft = QFltPlanArcrft.fltPlanArcrft;
QFltPlanBas qFltPlanBas = QFltPlanBas.fltPlanBas;
@ -1489,6 +1533,8 @@ public class FltPlanQueryRepository {
builder.and(qFltPlanBas.aprvlYn.eq("Y"));
builder.and(qFltPlanBas.createDt.goe(LocalDate.now().minusYears(1).atStartOfDay().atZone(ZoneId.of("Asia/Seoul")).toInstant()));
builder.and(qFltPlanBas.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(
@ -1507,7 +1553,7 @@ public class FltPlanQueryRepository {
* @param formatParam
* @return
*/
public List<FlightStcsValueModel> fltResultStcs(String date, String[] formatParam){
public List<FlightStcsValueModel> fltResultStcs(String date, String groupId, boolean authCheck, String[] formatParam){
// QCtrCntrlBas bas = QCtrCntrlBas.ctrCntrlBas;
QFltPlanBas qFltPlanBas = QFltPlanBas.fltPlanBas;
@ -1525,6 +1571,8 @@ public class FltPlanQueryRepository {
BooleanBuilder builder = new BooleanBuilder();
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(
@ -1559,9 +1607,7 @@ public class FltPlanQueryRepository {
* @param formatParam
* @return
*/
public List<FlightStcsValueModel> fltPlanStcs(String date, String[] formatParam){
// QCtrCntrlBas bas = QCtrCntrlBas.ctrCntrlBas;
public List<FlightStcsValueModel> fltPlanStcs(String date, String groupId, boolean authCheck, String[] formatParam){
QFltPlanBas qFltPlanBas = QFltPlanBas.fltPlanBas;
StringTemplate formattedDate = Expressions.stringTemplate(
@ -1576,6 +1622,8 @@ public class FltPlanQueryRepository {
BooleanBuilder builder = new BooleanBuilder();
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(
@ -1608,7 +1656,7 @@ public class FltPlanQueryRepository {
* @param formatParam
* @return
*/
public List<FlightStcsValueModel> fltPlanAprvnStcs(String date, String[] formatParam){
public List<FlightStcsValueModel> fltPlanAprvnStcs(String date, String groupId, boolean authCheck, String[] formatParam){
// QCtrCntrlBas bas = QCtrCntrlBas.ctrCntrlBas;
QFltPlanBas qFltPlanBas = QFltPlanBas.fltPlanBas;
@ -1626,6 +1674,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()));
List<FlightStcsValueModel> result = query
.select(
@ -1659,7 +1709,7 @@ public class FltPlanQueryRepository {
* @param formatParam
* @return
*/
public List<FlightStcsValueModel> fltTopResultStcs(String date, String[] formatParam){
public List<FlightStcsValueModel> fltTopResultStcs(String date, String groupId, boolean authCheck, String[] formatParam){
QFltPlanCtrCntrlRel qFltPlanCtrCntrlRel = QFltPlanCtrCntrlRel.fltPlanCtrCntrlRel;
QFltPlanBas qFltPlanBas = QFltPlanBas.fltPlanBas;
@ -1670,6 +1720,8 @@ public class FltPlanQueryRepository {
BooleanBuilder builder = new BooleanBuilder();
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(
@ -1703,9 +1755,10 @@ public class FltPlanQueryRepository {
* @param formatParam
* @return
*/
public List<FlightStcsValueModel> fltTopPlanStcs(String date, String[] formatParam){
public List<FlightStcsValueModel> fltTopPlanStcs(String date, String groupId, boolean authCheck, String[] formatParam){
QFltPlanArcrft qFltPlanArcrft = QFltPlanArcrft.fltPlanArcrft;
QFltPlanBas qFltPlanBas = QFltPlanBas.fltPlanBas;
StringTemplate formattedDate = Expressions.stringTemplate(
"DATE_FORMAT({0}, {1})"
@ -1714,6 +1767,8 @@ public class FltPlanQueryRepository {
BooleanBuilder builder = new BooleanBuilder();
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(
@ -1723,6 +1778,8 @@ public class FltPlanQueryRepository {
)
)
.from(qFltPlanArcrft)
.leftJoin(qFltPlanBas)
.on(qFltPlanBas.planSno.eq(qFltPlanArcrft.planSno))
.where(builder)
.groupBy(qFltPlanArcrft.idntfNum)
.orderBy(qFltPlanArcrft.planSno.countDistinct().desc())
@ -1747,7 +1804,7 @@ public class FltPlanQueryRepository {
* @param formatParam
* @return
*/
public List<FlightStcsValueModel> fltTopPlanAprvnStcs(String date, String[] formatParam){
public List<FlightStcsValueModel> fltTopPlanAprvnStcs(String date, String groupId, boolean authCheck, String[] formatParam){
QFltPlanArcrft qFltPlanArcrft = QFltPlanArcrft.fltPlanArcrft;
QFltPlanBas qFltPlanBas = QFltPlanBas.fltPlanBas;
@ -1760,6 +1817,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()));
List<FlightStcsValueModel> result = query
.select(

Loading…
Cancel
Save