package com.wms_main.service.controller;

import com.wms_main.model.bo.wms.BoxSummary;
import com.wms_main.model.dto.query.*;
import com.wms_main.model.dto.request.wms.*;
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.*;

import java.util.List;

/**
 * 卡特工作控制类服务接口
 */
public interface IKateWorkControllerService {
    /**
     * 查询工作情况
     * @param kateWorksQuery 查询参数
     * @return 查询结果
     */
    WmsApiResponse<KateWorkOptionsVo> queryKateWorks(KateWorksQuery kateWorksQuery);

    /**
     * 创建工作/初始化
     * @param initKateWorkRequest 请求信息
     * @return 处理结果
     */
    BaseWmsApiResponse initWorks(InitKateWorkRequest initKateWorkRequest);

    /**
     * 获得当前需要配料的工作
     * @param kateWorksQuery 查询参数
     * @return 查询结果
     */
    WmsApiResponse<WorkConfirmVo> getCurrentWorks(KateWorksQuery kateWorksQuery);

    /**
     * 确认当前工作
     * @param confirmWorkRequest 确认请求
     * @return 处理结果
     */
    BaseWmsApiResponse confirmCurrentWork(ConfirmWorkRequest confirmWorkRequest);

    /**
     * 查找图纸
     * @param request 请求参数
     * @return 图纸
     */
    WmsApiResponse<ImageVo> getImageOfWork(BaseWmsRequest request);

    /**
     * 配料界面获取料盒显示信息
     * @param request 请求
     * @return 查询结果
     */
    WmsApiResponse<BoxDetailVo> getBoxesAndLacks(BaseWmsRequest request);

    /**
     * 分页查看看板
     * @param kanbanQuery 查询参数
     * @return 查询结果
     */
    WmsApiResponse<PageVo<KanbanVo>> queryKanbanByPage(KanbanQuery kanbanQuery);

    /**
     * 生成看板需求
     * @param genRequest 请求参数
     * @return 请求结果
     */
    BaseWmsApiResponse genClcKanbanRequirement(GenKanbanRequirementRequest genRequest);

    /**
     * 查询图纸
     * @param imageQuery 查询参数
     * @return 查询结果
     */
    WmsApiResponse<List<ImageVo>> requestImageDetail(ImageQuery imageQuery);

    /**
     * 查询Dbs列表---分页
     * @param dbsQuery 查询参数
     * @return 查询结果---分页
     */
    WmsApiResponse<PageVo<DbsVo>> queryDbsByPage(DbsQuery dbsQuery);

    /**
     * 查询配料单列表---分页
     * @param kittingBomQuery 查询参数
     * @return 查询结果---分页
     */
    WmsApiResponse<PageVo<KittingBomVo>> queryKittingBomByPage(KittingBomQuery kittingBomQuery);

    /**
     * 查询图纸列表---分页
     * @param imageQuery 查询参数
     * @return 查询结果---分页
     */
    WmsApiResponse<PageVo<ImageVo>> queryImagesByPage(ImageQuery imageQuery);

    /**
     * 查询配料单对应关系列表---分页
     * @param kittingBomRelationQuery 查询参数
     * @return 查询结果---分页
     */
    WmsApiResponse<PageVo<KittingBomRelationVo>> queryKittingRelationByPage(KittingBomRelationQuery kittingBomRelationQuery);

    /**
     * 查询工作汇总列表---分页
     * @param workSummaryQuery 查询参数
     * @return 查询结果---分页
     */
    WmsApiResponse<PageVo<KateWorkVo>> queryWorkSummaryByPage(WorkSummaryQuery workSummaryQuery);

    /**
     * 查询当前站台待工作的物料列表
     * @param workSummaryQuery 查询参数
     * @return 查询结果---分页
     */
    WmsApiResponse<PageVo<KateWorkVo>> queryWorkingGoodsByPage(WorkSummaryQuery workSummaryQuery);

    /**
     * 查询当前站台待工作的物料列表
     * @param kateWorksQuery 查询参数
     * @return 查询结果---分页
     */
    WmsApiResponse<List<KateWorkVo>> getLackGoods(KateWorksQuery kateWorksQuery);

    /**
     * 更新当前工作流
     * @param updateWorkRequest 更新请求
     * @return 更新结果
     */
    BaseWmsApiResponse updateKateWorks(UpdateWorkRequest updateWorkRequest);

    /**
     * 关闭当前工作流
     * @param closeWorkRequest 关闭请求
     * @return 关闭结果
     */
    BaseWmsApiResponse closeCurrentWorks(UpdateWorkRequest closeWorkRequest);

    /**
     * 请求打印料盒标签
     * @param kateWorksQuery 查询参数
     * @return 需要打印的料盒标签
     */
    WmsApiResponse<BoxSummary> requestPrintBoxTags(KateWorksQuery kateWorksQuery);

    /**
     * 删除dbs计划
     * @param dbsRequest 删除请求
     * @return 删除结果
     */
    BaseWmsApiResponse deleteDbsPlan(DbsRequest dbsRequest);
}
