package com.prolog.eis.bcr_handle;

import com.prolog.eis.common.util.location.LocationConstants;
import com.prolog.eis.constants.base.LocationWorkAreaConstants;
import com.prolog.eis.dto.wcs.BcrConfigDto;
import com.prolog.eis.dto.wcs.BcrRequestDto;
import com.prolog.eis.enums.mcs.ShapeEnums;
import com.prolog.eis.model.config.BcrConfig;

import java.math.BigDecimal;
import java.util.Objects;

public abstract class BcrHandleStrategy {


    public String doAsyncHandle(BcrRequestDto bcrRequestDto, BcrConfigDto bcrConfigDto) throws Exception {
        return "";
    }

    public Integer doSyncHandle(BcrRequestDto bcrRequestDto, BcrConfigDto bcrConfigDto) {
        return 0;
    }

    public String deviceCheck(BcrConfigDto bcrConfigDto, BcrRequestDto bcrRequestDto) throws Exception {
        return null;
    }

    public void doOtherHandle(Object containerStore, Object wmsTask, BcrRequestDto bcrRequestDto, BcrConfigDto bcrConfigDto) throws Exception {
        throw new Exception("请重写doOtherHandle方法,进行bcr其他逻辑处理");
    }

    public Object checkStore(BcrRequestDto bcrRequestDto) throws Exception {
        throw new Exception("请重写checkStore方法,进行bcr的库存认证");
    }

    public Object getWmsTask(BcrRequestDto bcrRequestDto) throws Exception {
        throw new Exception("当前为请求管理入库任务模式,请重写getWmsTask方法，请求上游或者验证当前入库任务");
    }

    public boolean checkLocOutTask(BcrConfigDto bcrConfigDto) throws Exception {
        throw new Exception("当前为请求管理入库任务模式,请重写checkLocOutTask方法，校验双向出入库是否有出库任务");
    }

}
