diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/SysOaHolidayServiceImpl.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/SysOaHolidayServiceImpl.java index 4e112a9..d0649c2 100644 --- a/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/SysOaHolidayServiceImpl.java +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/SysOaHolidayServiceImpl.java @@ -138,23 +138,30 @@ public class SysOaHolidayServiceImpl implements ISysOaHolidayService { // 1、准备容器集合 List用于存储最终结果、Map用于存储合并后的休假天数 List resultList = new ArrayList<>(); - Map mergedMap = new HashMap<>(); + Map mergedMap = new HashMap<>(); for (SysOaHolidayVo raw : rawList) { if (resultList.isEmpty() || !raw.getName().equals(resultList.get(resultList.size() - 1).getName())) { // 如果当前休假名称与结果列表中的最后一个休假名称不一致,则将当前休假添加到结果列表中 resultList.add(raw); // 存放休假天数 - mergedMap.put(raw.getName(),1); + mergedMap.put(raw.getHolidayId(),1); } else { // 如果当前休假名称与结果列表中的最后一个休假名称一致,则将当前休假的休假天数加一 // 修改map集合里面对应的休假天数 - mergedMap.compute(raw.getName(), (k, days) -> days + 1); + + // 为前后天关系则 + if(raw.getHolidayTime() .getTime() - resultList.get(resultList.size() - 1).getHolidayTime().getTime() == 86400000L * mergedMap.get(resultList.get(resultList.size() - 1).getHolidayId())) { + mergedMap.compute(resultList.get(resultList.size() - 1).getHolidayId(), (k, days) -> days + 1); + } else { + resultList.add(raw); + mergedMap.put(raw.getHolidayId(),1); + } } } List VoList = new ArrayList<>(); // 2、遍历结果列表,将休假天数添加到结果列表中 for (SysOaHolidayVo result : resultList) { - Integer days = mergedMap.get(result.getName()); + Integer days = mergedMap.get(result.getHolidayId()); // 计算休假结束时间 Date endDate = DateUtils.addDays(result.getHolidayTime(), days - 1); VoList.add(new SysOaHolidayListVo(result.getHolidayId(), result.getName(), result.getHolidayTime(), endDate, days, result.getType()));