using SqlSugar; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using WIDESEA_Common.StockEnum; using WIDESEA_Core.BaseServices; using WIDESEA_Core.Enums; using WIDESEA_Core.Helper; using WIDESEA_IOutboundRepository; using WIDESEA_Model.Models; namespace WIDESEA_IOutboundService { public partial class OutStockLockInfoService : ServiceBase, IOutStockLockInfoService { public IOutStockLockInfoRepository Repository => BaseDal; public OutStockLockInfoService(IOutStockLockInfoRepository BaseDal) : base(BaseDal) { } /// /// 添加出库详情 /// /// /// /// /// /// public List GetOutStockLockInfos(Dt_OutboundOrder outboundOrder, Dt_OutboundOrderDetail outboundOrderDetail, List outStocks, int? taskNum = null) { List outStockLockInfos = new List(); var OutStockLockInfos = GetByOrderDetailId(outboundOrderDetail.Id); foreach (var item in outStocks) { Dt_OutStockLockInfo outStockLockInfo = OutStockLockInfos.FirstOrDefault(x => x.StockId == item.Id && x.OrderDetailId == outboundOrderDetail.Id); if (outStockLockInfo == null) { outStockLockInfo = new Dt_OutStockLockInfo() { PalletCode = item.PalletCode, AssignQuantity = item.Details.Where(x => x.MaterielCode == outboundOrderDetail.MaterielCode).Sum(x => x.OutboundQuantity), MaterielCode = outboundOrderDetail.MaterielCode, BatchNo = item.Details.Select(x => x.BatchNo).FirstOrDefault(), //BatchNo = outboundOrderDetail.BatchNo, LocationCode = item.LocationCode, MaterielName = outboundOrderDetail.MaterielName, OrderDetailId = outboundOrderDetail.Id, OrderNo = outboundOrder.OrderNo, OrderType = outboundOrder.OrderType, OriginalQuantity = item.Details.Where(x => x.MaterielCode == outboundOrderDetail.MaterielCode).Sum(x => x.StockQuantity), //Status = taskNum == null ? OutStockStatus.已分配.ObjToInt() : OutStockStatus.出库中.ObjToInt(), StockId = item.Id, TaskNum = taskNum }; } outStockLockInfo.Status = taskNum == null ? OutStockStatus.已分配.ObjToInt() : OutStockStatus.出库中.ObjToInt(); outStockLockInfos.Add(outStockLockInfo); } return outStockLockInfos; } /// /// 获取出库详情 /// /// /// public List GetByOrderDetailId(int orderDetailId) { return BaseDal.QueryData(x => x.OrderDetailId == orderDetailId); } public List GetByOrderDetailId(int orderDetailId, OutStockStatus outStockStatus) { return BaseDal.QueryData(x => x.OrderDetailId == orderDetailId && x.Status == outStockStatus.ObjToInt()); } public List GetOutStockLockInfo(Dt_OutboundOrder outboundOrder, Dt_OutboundOrderDetail item, List dt_StockInfos, int? taskNum = null, string BatchNo = null) { List OutStockLockInfos = new List(); foreach (var dt in dt_StockInfos) { Dt_OutStockLockInfo outStockLockInfo = new Dt_OutStockLockInfo() { PalletCode = dt.PalletCode, AssignQuantity = 1, MaterielCode = item.MaterielCode, BatchNo = BatchNo, LocationCode = dt.LocationCode, MaterielName = item.MaterielName, OrderDetailId = item.Id, OrderNo = outboundOrder.OrderNo, OrderType = outboundOrder.OrderType, OriginalQuantity = 1, Status = taskNum == null ? OutLockStockStatusEnum.已分配.ObjToInt() : OutLockStockStatusEnum.出库中.ObjToInt(), StockId = dt.Id, TaskNum = taskNum, OrderQuantity = item.OrderQuantity }; OutStockLockInfos.Add(outStockLockInfo); } return OutStockLockInfos; } } }