package cn.iocoder.yudao.module.system.service.remote;

import java.util.*;
import javax.validation.*;
import javax.validation.constraints.NotEmpty;

import cn.iocoder.yudao.module.system.api.remote.dto.RemoteRobotMaxSpeedDTO;
import cn.iocoder.yudao.module.system.controller.admin.remote.vo.*;
import cn.iocoder.yudao.module.system.dal.dataobject.remote.RobotMaxSpeedDO;
import com.baomidou.mybatisplus.extension.service.IService;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.pojo.PageParam;

/**
 * 远遥车辆最大速度 Service 接口
 *
 * @author 陈宾顺
 */
public interface RobotMaxSpeedService extends IService<RobotMaxSpeedDO> {

    /**
     * 创建远遥车辆最大速度
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    Long createRobotMaxSpeed(@Valid RobotMaxSpeedSaveReqVO createReqVO);

    /**
     * 更新远遥车辆最大速度
     *
     * @param updateReqVO 更新信息
     */
    void updateRobotMaxSpeed(@Valid RobotMaxSpeedSaveReqVO updateReqVO);

    /**
     * 删除远遥车辆最大速度
     *
     * @param id 编号
     */
    void deleteRobotMaxSpeed(Long id);

    /**
     * 获得远遥车辆最大速度
     *
     * @param id 编号
     * @return 远遥车辆最大速度
     */
    RobotMaxSpeedDO getRobotMaxSpeed(Long id);

    /**
     * 获得远遥车辆最大速度分页
     *
     * @param pageReqVO 分页查询
     * @return 远遥车辆最大速度分页
     */
    PageResult<RobotMaxSpeedDO> getRobotMaxSpeedPage(RobotMaxSpeedPageReqVO pageReqVO);

    /**
     * 更新车辆编号
     * @param oldRobotNo
     * @param newRobotNo
     */
    void updateRobotNo(String oldRobotNo,  String newRobotNo);

    /**
     * 根据车辆编号删除
     * @param robotNo
     */
    void deleteByRobotNo(String robotNo);

    /**
     * 查询所有车辆速度
     * @return
     */
    List<RemoteRobotMaxSpeedDTO> getAllRobotMaxSpeedList();

    /**
     * 批量更新车辆速度
     * @param list
     */
    void updateRobotMaxSpeedList(List<RemoteRobotMaxSpeedDTO> list);

    /**
     * 根据车辆编号查询
     * @param robotNo
     */
    String getRobotMaxSpeedByRobotNo(String robotNo);
}
