using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using WIDESEA_Common.StockEnum; using WIDESEA_Core; using WIDESEA_Core.BaseServices; using WIDESEA_Core.Enums; using WIDESEA_Core.Helper; using WIDESEA_IOutboundRepository; using WIDESEA_IRecordService; using WIDESEA_IStockService; using WIDESEA_Model.Models; namespace WIDESEA_IOutboundService { public partial class OutStockLockInfoService { /// /// 分拣 /// /// 托盘号 /// public WebResponseContent MaterialPick(string palletCode) { try { Dt_StockInfo stockInfo = _stockService.StockInfoService.Repository.GetStockInfo(palletCode); if (stockInfo == null) { return WebResponseContent.Instance.Error($"未找到该托盘库存信息"); } if (stockInfo.StockStatus != StockStatusEmun.出库完成.ObjToInt()) { return WebResponseContent.Instance.Error($"该托盘还未出库完成"); } List outStockLockInfos = Repository.QueryData(x => x.PalletCode == palletCode); for (int i = 0; i < outStockLockInfos.Count; i++) { outStockLockInfos[i].Status = OutLockStockStatusEnum.出库完成.ObjToInt(); } List beforeDetaile = stockInfo.Details.GroupBy(x => x.MaterielCode).Select(x => new Dt_StockInfoDetail { MaterielCode = x.Key, StockQuantity = x.Sum(v => v.StockQuantity) }).ToList(); List updateDetailList = new List(); List deleteDetailList = new List(); for (int i = 0; i < stockInfo.Details.Count; i++) { if (stockInfo.Details[i].OutboundQuantity > 0) { if (stockInfo.Details[i].StockQuantity > stockInfo.Details[i].OutboundQuantity) { stockInfo.Details[i].StockQuantity -= stockInfo.Details[i].OutboundQuantity; updateDetailList.Add(stockInfo.Details[i]); } else { deleteDetailList.Add(stockInfo.Details[i]); } } } List mCodes = stockInfo.Details.GroupBy(x => x.MaterielCode).Select(x => x.Key).ToList(); foreach (string code in mCodes) { _recordService.StockQuantityChangeRecordService.AddStockChangeRecord(stockInfo, updateDetailList, deleteDetailList, StockChangeTypeEnum.Outbound); } updateDetailList.ForEach(x => { x.OutboundQuantity = 0; }); //_stockService.StockInfoDetailService.Repository.DeleteAndMoveIntoHty(deleteDetailList, OperateTypeEnum.自动完成); _stockService.StockInfoDetailService.Repository.UpdateData(updateDetailList); BaseDal.UpdateData(outStockLockInfos); return WebResponseContent.Instance.OK(); } catch (Exception ex) { return WebResponseContent.Instance.Error(ex.Message); } } } }