From 5ee4d66f4fef38f9d7ba38d8c3cfae7f7fc082d3 Mon Sep 17 00:00:00 2001 From: dengjunjie <dengjunjie@hnkhzn.com> Date: 星期五, 10 一月 2025 17:51:22 +0800 Subject: [PATCH] 1 --- 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService_Outbound.cs | 78 ++++++++++++++++++++++++++++++++------- 1 files changed, 64 insertions(+), 14 deletions(-) diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService_Outbound.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService_Outbound.cs" index 9e6af5c..67f133f 100644 --- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService_Outbound.cs" +++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService_Outbound.cs" @@ -13,18 +13,71 @@ using WIDESEA_Common.TaskEnum; using WIDESEA_Common.OrderEnum; using WIDESEA_Common.StockEnum; +using WIDESEA_Common.CommonEnum; +using WIDESEA_Common.LocationEnum; namespace WIDESEA_TaskInfoService { public partial class TaskService { - + /// <summary> + /// 閫夋嫨搴撳瓨鐢熸垚鍑哄簱浠诲姟 + /// </summary> + /// <param name="id"></param> + /// <returns></returns> + public WebResponseContent Outbound(int id) + { + WebResponseContent content = new WebResponseContent(); + try + { + Dt_StockInfo stockInfo = _stockRepository.StockInfoRepository.Db.Queryable<Dt_StockInfo>().Where(x=>x.Id==id).Includes(x=>x.Details).First(); + if (stockInfo == null) + { + return content.Error($"鏈壘鍒板簱瀛�"); + } + Dt_LocationInfo locationInfo = _basicRepository.LocationInfoRepository.QueryFirst(x => x.LocationCode == stockInfo.LocationCode); + if (locationInfo!=null && (locationInfo.EnableStatus == EnableStatusEnum.OnlyOut.ObjToInt() || locationInfo.EnableStatus == EnableStatusEnum.Normal.ObjToInt()) && locationInfo.LocationStatus==LocationStatusEnum.InStock.ObjToInt() && stockInfo.StockStatus==StockStatusEmun.鍏ュ簱瀹屾垚.ObjToInt()) + { + List<Dt_Task> tasks = GetTasks(new List<Dt_StockInfo>() { stockInfo }, TaskTypeEnum.Outbound); + if (tasks == null || tasks.Count <= 0) + { + return content.Error($"鐢熸垚浠诲姟澶辫触"); + } + //澶勭悊搴撳瓨鏁版嵁 + stockInfo.StockStatus = (int)StockStatusEmun.鍑哄簱閿佸畾; + LocationStatusEnum locationStatus = (LocationStatusEnum)locationInfo.LocationStatus; + locationInfo.LocationStatus = (int)LocationStatusEnum.Lock; + //鍒ゆ柇鏄惁鏈夊嚭搴撳崟淇℃伅 + _unitOfWorkManage.BeginTran(); + //鏇存柊搴撳瓨鐘舵�� + _stockRepository.StockInfoRepository.UpdateData(stockInfo); + //鏇存柊璐т綅鐘舵�� + _basicService.LocationInfoService.UpdateLocationStatus(locationInfo, stockInfo.PalletType, LocationStatusEnum.Lock, stockInfo.WarehouseId); + //鏂板缓浠诲姟 + BaseDal.AddData(tasks); + //鍔犲叆璐т綅鍙樺姩璁板綍 + _recordService.LocationStatusChangeRecordSetvice.AddLocationStatusChangeRecord(locationInfo, locationStatus, LocationStatusEnum.Lock, LocationChangeType.OutboundAssignLocation, stockInfo.Details.FirstOrDefault()?.OrderNo ?? "", tasks[0].TaskNum); + _unitOfWorkManage.CommitTran(); + PushTasksToWCS(tasks); + content.OK(); + } + else + { + content.Error($"璐т綅鍑哄簱鏉′欢涓嶆弧瓒�"); + } + } + catch (Exception ex) + { + content.Error(ex.Message); + } + return content; + } /// <summary> /// 搴撳瓨鏁版嵁杞嚭搴撲换鍔� /// </summary> /// <param name="stockInfos"></param> /// <returns></returns> - public List<Dt_Task> GetTasks(List<Dt_StockInfo> stockInfos) + public List<Dt_Task> GetTasks(List<Dt_StockInfo> stockInfos, TaskTypeEnum taskType) { List<Dt_Task> tasks = new List<Dt_Task>(); for (int i = 0; i < stockInfos.Count; i++) @@ -45,8 +98,8 @@ Roadway = locationInfo.RoadwayNo, SourceAddress = stockInfo.LocationCode, TargetAddress = "", - TaskStatus = TaskOutStatusEnum.OutNew.ObjToInt(), - TaskType = TaskOutboundTypeEnum.Outbound.ObjToInt(), + TaskStatus = TaskStatusEnum.New.ObjToInt(), + TaskType = taskType.ObjToInt(), TaskNum = BaseDal.GetTaskNum(nameof(SequenceEnum.SeqTaskNum)), PalletType = stockInfo.PalletType, WarehouseId = stockInfo.WarehouseId, @@ -88,7 +141,7 @@ (List<Dt_StockInfo>, Dt_OutboundOrderDetail, List<Dt_OutStockLockInfo>, List<Dt_LocationInfo>) result = _outboundService.OutboundOrderDetailService.AssignStockOutbound(outboundOrderDetail, stockSelectViews); if (result.Item1 != null && result.Item1.Count > 0) { - tasks = GetTasks(result.Item1); + tasks = GetTasks(result.Item1, TaskTypeEnum.Outbound); result.Item2.OrderDetailStatus = OrderDetailStatusEnum.Outbound.ObjToInt(); result.Item3.ForEach(x => { @@ -111,7 +164,7 @@ if (stockLockInfos != null && stockLockInfos.Count > 0) { List<Dt_StockInfo> stocks = _stockService.StockInfoService.Repository.GetStockInfosByPalletCodes(stockLockInfos.Select(x => x.PalletCode).Distinct().ToList()); - tasks = GetTasks(stocks); + tasks = GetTasks(stocks, TaskTypeEnum.Outbound); } } @@ -144,7 +197,7 @@ (List<Dt_StockInfo>, List<Dt_OutboundOrderDetail>, List<Dt_OutStockLockInfo>, List<Dt_LocationInfo>) result = _outboundService.OutboundOrderDetailService.AssignStockOutbound(outboundOrderDetails); if (result.Item1 != null && result.Item1.Count > 0) { - tasks = GetTasks(result.Item1); + tasks = GetTasks(result.Item1, TaskTypeEnum.Outbound); result.Item2.ForEach(x => { x.OrderDetailStatus = OrderDetailStatusEnum.Outbound.ObjToInt(); @@ -215,19 +268,15 @@ _unitOfWorkManage.BeginTran(); BaseDal.AddData(tasks); - if (stockInfos != null && outboundOrderDetails != null && outStockLockInfos != null && locationInfos != null) + if (stockInfos != null && stockInfos.Count > 0 && outboundOrderDetails != null && outboundOrderDetails.Count > 0 && outStockLockInfos != null && outStockLockInfos.Count > 0 && locationInfos != null && locationInfos.Count > 0) { WebResponseContent content = _outboundService.OutboundOrderDetailService.LockOutboundStockDataUpdate(stockInfos, outboundOrderDetails, outStockLockInfos, locationInfos, tasks: tasks); - if (content.Status) - { - _unitOfWorkManage.CommitTran(); - } - else + if (!content.Status) { _unitOfWorkManage.RollbackTran(); + return content; } - return content; } else if (outboundOrderDetails != null && outboundOrderDetails.Count > 0) { @@ -239,6 +288,7 @@ _outboundService.OutboundOrderDetailService.Repository.UpdateData(outboundOrderDetails); } _unitOfWorkManage.CommitTran(); + PushTasksToWCS(tasks); return WebResponseContent.Instance.OK(); } catch (Exception ex) -- Gitblit v1.9.3