From d53301b8a3fade905d93b96b91c6f0a64cbdef27 Mon Sep 17 00:00:00 2001 From: lanyuanxiaoyao Date: Thu, 21 Aug 2025 15:50:41 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=A2=9E=E5=8A=A0=E6=97=A5=E6=9C=9F?= =?UTF-8?q?=E7=B1=BB=E5=9E=8B=E7=9A=84=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../template/service/SimpleServiceSupport.java | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/lanyuanxiaoyao/service/template/service/SimpleServiceSupport.java b/src/main/java/com/lanyuanxiaoyao/service/template/service/SimpleServiceSupport.java index 96609e2..0104cbb 100644 --- a/src/main/java/com/lanyuanxiaoyao/service/template/service/SimpleServiceSupport.java +++ b/src/main/java/com/lanyuanxiaoyao/service/template/service/SimpleServiceSupport.java @@ -11,6 +11,8 @@ import jakarta.persistence.criteria.Path; import jakarta.persistence.criteria.Predicate; import jakarta.persistence.criteria.Root; import jakarta.transaction.Transactional; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.Collection; import java.util.List; @@ -87,6 +89,7 @@ import org.springframework.data.domain.Sort; */ @Slf4j public abstract class SimpleServiceSupport implements SimpleService { + private static final DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); private static final Integer DEFAULT_PAGE_INDEX = 1; private static final Integer DEFAULT_PAGE_SIZE = 10; protected final SimpleRepository repository; @@ -213,6 +216,8 @@ public abstract class SimpleServiceSupport implemen } else { throw new IllegalArgumentException("枚举类型字段需要 String 类型的值"); } + } else if (javaType.isAssignableFrom(LocalDateTime.class)) { + return LocalDateTime.parse(String.valueOf(value), DATE_TIME_FORMATTER); } return value; } @@ -328,28 +333,28 @@ public abstract class SimpleServiceSupport implemen queryable.getGreat().forEach((column, value) -> { var path = this.>column(root, column); checkComparable(path, value, column); - predicates.add(builder.greaterThan(path, (Comparable) value)); + predicates.add(builder.greaterThan(path, (Comparable) value(path, value))); }); } if (ObjectHelper.isNotEmpty(queryable.getLess())) { queryable.getLess().forEach((column, value) -> { var path = this.>column(root, column); checkComparable(path, value, column); - predicates.add(builder.lessThan(path, (Comparable) value)); + predicates.add(builder.lessThan(path, (Comparable) value(path, value))); }); } if (ObjectHelper.isNotEmpty(queryable.getGreatEqual())) { queryable.getGreatEqual().forEach((column, value) -> { var path = this.>column(root, column); checkComparable(path, value, column); - predicates.add(builder.greaterThanOrEqualTo(path, (Comparable) value)); + predicates.add(builder.greaterThanOrEqualTo(path, (Comparable) value(path, value))); }); } if (ObjectHelper.isNotEmpty(queryable.getLessEqual())) { queryable.getLessEqual().forEach((column, value) -> { var path = this.>column(root, column); checkComparable(path, value, column); - predicates.add(builder.lessThanOrEqualTo(path, (Comparable) value)); + predicates.add(builder.lessThanOrEqualTo(path, (Comparable) value(path, value))); }); } if (ObjectHelper.isNotEmpty(queryable.getInside())) { @@ -362,14 +367,14 @@ public abstract class SimpleServiceSupport implemen queryable.getBetween().forEach((column, value) -> { var path = this.>column(root, column); checkComparable(path, value, column); - predicates.add(builder.between(column(root, column), (Comparable) value.getStart(), (Comparable) value.getEnd())); + predicates.add(builder.between(column(root, column), (Comparable) value(path, value.getStart()), (Comparable) value(path, value.getEnd()))); }); } if (ObjectHelper.isNotEmpty(queryable.getNotBetween())) { queryable.getNotBetween().forEach((column, value) -> { var path = this.>column(root, column); checkComparable(path, value, column); - predicates.add(builder.between(column(root, column), (Comparable) value.getStart(), (Comparable) value.getEnd()).not()); + predicates.add(builder.between(column(root, column), (Comparable) value(path, value.getStart()), (Comparable) value(path, value.getEnd())).not()); }); }