From 2fbbc3ccaa4123a2d550fa64d91fa8ac25323a58 Mon Sep 17 00:00:00 2001 From: wangxinhui <wangxinhui@hnkhzn.com> Date: 星期五, 11 七月 2025 15:32:03 +0800 Subject: [PATCH] 上传最新 --- 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService_Outbound.cs | 164 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 164 insertions(+), 0 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 98f3311..c6482fb 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" @@ -260,6 +260,85 @@ return content; } /// <summary> + /// 鐢熸垚鎴愬搧鎶ュ簾浠诲姟 + /// </summary> + /// <param name="ProOutNo">鍑哄簱璁㈠崟鍙�</param> + /// <param name="StationCode">绔欏彴鍦板潃</param> + /// <returns></returns> + public async Task<WebResponseContent> OutProScrapTask(int[] keys, string StationCode, int Grade) + { + WebResponseContent content = new WebResponseContent(); + try + { + if (StationCode.IsNullOrEmpty()) + { + return await Task.FromResult(content.Error("鍐呴儴閿欒")); + } + //鑾峰彇鎴愬搧鎶ュ簾璁㈠崟 + List<Dt_ErpProScrapSheetDetail> _ProOutOrderDetails = await _outboundRepository.ErpProScrapDetailRepository.QueryDataAsync(x => keys.Contains(x.Id) && x.ScrapProDetailStatus == OutOrderStatusEnum.鏈紑濮�.ObjToInt()); + if (_ProOutOrderDetails.Count <= 0) + { + return await Task.FromResult(content.Error("鍕鹃�夎鍗曟槑缁嗙姸鎬佷负鍑哄簱涓�")); + } + List<Dt_Task> tasks = new List<Dt_Task>(); + List<Dt_ProStockInfo> proStockInfos = new List<Dt_ProStockInfo>(); + List<Dt_ErpProScrapSheetDetail> proOutOrderDetails = new List<Dt_ErpProScrapSheetDetail>(); + List<Dt_OutProStockInfo> outProStockInfos = new List<Dt_OutProStockInfo>(); + List<Dt_LocationInfo> locationInfos = new List<Dt_LocationInfo>(); + (List<Dt_Task>, List<Dt_ProStockInfo>?, List<Dt_ErpProScrapSheetDetail>?, List<Dt_OutProStockInfo>?, List<Dt_LocationInfo>?) result = + OutProScrapTaskDataHandle(_ProOutOrderDetails); + if (result.Item2 != null && result.Item2.Count > 0) + { + proStockInfos.AddRange(result.Item2); + } + if (result.Item3 != null && result.Item3.Count > 0) + { + proOutOrderDetails.AddRange(result.Item3); + } + if (result.Item4 != null && result.Item4.Count > 0) + { + outProStockInfos.AddRange(result.Item4); + } + if (result.Item5 != null && result.Item5.Count > 0) + { + locationInfos.AddRange(result.Item5); + } + if (result.Item1 != null && result.Item1.Count > 0) + { + Dt_Task? task = BaseDal.QueryData(x => x.TaskType == TaskTypeEnum.OutProScrap.ObjToInt()).OrderBy(x => x.Grade).FirstOrDefault(); + //鏇存柊鍑哄簱鐩殑浣嶇疆 + result.Item1.ForEach(x => + { + x.TargetAddress = StationCode; + if (Grade == 1 || task == null) + { + x.Grade = 127; + } + else + { + if (task.Grade == 0 || task.Grade == 1) + { + x.Grade = 1; + } + else + { + x.Grade = task.Grade - 1; + } + } + }); + tasks.AddRange(result.Item1); + } + //澶勭悊鍑哄簱鏁版嵁 + return await Task.FromResult(GenerateOutboundTaskDataUpdate(tasks, proStockInfos, proOutOrderDetails, outProStockInfos, locationInfos)); + } + catch (Exception ex) + { + _unitOfWorkManage.RollbackTran(); + content.Error(ex.Message); + } + return content; + } + /// <summary> /// 浜哄伐閫夊畾搴撳瓨鍑哄簱 /// </summary> /// <returns></returns> @@ -505,6 +584,51 @@ } /// <summary> + /// 澶勭悊鍑哄簱鏁版嵁 + /// </summary> + public WebResponseContent GenerateOutboundTaskDataUpdate(List<Dt_Task> tasks, List<Dt_ProStockInfo>? proStockInfos = null, List<Dt_ErpProScrapSheetDetail>? scrapSheetDetails = null, List<Dt_OutProStockInfo>? outProStockInfos = null, List<Dt_LocationInfo>? locationInfos = null) + { + try + { + _unitOfWorkManage.BeginTran(); + //鑾峰彇鎴愬搧鍑哄簱鍗曚富琛� + Dt_ErpProScrapSheet scrapSheet = _outboundRepository.ErpProScrapSheetRepository.QueryFirst(x => x.Id == scrapSheetDetails.FirstOrDefault().ProScrapSheetId); + BaseDal.AddData(tasks); + if (proStockInfos != null && proStockInfos.Count > 0 && scrapSheetDetails != null && scrapSheetDetails.Count > 0 && outProStockInfos != null && outProStockInfos.Count > 0 && locationInfos != null && locationInfos.Count > 0) + { + proStockInfos.ForEach(x => + { + x.StockStatus = StockStatusEmun.鍑哄簱閿佸畾.ObjToInt(); + }); + WebResponseContent content = _outboundService.ErpProScrapSheetDetailService.LockOutboundStockDataUpdate(proStockInfos, scrapSheetDetails, outProStockInfos, locationInfos, tasks: tasks); + + if (!content.Status) + { + _unitOfWorkManage.RollbackTran(); + return content; + } + } + else if (scrapSheetDetails != null && scrapSheetDetails.Count > 0) + { + scrapSheetDetails.ForEach(x => + { + x.ScrapProDetailStatus = OutOrderStatusEnum.鍑哄簱涓�.ObjToInt(); + }); + + _outboundRepository.ErpProScrapDetailRepository.UpdateData(scrapSheetDetails); + } + _unitOfWorkManage.CommitTran(); + PushTasksToWCS(tasks); + return WebResponseContent.Instance.OK(); + } + catch (Exception ex) + { + _unitOfWorkManage.RollbackTran(); + return WebResponseContent.Instance.Error(ex.Message); + } + + } + /// <summary> /// 澶勭悊鎴愬搧鍑哄簱鏁版嵁 /// </summary> /// <returns></returns> @@ -552,6 +676,46 @@ } return (tasks, proStockInfos, proOutOrderDetails, outProStockInfos, locationInfos); } + public (List<Dt_Task>, List<Dt_ProStockInfo>?, List<Dt_ErpProScrapSheetDetail>?, List<Dt_OutProStockInfo>?, List<Dt_LocationInfo>?) OutProScrapTaskDataHandle(List<Dt_ErpProScrapSheetDetail> scrapSheetDetails) + { + List<Dt_Task> tasks = new List<Dt_Task>(); + List<Dt_ProStockInfo> proStockInfos = new List<Dt_ProStockInfo>(); + List<Dt_ErpProScrapSheetDetail> assignOutOrderDetails = new List<Dt_ErpProScrapSheetDetail>(); + List<Dt_OutProStockInfo> outProStockInfos = new List<Dt_OutProStockInfo>(); + List<Dt_LocationInfo> locationInfos = new List<Dt_LocationInfo>(); + + //鑾峰彇鎶ュ簾鍗� + Dt_ErpProScrapSheet scrapSheet = _outboundRepository.ErpProScrapSheetRepository.QueryFirst(x => x.Id == scrapSheetDetails.FirstOrDefault().ProScrapSheetId); + if (scrapSheet == null) + { + throw new Exception("鏈壘鍒版垚鍝佹姤搴熻鍗�"); + } + //鍒嗛厤搴撳瓨 + (List<Dt_ProStockInfo>, List<Dt_ErpProScrapSheetDetail>, List<Dt_OutProStockInfo>, List<Dt_LocationInfo>) result = _outboundService.ErpProScrapSheetDetailService.AssignProStockOut(scrapSheetDetails, scrapSheet); + if (result.Item1 != null && result.Item1.Count > 0) + { + TaskTypeEnum typeEnum = TaskTypeEnum.OutProScrap; + tasks = GetTasks(result.Item1, typeEnum); + result.Item2.ForEach(x => + { + x.ScrapProDetailStatus = OutOrderStatusEnum.鍑哄簱涓�.ObjToInt(); + }); + result.Item3.ForEach(x => + { + x.Status = OutLockStockStatusEnum.鍑哄簱涓�.ObjToInt(); + }); + tasks.ForEach(x => x.OrderNo = scrapSheet.ProScrapSheetOrderNo); + proStockInfos = result.Item1; + assignOutOrderDetails = result.Item2; + outProStockInfos = result.Item3; + locationInfos = result.Item4; + } + else + { + throw new Exception("鏃犲彲鍒嗛厤搴撳瓨"); + } + return (tasks, proStockInfos, assignOutOrderDetails, outProStockInfos, locationInfos); + } /// <summary> /// 鐢熸垚浠诲姟 /// </summary> -- Gitblit v1.9.3