| | |
| | | package com.ycl.utils; |
| | | |
| | | import com.ycl.platform.domain.query.DataCenterQuery; |
| | | import org.springframework.data.domain.Sort; |
| | | import org.springframework.data.mongodb.core.query.Criteria; |
| | | import org.springframework.data.mongodb.core.query.Query; |
| | | import org.springframework.data.mongodb.core.query.TextCriteria; |
| | | import org.springframework.util.CollectionUtils; |
| | | import org.springframework.util.StringUtils; |
| | | |
| | | import java.lang.reflect.Field; |
| | | import java.util.ArrayList; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | import java.util.Objects; |
| | | |
| | | /** |
| | |
| | | public class MongoUtil { |
| | | |
| | | /** |
| | | * 构造全文索引的条件 |
| | | * 构造数据中心搜索的条件 |
| | | * |
| | | * @param query |
| | | * @param keyword |
| | | * @param params 数据中心请求参数 |
| | | * @param gbFiled 国标码字段是哪一个 |
| | | * @param timeFiled 时间字段是哪一个 |
| | | * @param gbList 国标码 |
| | | */ |
| | | public static void fullText(Query query, String keyword) { |
| | | if (StringUtils.hasText(keyword)) { |
| | | TextCriteria criteria = TextCriteria.forDefaultLanguage().matching(keyword); |
| | | query.addCriteria(criteria); |
| | | public static Query getQuery(DataCenterQuery params, String gbFiled, String timeFiled, List<String> gbList) { |
| | | // 关键字 |
| | | TextCriteria text = null; |
| | | if (StringUtils.hasText(params.getKeyword())) { |
| | | text = TextCriteria.forDefaultLanguage().matching(params.getKeyword()); |
| | | } |
| | | |
| | | Criteria in = null; |
| | | // in |
| | | if (! CollectionUtils.isEmpty(gbList)) { |
| | | in = Criteria.where(gbFiled).in(gbList); |
| | | } |
| | | |
| | | // 时间 |
| | | Criteria time = Criteria.where(timeFiled).gte(params.getStartTime()).lte(params.getEndTime()); |
| | | |
| | | // 将查询条件and起来 |
| | | Criteria and = new Criteria(); |
| | | List<Criteria> qList = new ArrayList<>(3); |
| | | if (Objects.nonNull(text)) { |
| | | qList.add(Criteria.byExample(text)); |
| | | } |
| | | if (Objects.nonNull(in)) { |
| | | qList.add(in); |
| | | } |
| | | qList.add(time); |
| | | and.andOperator(qList); |
| | | // 返回查询 |
| | | return Query.query(and); |
| | | } |
| | | |
| | | /** |
| | | * 构造数据中心搜索的条件 |
| | | * |
| | | * @param query 查询条件 |
| | | * @param timeFiled 时间字段是哪一个 |
| | | * @param params 请求参数 |
| | | */ |
| | | public static void setPage(Query query,DataCenterQuery params, String timeFiled) { |
| | | // 排序分页 |
| | | query.with(Sort.by(Sort.Order.desc(timeFiled))).skip(params.getSkipNum()).limit(Math.toIntExact(params.getPageSize())); |
| | | } |
| | | |
| | | } |