From 50435a81915932eda06b7f1afd48f9ff1ae84f19 Mon Sep 17 00:00:00 2001
From: zhangc <zc@123>
Date: 星期四, 10 四月 2025 17:50:28 +0800
Subject: [PATCH] 1
---
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/common/domain/PageParam.java | 214 ++++++++++++++++++++++++++---------------------------
1 files changed, 106 insertions(+), 108 deletions(-)
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/common/domain/PageParam.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/common/domain/PageParam.java
index f94705f..83c0a9e 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/common/domain/PageParam.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/common/domain/PageParam.java
@@ -1,18 +1,18 @@
package com.zy.asrs.wcs.common.domain;
import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.zy.asrs.framework.common.Cools;
-import com.zy.asrs.framework.domain.QueryField;
-import com.zy.asrs.framework.domain.QueryType;
-import com.zy.asrs.wcs.utils.Utils;
+import com.zy.asrs.framework.common.DateUtils;
+import com.zy.asrs.wcs.utils.CommonUtils;
import java.lang.reflect.Field;
-import java.util.Arrays;
+import java.lang.reflect.Modifier;
+import java.util.ArrayList;
import java.util.List;
import java.util.Map;
+import java.util.function.Consumer;
/**
* Created by vincent on 2/13/2024
@@ -28,6 +28,8 @@
*/
private final boolean isToUnderlineCase;
+ private final Class<T> cls;
+
public PageParam() {
this(null);
}
@@ -36,10 +38,20 @@
this(where, true);
}
+ public PageParam(U where, Class<T> cls) {
+ this(where, true, cls);
+ }
+
public PageParam(U where, boolean isToUnderlineCase) {
+ this(where, isToUnderlineCase, null);
+ }
+
+
+ public PageParam(U where, boolean isToUnderlineCase, Class<T> cls) {
super();
this.where = where;
this.isToUnderlineCase = isToUnderlineCase;
+ this.cls = cls;
if (where != null) {
if (where.getCurrent() != null) {
setCurrent(where.getCurrent());
@@ -50,126 +62,112 @@
}
}
- /**
- * @param excludes 涓嶅寘鍚殑瀛楁
- */
- public QueryWrapper<T> getWrapper(String... excludes) {
- return buildWrapper(null, Arrays.asList(excludes));
+ public QueryWrapper<T> buildWrapper() {
+ return this.buildWrapper(false);
}
- /**
- * @param columns 鍙寘鍚殑瀛楁
- */
- public QueryWrapper<T> getWrapperWith(String... columns) {
- return buildWrapper(Arrays.asList(columns), null);
+ public QueryWrapper<T> buildWrapper(Consumer<QueryWrapper<T>> consumer) {
+ return this.buildWrapper(false, consumer);
}
+ public QueryWrapper<T> buildWrapper(boolean like) {
+ return this.buildWrapper(like, null);
+ }
- private QueryWrapper<T> buildWrapper(List<String> columns, List<String> excludes) {
+ @SuppressWarnings("all")
+ public QueryWrapper<T> buildWrapper(boolean like, Consumer<QueryWrapper<T>> consumer) {
QueryWrapper<T> queryWrapper = new QueryWrapper<>();
- Map<String, Object> map = Cools.conver(where);
- for (String fieldName : map.keySet()) {
- Object fieldValue = map.get(fieldName);
- Field field = Cools.getField(where.getClass(), fieldName);
- assert field != null;
- // 杩囨护涓嶅寘鍚殑瀛楁
- if (columns != null && !columns.contains(fieldName)) {
- continue;
- }
+ Map<String, Object> map = where.getMap();
+ for (String key : map.keySet()) {
+ Object val = map.get(key);
- // 杩囨护鎺掗櫎鐨勫瓧娈�
- if (excludes != null && excludes.contains(fieldName)) {
- continue;
- }
-
- // 杩囨护閫昏緫鍒犻櫎瀛楁
- if (field.getAnnotation(TableLogic.class) != null) {
- continue;
- }
-
- // 杩囨护绉熸埛id瀛楁
- if (fieldName.equals("hostId")) {
- continue;
- }
-
- // 鑾峰彇娉ㄨВ鎸囧畾鐨勬煡璇㈠瓧娈靛強鏌ヨ鏂瑰紡
- QueryType queryType = QueryType.LIKE;
- QueryField queryField = field.getAnnotation(QueryField.class);
- if (queryField != null) {
- if (!Cools.isEmpty(queryField.value())) {
- fieldName = queryField.value();
+ if (key.contains("Range")) {
+ ArrayList<String> list = null;
+ if (val instanceof ArrayList) {
+ list = (ArrayList<String>) val;
}
- queryField.type();
- queryType = queryField.type();
+ if (null != list) {
+ key = key.replaceAll("Range", "");
+ if (this.isToUnderlineCase) {
+ key = CommonUtils.toSymbolCase(key, '_');
+ }
+ queryWrapper.ge(key, DateUtils.convert(list.get(0)));
+ queryWrapper.le(key, DateUtils.convert(list.get(1)));
+ }
} else {
- // 杩囨护闈炴湰琛ㄧ殑瀛楁
- TableField tableField = field.getAnnotation(TableField.class);
- if (tableField != null && !tableField.exist()) {
+ if (this.isToUnderlineCase) {
+ key = CommonUtils.toSymbolCase(key, '_');
+ }
+ if (like) {
+ queryWrapper.like(key, val);
+ } else {
+ queryWrapper.eq(key, val);
+ }
+
+ }
+ }
+
+ if (null != consumer) {
+ consumer.accept(queryWrapper);
+ }
+
+ Field[] fields = null;
+ if (!Cools.isEmpty(cls)) {
+ fields = Cools.getAllFields(cls);
+ for (Field field : fields) {
+ if ("createTime".equals(field.getName())) {
+ queryWrapper.orderByDesc(CommonUtils.toSymbolCase(field.getName(), '_'));
+ }
+ }
+ }
+
+ if (!Cools.isEmpty(where.getCondition()) && !Cools.isEmpty(fields)) {
+ List<String> columns = new ArrayList<>();
+ for (Field field : fields){
+ if (Modifier.isFinal(field.getModifiers())
+ || Modifier.isStatic(field.getModifiers())
+ || Modifier.isTransient(field.getModifiers())){
continue;
}
- }
- // 瀛楁鍚嶉┘宄拌浆涓嬪垝绾�
- if (this.isToUnderlineCase) {
- fieldName = Utils.toSymbolCase(fieldName, '_');
- }
+ if (field.isAnnotationPresent(TableField.class)){
+ TableField annotation = field.getAnnotation(TableField.class);
+ if (!annotation.exist()) {
+ continue;
+ }
+ }
- switch (queryType) {
- case EQ:
- queryWrapper.eq(fieldName, fieldValue);
- break;
- case NE:
- queryWrapper.ne(fieldName, fieldValue);
- break;
- case GT:
- queryWrapper.gt(fieldName, fieldValue);
- break;
- case GE:
- queryWrapper.ge(fieldName, fieldValue);
- break;
- case LT:
- queryWrapper.lt(fieldName, fieldValue);
- break;
- case LE:
- queryWrapper.le(fieldName, fieldValue);
- break;
- case LIKE:
- queryWrapper.like(fieldName, fieldValue);
- break;
- case NOT_LIKE:
- queryWrapper.notLike(fieldName, fieldValue);
- break;
- case LIKE_LEFT:
- queryWrapper.likeLeft(fieldName, fieldValue);
- break;
- case LIKE_RIGHT:
- queryWrapper.likeRight(fieldName, fieldValue);
- break;
- case IS_NULL:
- queryWrapper.isNull(fieldName);
- break;
- case IS_NOT_NULL:
- queryWrapper.isNotNull(fieldName);
- break;
- case IN:
- queryWrapper.in(fieldName, fieldValue);
- break;
- case NOT_IN:
- queryWrapper.notIn(fieldName, fieldValue);
- break;
- case IN_STR:
- if (fieldValue instanceof String) {
- queryWrapper.in(fieldName, Arrays.asList(((String) fieldValue).split(",")));
+ String column = CommonUtils.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);
}
- break;
- case NOT_IN_STR:
- if (fieldValue instanceof String) {
- queryWrapper.notIn(fieldName, Arrays.asList(((String) fieldValue).split(",")));
- }
- break;
+ }
}
}
return queryWrapper;
}
+ public Map<String, Object> pickOutMap() {
+ return pickOutMap(false);
+ }
+
+ public Map<String, Object> pickOutMap(boolean mergeCondition) {
+ Map<String, Object> map = where.getMap();
+ if (mergeCondition) {
+ if (!Cools.isEmpty(where.getCondition())) {
+ map.put("condition", where.getCondition());
+ }
+ }
+ return map;
+ }
+
}
--
Gitblit v1.9.1