| | |
| | | |
| | | @Override |
| | | public Boolean isStrategy24Hour(List<TAccountingStrategyDetail> accountingStrategyDetails) { |
| | | // List<TAccountingStrategyDetail> sortedDetails = accountingStrategyDetails.stream() |
| | | // .sorted(Comparator.comparing(TAccountingStrategyDetail::getStartTime)) |
| | | // .collect(Collectors.toList()); |
| | | // |
| | | // boolean isFirstElementValid = sortedDetails.isEmpty() || !sortedDetails.get(0).getStartTime().equals(sortedDetails.get(sortedDetails.size() - 1).getEndTime()); |
| | | // if(isFirstElementValid){ |
| | | // return true; |
| | | // } |
| | | // |
| | | // boolean eqTime = sortedDetails.stream().allMatch(detail -> detail.getStartTime().equals(detail.getEndTime())); |
| | | // if(eqTime){ |
| | | // return true; |
| | | // } |
| | | // |
| | | // boolean isTimeContinuous = sortedDetails.stream() |
| | | // .skip(1) |
| | | // .allMatch(detail -> detail.getStartTime().equals(sortedDetails.get(sortedDetails.indexOf(detail) - 1).getEndTime())); |
| | | // |
| | | // return !isTimeContinuous; |
| | | |
| | | // 处理空列表情况 |
| | | if (accountingStrategyDetails == null || accountingStrategyDetails.isEmpty()) { |
| | | return true; |
| | | } |
| | | |
| | | // 按开始时间排序 |
| | | List<TAccountingStrategyDetail> sortedDetails = accountingStrategyDetails.stream() |
| | | .sorted(Comparator.comparing(TAccountingStrategyDetail::getStartTime)) |
| | | .collect(Collectors.toList()); |
| | | |
| | | boolean isFirstElementValid = sortedDetails.isEmpty() || !sortedDetails.get(0).getStartTime().equals(sortedDetails.get(sortedDetails.size() - 1).getEndTime()); |
| | | // 检查是否形成完整的24小时循环 |
| | | // 第一个时间段的开始时间应该等于最后一个时间段的结束时间(形成闭环) |
| | | TAccountingStrategyDetail firstDetail = sortedDetails.get(0); |
| | | TAccountingStrategyDetail lastDetail = sortedDetails.get(sortedDetails.size() - 1); |
| | | |
| | | boolean isTimeContinuous = sortedDetails.stream() |
| | | .skip(1) |
| | | .allMatch(detail -> detail.getStartTime().equals(sortedDetails.get(sortedDetails.indexOf(detail) - 1).getEndTime())); |
| | | // 首尾时间不匹配,不能构成24小时周期 |
| | | if (!firstDetail.getStartTime().equals(lastDetail.getEndTime())) { |
| | | return true; |
| | | } |
| | | |
| | | return isFirstElementValid || !isTimeContinuous; |
| | | // 检查中间时间段是否连续 |
| | | for (int i = 1; i < sortedDetails.size(); i++) { |
| | | TAccountingStrategyDetail current = sortedDetails.get(i); |
| | | TAccountingStrategyDetail previous = sortedDetails.get(i - 1); |
| | | |
| | | // 当前时间段的开始时间必须等于前一个时间段的结束时间 |
| | | if (!current.getStartTime().equals(previous.getEndTime())) { |
| | | return true; |
| | | } |
| | | } |
| | | |
| | | return false; |
| | | } |
| | | |
| | | @Override |