1
wankeda
2026-01-09 58a1b8b7db72225e0c2acca4f76399899f1bda4f
WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/NewPartialTaskService_Outbound.cs
@@ -35,6 +35,10 @@
                {
                    throw new Exception("未找到库存信息");
                }
                if (stockInfos == null || stockInfos.Count == 0)
                {
                    throw new Exception("未找到库存信息");
                }
                var Newtasks = GetTasks(stockInfos, TaskTypeEnum.OutProduct);
                List<Dt_StockInfoDetail> stockInfoDetails = _stockService.StockInfoDetailService.Repository.QueryData(x => stockInfos.Select(x => x.Id).Contains(x.StockId));
                foreach (var item in outboundOrderDetails)
@@ -80,5 +84,51 @@
                return WebResponseContent.Instance.Error(ex.Message);
            }
        }
        //合托出库
        public WebResponseContent WMSGenerateSTOutboundTask(int[] keys)
        {
            try
            {
                List<Dt_Task> tasks = new List<Dt_Task>();
                List<Dt_LocationInfo> locationInfos = new List<Dt_LocationInfo>();
                List<Dt_OutStockLockInfo> outStockLockInfos = new List<Dt_OutStockLockInfo>();
                List<Dt_StockInfo> stockInfos = _stockService.StockInfoService.Repository.QueryData(x => keys.Contains(x.Id) && x.StockStatus == StockStatusEmun.入库完成.ObjToInt());
                if (stockInfos == null || stockInfos.Count == 0)
                {
                    throw new Exception("未找到库存信息,或库存状态不为入库完成");
                }
                var Newtasks = GetTasks(stockInfos, TaskTypeEnum.OutSyncretism);
                List<Dt_StockInfoDetail> stockInfoDetails = _stockService.StockInfoDetailService.Repository.QueryData(x => stockInfos.Select(x => x.Id).Contains(x.StockId));
                foreach (var item in stockInfos)
                {
                    Dt_StockInfo? stockInfo = stockInfos.FirstOrDefault(x => x.PalletCode == item.PalletCode);
                    if (stockInfo == null) continue;
                    stockInfo.StockStatus = StockStatusEmun.出库锁定.ObjToInt();
                    var task = Newtasks.FirstOrDefault(x => x.PalletCode == item.PalletCode);
                    tasks.Add(task);
                }
                locationInfos.AddRange(_basicService.LocationInfoService.Repository.GetLocationInfos(stockInfos.Select(x => x.LocationCode).ToList()));
                _unitOfWorkManage.BeginTran();
                BaseDal.AddData(tasks);
                _stockService.StockInfoService.Repository.UpdateData(stockInfos);
                _stockService.StockInfoDetailService.Repository.UpdateData(stockInfoDetails);
                _recordService.LocationStatusChangeRecordSetvice.AddLocationStatusChangeRecord(locationInfos, LocationStatusEnum.Lock.ObjToInt(), StockChangeType.Outbound.ObjToInt(), "", tasks?.Select(x => x.TaskNum).ToList());
                _basicService.LocationInfoService.Repository.UpdateLocationStatus(locationInfos, LocationStatusEnum.Lock);
                _unitOfWorkManage.CommitTran();
                //将任务推送到WCS
                return PushTasksWCS(tasks);
            }
            catch (Exception ex)
            {
                _unitOfWorkManage.RollbackTran();
                return WebResponseContent.Instance.Error(ex.Message);
            }
        }
    }
}