From 9400d0a1b60377ff914273ca33336fab2ae82c56 Mon Sep 17 00:00:00 2001 From: puzhibing <393733352@qq.com> Date: 星期一, 13 一月 2025 11:51:15 +0800 Subject: [PATCH] 修改bug --- ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/RedPackegeSetController.java | 42 ++++++++++++++++++++++++++++-------------- 1 files changed, 28 insertions(+), 14 deletions(-) diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/RedPackegeSetController.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/RedPackegeSetController.java index 5edc8ff..98df583 100644 --- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/RedPackegeSetController.java +++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/RedPackegeSetController.java @@ -13,6 +13,9 @@ import javax.annotation.Resource; import java.math.BigDecimal; import java.time.LocalDateTime; +import java.util.Arrays; +import java.util.Collections; +import java.util.Comparator; import java.util.List; /** @@ -65,20 +68,8 @@ public R<Void> addRedPackegeSet(@RequestBody RedPackegeSetDto redPackegeSets){ redPackegeSetService.remove(null); List<RedPackegeSet> redPackegeSetList = redPackegeSets.getRedPackegeSets(); - for (int i = 0; i < redPackegeSetList.size(); i++) { - RedPackegeSet redPackegeSet = redPackegeSetList.get(i); - LocalDateTime startTime = redPackegeSet.getStartTime(); - LocalDateTime endTime = redPackegeSet.getEndTime(); - for (int j = 0; j < redPackegeSetList.size(); j++) { - RedPackegeSet redPackegeSet1 = redPackegeSetList.get(j); - LocalDateTime startTime1 = redPackegeSet1.getStartTime(); - LocalDateTime endTime1 = redPackegeSet1.getEndTime(); - if(i != j && ((startTime.isAfter(startTime1) && endTime.isBefore(endTime1)) - || (startTime.isBefore(startTime1) && endTime.isAfter(startTime1) && endTime.isBefore(endTime1)) - || (startTime.isAfter(startTime1) && startTime.isBefore(endTime1) && endTime.isAfter(endTime1)))){ - return R.fail("时间有重叠,请重新配置"); - } - } + if (hasOverlap(redPackegeSetList)) { + R.fail("时间段存在重叠,请重新配置"); } redPackegeSetService.saveBatch(redPackegeSetList); return R.ok(); @@ -94,5 +85,28 @@ return R.ok(); } + private boolean hasOverlap(List<RedPackegeSet> redPackegeSetList) { + // 首先根据startTime对列表进行排序 + Collections.sort(redPackegeSetList, Comparator.comparing(RedPackegeSet::getStartTime)); + + // 然后检查是否存在重叠 + for (int i = 0; i < redPackegeSetList.size() - 1; i++) { + RedPackegeSet current = redPackegeSetList.get(i); + RedPackegeSet next = redPackegeSetList.get(i + 1); + + // 如果当前时间段的结束时间晚于或等于下一个时间段的开始时间,则存在重叠 + if (current.getEndTime().isAfter(next.getStartTime()) || + current.getEndTime().isEqual(next.getStartTime())) { + return true; + } + } + + return false; + } + + + + + } -- Gitblit v1.7.1