From d2ea33b96cb1394b5546b1bfc557c1c984e4bc5b Mon Sep 17 00:00:00 2001 From: skyouc Date: 星期二, 22 四月 2025 12:36:50 +0800 Subject: [PATCH] 出库单明细功能优化 --- rsf-server/src/main/java/com/vincent/rsf/server/common/domain/PageParam.java | 136 ++++++++++++++++++++++++++++++++++++++++---- 1 files changed, 122 insertions(+), 14 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 aaed56c..7cb5cfb 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); } } } @@ -147,16 +151,119 @@ 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