package com.wms_main.service.controller;

import com.wms_main.model.bo.wcs.WcsStackerTask;
import com.wms_main.model.dto.request.wcs.WcsBoxArriveRequest;
import com.wms_main.model.dto.request.wcs.WcsTaskResultRequest;
import com.wms_main.model.dto.request.wcs.WcsVehicleInRequest;
import com.wms_main.model.dto.request.wms.*;
import com.wms_main.model.dto.response.wcs.BaseWcsApiResponse;
import com.wms_main.model.dto.response.wcs.WcsApiResponse;
import com.wms_main.model.dto.response.wms.BaseWmsApiResponse;
import com.wms_main.model.dto.response.wms.WmsApiResponse;
import com.wms_main.model.vo.wms.InventoryConfirmVo;
import com.wms_main.model.vo.wms.TaskConfirmVo;

/**
 * 任务控制类 服务接口
 */
public interface ITaskControllerService {
    /**
     * 入库请求
     * @param stockInRequest 请求信息
     * @return 处理结果
     */
    BaseWmsApiResponse requireStockIn(StockInRequest stockInRequest);

    /**
     * 出库请求
     * @param stockOutRequest 请求信息
     * @return 处理结果
     */
    BaseWmsApiResponse requireStockOut(StockOutRequest stockOutRequest);

    /**
     * 入库用出库请求
     * @param voiRequest 请求信息
     * @return 处理结果
     */
    BaseWmsApiResponse requireVehiclesForIn(VehicleOutForInRequest voiRequest);

    /**
     * 接收wcs反馈任务状态
     * @param wcsTaskResultRequest 请求信息
     * @return 处理结果
     */
    BaseWcsApiResponse sendTaskResult(WcsTaskResultRequest wcsTaskResultRequest);

    /**
     * wcs请求载具入库
     * @param wcsVehicleInRequest 载具请求
     * @return 处理结果
     */
    WcsApiResponse<WcsStackerTask> wcsRequestVehicleIn(WcsVehicleInRequest wcsVehicleInRequest);

    /**
     * Wcs上报载具到达站台
     * @param boxArriveRequest 请求信息
     * @return 处理结果
     */
    BaseWcsApiResponse boxArrive(WcsBoxArriveRequest boxArriveRequest);

    /**
     * 取消拣选任务
     * @param pickTaskRequest 请求信息
     * @return 处理结果
     */
    BaseWmsApiResponse cancelPickTasks(PickTaskRequest pickTaskRequest);

    /**
     * 获得当前站台任务
     * @param wmsRequest 请求信息
     * @return 处理结果
     */
    WmsApiResponse<TaskConfirmVo> getCurrentTask(BaseWmsRequest wmsRequest);

    /**
     * 确认任务
     * @param confirmTaskRequest 请求信息
     * @return 处理结果
     */
    BaseWmsApiResponse confirmCurrentTask(ConfirmTaskRequest confirmTaskRequest);

    /**
     * 下发盘点请求
     * @param inventoryRequest 盘点请求
     * @return 请求结果
     */
    BaseWmsApiResponse requestInventory(InventoryRequest inventoryRequest);

    /**
     * 查询盘点任务确认信息
     * @param inventoryConfirmRequest 请求
     * @return 请求结果
     */
    WmsApiResponse<InventoryConfirmVo> getInventoryConfirm(InventoryConfirmRequest inventoryConfirmRequest);

    /**
     * 确认盘点信息
     * @param inventoryConfirmRequest 确认请求
     * @return 处理结果
     */
    BaseWmsApiResponse confirmInventory(InventoryConfirmRequest inventoryConfirmRequest);
}
