fix sorting

This commit is contained in:
2024-10-27 20:41:09 +01:00
parent f404ad3088
commit 033c5d5c76
2 changed files with 29 additions and 17 deletions
+1 -1
View File
@@ -14,7 +14,7 @@
<maven.compiler.source>${java.version}</maven.compiler.source>
<maven.compiler.target>${java.version}</maven.compiler.target>
<querydsl.version>5.1.0</querydsl.version>
<revision>0.5.0</revision>
<revision>0.5.1</revision>
</properties>
<parent>
@@ -9,9 +9,9 @@ import org.springframework.util.StringUtils;
import com.querydsl.core.BooleanBuilder;
import com.querydsl.core.QueryResults;
import com.querydsl.core.Tuple;
import com.querydsl.core.types.Expression;
import com.querydsl.core.types.Order;
import com.querydsl.core.types.OrderSpecifier;
import com.querydsl.core.types.Path;
import com.querydsl.core.types.Predicate;
import com.querydsl.jpa.impl.JPAQuery;
import com.querydsl.jpa.impl.JPAQueryFactory;
@@ -50,29 +50,38 @@ public class TurnoverManager {
Long total = query.clone().select(qTurnover.id.countDistinct()).fetchOne();
if (StringUtils.hasText(sortBy)) {
Path<? extends Comparable<?>> path = null;
Expression<? extends Comparable<?>> expression = null;
switch (sortBy) {
case "username":
expression = qTurnover.username;
break;
case "created":
path = qTurnover.created;
expression = qTurnover.created;
break;
case "dueDate":
path = qTurnover.dueDate;
expression = qTurnover.dueDate;
break;
case "updated":
path = qTurnover.updated;
expression = qTurnover.updated;
break;
case "customer":
path = qTurnover.customer;
expression = qTurnover.customer;
break;
case "price":
path = qTurnover.price;
expression = qTurnover.price;
break;
case "timeInvestment":
path = qTurnover.timeInvestment;
expression = qTurnover.timeInvestment;
break;
case "giftcardPrice":
expression = qTurnover.giftcardPrice;
break;
case "giftcardNumber":
expression = qTurnover.giftcardNumber;
break;
}
if (path != null) {
query.orderBy(new OrderSpecifier<>(descending ? Order.DESC : Order.ASC, path));
if (expression != null) {
query.orderBy(new OrderSpecifier<>(descending ? Order.DESC : Order.ASC, expression));
}
}
@@ -177,20 +186,23 @@ public class TurnoverManager {
Long total = query.clone().select(qTurnover.username.countDistinct()).fetchOne();
if (StringUtils.hasText(sortBy)) {
Path<? extends Comparable<?>> path = null;
Expression<? extends Comparable<?>> expression = null;
switch (sortBy) {
case "username":
path = qTurnover.username;
expression = qTurnover.username;
break;
case "price":
path = qTurnover.price;
expression = qTurnover.price.sum();
break;
case "timeInvestment":
path = qTurnover.timeInvestment;
expression = qTurnover.timeInvestment.sum();
break;
case "giftcardPrice":
expression = qTurnover.giftcardPrice.sum();
break;
}
if (path != null) {
query.orderBy(new OrderSpecifier<>(descending ? Order.DESC : Order.ASC, path));
if (expression != null) {
query.orderBy(new OrderSpecifier<>(descending ? Order.DESC : Order.ASC, expression));
}
}