|
|
|
@ -7,6 +7,8 @@ import java.util.Calendar;
|
|
|
|
|
import java.util.Date; |
|
|
|
|
import java.util.List; |
|
|
|
|
|
|
|
|
|
import javax.persistence.criteria.Expression; |
|
|
|
|
|
|
|
|
|
import org.apache.commons.lang3.StringUtils; |
|
|
|
|
import org.springframework.beans.factory.annotation.Autowired; |
|
|
|
|
import org.springframework.cache.annotation.Cacheable; |
|
|
|
@ -26,6 +28,7 @@ import com.palnet.biz.api.ctr.cntrl.model.CtrCntrlDtlModel;
|
|
|
|
|
import com.palnet.biz.api.ctr.cntrl.model.CtrCntrlEndModel; |
|
|
|
|
import com.palnet.biz.api.ctr.cntrl.model.CtrCntrlGroupArcrftModel; |
|
|
|
|
import com.palnet.biz.api.ctr.cntrl.model.CtrCntrlGroupModel; |
|
|
|
|
import com.palnet.biz.api.main.dash.model.FlightStaticStcsModel; |
|
|
|
|
import com.palnet.biz.api.main.dash.model.MainDashStcsModel; |
|
|
|
|
import com.palnet.biz.jpa.entity.ComArcrftBas; |
|
|
|
|
import com.palnet.biz.jpa.entity.ComIdntfBas; |
|
|
|
@ -54,6 +57,7 @@ import com.querydsl.core.types.dsl.Expressions;
|
|
|
|
|
import com.querydsl.core.types.dsl.StringTemplate; |
|
|
|
|
import com.querydsl.jpa.JPAExpressions; |
|
|
|
|
import com.querydsl.jpa.impl.JPAQueryFactory; |
|
|
|
|
import com.querydsl.sql.SQLExpressions; |
|
|
|
|
|
|
|
|
|
import lombok.RequiredArgsConstructor; |
|
|
|
|
import lombok.extern.log4j.Log4j2; |
|
|
|
@ -1713,6 +1717,10 @@ public List<AnlsHstryDetailModel> listCntrlHstry(String id){
|
|
|
|
|
, bas.cntrlStDt |
|
|
|
|
, ConstantImpl.create(formatParam[1])); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// result[0] = "%Y";
|
|
|
|
|
// result[1] = "%m";
|
|
|
|
|
|
|
|
|
|
BooleanBuilder builder = new BooleanBuilder(); |
|
|
|
|
builder.and(bas.statusCd.eq("99")); |
|
|
|
|
if(date != null && date.length() > 0) builder.and(formattedDate.eq(date)); |
|
|
|
@ -1818,4 +1826,152 @@ public List<AnlsHstryDetailModel> listCntrlHstry(String id){
|
|
|
|
|
|
|
|
|
|
return result; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* DB 데이터내에 가장 많은 비행시간을 가진 기체, 비행시간 SELECT |
|
|
|
|
* @return |
|
|
|
|
*/ |
|
|
|
|
public FlightStaticStcsModel getFlightTimeStcs(){ |
|
|
|
|
FlightStaticStcsModel result = new FlightStaticStcsModel(); |
|
|
|
|
|
|
|
|
|
QCtrCntrlBas qCtrCntrlBas = QCtrCntrlBas.ctrCntrlBas; |
|
|
|
|
|
|
|
|
|
List<FlightStaticStcsModel> queryResult = query |
|
|
|
|
.select( |
|
|
|
|
Projections.bean(FlightStaticStcsModel.class, |
|
|
|
|
qCtrCntrlBas.idntfNum.as("name"), // 결과 객체의 프로퍼티 이름을 지정
|
|
|
|
|
Expressions.stringTemplate( |
|
|
|
|
"CONCAT(SEC_TO_TIME(SUM(TIME_TO_SEC(TIMEDIFF({0}, {1})))))", |
|
|
|
|
qCtrCntrlBas.cntrlEndDt, |
|
|
|
|
qCtrCntrlBas.cntrlStDt |
|
|
|
|
).as("value") // 결과 객체의 프로퍼티 이름을 지정
|
|
|
|
|
) |
|
|
|
|
) |
|
|
|
|
.from(qCtrCntrlBas) |
|
|
|
|
.groupBy(qCtrCntrlBas.idntfNum) |
|
|
|
|
.orderBy(Expressions.stringTemplate( |
|
|
|
|
"SEC_TO_TIME(SUM(TIME_TO_SEC(TIMEDIFF({0}, {1}))))", |
|
|
|
|
qCtrCntrlBas.cntrlEndDt, |
|
|
|
|
qCtrCntrlBas.cntrlStDt |
|
|
|
|
).desc()) |
|
|
|
|
.limit(1) |
|
|
|
|
.fetch(); |
|
|
|
|
|
|
|
|
|
if(queryResult.size() > 0){ |
|
|
|
|
result = queryResult.get(0); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return result; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 가장 많이 이동한 기체 |
|
|
|
|
* @return |
|
|
|
|
*/ |
|
|
|
|
public FlightStaticStcsModel getFlightDistanceStcs(){ |
|
|
|
|
FlightStaticStcsModel result = new FlightStaticStcsModel(); |
|
|
|
|
|
|
|
|
|
QCtrCntrlBas qCtrCntrlBas = QCtrCntrlBas.ctrCntrlBas; |
|
|
|
|
|
|
|
|
|
List<FlightStaticStcsModel> queryResult = query |
|
|
|
|
.select( |
|
|
|
|
Projections.bean(FlightStaticStcsModel.class, |
|
|
|
|
qCtrCntrlBas.idntfNum.as("name"), // 결과 객체의 프로퍼티 이름을 지정
|
|
|
|
|
qCtrCntrlBas.ttlDstnc.sum().as("value") |
|
|
|
|
) |
|
|
|
|
) |
|
|
|
|
.from(qCtrCntrlBas) |
|
|
|
|
.groupBy(qCtrCntrlBas.idntfNum) |
|
|
|
|
.orderBy(qCtrCntrlBas.ttlDstnc.sum().desc()) |
|
|
|
|
.limit(1) |
|
|
|
|
.fetch(); |
|
|
|
|
|
|
|
|
|
if(queryResult.size() > 0){ |
|
|
|
|
result = queryResult.get(0); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return result; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 가장 많이 비행한 기체 |
|
|
|
|
* @return |
|
|
|
|
*/ |
|
|
|
|
public FlightStaticStcsModel getFlightCountStcs(){ |
|
|
|
|
FlightStaticStcsModel result = new FlightStaticStcsModel(); |
|
|
|
|
|
|
|
|
|
QCtrCntrlBas qCtrCntrlBas = QCtrCntrlBas.ctrCntrlBas; |
|
|
|
|
|
|
|
|
|
List<FlightStaticStcsModel> queryResult = query |
|
|
|
|
.select( |
|
|
|
|
Projections.bean(FlightStaticStcsModel.class, |
|
|
|
|
qCtrCntrlBas.idntfNum.as("name"), // 결과 객체의 프로퍼티 이름을 지정
|
|
|
|
|
qCtrCntrlBas.cntrlId.count().as("value") |
|
|
|
|
) |
|
|
|
|
) |
|
|
|
|
.from(qCtrCntrlBas) |
|
|
|
|
.groupBy(qCtrCntrlBas.idntfNum) |
|
|
|
|
.orderBy(qCtrCntrlBas.cntrlId.count().desc()) |
|
|
|
|
.limit(1) |
|
|
|
|
.fetch(); |
|
|
|
|
|
|
|
|
|
if(queryResult.size() > 0){ |
|
|
|
|
result = queryResult.get(0); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return result; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 비행통계 카테고리 시간 |
|
|
|
|
* @param date |
|
|
|
|
* @param formatParam |
|
|
|
|
* @return |
|
|
|
|
*/ |
|
|
|
|
public List<FlightStaticStcsModel> fltTimeStcs(String date, String[] formatParam){ |
|
|
|
|
// QCtrCntrlBas bas = QCtrCntrlBas.ctrCntrlBas;
|
|
|
|
|
QCtrCntrlBas bas = QCtrCntrlBas.ctrCntrlBas; |
|
|
|
|
|
|
|
|
|
StringTemplate formattedDate = Expressions.stringTemplate( |
|
|
|
|
"DATE_FORMAT({0}, {1})" |
|
|
|
|
, bas.createDt |
|
|
|
|
, ConstantImpl.create(formatParam[0])); |
|
|
|
|
|
|
|
|
|
StringTemplate formattedDate2 = Expressions.stringTemplate( |
|
|
|
|
"DATE_FORMAT({0}, {1})" |
|
|
|
|
, bas.createDt |
|
|
|
|
, ConstantImpl.create(formatParam[1])); |
|
|
|
|
|
|
|
|
|
BooleanBuilder builder = new BooleanBuilder(); |
|
|
|
|
if(date != null && date.length() > 0) builder.and(formattedDate.eq(date)); |
|
|
|
|
|
|
|
|
|
List<FlightStaticStcsModel> result = query |
|
|
|
|
.select( |
|
|
|
|
Projections.bean( |
|
|
|
|
FlightStaticStcsModel.class , |
|
|
|
|
formattedDate2.as("name"), |
|
|
|
|
Expressions.stringTemplate( |
|
|
|
|
"CONCAT(SEC_TO_TIME(SUM(TIME_TO_SEC(TIMEDIFF({0}, {1})))))", |
|
|
|
|
bas.cntrlEndDt, |
|
|
|
|
bas.cntrlStDt |
|
|
|
|
).as("value") |
|
|
|
|
) |
|
|
|
|
) |
|
|
|
|
.from(bas) |
|
|
|
|
.where(builder) |
|
|
|
|
.groupBy(formattedDate2) |
|
|
|
|
.fetch(); |
|
|
|
|
|
|
|
|
|
if(result.size() <= 0){ |
|
|
|
|
FlightStaticStcsModel node = new FlightStaticStcsModel(); |
|
|
|
|
|
|
|
|
|
node.setName(null); |
|
|
|
|
node.setValue("NoData"); |
|
|
|
|
|
|
|
|
|
result.add(node); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return result; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|