|
@@ -458,19 +458,19 @@ public class LeanEventWarnInfoServiceImpl extends ServiceImpl<LeanEventWarnInfoM
|
|
|
*/
|
|
|
public List<FpgStatiscsModelMongodb> queryByTimeRanges(MongoTemplate mongoTemplate, List<Date[]> timeRanges, String devicePointId, String deviceInformationId, String deviceRegionId) {
|
|
|
Query query = new Query();
|
|
|
-// String devicePointIds = Arrays.stream(devicePointId.split(",")).collect(Collectors.joining("|"));
|
|
|
-// // 设置devicePointId的查询条件,使用正则表达式
|
|
|
-// query.addCriteria(Criteria.where("devicePointId").regex(devicePointIds));
|
|
|
query.addCriteria(Criteria.where("deviceInformationId").is(deviceInformationId));
|
|
|
query.addCriteria(Criteria.where("deviceRegionId").is(deviceRegionId));
|
|
|
// 使用Criteria添加多个时间范围条件
|
|
|
- for (int i = 0; i < timeRanges.size(); i++) {
|
|
|
- Date startTime = timeRanges.get(i)[0];
|
|
|
- Date endTime = timeRanges.get(i)[1];
|
|
|
- // 加8小时
|
|
|
- Date specifiedTimePlus8HoursStartTime = DateUtils.addHours(startTime, 8);
|
|
|
- Date specifiedTimePlus8HoursStartEndTime = DateUtils.addHours(endTime, 8);
|
|
|
- query.addCriteria(Criteria.where("createTime").gte(specifiedTimePlus8HoursStartTime).lt(specifiedTimePlus8HoursStartEndTime));
|
|
|
+ List<Criteria> criteriaList = new ArrayList<>();
|
|
|
+ for (Date[] timeRange : timeRanges) {
|
|
|
+ Criteria criteria = buildTimeRangeCriteria(timeRange);
|
|
|
+ criteriaList.add(criteria);
|
|
|
+ }
|
|
|
+ if (criteriaList.size() > 1) {
|
|
|
+ Criteria[] criteriaArray = criteriaList.toArray(new Criteria[0]);
|
|
|
+ query.addCriteria(new Criteria().orOperator(criteriaArray));
|
|
|
+ } else if (criteriaList.size() == 1) {
|
|
|
+ query.addCriteria(criteriaList.get(0));
|
|
|
}
|
|
|
log.info("{}{}", "查询FpgStatiscsModelMongodb模型参数:", query);
|
|
|
// 执行查询
|
|
@@ -544,4 +544,18 @@ public class LeanEventWarnInfoServiceImpl extends ServiceImpl<LeanEventWarnInfoM
|
|
|
return createTime!= null && (createTime.isAfter(start_time) || createTime.equals(start_time)) &&
|
|
|
(createTime.isBefore(end_time) || createTime.equals(end_time));
|
|
|
}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 辅助方法,用于根据给定的时间范围构建Criteria,并加上8小时
|
|
|
+ * @param timeRange
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ private Criteria buildTimeRangeCriteria(Date[] timeRange) {
|
|
|
+ Date startTime = timeRange[0];
|
|
|
+ Date endTime = timeRange[1];
|
|
|
+ // 加8小时
|
|
|
+ Date startTimePlus8Hours = DateUtils.addHours(startTime, 8);
|
|
|
+ Date endTimePlus8Hours = DateUtils.addHours(endTime, 8);
|
|
|
+ return Criteria.where("createTime").gte(startTimePlus8Hours).lte(endTimePlus8Hours);
|
|
|
+ }
|
|
|
}
|