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