修复"根据节假日类别查询相应的休假"接口的Bug
This commit is contained in:
@@ -138,23 +138,30 @@ public class SysOaHolidayServiceImpl implements ISysOaHolidayService {
|
|||||||
|
|
||||||
// 1、准备容器集合 List用于存储最终结果、Map用于存储合并后的休假天数
|
// 1、准备容器集合 List用于存储最终结果、Map用于存储合并后的休假天数
|
||||||
List<SysOaHolidayVo> resultList = new ArrayList<>();
|
List<SysOaHolidayVo> resultList = new ArrayList<>();
|
||||||
Map<String, Integer> mergedMap = new HashMap<>();
|
Map<Long, Integer> mergedMap = new HashMap<>();
|
||||||
for (SysOaHolidayVo raw : rawList) {
|
for (SysOaHolidayVo raw : rawList) {
|
||||||
if (resultList.isEmpty() || !raw.getName().equals(resultList.get(resultList.size() - 1).getName())) {
|
if (resultList.isEmpty() || !raw.getName().equals(resultList.get(resultList.size() - 1).getName())) {
|
||||||
// 如果当前休假名称与结果列表中的最后一个休假名称不一致,则将当前休假添加到结果列表中
|
// 如果当前休假名称与结果列表中的最后一个休假名称不一致,则将当前休假添加到结果列表中
|
||||||
resultList.add(raw);
|
resultList.add(raw);
|
||||||
// 存放休假天数
|
// 存放休假天数
|
||||||
mergedMap.put(raw.getName(),1);
|
mergedMap.put(raw.getHolidayId(),1);
|
||||||
} else {
|
} else {
|
||||||
// 如果当前休假名称与结果列表中的最后一个休假名称一致,则将当前休假的休假天数加一
|
// 如果当前休假名称与结果列表中的最后一个休假名称一致,则将当前休假的休假天数加一
|
||||||
// 修改map集合里面对应的休假天数
|
// 修改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<>();
|
List<SysOaHolidayListVo> VoList = new ArrayList<>();
|
||||||
// 2、遍历结果列表,将休假天数添加到结果列表中
|
// 2、遍历结果列表,将休假天数添加到结果列表中
|
||||||
for (SysOaHolidayVo result : resultList) {
|
for (SysOaHolidayVo result : resultList) {
|
||||||
Integer days = mergedMap.get(result.getName());
|
Integer days = mergedMap.get(result.getHolidayId());
|
||||||
// 计算休假结束时间
|
// 计算休假结束时间
|
||||||
Date endDate = DateUtils.addDays(result.getHolidayTime(), days - 1);
|
Date endDate = DateUtils.addDays(result.getHolidayTime(), days - 1);
|
||||||
VoList.add(new SysOaHolidayListVo(result.getHolidayId(), result.getName(), result.getHolidayTime(), endDate, days, result.getType()));
|
VoList.add(new SysOaHolidayListVo(result.getHolidayId(), result.getName(), result.getHolidayTime(), endDate, days, result.getType()));
|
||||||
|
|||||||
Reference in New Issue
Block a user