using System; 
 | 
using System.Collections.Generic; 
 | 
using System.Linq; 
 | 
using System.Reflection; 
 | 
using System.Text; 
 | 
using System.Threading.Tasks; 
 | 
using WIDESEA_Common.LocationEnum; 
 | 
using WIDESEA_Core; 
 | 
using WIDESEA_Core.BaseServices; 
 | 
using WIDESEA_Core.Enums; 
 | 
using WIDESEA_DTO.Stock; 
 | 
using WIDESEA_IOutboundRepository; 
 | 
using WIDESEA_Model.Models; 
 | 
  
 | 
namespace WIDESEA_IOutboundService 
 | 
{ 
 | 
    public interface IOutboundOrderDetailService : IService<Dt_OutboundOrderDetail> 
 | 
    { 
 | 
        IOutboundOrderDetailRepository Repository { get; } 
 | 
  
 | 
        /// <summary> 
 | 
        /// 锁定出库库存 
 | 
        /// </summary> 
 | 
        /// <param name="orderDetailId">出库单明细Id</param> 
 | 
        /// <returns></returns> 
 | 
        WebResponseContent LockOutboundStock(int orderDetailId); 
 | 
  
 | 
        /// <summary> 
 | 
        /// 分配库存出库逻辑 
 | 
        /// </summary> 
 | 
        /// <param name="outboundOrderDetail">出库单明细</param> 
 | 
        /// <param name="stockSelectViews">人工选择的库存</param> 
 | 
        /// <returns></returns> 
 | 
        (List<Dt_StockInfo>, Dt_OutboundOrderDetail, List<Dt_OutStockLockInfo>, List<Dt_LocationInfo>) AssignStockOutbound(Dt_OutboundOrderDetail outboundOrderDetail, List<StockSelectViewDTO> stockSelectViews); 
 | 
  
 | 
        /// <summary> 
 | 
        /// 分配库存出库逻辑 
 | 
        /// </summary> 
 | 
        /// <param name="outboundOrderDetails"></param> 
 | 
        /// <returns></returns> 
 | 
        (List<Dt_StockInfo>, List<Dt_OutboundOrderDetail>, List<Dt_OutStockLockInfo>, List<Dt_LocationInfo>) AssignStockOutbound(List<Dt_OutboundOrderDetail> outboundOrderDetails); 
 | 
  
 | 
        /// <summary> 
 | 
        /// 锁定出库库存 
 | 
        /// </summary> 
 | 
        /// <param name="orderDetailId">出库单明细Id</param> 
 | 
        /// <param name="stockSelectViews">人工选择的库存</param> 
 | 
        /// <returns></returns> 
 | 
        WebResponseContent LockOutboundStock(int orderDetailId, List<StockSelectViewDTO> stockSelectViews); 
 | 
  
 | 
        /// <summary> 
 | 
        /// 锁定出库库存(多明细) 
 | 
        /// </summary> 
 | 
        /// <param name="keys"></param> 
 | 
        /// <returns></returns> 
 | 
        WebResponseContent LockOutboundStock(int[] keys); 
 | 
  
 | 
        /// <summary> 
 | 
        /// 锁定出库库存(修改数据) 
 | 
        /// </summary> 
 | 
        /// <param name="stockInfos">库存明细集合</param> 
 | 
        /// <param name="outboundOrderDetails">出库单明细集合</param> 
 | 
        /// <param name="outStockLockInfos">出库锁定明细集合</param> 
 | 
        /// <param name="locationInfos">货位结合</param> 
 | 
        /// <param name="locationStatus">货位状态修改的值</param> 
 | 
        /// <param name="tasks">任务信息</param> 
 | 
        /// <returns></returns> 
 | 
        WebResponseContent LockOutboundStockDataUpdate(List<Dt_StockInfo> stockInfos, List<Dt_OutboundOrderDetail> outboundOrderDetails, List<Dt_OutStockLockInfo> outStockLockInfos, List<Dt_LocationInfo> locationInfos, LocationStatusEnum locationStatus = LocationStatusEnum.Lock, List<Dt_Task>? tasks = null); 
 | 
  
 | 
        /// <summary> 
 | 
        /// 撤销锁定出库库存 
 | 
        /// </summary> 
 | 
        /// <param name="orderDetailId">出库单明细主键</param> 
 | 
        /// <returns></returns> 
 | 
        WebResponseContent RevokeLockOutboundStock(int orderDetailId); 
 | 
    } 
 | 
} 
 |