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.source>${java.version}</maven.compiler.source>
<maven.compiler.target>${java.version}</maven.compiler.target> <maven.compiler.target>${java.version}</maven.compiler.target>
<querydsl.version>5.1.0</querydsl.version> <querydsl.version>5.1.0</querydsl.version>
<revision>0.5.0</revision> <revision>0.5.1</revision>
</properties> </properties>
<parent> <parent>
@@ -9,9 +9,9 @@ import org.springframework.util.StringUtils;
import com.querydsl.core.BooleanBuilder; import com.querydsl.core.BooleanBuilder;
import com.querydsl.core.QueryResults; import com.querydsl.core.QueryResults;
import com.querydsl.core.Tuple; import com.querydsl.core.Tuple;
import com.querydsl.core.types.Expression;
import com.querydsl.core.types.Order; import com.querydsl.core.types.Order;
import com.querydsl.core.types.OrderSpecifier; import com.querydsl.core.types.OrderSpecifier;
import com.querydsl.core.types.Path;
import com.querydsl.core.types.Predicate; import com.querydsl.core.types.Predicate;
import com.querydsl.jpa.impl.JPAQuery; import com.querydsl.jpa.impl.JPAQuery;
import com.querydsl.jpa.impl.JPAQueryFactory; import com.querydsl.jpa.impl.JPAQueryFactory;
@@ -50,29 +50,38 @@ public class TurnoverManager {
Long total = query.clone().select(qTurnover.id.countDistinct()).fetchOne(); Long total = query.clone().select(qTurnover.id.countDistinct()).fetchOne();
if (StringUtils.hasText(sortBy)) { if (StringUtils.hasText(sortBy)) {
Path<? extends Comparable<?>> path = null; Expression<? extends Comparable<?>> expression = null;
switch (sortBy) { switch (sortBy) {
case "username":
expression = qTurnover.username;
break;
case "created": case "created":
path = qTurnover.created; expression = qTurnover.created;
break; break;
case "dueDate": case "dueDate":
path = qTurnover.dueDate; expression = qTurnover.dueDate;
break; break;
case "updated": case "updated":
path = qTurnover.updated; expression = qTurnover.updated;
break; break;
case "customer": case "customer":
path = qTurnover.customer; expression = qTurnover.customer;
break; break;
case "price": case "price":
path = qTurnover.price; expression = qTurnover.price;
break; break;
case "timeInvestment": case "timeInvestment":
path = qTurnover.timeInvestment; expression = qTurnover.timeInvestment;
break;
case "giftcardPrice":
expression = qTurnover.giftcardPrice;
break;
case "giftcardNumber":
expression = qTurnover.giftcardNumber;
break; break;
} }
if (path != null) { if (expression != null) {
query.orderBy(new OrderSpecifier<>(descending ? Order.DESC : Order.ASC, path)); 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(); Long total = query.clone().select(qTurnover.username.countDistinct()).fetchOne();
if (StringUtils.hasText(sortBy)) { if (StringUtils.hasText(sortBy)) {
Path<? extends Comparable<?>> path = null; Expression<? extends Comparable<?>> expression = null;
switch (sortBy) { switch (sortBy) {
case "username": case "username":
path = qTurnover.username; expression = qTurnover.username;
break; break;
case "price": case "price":
path = qTurnover.price; expression = qTurnover.price.sum();
break; break;
case "timeInvestment": case "timeInvestment":
path = qTurnover.timeInvestment; expression = qTurnover.timeInvestment.sum();
break;
case "giftcardPrice":
expression = qTurnover.giftcardPrice.sum();
break; break;
} }
if (path != null) { if (expression != null) {
query.orderBy(new OrderSpecifier<>(descending ? Order.DESC : Order.ASC, path)); query.orderBy(new OrderSpecifier<>(descending ? Order.DESC : Order.ASC, expression));
} }
} }