package com.prolog.eis.service.container;

import com.prolog.eis.dto.page.PdaStockRespDto;
import com.prolog.eis.dto.rf.DemonstrateTask;
import com.prolog.eis.dto.rf.DemonstrateTaskDto;
import com.prolog.eis.dto.rf.DemonstrateTaskInfo;
import com.prolog.eis.dto.rf.DemonstrateTaskReqDto;
import com.prolog.eis.dto.strategy.ContainerInfoDto;
import com.prolog.eis.dto.wcs.BcrRequestDto;
import com.prolog.eis.model.container.ContainerInfo;
import com.prolog.eis.model.inbound.BizInboundTask;
import com.prolog.eis.model.led.LedC;
import com.prolog.framework.core.restriction.Criteria;

import java.util.List;
import java.util.Map;

public interface ContainerInfoService {

    List<ContainerInfoDto> getContainerInfoDto(String warehouseArea,String billType);

    /**
     * 检查库存
     *
     * @param bcrRequestDto
     */
    ContainerInfo checkStore(BcrRequestDto bcrRequestDto);

    /**
     * 创建库存
     *
     * @param wmsTask
     */
    void createContainerStore(BizInboundTask wmsTask) throws Exception;

    /**
     * 通过容器号查询容器信息
     *
     * @param containerNo
     * @return
     */
    ContainerInfo findOneByContainerNo(String containerNo);

    /**
     * 通过订单类型初始化库存
     *
     * @param billType
     * @param warehouseArea
     * @return
     */
//    List<ContainerInfoDto> getContainerInfoDto(String billType, String warehouseArea);

    /**
     * 清理库存信息
     *
     * @param contianerList
     */
    void clearContainerAllInfo(List<String> contianerList);

    long updateByMap(Map<String,Object> params, Criteria criteria);

    LedC findContainerInfo(String stockId);

    void updateTaskType(Integer id, Integer taskType);

    List<ContainerInfoDto> getEmptyContainerInfoDto(String warehouseArea,String billType);

    List<ContainerInfo> getEmptyContainerInfo(String warehouseArea);

    List<ContainerInfoDto> getPartStrategyContainerInfo(String warehouseArea,String billType);

    List<ContainerInfoDto> getAssignContainerStore(String warehouseArea,String billType);

    List<PdaStockRespDto> stockList(String containerNo) throws Exception;

    long updateMapByCriteria(Map<String, Object> map, Criteria criteriaDetail);

    List<ContainerInfo> findByMap(Map<String, Object> map);

    List<ContainerInfoDto> getAllStock(int goodsPallet);

    void save(ContainerInfo containerInfo);

    void createEmptyStore(String containerNo, String warehouseArea);

    List<DemonstrateTask> findStockList(DemonstrateTaskDto demonstrateTaskDto);

    void updateMapById(Integer id, Map<String, Object> params);

    DemonstrateTaskInfo findDemonstrateTaskInfo(DemonstrateTaskReqDto demonstrateTaskReqDto);

    void update(ContainerInfo containerInfo);

    void deleteById(Integer id);
}
