From e9a4418c14ef68fb454300b092c413e8df259ec2 Mon Sep 17 00:00:00 2001 From: Junjie <xjj@123> Date: 星期六, 13 四月 2024 11:50:56 +0800 Subject: [PATCH] # --- zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/common/domain/PageParam.java | 219 +++++++++++++++++++++++++++++------------------------- 1 files changed, 119 insertions(+), 100 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 a5d610f..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,16 +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.QueryType; +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 @@ -21,17 +23,38 @@ private final U where; + /** + * 鏄惁鎶婂瓧娈靛悕绉伴┘宄拌浆涓嬪垝绾� + */ + private final boolean isToUnderlineCase; + + private final Class<T> cls; + public PageParam() { this(null); } public PageParam(U where) { + 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.getPageIdx() != null) { - setCurrent(where.getPageIdx()); + if (where.getCurrent() != null) { + setCurrent(where.getCurrent()); } if (where.getPageSize() != null) { setSize(where.getPageSize()); @@ -39,116 +62,112 @@ } } - public QueryWrapper<T> getWrapper(String... excludes) { - return buildWrapper(null, Arrays.asList(excludes)); + public QueryWrapper<T> buildWrapper() { + return this.buildWrapper(false); } - private QueryWrapper<T> buildWrapper(List<String> columns, List<String> excludes) { + public QueryWrapper<T> buildWrapper(Consumer<QueryWrapper<T>> consumer) { + return this.buildWrapper(false, consumer); + } + + public QueryWrapper<T> buildWrapper(boolean like) { + return this.buildWrapper(like, null); + } + + @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; } - if (queryField.type() != null) { - 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()) { - continue; + 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 (this.isToUnderlineCase) { - fieldName = Utils.toSymbolCase(fieldName, '_'); + 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 (field.isAnnotationPresent(TableField.class)){ + TableField annotation = field.getAnnotation(TableField.class); + if (!annotation.exist()) { + continue; + } + } + + 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(); - 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(","))); + 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