处理跨天加班的情况

This commit is contained in:
andy 2026-01-20 10:30:44 +08:00
parent 5eb3a19934
commit 56e6aa2bc8
3 changed files with 22 additions and 1 deletions

View File

@ -395,7 +395,12 @@ public class KQDeviceExchangeProcessor implements PunchTheClockStrategyExchangeP
//查找加班详情 加班统计ID和加班开始时间
RzOverTimeDetail rzOverTimeDetail = rzOverTimeDetailMapper.queryRzOverTimeDetailByDateAndOverId(rzOverTime.getId(),date);
if(ObjectUtils.isEmpty(rzOverTimeDetail)){
return initMessage(1, "未找到当天的加班信息, 请补卡");
//特殊情况, 会存在过12点的情况, 这时候需要核查下前一天没有下班的加班数据
rzOverTimeDetail = rzOverTimeDetailMapper.queryRzOverTimeDetailByDateAndOverIdAndOverTimeEndIsNull(rzOverTime.getId(), DateUtils.addDays(date,-1));
//如果前一天也为空
if(ObjectUtils.isEmpty(rzOverTimeDetail)){
return initMessage(1, "未找到当天的加班信息, 请补卡");
}
}
rzOverTimeDetail.setOverTimeEnd(date);
//计算加班时长 分钟

View File

@ -53,6 +53,11 @@ public interface RzOverTimeDetailMapper extends BaseMapper<RzOverTimeDetail>
*/
public RzOverTimeDetail queryRzOverTimeDetailByDateAndOverId(@Param("overId") Long overId,@Param("date") Date date);
/**
* 根据加班统计ID和加班开始时间查询加班情况, 并且加班的下班时间为空的
* @return
*/
public RzOverTimeDetail queryRzOverTimeDetailByDateAndOverIdAndOverTimeEndIsNull(@Param("overId") Long overId,@Param("date") Date date);
/**
* 查询加班详情
*

View File

@ -91,6 +91,17 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
del_flag = '0' and over_time_id = #{overId} and DATE_FORMAT(over_time_start, '%Y%m%d' ) = DATE_FORMAT(#{date} , '%Y%m%d' )
order by over_time_start desc limit 1
</select>
<select id="queryRzOverTimeDetailByDateAndOverIdAndOverTimeEndIsNull" resultMap="RzOverTimeDetailResult">
<include refid="selectRzOverTimeDetailVo"/>
where
del_flag = '0' and over_time_id = #{overId} and DATE_FORMAT(over_time_start, '%Y%m%d' ) = DATE_FORMAT(#{date} , '%Y%m%d' ) and over_time_end is null
order by over_time_start desc limit 1
</select>
<!-- 根据加班统计ID查询加班情况 -->
<select id="queryRzOverTimeDetailByOverId" resultMap="RzOverTimeDetailResult">
<include refid="selectRzOverTimeDetailVo"/>