compile("com.mysema.querydsl:querydsl-sql:3.7.4") in build.gradle
QFulfillmentEntity qFulfillment = QFulfillmentEntity.fulfillmentEntity;
QFulfillmentPickupConfirmationEntity qFulfillmentPickupConfirmationEntity = QFulfillmentPickupConfirmationEntity.fulfillmentPickupConfirmationEntity;
QFulfillmentAuditEntity qFulfillmentAuditEntity = QFulfillmentAuditEntity.fulfillmentAuditEntity;
LocalDateTime now = LocalDateTime.now();
LocalDateTime midnightToday = LocalDateTime.of(now.toLocalDate(), LocalTime.MIDNIGHT);
//JPQLQuery query = createQueryObject(context, context.getOrganization());
JPASQLQuery query = null;
if(dataSourceProperties.getPlatform().equals("h2"))
{
query = new JPASQLQuery(entityManager, H2Templates.DEFAULT);
}
else if(dataSourceProperties.getPlatform().equals("mysql"))
{
query = new JPASQLQuery(entityManager, MySQLTemplates.DEFAULT);
}
else if(dataSourceProperties.getPlatform().equals("oracle"))
{
query = new JPASQLQuery(entityManager, OracleTemplates.DEFAULT);
}
NumberExpression<Double> minPickupHr = new NumberPath<Double>(Double.class, MIN_PICKUP_HR);
NumberExpression<Double> maxPickupHr = new NumberPath<Double>(Double.class, MAX_PICKUP_HR);
NumberExpression<Double> avgPickupHr = new NumberPath<Double>(Double.class, AVG_PICKUP_HR);
NumberExpression<Double> timeDiffExpr = NumberOperation.create(Double.class,Ops.DateTimeOps.DIFF_MINUTES, qFulfillmentAuditEntity.pickedDate, qFulfillmentAuditEntity.pickedDate);
/* DateTimeExpression<Long> minPickupHr = new DateTimePath<Long>(Long.class, MIN_PICKUP_HR);
DateTimeExpression<Long> maxPickupHr = new DateTimePath<Long>(Long.class, MAX_PICKUP_HR);
DateTimeExpression<Long> avgPickupHr = new DateTimePath<Long>(Long.class, AVG_PICKUP_HR);
DateTimeExpression<Long> dateTimeExpression = Expressions.dateTimeOperation(Long.class, Ops.DateTimeOps.DIFF_MINUTES,qFulfillmentAuditEntity.pickedDate, qFulfillmentPickupConfirmationEntity.pickedUpDate);*/
long queryExecutionStart = System.currentTimeMillis();
List<StoreOrderTimeMetricDTO> storeOrderTimeMetricDTOS = new ArrayList<>();
List<Tuple> timePerStoreLocation = query.from(qFulfillment).groupBy(qFulfillment.shipFromLocationId,qFulfillmentPickupConfirmationEntity.pickedUpDate,qFulfillmentAuditEntity.pickedDate)
.join(qFulfillmentPickupConfirmationEntity)
.join(qFulfillmentAuditEntity).on(qFulfillmentAuditEntity.fulfillmentId.eq(qFulfillment.fulfillmentId))
.and(qFulfillment.destinationActionId
.and(qFulfillment.maxStatusId.eq(FulfillmentStatus.PICKED_UP.getValue()))
.and(qFulfillment.minStatusId.eq(FulfillmentStatus.PICKED_UP.getValue()))
.and(qFulfillmentPickupConfirmationEntity.pickedUpDate.between(midnightToday, now)))
.list(qFulfillment.shipFromLocationId, timeDiffExpr.min().divide(60).as(MIN_PICKUP_HR), timeDiffExpr.max().divide(60).as(MAX_PICKUP_HR), timeDiffExpr.avg().divide(60).as(AVG_PICKUP_HR));
long query1ExecutionTime = System.currentTimeMillis() - queryExecutionStart;
.format("-- getCustomerPickUpTimeSincePicking() elapseTime(): {0} millsecs ", query1ExecutionTime));
/*constructTimeMetricDTOs(qFulfillment, minPickupHr, maxPickupHr, avgPickupHr, storeOrderTimeMetricDTOS,
timePerStoreLocation);*/
logger.methodExit(context, "getCustomerPickUpTimeSincePicking", storeOrderTimeMetricDTOS, null);
return storeOrderTimeMetricDTOS;