From c827fe7b0c5b3b444d76ba0d96a2649c764630dd Mon Sep 17 00:00:00 2001 From: dengjunjie <dengjunjie@hnkhzn.com> Date: 星期四, 14 十一月 2024 16:36:08 +0800 Subject: [PATCH] 修改WCS、WMS出入库逻辑 --- 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/PartialTaskService_Outbound.cs | 76 +++++++++++++++++++++++++++++++++++-- 1 files changed, 71 insertions(+), 5 deletions(-) diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/PartialTaskService_Outbound.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/PartialTaskService_Outbound.cs" index f88110a..be67b5f 100644 --- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/PartialTaskService_Outbound.cs" +++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/PartialTaskService_Outbound.cs" @@ -8,6 +8,9 @@ using WIDESEA_DTO.Stock; using WIDESEA_Model.Models; using WIDESEA_Core.Helper; +using Newtonsoft.Json; +using WIDESEA_DTO.WCSInfo; +using WIDESEAWCS_DTO.WCSInfo; namespace WIDESEA_TaskInfoService { @@ -43,7 +46,8 @@ TargetAddress = roadwayInfo.OutStationCode, TaskState = OutTaskStatusEnum.OutNew.ObjToInt(), TaskType = TaskTypeEnum.Outbound.ObjToInt(), - TaskNum = BaseDal.GetTaskNum(nameof(SequenceEnum.SeqTaskNum)) + //TaskNum = BaseDal.GetTaskNum(nameof(SequenceEnum.SeqTaskNum)) + TaskNum = Convert.ToInt32(DateTime.Now.ToString("HHmmss")), }; tasks.Add(task); } @@ -53,7 +57,7 @@ } /// <summary> - /// 鍑哄簱浠诲姟鏁版嵁澶勭悊 + /// 鍑哄簱浠诲姟鏁版嵁澶勭悊/鎸囧畾鍑哄簱鍗曞嚭搴� /// </summary> /// <param name="orderDetailId"></param> /// <param name="stockSelectViews"></param> @@ -99,9 +103,9 @@ throw new Exception("鏃犲簱瀛�"); } } - else + else if (outboundOrderDetail.OrderDetailStatus == OrderDetailStatusEnum.AssignOverPartial.ObjToInt() || outboundOrderDetail.OrderDetailStatus == OrderDetailStatusEnum.AssignOver.ObjToInt()) { - List<Dt_OutStockLockInfo> stockLockInfos = _outboundService.OutboundStockLockInfoService.GetByOrderDetailId(outboundOrderDetail.OrderId); + List<Dt_OutStockLockInfo> stockLockInfos = _outboundService.OutboundStockLockInfoService.GetByOrderDetailId(outboundOrderDetail.Id); if (stockLockInfos != null && stockLockInfos.Count > 0) { List<Dt_StockInfo> stocks = _stockService.StockInfoService.Repository.GetStockInfosByPalletCodes(stockLockInfos.Select(x => x.PalletCode).Distinct().ToList()); @@ -149,10 +153,72 @@ { _unitOfWorkManage.BeginTran(); + #region 鐢熸垚绉诲簱浠诲姟 + List<Dt_Task> taskList = new List<Dt_Task>(); + List<Dt_StockInfo> dt_StockInfos = _stockService.StockInfoService.Repository.LocationCodesGetStockInfos(tasks.Select(x => x.SourceAddress).ToList()); + List<Dt_StockInfo> dt_stockInfos = dt_StockInfos.Where(x => x.StockStatus == StockStatusEmun.鍑哄簱閿佸畾.ObjToInt() || tasks.Select(x => x.PalletCode).ToList().Contains(x.PalletCode)).ToList();//寰呭嚭搴撳簱瀛� + dt_StockInfos = dt_StockInfos.Where(x => !dt_stockInfos.Select(x => x.Id).ToList().Contains(x.Id)).ToList();//鎺掗櫎寰呭嚭搴撳簱瀛� + if (dt_StockInfos.Count > 0) + { + foreach (var dt_stockInfo in dt_stockInfos) + { + foreach (var dt_StockInfo in dt_StockInfos.Where(x => x.LocationCode == dt_stockInfo.LocationCode)) + { + if (dt_StockInfo.InDate > dt_stockInfo.InDate) + { + dt_StockInfo.StockStatus = StockStatusEmun.绉诲簱涓�.ObjToInt(); + dt_stockInfo.Details.ForEach(x => + { + x.Status = StockStatusEmun.绉诲簱涓�.ObjToInt(); + }); + } + } + } + List<Dt_StockInfoDetail> stockInfoDetails = dt_StockInfos.Where(x => x.StockStatus == StockStatusEmun.绉诲簱涓�.ObjToInt()).Select(x => x.Details).ToList().OfType<Dt_StockInfoDetail>().ToList();//寰呯Щ搴撹鎯� + foreach (var stockInfoDetail in stockInfoDetails.GroupBy(x => x.MaterielCode)) + { + foreach (var item in stockInfoDetail.GroupBy(x => x.BatchNo)) + { + var locationInfo = _basicService.LocationInfoService.AssignLocation(item.Count());//閲嶆柊鍒嗛厤璐т綅 + var stockInfo = dt_StockInfos.Where(x => x.Id == item.First().StockId).First(); + foreach (var infoDetail in item) + { + Dt_Task task = new Dt_Task() + { + CurrentAddress = stockInfo.LocationCode, + Grade = 2, + PalletCode = stockInfo.PalletCode, + NextAddress = locationInfo.LocationCode, + Roadway = locationInfo.RoadwayNo, + SourceAddress = stockInfo.LocationCode, + TargetAddress = locationInfo.LocationCode, + TaskState = InTaskStatusEnum.RelocationNew.ObjToInt(), + TaskType = TaskTypeEnum.Relocation.ObjToInt(), + TaskNum = Convert.ToInt32(DateTime.Now.ToString("HHmmss")), + }; + taskList.Add(task); + } + stockInfo.LocationCode = locationInfo.LocationCode; + } + } + } + tasks.AddRange(taskList); + #endregion + BaseDal.AddData(tasks); + + #region 涓嬪彂浠诲姟缁橶CS + List<WMSTaskDTO> wMSTaskDTOs = _mapper.Map<List<WMSTaskDTO>>(tasks); + var ResultData = HttpHelper.PostAsync(WCSInterfaceAddress.ReceiveTask, wMSTaskDTOs.ToJson(), headers: new Dictionary<string, string>()); + if (ResultData.Result == null) throw new Exception($"鍚慦CS涓嬪彂鍑哄簱浠诲姟瓒呮椂"); + WebResponseContent content = JsonConvert.DeserializeObject<WebResponseContent>(ResultData.Result); + if (content == null) throw new Exception($"涓嬪彂鍑哄簱浠诲姟WCS鏃犲搷搴�"); + if (!content.Status) throw new Exception(content.Message); + #endregion + if (stockInfos != null && outboundOrderDetails != null && outStockLockInfos != null && locationInfos != null) { - WebResponseContent content = _outboundService.OutboundOrderDetailService.LockOutboundStockDataUpdate(stockInfos, outboundOrderDetails, outStockLockInfos, locationInfos, tasks: tasks); + content = _outboundService.OutboundOrderDetailService.LockOutboundStockDataUpdate(stockInfos, outboundOrderDetails, outStockLockInfos, locationInfos, tasks: tasks); if (content.Status) { -- Gitblit v1.9.3