From 96bc63420c54e18ab3ea675e1ca741ff1a2edbd6 Mon Sep 17 00:00:00 2001 From: puzhibing <393733352@qq.com> Date: 星期五, 23 八月 2024 19:22:28 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TAccountingStrategyDetailServiceImpl.java | 25 ++++++++++++++----------- 1 files changed, 14 insertions(+), 11 deletions(-) diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TAccountingStrategyDetailServiceImpl.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TAccountingStrategyDetailServiceImpl.java index 2385665..979620c 100644 --- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TAccountingStrategyDetailServiceImpl.java +++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TAccountingStrategyDetailServiceImpl.java @@ -127,16 +127,19 @@ @Override public Boolean isStrategy24Hour(List<TAccountingStrategyDetail> accountingStrategyDetails) { - List<TAccountingStrategyDetail> accountingStrategyDetailList = accountingStrategyDetails.stream() - .sorted(Comparator.comparing(TAccountingStrategyDetail::getStartTime)).collect(Collectors.toList()); - boolean flag = false; - for (int i = 0; i < accountingStrategyDetailList.size(); i++) { - if(i != 0){ - if(!accountingStrategyDetailList.get(i).getStartTime().equals(accountingStrategyDetailList.get(i-1).getEndTime())) { - flag = true; - } - } - } - return flag; + String START_OF_DAY = "00:00:00"; + String END_OF_DAY = "24:00:00"; + List<TAccountingStrategyDetail> sortedDetails = accountingStrategyDetails.stream() + .sorted(Comparator.comparing(TAccountingStrategyDetail::getStartTime)) + .collect(Collectors.toList()); + + boolean isFirstElementValid = sortedDetails.isEmpty() || !START_OF_DAY.equals(sortedDetails.get(0).getStartTime()); + boolean isLastElementValid = sortedDetails.isEmpty() || !END_OF_DAY.equals(sortedDetails.get(sortedDetails.size() - 1).getEndTime()); + + boolean isTimeContinuous = sortedDetails.stream() + .skip(1) + .allMatch(detail -> detail.getStartTime().equals(sortedDetails.get(sortedDetails.indexOf(detail) - 1).getEndTime())); + + return isFirstElementValid || isLastElementValid || !isTimeContinuous; } } -- Gitblit v1.7.1