package com.stylefeng.guns.modular.crossCity.dao; import com.baomidou.mybatisplus.mapper.BaseMapper; import com.stylefeng.guns.modular.crossCity.model.LineShiftDriver; import org.apache.ibatis.annotations.Param; import java.util.Date; import java.util.List; import java.util.Map; public interface LineShiftDriverMapper extends BaseMapper { /** * 获取司机的预约数据 * @param driverId * @param time * @return */ List queryByDriver(@Param("lineShiftId") Integer lineShiftId, @Param("driverId") Integer driverId, @Param("time") Date time); /** * 【202601】查询司机在指定日期的排班信息 * @param driverId 司机id * @param date 日期(yyyy-MM-dd) * @return */ List> queryDriverShiftByDate(@Param("driverId") Integer driverId, @Param("date") String date); /** * 【202601】班次详情数据 * @param lineShiftDriverId 司机排班记录ID * @return 班次详情数据 */ Map getDetail(Integer lineShiftDriverId); /** * 【202601】查询司机可预约的班次列表(包括已预约和未预约的) * @param driverId 司机id * @param date 日期(yyyy-MM-dd) * @return 班次列表 */ List> queryDriverAvailableShifts(@Param("driverId") Integer driverId, @Param("date") String date); /** * 查询司机指定日期指定班次是否已有完成服务/已完成订单 */ int countCompletedShiftOrders(@Param("driverId") Integer driverId, @Param("lineShiftId") Integer lineShiftId, @Param("time") Date time); /** * 【202604】查询司机本人已领取/被分配的排班列表(今天及之后) * @param driverId 司机id * @param startDate 开始日期(yyyy-MM-dd) * @param offset 分页偏移量 * @param size 每页条数 * @return 排班列表 */ List> queryMyDriverShiftList(@Param("driverId") Integer driverId, @Param("startDate") String startDate, @Param("offset") Integer offset, @Param("size") Integer size); /** * 【202604】根据司机排班id查询同班次其他司机信息 * @param driverShiftId 司机排班id * @return 其他司机列表 */ List> queryOtherDriverShiftListWithShiftId(@Param("driverShiftId") Long driverShiftId); /** * 查询同公司且当前班次时间段无订单、无其他预约批次的司机(改派扩展候选) */ List> queryAvailableCompanyDriversForShift(@Param("driverShiftId") Long driverShiftId, @Param("orderId") Integer orderId); Integer queryCustomerIdByLineShiftDriverId(@Param("lineShiftDriverId") Integer lineShiftDriverId); /** * 查询已超时且无有效订单的排班ID * 标准班次按收车时间判定;自主行程按出发时间判定 */ List queryExpiredNoOrderShiftIds(); }