package com.zy.asrs.wcs.common.domain; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.zy.asrs.framework.common.DateUtils; import com.zy.asrs.wcs.utils.Utils; import java.util.ArrayList; import java.util.Map; /** * Created by vincent on 2/13/2024 */ public class PageParam extends Page { private static final long serialVersionUID = 1L; private final U where; /** * 是否把字段名称驼峰转下划线 */ private final boolean isToUnderlineCase; public PageParam() { this(null); } public PageParam(U where) { this(where, true); } public PageParam(U where, boolean isToUnderlineCase) { super(); this.where = where; this.isToUnderlineCase = isToUnderlineCase; if (where != null) { if (where.getCurrent() != null) { setCurrent(where.getCurrent()); } if (where.getPageSize() != null) { setSize(where.getPageSize()); } } } public QueryWrapper buildWrapper() { return this.buildWrapper(false); } @SuppressWarnings("all") public QueryWrapper buildWrapper(boolean like) { QueryWrapper queryWrapper = new QueryWrapper<>(); Map map = where.getMap(); for (String key : map.keySet()) { Object val = map.get(key); if (key.contains("Range")) { ArrayList list = null; if (val instanceof ArrayList) { list = (ArrayList) 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) { queryWrapper.like(key, val); } else { queryWrapper.eq(key, val); } } // 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(","))); // } // break; // case NOT_IN_STR: // if (fieldValue instanceof String) { // queryWrapper.notIn(fieldName, Arrays.asList(((String) fieldValue).split(","))); // } // break; // } } return queryWrapper; } }