package org.dromara.system.service;

import org.dromara.system.domain.TblDzbcDriverTrip;
import org.dromara.system.domain.bo.TblDzbcDriverTripBo;
import org.dromara.system.domain.vo.TblDzbcDriverTripVo;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;

import java.util.Collection;
import java.util.List;

public interface ITblDzbcDriverTripService {

    TblDzbcDriverTripVo queryById(Long id);

    TblDzbcDriverTripVo queryByTripNo(String tripNo);

    TableDataInfo<TblDzbcDriverTripVo> queryPageList(TblDzbcDriverTripBo bo, PageQuery pageQuery);

    List<TblDzbcDriverTripVo> queryList(TblDzbcDriverTripBo bo);

    TblDzbcDriverTripVo createTrip(TblDzbcDriverTripBo bo);

    Boolean startTrip(Long id);

    /**
     * 根据排班ID发车
     * @param schedulingId 排班ID
     * @return 是否成功
     */
    Boolean startTripBySchedulingId(Long schedulingId);

    Boolean arriveSite(Long id, Long siteId);

    Boolean completeTrip(Long id);

    Boolean cancelTrip(Long id);

    /**
     * 生成新的车次号，保持司机和班次信息
     * @param id 原车次ID
     * @return 新的车次信息
     */
    TblDzbcDriverTripVo generateNewTripNo(Long id);

    Boolean updateByBo(TblDzbcDriverTripBo bo);

    Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
}
