| | |
| | | import java.math.BigDecimal; |
| | | import java.time.LocalTime; |
| | | import java.util.ArrayList; |
| | | import java.util.Comparator; |
| | | import java.util.List; |
| | | import java.util.Objects; |
| | | import java.util.stream.Collectors; |
| | | |
| | | /** |
| | | * <p> |
| | |
| | | strategyPriceVO.setServiceFeeDiscount(monthlyCardDiscount.getMonthlyCardDiscount()); |
| | | return strategyPriceVO; |
| | | } |
| | | |
| | | @Override |
| | | public Boolean isStrategy24Hour(List<TAccountingStrategyDetail> accountingStrategyDetails) { |
| | | 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; |
| | | } |
| | | } |