| | |
| | | // 时间 |
| | | Criteria time = Criteria.where(timeFiled).gte(params.getStartTime()).lte(params.getEndTime()); |
| | | |
| | | // 数据类型 |
| | | Criteria dType = null; |
| | | if (params.getDataType().equals(1)) { |
| | | dType = Criteria.where("provinceTag").is(Boolean.TRUE); |
| | | }else if(params.getDataType().equals(2)){ |
| | | dType = Criteria.where("deptTag").is(Boolean.TRUE); |
| | | } |
| | | |
| | | // 将查询条件and起来 |
| | | Criteria and = new Criteria(); |
| | | List<Criteria> qList = new ArrayList<>(3); |
| | |
| | | if (Objects.nonNull(or)) { |
| | | qList.add(or); |
| | | } |
| | | if (Objects.nonNull(dType)) { |
| | | qList.add(dType); |
| | | } |
| | | and.andOperator(qList); |
| | | // 返回查询 |
| | | return Query.query(and); |
| | | } |
| | | |
| | | |
| | | public static Query getQueryDataCenter(String deptCode, DataCenterQuery params, String timeFiled, List<String> likeFileds, Integer dataAuth,String fieldName) { |
| | | // 关键字模糊查询条件 |
| | | List<Criteria> likeList = null; |
| | | if (StringUtils.hasText(params.getKeyword()) && !CollectionUtils.isEmpty(likeFileds)) { |
| | | // 转义特殊字符 |
| | | String keyword = Pattern.quote(params.getKeyword()); |
| | | likeList = likeFileds.stream() |
| | | .map(filed -> Criteria.where(filed).regex(".*?" + keyword + ".*")) |
| | | .collect(Collectors.toList()); |
| | | } |
| | | |
| | | // 将模糊查询字段用OR连接 |
| | | Criteria or = null; |
| | | if (!CollectionUtils.isEmpty(likeList)) { |
| | | or = new Criteria(); |
| | | or.orOperator(likeList); |
| | | } |
| | | |
| | | // 数据权限标签条件 |
| | | Criteria tag = null; |
| | | if (Objects.nonNull(dataAuth)) { |
| | | switch (dataAuth) { |
| | | case 1: tag = Criteria.where("deptTag").is(Boolean.TRUE); break; |
| | | case 2: tag = Criteria.where("provinceTag").is(Boolean.TRUE); break; |
| | | case 3: tag = Criteria.where("importantTag").is(Boolean.TRUE); break; |
| | | case 4: tag = Criteria.where("importantCommandImageTag").is(Boolean.TRUE); break; |
| | | case 5: tag = Criteria.where("newDevice").is(Boolean.TRUE); break; |
| | | default: break; |
| | | } |
| | | } |
| | | |
| | | // 时间范围条件 |
| | | Criteria time = Criteria.where(timeFiled).gte(params.getStartTime()).lte(params.getEndTime()); |
| | | |
| | | // 数据类型条件 |
| | | Criteria dType = null; |
| | | if (params.getDataType().equals(1)) { |
| | | dType = Criteria.where("provinceTag").is(Boolean.TRUE); |
| | | } else if(params.getDataType().equals(2)) { |
| | | dType = Criteria.where("deptTag").is(Boolean.TRUE); |
| | | } |
| | | Criteria noStartsWithDept = null; |
| | | if("no".equals(fieldName)){ |
| | | // 新增:no字段以deptCode开头的条件 |
| | | |
| | | if (StringUtils.hasText(deptCode)) { |
| | | // 使用正则表达式匹配开头,并转义特殊字符 |
| | | noStartsWithDept = Criteria.where("no").regex("^" + Pattern.quote(deptCode)); |
| | | } |
| | | }else if ("deviceNo".equals(fieldName)){ |
| | | // 新增:no字段以deptCode开头的条件 |
| | | if (StringUtils.hasText(deptCode)) { |
| | | // 使用正则表达式匹配开头,并转义特殊字符 |
| | | noStartsWithDept = Criteria.where("deviceNo").regex("^" + Pattern.quote(deptCode)); |
| | | } |
| | | } |
| | | |
| | | |
| | | // 将所有条件用AND连接 |
| | | Criteria and = new Criteria(); |
| | | List<Criteria> criteriaList = new ArrayList<>(); |
| | | criteriaList.add(time); // 时间条件必须存在 |
| | | |
| | | // 可选条件 |
| | | if (Objects.nonNull(tag)) criteriaList.add(tag); |
| | | if (Objects.nonNull(or)) criteriaList.add(or); |
| | | if (Objects.nonNull(dType)) criteriaList.add(dType); |
| | | if (Objects.nonNull(noStartsWithDept)) criteriaList.add(noStartsWithDept); // 新增条件 |
| | | |
| | | and.andOperator(criteriaList); |
| | | |
| | | return Query.query(and); |
| | | } |
| | | |
| | | |
| | | |
| | | /** |
| | | * 构造数据中心搜索的条件 |
| | |
| | | query.with(Sort.by(Sort.Order.desc(timeFiled))).skip(params.getSkipNum()).limit(Math.toIntExact(params.getPageSize())); |
| | | } |
| | | |
| | | /** |
| | | * 构造数据中心搜索的条件 |
| | | * |
| | | * @param query 查询条件 |
| | | * @param timeFiled 时间字段是哪一个 |
| | | * @param params 请求参数 |
| | | */ |
| | | public static void setNoPage(Query query,DataCenterQuery params, String timeFiled) { |
| | | // 排序分页 |
| | | query.with(Sort.by(Sort.Order.desc(timeFiled))).skip(params.getSkipNum()); |
| | | } |
| | | /** |
| | | * 构造数据中心搜索的条件 |
| | | * |
| | | * @param params 数据中心请求参数 |
| | | * @param timeFiled 时间字段是哪一个 |
| | | * @param dataAuth 点位类型:null 所有 1 部级 2 省厅 3 重点 4 重点指挥 5 是否新设备 |
| | | * @param likeFileds 使用like查询的字段 |
| | | */ |
| | | public static List<Criteria> getAndCriteria(DataCenterQuery params, String timeFiled, List<String> likeFileds, Integer dataAuth) { |
| | | // 关键字 |
| | | 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 tag = null; |
| | | // in |
| | | if (Objects.nonNull(dataAuth)) { |
| | | switch (dataAuth) { |
| | | case 1: |
| | | tag = Criteria.where("deptTag").is(Boolean.TRUE); |
| | | break; |
| | | case 2: |
| | | tag = Criteria.where("provinceTag").is(Boolean.TRUE); |
| | | break; |
| | | case 3: |
| | | tag = Criteria.where("importantTag").is(Boolean.TRUE); |
| | | break; |
| | | case 4: |
| | | tag = Criteria.where("importantCommandImageTag").is(Boolean.TRUE); |
| | | break; |
| | | case 5: |
| | | tag = Criteria.where("newDevice").is(Boolean.TRUE); |
| | | break; |
| | | default: |
| | | break; |
| | | } |
| | | } |
| | | |
| | | // 时间 |
| | | Criteria time = Criteria.where(timeFiled).gte(params.getStartTime()).lte(params.getEndTime()); |
| | | |
| | | // 数据类型 |
| | | Criteria dType = null; |
| | | if (params.getDataType().equals(1)) { |
| | | dType = Criteria.where("provinceTag").is(Boolean.TRUE); |
| | | }else if(params.getDataType().equals(2)){ |
| | | dType = Criteria.where("deptTag").is(Boolean.TRUE); |
| | | } |
| | | |
| | | List<Criteria> qList = new ArrayList<>(3); |
| | | qList.add(time); |
| | | if (Objects.nonNull(tag)) { |
| | | qList.add(tag); |
| | | } |
| | | if (Objects.nonNull(or)) { |
| | | qList.add(or); |
| | | } |
| | | if (Objects.nonNull(dType)) { |
| | | qList.add(dType); |
| | | } |
| | | |
| | | // 返回查询 |
| | | return qList; |
| | | } |
| | | |
| | | public static List<Criteria> getAndCriteriaDateCenter(String deptCode,DataCenterQuery params, String timeFiled, List<String> likeFileds, Integer dataAuth) { |
| | | // 关键字 |
| | | 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 tag = null; |
| | | // in |
| | | if (Objects.nonNull(dataAuth)) { |
| | | switch (dataAuth) { |
| | | case 1: |
| | | tag = Criteria.where("deptTag").is(Boolean.TRUE); |
| | | break; |
| | | case 2: |
| | | tag = Criteria.where("provinceTag").is(Boolean.TRUE); |
| | | break; |
| | | case 3: |
| | | tag = Criteria.where("importantTag").is(Boolean.TRUE); |
| | | break; |
| | | case 4: |
| | | tag = Criteria.where("importantCommandImageTag").is(Boolean.TRUE); |
| | | break; |
| | | case 5: |
| | | tag = Criteria.where("newDevice").is(Boolean.TRUE); |
| | | break; |
| | | default: |
| | | break; |
| | | } |
| | | } |
| | | |
| | | // 时间 |
| | | Criteria time = Criteria.where(timeFiled).gte(params.getStartTime()).lte(params.getEndTime()); |
| | | |
| | | // 数据类型 |
| | | Criteria dType = null; |
| | | if (params.getDataType().equals(1)) { |
| | | dType = Criteria.where("provinceTag").is(Boolean.TRUE); |
| | | }else if(params.getDataType().equals(2)){ |
| | | dType = Criteria.where("deptTag").is(Boolean.TRUE); |
| | | } |
| | | // 新增:no字段以deptCode开头的条件 |
| | | Criteria noStartsWithDept = null; |
| | | if (StringUtils.hasText(deptCode)) { |
| | | // 使用正则表达式匹配开头,并转义特殊字符 |
| | | noStartsWithDept = Criteria.where("deviceNo").regex("^" + Pattern.quote(deptCode)); |
| | | } |
| | | |
| | | List<Criteria> qList = new ArrayList<>(4); |
| | | |
| | | |
| | | qList.add(time); |
| | | if (Objects.nonNull(tag)) { |
| | | qList.add(tag); |
| | | } |
| | | if (Objects.nonNull(or)) { |
| | | qList.add(or); |
| | | } |
| | | if (Objects.nonNull(dType)) { |
| | | qList.add(dType); |
| | | } |
| | | if (Objects.nonNull(noStartsWithDept)) qList.add(noStartsWithDept); |
| | | |
| | | // 返回查询 |
| | | return qList; |
| | | } |
| | | } |