From f77a9d8f16bae6b4cf809891f037c038070e81ed Mon Sep 17 00:00:00 2001 From: zxl <763096477@qq.com> Date: 星期四, 19 六月 2025 17:12:50 +0800 Subject: [PATCH] 工单,数据中心用户查看数据的权限,合同考核每日,以及导出每日和按月 --- ycl-server/src/main/java/com/ycl/utils/MongoUtil.java | 165 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 164 insertions(+), 1 deletions(-) diff --git a/ycl-server/src/main/java/com/ycl/utils/MongoUtil.java b/ycl-server/src/main/java/com/ycl/utils/MongoUtil.java index 0072d2c..1fa737b 100644 --- a/ycl-server/src/main/java/com/ycl/utils/MongoUtil.java +++ b/ycl-server/src/main/java/com/ycl/utils/MongoUtil.java @@ -102,6 +102,83 @@ 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)){ + // 鏂板锛歯o瀛楁浠eptCode寮�澶寸殑鏉′欢 + + if (StringUtils.hasText(deptCode)) { + // 浣跨敤姝e垯琛ㄨ揪寮忓尮閰嶅紑澶达紝骞惰浆涔夌壒娈婂瓧绗� + noStartsWithDept = Criteria.where("no").regex("^" + Pattern.quote(deptCode)); + } + }else if ("deviceNo".equals(fieldName)){ + // 鏂板锛歯o瀛楁浠eptCode寮�澶寸殑鏉′欢 + if (StringUtils.hasText(deptCode)) { + // 浣跨敤姝e垯琛ㄨ揪寮忓尮閰嶅紑澶达紝骞惰浆涔夌壒娈婂瓧绗� + 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); + } + + + /** * 鏋勯�犳暟鎹腑蹇冩悳绱㈢殑鏉′欢 * @@ -114,7 +191,17 @@ 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()); + } /** * 鏋勯�犳暟鎹腑蹇冩悳绱㈢殑鏉′欢 * @@ -191,4 +278,80 @@ 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()); + } + // 灏唋ike瀛楁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); + } + // 鏂板锛歯o瀛楁浠eptCode寮�澶寸殑鏉′欢 + Criteria noStartsWithDept = null; + if (StringUtils.hasText(deptCode)) { + // 浣跨敤姝e垯琛ㄨ揪寮忓尮閰嶅紑澶达紝骞惰浆涔夌壒娈婂瓧绗� + 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; + } } -- Gitblit v1.8.0