修复"根据节假日类别查询相应的休假"接口的Bug
This commit is contained in:
@@ -138,23 +138,30 @@ public class SysOaHolidayServiceImpl implements ISysOaHolidayService {
|
||||
|
||||
// 1、准备容器集合 List用于存储最终结果、Map用于存储合并后的休假天数
|
||||
List<SysOaHolidayVo> resultList = new ArrayList<>();
|
||||
Map<String, Integer> mergedMap = new HashMap<>();
|
||||
Map<Long, Integer> 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<SysOaHolidayListVo> 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()));
|
||||
|
||||
Reference in New Issue
Block a user