diff --git a/src/main/java/com/gunshi/project/xyt/controller/StWaterRController.java b/src/main/java/com/gunshi/project/xyt/controller/StWaterRController.java index ad881fe..bdf9bd4 100644 --- a/src/main/java/com/gunshi/project/xyt/controller/StWaterRController.java +++ b/src/main/java/com/gunshi/project/xyt/controller/StWaterRController.java @@ -93,9 +93,12 @@ public class StWaterRController { @GetMapping("/getResMonthEcoFlow") public R> getResMonthEcoFlow(@Schema(name = "startTime", description = "开始时间") @RequestParam("startTime") String startTime, @Schema(name = "endTime", description = "开始时间") @RequestParam("endTime") String endTime) { Map resMap = new HashMap<>(); - QueryWrapper wrapper = new QueryWrapper() - .ge(StringUtils.isNotEmpty(startTime), "month", Integer.valueOf(startTime.substring(5, 7))) - .le(StringUtils.isNotEmpty(endTime), "month", Integer.valueOf(endTime.substring(5, 7))); + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.orderByAsc("month"); + if(StringUtils.isNotEmpty(startTime) && StringUtils.isNotEmpty(endTime)){ + List monthsBetweenDates = DateUtil.getMonthsBetweenDates(startTime, endTime); + wrapper.in("month", monthsBetweenDates); + } List list = resMonthEcoFlowService.list(wrapper); if(CollectionUtils.isNotEmpty(list)){ resMap = list.stream().collect(Collectors.toMap(ResMonthEcoFlow::getMonth, ResMonthEcoFlow::getValue)); diff --git a/src/main/java/com/gunshi/project/xyt/util/DateUtil.java b/src/main/java/com/gunshi/project/xyt/util/DateUtil.java index c1a2a9a..dd7e81e 100644 --- a/src/main/java/com/gunshi/project/xyt/util/DateUtil.java +++ b/src/main/java/com/gunshi/project/xyt/util/DateUtil.java @@ -250,4 +250,18 @@ public class DateUtil { private static SimpleDateFormat getThreadSafeFormatter(String format) { return DATE_FORMAT_CACHE.computeIfAbsent(format, key -> ThreadLocal.withInitial(() -> new SimpleDateFormat(key))).get(); } + + public static List getMonthsBetweenDates(String startDateStr, String endDateStr) { + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); + LocalDate startDate = LocalDate.parse(startDateStr, formatter); + LocalDate endDate = LocalDate.parse(endDateStr, formatter); + + List months = new ArrayList<>(); + while (startDate.isBefore(endDate)) { + months.add(startDate.getMonthValue()); + startDate = startDate.plusMonths(1); + } + + return months; + } }