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<T, U extends BaseParam> extends Page<T> {
|
|
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<T> buildWrapper() {
|
return this.buildWrapper(false);
|
}
|
|
@SuppressWarnings("all")
|
public QueryWrapper<T> buildWrapper(boolean like) {
|
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) {
|
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;
|
}
|
|
}
|