package com.ruoyi.orderPlan.mapper;

import com.ruoyi.orderPlan.domain.*;

import java.util.List;
import java.util.Map;

/**
 * 车队派车Mapper接口
 *
 * @author ruoyi
 * @date 2021-02-22
 */
public interface FtmsorderbillscarsMapper {
    /**
     * 查询车队派车
     *
     * @param id 车队派车ID
     * @return 车队派车
     */
    public Ftmsorderbillscars selectftmsorderbillscarsById(Long id);

    /**
     * 查询车队派车列表
     *
     * @param ftmsorderbillscars 车队派车
     * @return 车队派车集合
     */
    public List<Ftmsorderbillscars> selectftmsorderbillscarsList(Ftmsorderbillscars ftmsorderbillscars);

    /**
     * 新增车队派车
     *
     * @param ftmsorderbillscars 车队派车
     * @return 结果
     */
    public int insertftmsorderbillscars(Ftmsorderbillscars ftmsorderbillscars);

    /**
     * 新增车队派车
     *
     * @param ftmsorderbillscars 车队派车(暂存)
     * @return 结果
     */
    public int insertftmsorderbillscarsTemporaryStorage(Ftmsorderbillscars ftmsorderbillscars);

    /**
     * 修改车队派车
     *
     * @param ftmsorderbillscars 车队派车
     * @return 结果
     */
    public int updateftmsorderbillscars(Ftmsorderbillscars ftmsorderbillscars);

    /**
     * 删除车队派车
     *
     * @param id 车队派车ID
     * @return 结果
     */
    public int deleteftmsorderbillscarsById(Long id);

    /**
     * 批量删除车队派车
     *
     * @param ids 需要删除的数据ID
     * @return 结果
     */
    public int deleteftmsorderbillscarsByIds(Long[] ids);

    /**
     * 根据主表id删除对应信息
     *
     * @param id 主表id
     * @return 结果
     */
    public int deleteftmsorderbillscarsByPId(long id);

    /**
     * 根据主表id删除后续对应信息
     *
     * @param id 主表id
     * @return 结果
     */
    public int deleteFollowUpBusinessByCarPId(long id);

    /**
     * 根据原始来源id 查询是否可以撤回计划
     *
     * @param ftmsorderbills 计划id
     * @return 结果
     */
    public int planSelectCarsCount(Ftmsorderbills ftmsorderbills);

    /**
     * 查询  查询车队派车数量
     *
     * @param ftmsorderbillscars
     * @return 结果
     */
    public int selectftmsorderbillscarsCount(Ftmsorderbillscars ftmsorderbillscars);

    /**
     * 根据条件查询 查询id
     *
     * @param scars 查询条件
     * @return 结果
     */
    public List<Ftmsorderbillscars> selectftmsorderbillscarsIdList(Ftmsorderbillscars scars);

    /**
     * 查询司机状态跟踪列表
     *
     * @param ftmsorderbills 条件
     * @return 结果
     */
    public List<FtmsorderbillscarsExcel> selectftmsorderbillscarsMapList(Ftmsorderbills ftmsorderbills);

    public List<FtmsorderbillscarsExcel> selectftmsorderbillscarsMapListModify(Ftmsorderbills ftmsorderbills);

    /**
     * 根据orgId更新数据状态
     *
     * @param ftmsorderbillscntrs 参数
     * @return 结果
     */
    public int updateTmsorderCarStatusByOrgId(Ftmsorderbillscntrs ftmsorderbillscntrs);

    /**
     * 根据上级id查询对应数据
     *
     * @param pId 上级id
     * @return 结果
     */
    public List<Ftmsorderbillscars> selectftmsorderbillscarsByPid(long pId);

    /**
     * 查询车队派车
     *
     * @param srcMId 车队派车ID(来源ID)
     * @return 车队派车
     */
    public List<Ftmsorderbillscars> selectftmsorderbillscarsTemporaryStorageBySrcMId(Long srcMId);


    /**
     * 根据carid查询主表数据
     *
     * @param id    主表id
     * @return  结果
     */
    Map<String, Object> selectTmsorderbillsCarsByDriver(Long id);

    /**
     * 根据手机号查询司机的
     * 新订单、本月订单、本月历程、本月运费
     * @param ftmsorderbillscars   条件
     * @return  结果
     */
    public Map<String, Object> selectMonthlyOrder(Ftmsorderbillscars ftmsorderbillscars);

    /**
     *  查询首页右上角数据
     * @param tmsorderbills
     * @return  结果
     */
    public List<Map<String, Object>> selectHomeUpperRightMapList(Ftmsorderbills tmsorderbills);

    /**
     *  查询首页左上角新增计划数
     *  新增计划数(下了多少单的箱量)、未安排(未安排的箱量)
     *  今日派车(今日安排了多少车) 派车详情直接跳转到接单界面
     *  可派车辆(系统注册车辆-已安排车辆)
     * @param ftmsorderbills    当前时间
     * @return  结果
     */
    public Map<String, Object> selectHomeUpperLeftCntrs(Ftmsorderbills ftmsorderbills);

    /**
     *  查询左上角 进入派车数
     *  今日派车(今日安排了多少车)
     *  可派车辆(系统注册车辆-已安排车辆)
     * @param currentDay    当前时间
     * @return  结果
     */
    public int selectHomeUpperLeftCars(Ftmsorderbills currentDay);

    /**
     *  根据司机姓名、手机号更新
     * @return  结果
     */
    public int updateftmsorderbillscarsDriverNamePhone();

    /**
     *  根据查询条件查询 状态跟踪列表页 按钮数据
     * @return  结果
     * @param ftmsorderbills
     */
    public Map<String, Object> getButtonValue(Ftmsorderbills ftmsorderbills);

    /**
     *  根据手机号查询司机 新订单、本月订单、本月历程、本月运费
     * @param phoneNumber   手机号
     * @return  结果
     */
    public int selectMissedOrdersCount(String phoneNumber);

    /**
     *  修改手机号更新未还柜的车辆信息根据司机id更新
     * @param ftmsorderbillscars    参数
     * @return  结果
     */
    public int updateftmsorderbillscarTel(Ftmsorderbillscars ftmsorderbillscars);

    /**
     * 查询车辆可配载运单
     * @param ftmsorderbillscars    车队派车
     * @return  结果
     */
    public List<Map<String, Object>> selectStowageList(Ftmsorderbillscars ftmsorderbillscars);

    /**
     *  根据运单号查询对呀运单
     * @param orderNo   运单号
     * @return  结果
     */
    public Ftmsorderbillscars selectftmsorderbillscarsByOrderNo(String orderNo);

    /**
     *  查询陆运台账列表信息
     * @param vehicleLedgerExcel    查询条件
     * @return  结果
     */
    public List<VehicleLedgerExcel> queryLedgerList(VehicleLedgerExcel vehicleLedgerExcel);

    /**
     *  根据car表id删除后续业务
     * @param id
     */
    public void deleteFollowUpBusinessByCarId(Long id);

    /**
     *  查询从单信息
     * @param billKind    主单
     * @return  结果
     */
    public Map<String, Object> selectTmsorderbillsCarsByBillKind(String billKind);

    /**
     *  查询台账对应费用信息
     * @param mBillNo
     * @return
     */
    public VehicleLedgerExcel selectCarsFeeByMBillNo(String mBillNo);
}
