我需要在我的应用程序中计算员工的工作/假期时段。
假期有一个 startDate 和一个 endDate。用户可以提供一个时间段,并且必须生成一个报告,其中包含该时间段内用户的工作和休假时段。
例如,用户从 3.02.2013 - 4.02.2013 休假,搜索时间为 1.02.2013 - 28.02.2013。
报告应如下所示:
1-2.02.2013 - 工作
3-4.02.2013 - 假期
- 5-28.02.2013 - 工作
我不确定如何以有效的方式做到这一点。我在此期间获得假期的 DAO 方法如下:
public List<VacationRequest> getVacationsInPeriodForUser(Long userId,
Date startDate, Date endDate) {
List<VacationRequest> requests = getSessionFactory()
.getCurrentSession()
.createQuery(
"select req from VacationRequest req left join fetch req.vacationType where req.requestState.description = 'APPROVED' and req.user.id= ? and req.startDate >= ? and req.endDate <= ?")
.setParameter(0, userId).setParameter(1, startDate)
.setParameter(2, endDate).list();
return requests;
}
但这在用户在整个供应期间都处于休假状态的情况下不起作用。例如,如果在上面的示例中搜索周期是 3.02.2013 - 4.02.2013。
谁能建议如何以有效的方式计算这些插槽?