package com.prolog.eis.service.page;

import com.prolog.eis.dto.item.ItemSyncVO;
import com.prolog.eis.dto.outbound.PagePriorityDto;
import com.prolog.eis.dto.page.*;
import com.prolog.framework.common.message.RestMessage;
import com.prolog.framework.core.pojo.Page;

import java.math.BigDecimal;
import java.util.List;

public interface PageService {
    /**
     *
     * Description: 出库订单管理--更改优先级<br/>
     *
     * @param dtoList
     * @return
     */
    RestMessage<String> updateTaskPriority(List<OutQueryDto> dtoList);

    /**
     *
     * Description: 更改调度开关(0:关闭，1：开启)<br/>
     *
     * @param type
     */
    void updateTaskType(AssemblyStateDto req);

    void groupOrderDistribute(List<Integer> outboundTaskIds);

    OrderNumDto orderNum();

    List<PickingOrderRespDto> pickingOrderList(PickingOrderReqDto req);

    List<PickingOutboundOrderRespDto> pickOutboundOrderList(Integer packId);

    void pickOrderLock(PickOrderLockReqDto req);

    void outboundOrderCancel(List<Integer> ids);

    void pickOrderActive(List<Integer> ids);

    String assemblyState(String type);

    List<OutboundOrderRespDto> outboundOrderList(PickingOrderReqDto req);

    List<OutboundOrderDetailRespDto> orderDetailList(Integer id) throws Exception;

    List<OrderStockWarnRespDto> orderStockWarn(OrderStockWarnReqDto req) throws Exception;

    List<StockRespDto> stockList(StockReqDto req) throws Exception;

    List<InboundOrderRespDto> inboundOrderList(InboundOrderReqDto req);

    List<InboundOrderDetailRespDto> inboundOrderDetail(Integer id) throws Exception;

    void updatePriority(List<PagePriorityDto> priorityList);
    Object itemList(ItemReqDto req) throws Exception;

    /**
     * EIS库存锁定分页查询
     * @param req
     * @return
     */
    Page<LockStockRespDto> lockStockListPage(LockStockReqDto req) throws Exception ;

    /**
     * EIS库存全部锁定
     * @param containerSubNos
     * @throws Exception
     */
    void lockContainerStocks(List<String> containerSubNos) throws Exception;

    /**
     * EIS库存部分锁定
     * @throws Exception
     */
    void lockContainerStock(String containerNo , BigDecimal lockQty) throws Exception;

    /**
     * 查询详情
     * @param containerNo
     * @return
     * @throws Exception
     */
    LockStockRespDto lockContainerStockDetail(String containerNo) throws Exception;

    /**
     * EIS容器库存解锁
     * @throws Exception
     */
    void unLockContainerStock(List<String> containerSubNos) throws Exception;
}
