using Model.InterFaceModel;
using Model.ModelDto.BllSoDto;
using Model.ModelDto.DataDto;
using Model.ModelVm.BllSoVm;
using WMS.Entity.DataEntity;
using System.Collections.Generic;
using System.Xml;
using System.Threading.Tasks;
using SqlSugar;
namespace WMS.IBLL.IBllSoServer
{
public interface IExportNoticeServer
{
///
/// 添加出库单(上游系统)
///
/// 模型
///
SoResInfo ErpAddExportNotice(SoInfo model);
///
/// 获取执行完成的单据发送至erp
///
/// 出库单Id
/// 上传路径
/// 操作人
///
bool FinishSo(int id, string url, int userId);
///
/// 接受生产叫料信号接口
///
///
///
bool MESProductionCall(ProductionCallVm model);
//------------------------------------------------------------------------------------------
///
/// 查询出库总单信息
///
/// 出库单号
/// 单据类型
/// 状态
/// 批次号
/// 承运商
/// 是否生成波次
/// 是否发运
/// 波次号
///
///
///
///
Task> GetExportNoticeList(GetExportNoticeVm model, RefAsync count);
///
/// 获取添加或修改出库单明细所显示的库存数据源
///
/// 类型
/// 物流编码、名称、批次
///
List GetStockGroupList(string house, string type, string ownerNo, string msg);
///
/// 添加出库单
///
/// 模型
/// 操作人
///
bool AddExportNotice(AddEditExportNoticeVm model,int userId);
///
/// 获取编辑出库单据
///
/// 单据号
///
EditExportNotifyDto GetEditExportNotice(string code);
///
/// 编辑出库单
///
///
///
///
EditExportNotifyDto EditExportNotice(AddEditExportNoticeVm model, int userId);
///
/// 删除出库单
///
/// 出库单Id
/// 操作人
///
bool DelExportNotice(int id,int userId);
///
/// 单据关闭(关单)
///
/// 出库单Id
/// 操作人
///
bool CloseExportNotice(int id,int userId);
XmlNode AddExXmlStr(int id, int userId);
//------------------------------------------------------------------------------------------
///
/// 获取托盘出库明细
///
/// 物料号
/// 物料名称
/// 托盘号
/// 批次
/// 抽检标识
/// 零托标识
///
///
///
///
Task> GetPalletNoOutList(GetPalletNoOutVm model, RefAsync count);
///
/// 托盘下发出库
///
/// 托盘号
/// 出库口
/// 操作人
/// 下发出库接口路径
/// 提示消息
///
List IssuePalletNoOut(string palletNo, string outMode, int userId, string url, out string str);
//------------------------------------------------------------------------------------------
#region 备料
///
/// 生产叫料定时任务开时
///
///
List ProCallIssueOutHouse(string url);
///
/// 生产备料定时任务
///
/// 出库单
/// 操作人
void AddBeiLiaoTimer(string soNo, int userId);
///
/// JC23领料单据备料出库
///
/// 下发WCS路径
///
List BeiLiaoIssueOutHouse(string url);
///
/// agv返回的成功信号(出库成功)
///
///
///
void ExportSuccessAGV(string taskNo, int userId);
#endregion
//------------------------------------------------------------------------------------------
///
/// 获取出库单的仓库信息
///
/// 出库单号
/// 出库单的仓库号
string GetHouseBySo(string soNo);
///
/// 下发出库 立库
///
/// 出库单
/// 出库口
/// 下发人
/// 下发路径
/// 返回提示String
/// 出库集合
List IssueOutHouseLk(string soNo, string outMode, int userId, string url, out string str);
///
/// 下发出库 密集库
///
/// 出库单
/// 出库口
/// 下发人
/// 下发路径
/// 返回提示String
/// 出库集合
List IssueOutHouseMk(string soNo, string outMode, int userId, string url, out string str);
///
/// 下发出库(调用cs接口给他库位地址)
///
/// 出库单号
/// 出库口
/// 操作人
/// 下发出库路径
/// 提示信息
/// 下发的指令集合
List IssueOutHouse(string soNo, string unstackingMode, string outMode, string loadingAddre, int userId,string url,out string str);
///
/// wcs返回的成功信号或手动完成(出库成功)
///
/// 任务号
/// 操作人
///
void ExportSuccess(string taskNo,int userId);
///
/// wcs返回的成功信号或手动完成(移库成功)
///
///
///
void RelocationSuccess(string taskNo, int userId);
///
/// 重新下发出库任务
///
/// 任务号
/// 操作人
/// 下发路径
///
OutCommandDto AgainSendSoTask(string taskNo, int userId,string url);
///
/// 手动取消出库任务
///
/// 任务号
/// 操作人
///
void CancelSoTask(string taskNo, int userId);
///
/// 空取异常
///
/// 任务信息
/// 出库任务
bool EmptyException(ReceiveWcsSignal model);
//------------------------------------------------------------------------------------------
///
/// 判断是否跨批分配
///
/// 出库单号
///
bool IsCrossLotNo(string soNo);
///
/// 自动分配
///
/// 出库单据号
/// 操作人
///
bool AutoAllot(string soNo, int userId);
///
/// 取消分配
///
/// 出库单据号
/// 操作人
///
bool CancelAllot(string soNo, int userId);
///
/// 维护出库单备注信息
///
///
///
///
void EditNoticeDemo(int id, string demo, int userId);
///
/// 获取库存明细信息(出库单手动分配选择数据源)
///
/// 出库单明细Id
/// 仓库号
/// 巷道号
/// 储位号
/// 物料编码、名称、批次号
/// 托盘码
///
List GetHandOutList(int detailId, string houseNo, string roadwayNo, string locateNo, string msg,string palletNo);
///
/// 手动分配出库单明细
///
///
///
void AddHandOutAllot(AddHandOutVm model, int userId);
///
/// 判断出库是否需要拆箱
///
///
///
string IsNeedUnpack(string soNo);
#region 数据归档
///
/// 查询出库总单信息 - 数据归档
///
/// 出库单号
/// 单据类型
/// 状态
/// 批次号
/// 承运商
/// 是否生成波次
/// 是否发运
/// 波次号
///
///
///
///
List GetArchivingExportNoticeList(string no, string type, string status, string LotNo, int? logisticsId, string isWave, string isDespatch, string waveNo, int page, int limit, out int count);
#endregion
}
}