| | |
| | | import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; |
| | | import cn.iocoder.yudao.module.hrm.dal.dataobject.attendance.HrmEmployeeScheduleDO; |
| | | import org.apache.ibatis.annotations.Mapper; |
| | | import org.apache.ibatis.annotations.Param; |
| | | import org.apache.ibatis.annotations.Select; |
| | | import org.apache.ibatis.annotations.Update; |
| | | |
| | | import java.time.LocalDate; |
| | | import java.util.Collection; |
| | |
| | | .eq(HrmEmployeeScheduleDO::getDate, date)); |
| | | } |
| | | |
| | | /** |
| | | * 查询员工某天的排班,包含已被逻辑删除的行。 |
| | | * |
| | | * 表上唯一键 uk_employee_date(employee_id, date) 不含 deleted 列, |
| | | * 逻辑删除后的旧行仍然占用唯一键;重新排班前必须先查到它并“复活”,否则插入会撞键导致整批回滚。 |
| | | */ |
| | | @Select("SELECT * FROM hrm_employee_schedule WHERE employee_id = #{employeeId} AND date = #{date} LIMIT 1") |
| | | HrmEmployeeScheduleDO selectByEmployeeIdAndDateIncludeDeleted(@Param("employeeId") Long employeeId, |
| | | @Param("date") LocalDate date); |
| | | |
| | | /** |
| | | * 复活已逻辑删除的排班行并覆盖班次信息。 |
| | | */ |
| | | @Update("UPDATE hrm_employee_schedule SET deleted = 0, shift_id = #{shiftId}, remark = #{remark}, " |
| | | + "updater = #{updater}, update_time = NOW() WHERE id = #{id}") |
| | | int reviveById(@Param("id") Long id, @Param("shiftId") Long shiftId, |
| | | @Param("remark") String remark, @Param("updater") String updater); |
| | | |
| | | default List<HrmEmployeeScheduleDO> selectListByPeriod(LocalDate startDate, LocalDate endDate) { |
| | | return selectList(new LambdaQueryWrapperX<HrmEmployeeScheduleDO>() |
| | | .between(HrmEmployeeScheduleDO::getDate, startDate, endDate) |