package com.ningdatech.carapi.car.vehicle.service;

import com.ningdatech.carapi.car.vehicle.model.dto.VehicleAuditDTO;
import com.ningdatech.carapi.car.vehicle.model.dto.VehicleSaveDTO;
import com.ningdatech.carapi.car.vehicle.model.dto.VehicleUpdateDTO;
import com.ningdatech.carapi.car.vehicle.model.NdVehicleBaseInfo;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ningdatech.carapi.car.vehicle.model.po.VehicleCompanyPO;
import com.ningdatech.carapi.car.datascreen.model.dto.DataScreenParam;
import com.ningdatech.carapi.car.datascreen.model.po.OverspeedStatisticsPO;
import java.util.Collection;
import java.util.List;
import java.util.Map;

/**
 * <p>
 * 服务类
 * </p>
 *
 * @author PoffyZhang
 * @since 2022-10-09
 */
public interface IVehicleBaseInfoService extends IService<NdVehicleBaseInfo> {

    NdVehicleBaseInfo save(VehicleSaveDTO vehicleSaveDTO, Long uerId);

    NdVehicleBaseInfo update(VehicleUpdateDTO vehicleUpdateDTO, Long uerId);

    Boolean removeByIdWithCache(List<Long> ids);

    Boolean audit(VehicleAuditDTO data, Long userId);

    Map<String, NdVehicleBaseInfo> listByCarNo(Collection<String> carNos);

    List<VehicleCompanyPO> getCarPlatesByCompanyIds(List<String> companyIds);
    List<VehicleCompanyPO> getCarPlatesByUseCompanyId(Long companyId);

    List<OverspeedStatisticsPO> getZj(DataScreenParam param);

    List<OverspeedStatisticsPO> getCity(DataScreenParam param);

    List<OverspeedStatisticsPO> getDistrict(DataScreenParam param);

    NdVehicleBaseInfo modifyAndUpdate(VehicleUpdateDTO data, Long userId);

    Boolean updateOfflineNotInCarPlates(List<String> carsOnline);

    boolean batchUpdate(List<NdVehicleBaseInfo> batchSaveCars,Integer batchSize);
}
