package com.prolog.eis.service.route;

import com.prolog.cs.basic.warehouse.model.vo.BaseEisWarehouseLocatorVo;
import com.prolog.eis.core.dto.route.ItemContainerReqDto;
import com.prolog.eis.core.model.base.area.WhArea;
import com.prolog.eis.core.model.base.area.WhAreaDirection;
import com.prolog.eis.core.model.base.locator.WhLocator;
import com.prolog.eis.core.model.biz.route.ContainerLocation;
import com.prolog.eis.router.vo.ContainerLocationVo;

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

/**
 * EIS3.0接口服务
 *
 * @author zhanghan
 */
public interface RouteInterfaceService {

    /**
     * 根据点位查询点位信息
     *
     * @param locationList 点位集合
     * @return List<BaseEisWarehouseLocatorVo>
     */
    List<BaseEisWarehouseLocatorVo> findLocatorByLocationList(List<String> locationList);

    /**
     * 容器上架
     *
     * @param palletNo         容器号
     * @param location         点位
     * @param businessProperty 业务属性
     */
    void createItemContainer(String palletNo, String location, String businessProperty);

    /**
     * 根据点位获取点位信息
     *
     * @param locationList 点位集合
     * @return List<WhLocator>
     */
    List<WhLocator> getLocatorByLocation(List<String> locationList);

    /**
     * 根据货架号查询点位信息
     *
     * @param palletNoList 容器号集合
     * @return List<ContainerLocationVo>
     */
    List<ContainerLocationVo> findLocationByContainerList(List<String> palletNoList);

    /**
     * 批量容器上架
     *
     * @param commonContainerUpList 容器点位集合
     */
    void commonContainerUpList(List<ItemContainerReqDto> commonContainerUpList);

    /**
     * 根据区域编号获取区域
     *
     * @param areaNo 区域编号
     * @return WhArea
     */
    WhArea getAreaByAreaNo(String areaNo);

    /**
     * 查找起始区域或结束区域
     * @param areaNoList
     * @return
     */
    List<WhAreaDirection> findStartAreaOrEndArea(List<String> areaNoList);

    public ContainerLocation seachLocationNo(Map<String, Object> containerMap) throws Exception;

    void createCarryTask(String containerNo, Integer taskType, String startRegion, String startLocation, String endRegion, String endLocation, String businessType, Integer height, String describe, String businessProperty) throws Exception;
}