From af1df4e84a7a48bdc9296f681fa33c7345eb642c Mon Sep 17 00:00:00 2001
From: zwl <1051256694@qq.com>
Date: 星期一, 23 三月 2026 20:06:46 +0800
Subject: [PATCH] 修复

---
 src/main/java/com/zy/common/web/BaseController.java |   56 ++++++++++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 54 insertions(+), 2 deletions(-)

diff --git a/src/main/java/com/zy/common/web/BaseController.java b/src/main/java/com/zy/common/web/BaseController.java
index b583ca8..c6166d2 100644
--- a/src/main/java/com/zy/common/web/BaseController.java
+++ b/src/main/java/com/zy/common/web/BaseController.java
@@ -161,8 +161,8 @@
         if (Cools.isEmpty(condition)) {
             return;
         }
-        String keyword = String.valueOf(condition).trim();
-        if (keyword.isEmpty()) {
+        String keyword = normalizeFilterText(condition);
+        if (keyword == null || keyword.isEmpty()) {
             return;
         }
         boolean appended = false;
@@ -208,6 +208,58 @@
         }
     }
 
+    protected String normalizeFilterText(Object rawValue) {
+        if (rawValue == null) {
+            return null;
+        }
+        String normalized = String.valueOf(rawValue).trim();
+        if (normalized.isEmpty() || "null".equalsIgnoreCase(normalized)) {
+            return null;
+        }
+        return normalized;
+    }
+
+    protected <T> Object resolveFilterValue(Class<T> cls, String columnName, Object rawValue) {
+        String normalized = normalizeFilterText(rawValue);
+        if (normalized == null) {
+            return null;
+        }
+        Class<?> fieldType = resolveFieldType(cls, columnName);
+        if (fieldType == null) {
+            return normalized;
+        }
+        Object parsedValue = parseExactSearchValue(fieldType, normalized);
+        return parsedValue != null ? parsedValue : normalized;
+    }
+
+    private <T> Class<?> resolveFieldType(Class<T> cls, String columnName) {
+        if (cls == null || Cools.isEmpty(columnName)) {
+            return null;
+        }
+        for (Field field : Cools.getAllFields(cls)) {
+            if (Modifier.isFinal(field.getModifiers())
+                    || Modifier.isStatic(field.getModifiers())
+                    || Modifier.isTransient(field.getModifiers())) {
+                continue;
+            }
+            String column = null;
+            if (field.isAnnotationPresent(TableField.class)) {
+                TableField tableField = field.getAnnotation(TableField.class);
+                if (!tableField.exist()) {
+                    continue;
+                }
+                column = tableField.value();
+            }
+            if (Cools.isEmpty(column)) {
+                column = field.getName();
+            }
+            if (columnName.equals(column) || columnName.equals(field.getName())) {
+                return field.getType();
+            }
+        }
+        return null;
+    }
+
     private boolean supportsLikeSearch(Class<?> fieldType) {
         return CharSequence.class.isAssignableFrom(fieldType)
                 || fieldType == Character.class

--
Gitblit v1.9.1