From bcd9cb83cbbb36217cb99ced7bf1fa3cb26bd53c Mon Sep 17 00:00:00 2001
From: zjj <3272660260@qq.com>
Date: 星期一, 28 四月 2025 16:59:51 +0800
Subject: [PATCH] #wms端生成任务优化

---
 rsf-server/src/main/java/com/vincent/rsf/server/common/domain/PageParam.java |  144 ++++++++++++++++++++++++++++++++++++++++++------
 1 files changed, 126 insertions(+), 18 deletions(-)

diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/common/domain/PageParam.java b/rsf-server/src/main/java/com/vincent/rsf/server/common/domain/PageParam.java
index 7f8604e..e116812 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/common/domain/PageParam.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/common/domain/PageParam.java
@@ -10,10 +10,7 @@
 
 import java.lang.reflect.Field;
 import java.lang.reflect.Modifier;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 import java.util.function.Consumer;
 
 /**
@@ -73,6 +70,10 @@
         return this.buildWrapper(like, null, timeField);
     }
 
+    public QueryWrapper<T> buildWrapper(boolean like, List<String> fields) {
+        return this.buildWrapper(like, null, "create_time", fields);
+    }
+
     @SuppressWarnings("all")
     public QueryWrapper<T> buildWrapper(boolean like, Consumer<QueryWrapper<T>> consumer, String timeField) {
         QueryWrapper<T> queryWrapper = new QueryWrapper<>();
@@ -97,10 +98,13 @@
                 if (this.isToUnderlineCase) {
                     key = Utils.toSymbolCase(key, '_');
                 }
-                if (like) {
-                    queryWrapper.like("`" +  key + "`", val);
+                String finalKey = key;
+                if (like && key.contains(timeField)) {
+                    queryWrapper.and(wrapper -> wrapper.like("`" + finalKey + "`", val));
+//                    queryWrapper.like("`" +  key + "`", val);
                 } else {
-                    queryWrapper.eq("`" +  key + "`", val);
+                    queryWrapper.and(wrapper -> wrapper.eq("`" + finalKey + "`", val));
+//                    queryWrapper.eq("`" +  key + "`", val);
                 }
             }
         }
@@ -129,34 +133,137 @@
 
         if (!Cools.isEmpty(where.getCondition()) && !Cools.isEmpty(cls)) {
             List<String> columns = new ArrayList<>();
-            for (Field field : Cools.getAllFields(cls)){
+            for (Field field : Cools.getAllFields(cls)) {
                 if (Modifier.isFinal(field.getModifiers())
                         || Modifier.isStatic(field.getModifiers())
-                        || Modifier.isTransient(field.getModifiers())){
+                        || Modifier.isTransient(field.getModifiers())) {
                     continue;
                 }
 
-                if (field.isAnnotationPresent(TableField.class)){
+                if (field.isAnnotationPresent(TableField.class)) {
                     TableField annotation = field.getAnnotation(TableField.class);
                     if (!annotation.exist()) {
                         continue;
                     }
                 }
 
-                String column =  Utils.toSymbolCase(field.getName(), '_');
+                String column = Utils.toSymbolCase(field.getName(), '_');
                 columns.add(column);
             }
             if (!columns.isEmpty()) {
-                for (int i=0;i<columns.size();i++){
-                    String column = columns.get(i);
-                    String condition = where.getCondition();
+                queryWrapper.and(wrapper -> {
+                    for (int i = 0; i < columns.size(); i++) {
+                        String column = columns.get(i);
+                        String condition = where.getCondition();
+                        if (i == 0) {
+                            wrapper.or().like("`" + column + "`", condition);
+                        } else {
+                            wrapper.or().like("`" + column + "`", condition);
+                        }
+                    }
+                });
+            }
+        }
+        return queryWrapper;
+    }
 
-                    if (i == 0) {
-                        queryWrapper.and(wrapper -> wrapper.like("`" + column + "`", condition));
-                    } else {
-                        queryWrapper.or().like("`" + column + "`", condition);
+    @SuppressWarnings("all")
+    public QueryWrapper<T> buildWrapper(boolean like, Consumer<QueryWrapper<T>> consumer, String timeField, List<String> fields) {
+        QueryWrapper<T> queryWrapper = new QueryWrapper<>();
+        Map<String, Object> map = where.getMap();
+        for (String key : map.keySet()) {
+            Object val = map.get(key);
+
+            if (key.contains("Range")) {
+                ArrayList<String> list = null;
+                if (val instanceof ArrayList) {
+                    list = (ArrayList<String>) val;
+                }
+                if (null != list) {
+                    key = key.replaceAll("Range", "");
+                    if (this.isToUnderlineCase) {
+                        key = Utils.toSymbolCase(key, '_');
+                    }
+                    queryWrapper.ge(key, DateUtils.convert(list.get(0)));
+                    queryWrapper.le(key, DateUtils.convert(list.get(1)));
+                }
+            } else {
+                if (this.isToUnderlineCase) {
+                    key = Utils.toSymbolCase(key, '_');
+                }
+                if (like && !fields.contains(key)) {
+                    queryWrapper.like("`" + key + "`", val);
+                } else {
+                    queryWrapper.eq("`" + key + "`", val);
+                }
+            }
+        }
+
+        if (null != consumer) {
+            consumer.accept(queryWrapper);
+        }
+
+        if (!Cools.isEmpty(where.getTimeStart())) {
+            Date timeStart = DateUtils.convert(String.valueOf(where.getTimeStart()), DateUtils.yyyyMMdd_F);
+            queryWrapper.ge(timeField, timeStart);
+
+        }
+        if (!Cools.isEmpty(where.getTimeEnd())) {
+            Date timeStart = DateUtils.convert(String.valueOf(where.getTimeEnd()), DateUtils.yyyyMMdd_F);
+            queryWrapper.le(timeField, timeStart);
+        }
+
+        if (!Cools.isEmpty(where.getOrderBy())) {
+            if (sortIsSQL(where.getOrderBy())) {
+                setOrders(parseOrderSQL(where.getOrderBy()));
+            }
+        } else {
+//            queryWrapper.orderByDesc("create_time");
+        }
+
+        if (!Cools.isEmpty(where.getCondition()) && !Cools.isEmpty(cls)) {
+            List<String> columns = new ArrayList<>();
+            for (Field field : Cools.getAllFields(cls)) {
+                if (Modifier.isFinal(field.getModifiers())
+                        || Modifier.isStatic(field.getModifiers())
+                        || Modifier.isTransient(field.getModifiers())) {
+                    continue;
+                }
+
+                if (field.isAnnotationPresent(TableField.class)) {
+                    TableField annotation = field.getAnnotation(TableField.class);
+                    if (!annotation.exist()) {
+                        continue;
                     }
                 }
+
+                String column = Utils.toSymbolCase(field.getName(), '_');
+                columns.add(column);
+            }
+//            if (!columns.isEmpty()) {
+//                for (int i=0;i<columns.size();i++){
+//                    String column = columns.get(i);
+//                    String condition = where.getCondition();
+//
+//                    if (i == 0) {
+//                        queryWrapper.and(wrapper -> wrapper.like("`" + column + "`", condition));
+//                    } else {
+//                        queryWrapper.or().like("`" + column + "`", condition);
+//                    }
+//                }
+//            }
+            if (!columns.isEmpty()) {
+                queryWrapper.and(wrapper -> {
+                    for (int i = 0; i < columns.size(); i++) {
+                        String column = columns.get(i);
+                        String condition = where.getCondition();
+                        if (i == 0) {
+                            wrapper.or().like("`" + column + "`", condition);
+                        } else {
+                            wrapper.or().like("`" + column + "`", condition);
+                        }
+                    }
+                });
             }
         }
         return queryWrapper;
@@ -198,4 +305,5 @@
         return map;
     }
 
+
 }

--
Gitblit v1.9.1