From 7ca9651f81d7b84f054194d3d46fdbd1d9c8b922 Mon Sep 17 00:00:00 2001
From: dengjunjie <dengjunjie@hnkhzn.com>
Date: 星期三, 09 七月 2025 22:55:27 +0800
Subject: [PATCH] 增加质检出入库逻辑

---
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/PartialTaskService_Outbound.cs |  111 ++++++++++++++++++++++++++++++++++++-------------------
 1 files changed, 73 insertions(+), 38 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 bb09de9..3cc1998 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"
@@ -119,7 +119,7 @@
             foreach (var item in stockInfos.GroupBy(x => x.LocationCode))
             {
                 Dt_LocationInfo locationInfo = locationInfos.First(x => x.LocationCode == item.Key);
-                (List<Dt_Task>?, List<Dt_LocationInfo>?, List<Dt_StockInfo>?) result = GetRelocationTask(locationInfo);
+                (List<Dt_Task>?, List<Dt_LocationInfo>?, List<Dt_StockInfo>?) result = GetRelocationTask(stockInfos);
                 tasks.AddRange(result.Item1);//绉诲簱浠诲姟
                 locations.AddRange(result.Item2);//绉诲簱璐т綅
                 stocks.AddRange(result.Item3);//绉诲簱搴撳瓨
@@ -133,7 +133,7 @@
                             Grade = 0,
                             PalletCode = stockInfo.PalletCode,
                             TargetIsPickPlace = false,
-                            SourceIsPickPlace = locationInfo.Row == 1 ? false : stockInfo.SerialNumber == locationInfo.MaxQty,
+                            SourceIsPickPlace = stockInfo.SerialNumber == locationInfo.MaxQty,
                             NextAddress = "1008",
                             Roadway = locationInfo.RoadwayNo,
                             SourceAddress = stockInfo.LocationCode,
@@ -154,50 +154,65 @@
         /// <param name="locationInfo"></param>
         /// <returns></returns>
         /// <exception cref="Exception"></exception>
-        public (List<Dt_Task>?, List<Dt_LocationInfo>?, List<Dt_StockInfo>?) GetRelocationTask(Dt_LocationInfo locationInfo)
+        public (List<Dt_Task>?, List<Dt_LocationInfo>?, List<Dt_StockInfo>?) GetRelocationTask(List<Dt_StockInfo> stockInfos)
         {
             List<Dt_Task> dt_Tasks = new List<Dt_Task>();
             List<Dt_LocationInfo> locationInfos = new List<Dt_LocationInfo>();
-            List<Dt_StockInfo> stockInfos = new List<Dt_StockInfo>();
-            if (locationInfo.Row == 1)
+            List<Dt_StockInfo> stockInfos1 = new List<Dt_StockInfo>();
+            foreach (var item in stockInfos.GroupBy(x => x.LocationCode))
             {
-                var locationInfo1 = _basicService.LocationInfoService.Repository.QueryFirst(x => x.Row == 2 && x.Column == locationInfo.Column && x.Layer == locationInfo.Layer);
-                stockInfos = _stockService.StockInfoService.Repository.QueryData(x => locationInfo1.LocationCode == x.LocationCode).OrderByDescending(x => x.SerialNumber).ToList();
-                if (stockInfos == null || stockInfos.Count < 1)
+                var locationInfo = _basicRepository.LocationInfoRepository.QueryFirst(x => x.LocationCode == item.Key);
+                if (locationInfo.Row == 1)
                 {
-                    return (dt_Tasks, locationInfos, stockInfos);
-                }
-                Dt_LocationInfo? locationInfo2 = _basicService.LocationInfoService.AssignLocation();
-                if (locationInfo2 == null) throw new Exception("鏃犲彲绉诲簱璐т綅");
-                locationInfo1.LocationStatus = LocationStatusEnum.Relocationing.ObjToInt();
-                locationInfo2.LocationStatus = LocationStatusEnum.Relocationing.ObjToInt();
-                locationInfos.Add(locationInfo1);
-                locationInfos.Add(locationInfo2);
-                int i = 1;
-                foreach (var item in stockInfos)
-                {
-                    Dt_Task task = new()
+                    var StockInfos = _stockService.StockInfoService.Repository.QueryData(x => x.LocationCode == locationInfo.LocationCode && !stockInfos.Select(x => x.PalletCode).Contains(x.PalletCode)).ToList();
+                    foreach (var StockInfo in StockInfos)
                     {
-                        CurrentAddress = item.LocationCode,
-                        SourceIsPickPlace = item.SerialNumber == 12,
-                        TargetIsPickPlace = i == 12 ? locationInfo2.Row != 1 : false,
-                        Grade = 0,
-                        PalletCode = item.PalletCode,
-                        NextAddress = locationInfo2.LocationCode,
-                        Roadway = locationInfo.RoadwayNo,
-                        SourceAddress = item.LocationCode,
-                        TargetAddress = locationInfo2.LocationCode,
-                        TaskState = WIDESEA_Common.TaskEnum.TaskRelocationStatusEnum.RelocationNew.ObjToInt(),
-                        TaskType = TaskRelocationTypeEnum.Relocation.ObjToInt(),
-                        TaskNum = BaseDal.GetTaskNum(nameof(SequenceEnum.SeqTaskNum))
-                    };
-                    if (locationInfo2.Row == 1) task.TargetIsPickPlace = false;
-                    dt_Tasks.Add(task);
-                    i++;
-                    item.StockStatus = StockStatusEmun.绉诲簱涓�.ObjToInt();
+                        foreach (var item1 in item)
+                        {
+                            if (StockInfo.SerialNumber > item1.SerialNumber)
+                            {
+                                stockInfos1.Add(StockInfo);
+                                break;
+                            }
+                        }
+                    }
                 }
             }
-            return (dt_Tasks, locationInfos, stockInfos);
+            if (stockInfos1.Count > 0)
+            {
+                List<string> strings = new List<string>();
+                foreach (var item in stockInfos1.GroupBy(x => x.LocationCode))
+                {
+                    Dt_LocationInfo? locationInfo2 = _basicService.LocationInfoService.AssignLocation(strings);
+                    if (locationInfo2 == null) throw new Exception("鏃犲彲绉诲簱璐т綅");
+                    locationInfo2.LocationStatus = LocationStatusEnum.Relocationing.ObjToInt();
+                    strings.Add(locationInfo2.LocationCode);
+                    locationInfos.Add(locationInfo2);
+                    foreach (var item1 in item.OrderByDescending(x => x.SerialNumber))
+                    {
+                        locationInfo2.CurrentQty++;
+                        Dt_Task task = new()
+                        {
+                            CurrentAddress = item1.LocationCode,
+                            SourceIsPickPlace = item1.SerialNumber == 24,
+                            TargetIsPickPlace = locationInfo2.MaxQty == locationInfo2.CurrentQty,
+                            Grade = 0,
+                            PalletCode = item1.PalletCode,
+                            NextAddress = locationInfo2.LocationCode,
+                            Roadway = locationInfo2.RoadwayNo,
+                            SourceAddress = item1.LocationCode,
+                            TargetAddress = locationInfo2.LocationCode,
+                            TaskState = WIDESEA_Common.TaskEnum.TaskRelocationStatusEnum.RelocationNew.ObjToInt(),
+                            TaskType = TaskRelocationTypeEnum.Relocation.ObjToInt(),
+                            TaskNum = BaseDal.GetTaskNum(nameof(SequenceEnum.SeqTaskNum))
+                        };
+                        dt_Tasks.Add(task);
+                        item1.SerialNumber = locationInfo2.CurrentQty;
+                        item1.StockStatus = StockStatusEmun.绉诲簱涓�.ObjToInt();
+                    }
+                }
+            }
+            return (dt_Tasks, locationInfos, stockInfos1);
         }
         /// <summary>
         /// 鍑哄簱浠诲姟鏁版嵁澶勭悊/鎸囧畾鍑哄簱鍗曞嚭搴�
@@ -235,6 +250,7 @@
 
                 stockInfos.AddRange(result.Item1);
                 outboundOrderDetail.OrderDetailStatus = OrderDetailStatusEnum.Outbound.ObjToInt();
+                outboundOrderDetail.LockQuantity = result.Item1.Count;
                 outStockLockInfos = result.Item2;
                 locationInfos = result.Item3;
                 outboundOrder.OrderStatus = OutboundStatusEnum.鍑哄簱涓�.ObjToInt();
@@ -246,7 +262,26 @@
 
             return (tasks, stockInfos, new List<Dt_OutboundOrderDetail> { outboundOrderDetail }, outStockLockInfos, locationInfos, locationInfos1, outboundOrder);
         }
+        public WebResponseContent NewGenerateOutboundTask(int orderDetailId, List<Dt_Inventory_Batch> inventory_Batches)
+        {
+            try
+            {
+                List<Dt_Task> tasks = new List<Dt_Task>();
+                List<Dt_InventoryInfo> stockInfos = new List<Dt_InventoryInfo>();
+                List<Dt_OutboundOrderDetail> outboundOrderDetails = new List<Dt_OutboundOrderDetail>();
+                List<Dt_OutStockLockInfo> outStockLockInfos = new List<Dt_OutStockLockInfo>();
+                List<Dt_LocationInfo> locationInfos = new List<Dt_LocationInfo>();
+                Dt_OutboundOrder order = new Dt_OutboundOrder();
 
+
+
+                return WebResponseContent.Instance.OK();
+            }
+            catch (Exception ex)
+            {
+                return WebResponseContent.Instance.Error(ex.Message);
+            }
+        }
         /// <summary>
         /// 鐢熸垚鍑哄簱浠诲姟
         /// </summary>

--
Gitblit v1.9.3