
package com.cmvr.inspection.service;

import java.util.List;

import com.baomidou.mybatisplus.extension.service.IService;
import com.cmvr.inspection.domain.InspectionRobot;
import com.cmvr.inspection.domain.vo.InspectionRobotVo;
import cmvr.api.AgvCommand;

/**
 * 巡检机器人Service接口
 *
 * @author cmvr-iot
 * @since 2026-05-29
 */
public interface IInspectionRobotService extends IService<InspectionRobot>
{
    /**
     * 查询巡检机器人
     *
     * @param id 巡检机器人主键
     * @return 巡检机器人
     */
    InspectionRobot selectInspectionRobotById(String id);

    /**
     * 查询巡检机器人列表
     *
     * @param inspectionRobot 巡检机器人
     * @return 巡检机器人集合
     */
    List<InspectionRobotVo> selectInspectionRobotList(InspectionRobot inspectionRobot);

    /**
     * 新增巡检机器人
     *
     * @param inspectionRobot 巡检机器人
     * @return 结果
     */
    int insertInspectionRobot(InspectionRobot inspectionRobot);

    /**
     * 修改巡检机器人
     *
     * @param inspectionRobot 巡检机器人
     * @return 结果
     */
    int updateInspectionRobot(InspectionRobot inspectionRobot);

    /**
     * 批量删除巡检机器人
     *
     * @param ids 需要删除的巡检机器人主键集合
     * @return 结果
     */
    int deleteInspectionRobotByIds(String[] ids);

    /**
     * 获取机器人地图列表（从AGV获取）
     *
     * @param robotId 机器人ID
     * @return 地图状态信息
     */
    AgvCommand.AgvMapStatus getRobotMapList(String robotId);

    /**
     * 绑定机器人地图
     *
     * @param robotId 机器人ID
     * @param mapId 地图ID
     * @return 结果
     */
    int bindRobotMap(String robotId, String mapId);

    /**
     * 上传地图到机器人
     *
     * @param robotId 机器人ID
     * @param mapId 地图ID
     * @return 结果
     */
    String uploadMapToRobot(String robotId, String mapId);

    /**
     * 从机器人下载地图
     *
     * @param robotId 机器人ID
     * @param mapName 地图名称
     * @return 地图ID
     */
    String downloadMapFromRobot(String robotId, String mapName);

    /**
     * 同步机器人状态（电量、位置等）
     *
     * @param robotId 机器人ID
     * @return 更新后的机器人信息
     */
    InspectionRobot syncRobotStatus(String robotId);

}