From 46d601745ff7ca554e878415ff5fa710ecd7149d Mon Sep 17 00:00:00 2001 From: liuzongkun999 Date: Sun, 23 Feb 2025 20:46:26 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D"=E6=A0=B9=E6=8D=AE=E8=8A=82?= =?UTF-8?q?=E5=81=87=E6=97=A5=E7=B1=BB=E5=88=AB=E6=9F=A5=E8=AF=A2=E7=9B=B8?= =?UTF-8?q?=E5=BA=94=E7=9A=84=E4=BC=91=E5=81=87"=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=E7=9A=84Bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../oa/service/impl/SysOaHolidayServiceImpl.java | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) 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()));