package com.muyu.server.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.github.pagehelper.PageInfo;

import com.muyu.common.core.domain.Result;
import com.muyu.domain.CarInformation;
import com.muyu.domain.req.CarInformationAddReq;
import com.muyu.domain.req.CarInformationListReq;
import com.muyu.domain.req.CarInformationUpdReq;
import com.muyu.domain.resp.CarInformationResp;

import java.util.List;

/**
 * 车辆信息管理业务层
 */
public interface CarInformationService extends IService<CarInformation> {
    /**
     * 企业车辆管理列表
     * 联查--> 车辆管理--车辆类型表--车辆电子围栏
     * 搜索-->(车辆唯一VIN carInformationVIN 精确查
     *        车辆类型ID  carTypeId  精确查
     *        车辆电子围栏外键ID carInformationFence 精确查
     *        启用状态(1.在线 2.离线 3.已断开 4.待连接 5.维修中)
     *        carInformationState  精确查
     *        车辆电机厂商 carInformationMotorManufacturer 模糊查
     *        车辆电机型号 carInformationMotorModel 精确查
     *        车辆电池厂商 carInformationBatteryManufacturer 模糊查
     *        车辆电池型号 carInformationBatteryModel 精确查
     *        )
     *        分页-->  分页页数 pageNum  分页条数 pageSize
     * @param carInformationListReq
     * @return
     */
    Page<CarInformationResp> selectCarInformationList(CarInformationListReq carInformationListReq);


    /**
     * 企业车辆添加管理
     * @param carInformationAddReq
     * @return
     */
    boolean addCarInformation(CarInformationAddReq carInformationAddReq);

    /**
     * 企业车辆删除
     * @param carInformationId
     * @return
     */
    boolean delBycarInformationId(Integer carInformationId);


    /**
     * 企业车辆修改管理
     * @param carInformationUpdReq
     * @return
     */
    boolean updatecarInformation(CarInformationUpdReq carInformationUpdReq);


    /**
     * To 电子围栏负责人
     * 查询企业车辆 carInformationID 和  carInformationLicensePlate
     * 无参
     * @return
     */
    List<CarInformationResp> selectBycarInformationIDAndLicensePlate();

    /**
     * chaxunCar
     * @param faulttypeId
     */
    List<CarInformation> selectCarInformation(Long faulttypeId);
}
