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

import javax.validation.*;

import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.system.controller.admin.robot.vo.RobotTaskDetailAddVO;
import cn.iocoder.yudao.module.system.controller.admin.robot.vo.RobotTaskDetailPageReqVO;
import cn.iocoder.yudao.module.system.controller.admin.robot.vo.RobotTaskDetailSaveReqVO;
import cn.iocoder.yudao.module.system.dal.dataobject.robot.RobotTaskDetailDO;

import java.util.List;

/**
 * 机器人任务明细 Service 接口
 *
 * @author 陈宾顺
 */
public interface RobotTaskDetailService {

    /**
     * 创建机器人任务明细
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    Long createTaskDetail(@Valid RobotTaskDetailSaveReqVO createReqVO);

    /**
     * 更新机器人任务明细
     *
     * @param updateReqVO 更新信息
     */
    void updateTaskDetail(@Valid RobotTaskDetailSaveReqVO updateReqVO);

    /**
     * 删除机器人任务明细
     *
     * @param id 编号
     */
    void deleteTaskDetail(Long id);

    /**
     * 获得机器人任务明细
     *
     * @param id 编号
     * @return 机器人任务明细
     */
    RobotTaskDetailDO getTaskDetail(Long id);

    /**
     * 获得机器人任务明细分页
     *
     * @param pageReqVO 分页查询
     * @return 机器人任务明细分页
     */
    PageResult<RobotTaskDetailDO> getTaskDetailPage(RobotTaskDetailPageReqVO pageReqVO);

    /**
     * 批量插入
     * @param taskDetailList
     */
    void insertRobotDetailList(List<RobotTaskDetailAddVO> taskDetailList);

    /**
     * 关闭任务
     * @param taskDetailId
     */
    RobotTaskDetailDO closeTaskDetail(Long taskDetailId);
}