今天写了一个计算请假天数的接口,简短思路是一张能够用户维护的年度日期表,其中字段workDay为0则休息日,1则是工作日。
前台根据日历表勾选日期,以及请假上下午的时间点。后台java来判断天数。
起止两个日期,根据sql很好写,以 八月九号到十四号为例;
SELECT COUNT(*) FROM bpc_form_calendar WHERE work_date BETWEEN '2019-08-09' AND '2019-08-14' AND workday = '1'`
查询结果为三天,实际上不关注上下午时间点应该是4天,加减0.5根据java的if来判断就行。
由于我用的是Spring JPA,sql封装弄了一阵!
首先尝试HQL失败多次,最后采用原生SQL方式
@Query(nativeQuery = true,
value = "SELECT count(*) FROM bpc_form_calendar WHERE work_date BETWEEN ?1 AND ?2 AND workday = '1'")
Double findByWorkDate(@Param(value = "work_date") String begin, @Param(value = "work_date") String end);
对于@Param中value应该就是数据库中对应字段work_date,
begin,end为前台传来的日期,目前只找到这种直接点的方式,欢迎讨论。