| | |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | import java.util.Objects; |
| | | import java.util.regex.Pattern; |
| | | import java.util.stream.Collectors; |
| | | |
| | | /** |
| | | * mongo工具类 |
| | |
| | | * @param gbFiled 国标码字段是哪一个 |
| | | * @param timeFiled 时间字段是哪一个 |
| | | * @param gbList 国标码 |
| | | * @param likeFileds 使用like查询的字段 |
| | | */ |
| | | public static Query getQuery(DataCenterQuery params, String gbFiled, String timeFiled, List<String> gbList) { |
| | | public static Query getQuery(DataCenterQuery params, String gbFiled, String timeFiled, List<String> likeFileds, List<String> gbList) { |
| | | // 关键字 |
| | | TextCriteria text = null; |
| | | if (StringUtils.hasText(params.getKeyword())) { |
| | | text = TextCriteria.forDefaultLanguage().matching(params.getKeyword()); |
| | | List<Criteria> likeList = null; |
| | | if (StringUtils.hasText(params.getKeyword()) && !CollectionUtils.isEmpty(likeFileds)) { |
| | | // 转义 |
| | | String keyword = Pattern.quote(params.getKeyword()); |
| | | likeList = likeFileds.stream().map(filed -> { |
| | | return Criteria.where(filed).regex(".*?" + keyword + ".*"); |
| | | }).collect(Collectors.toList()); |
| | | } |
| | | // 将like字段or起来 |
| | | Criteria or = null; |
| | | if (! CollectionUtils.isEmpty(likeList)) { |
| | | or = new Criteria(); |
| | | or.orOperator(likeList); |
| | | } |
| | | |
| | | Criteria in = null; |
| | |
| | | // 将查询条件and起来 |
| | | Criteria and = new Criteria(); |
| | | List<Criteria> qList = new ArrayList<>(3); |
| | | if (Objects.nonNull(text)) { |
| | | qList.add(Criteria.byExample(text)); |
| | | } |
| | | qList.add(time); |
| | | if (Objects.nonNull(in)) { |
| | | qList.add(in); |
| | | } |
| | | qList.add(time); |
| | | if (Objects.nonNull(or)) { |
| | | qList.add(or); |
| | | } |
| | | and.andOperator(qList); |
| | | // 返回查询 |
| | | return Query.query(and); |