package com.sckw.fleet.dao;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.sckw.fleet.model.KwfTruck;
import com.sckw.fleet.model.vo.KwfTableTopCount;
import com.sckw.fleet.model.vo.KwfTruckMonitorVo;
import com.sckw.fleet.model.vo.KwfTruckVo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

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

/**
 * @desc 车辆信息 Mapper 接口
 * @author zk
 * @date 2023/7/6 0006
 */
@Mapper
public interface KwfTruckMapper extends BaseMapper<KwfTruck> {

    /**
     * 统计
     *
     * @param params
     * @return
     */
    List<KwfTableTopCount> statisticsAll(@Param("params") Map<String, Object> params, @Param("authEntIdList") List<Long> authEntIdList);

    /**
     * 统计
     * @param params
     * @return
     */
    List<KwfTableTopCount> statistics(Map<String, Object> params);

    /**
     * 分页查询
     *
     * @param params
     * @return
     */
    List<KwfTruckVo> findPageAll(@Param("params") Map<String, Object> params, @Param("authEntIdList") List<Long> authEntIdList);

    /**
     * 分页查询
     * @param params
     * @return
     */
    List<KwfTruckVo> findPage(Map<String, Object> params);

    /**
     * 查询
     * @param params
     * @return
     */
    List<Map<String, Object>> findList(Map<String, Object> params);

    /**
     * 查询
     * @param params
     * @return
     */
    List<KwfTruck> findTruck(Map<String, Object> params);

    /**
     * 企业运力统计
     * @param entIds 企业id集
     * @param capacityAmountMin 最小合计载重
     * @param capacityAmountMax 最大合计载重
     * @return
     */
    List<Map<String, Object>> capacityStatistics(@Param("entIds") List<Long> entIds,
                                                 @Param("capacityAmountMin") Integer capacityAmountMin,
                                                 @Param("capacityAmountMax") Integer capacityAmountMax);

    /**
     * 查询企业车辆
     * @param params {entId 企业ID(必填), truckNo 车牌号}
     * @return
     */
    List<KwfTruckMonitorVo> findTruckByEnt(Map<String, Object> params);

    /**
     * 查询全部车辆
     *
     * @param params {truckNo 车牌号}
     * @return
     */
    List<KwfTruckMonitorVo> findTruckByAll(@Param("params") Map<String, Object> params, @Param("authEntIdList") List<Long> authEntIdList);


    /**
     * 企业车辆统计
     * @param entId 企业id
     * @return
     */
    Map<String, Object> truckStatistics(@Param("entId") Long entId);
}
