From 9e579eda4601ed7b492b9d19a24e8146f6ebdf8d Mon Sep 17 00:00:00 2001
From: dengjunjie <dengjunjie@hnkhzn.com>
Date: 星期六, 19 四月 2025 19:50:43 +0800
Subject: [PATCH] 优化空托出入库逻辑

---
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/Base/OutStockLockInfoService.cs |   78 ++++++++++++++++++++++++++++++---------
 1 files changed, 60 insertions(+), 18 deletions(-)

diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/Base/OutStockLockInfoService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/Base/OutStockLockInfoService.cs"
index faceb44..9f44e13 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/Base/OutStockLockInfoService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/Base/OutStockLockInfoService.cs"
@@ -1,8 +1,10 @@
-锘縰sing System;
+锘縰sing SqlSugar;
+using System;
 using System.Collections.Generic;
 using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
+using WIDESEA_Common.StockEnum;
 using WIDESEA_Core.BaseServices;
 using WIDESEA_Core.Enums;
 using WIDESEA_Core.Helper;
@@ -18,29 +20,42 @@
         public OutStockLockInfoService(IOutStockLockInfoRepository BaseDal) : base(BaseDal)
         {
         }
-
+        /// <summary>
+        /// 娣诲姞鍑哄簱璇︽儏
+        /// </summary>
+        /// <param name="outboundOrder"></param>
+        /// <param name="outboundOrderDetail"></param>
+        /// <param name="outStocks"></param>
+        /// <param name="taskNum"></param>
+        /// <returns></returns>
         public List<Dt_OutStockLockInfo> GetOutStockLockInfos(Dt_OutboundOrder outboundOrder, Dt_OutboundOrderDetail outboundOrderDetail, List<Dt_StockInfo> outStocks, int? taskNum = null)
         {
             List<Dt_OutStockLockInfo> outStockLockInfos = new List<Dt_OutStockLockInfo>();
-
+            var OutStockLockInfos = GetByOrderDetailId(outboundOrderDetail.Id);
             foreach (var item in outStocks)
             {
-                Dt_OutStockLockInfo outStockLockInfo = new Dt_OutStockLockInfo()
+                Dt_OutStockLockInfo outStockLockInfo = OutStockLockInfos.FirstOrDefault(x => x.StockId == item.Id && x.OrderDetailId == outboundOrderDetail.Id);
+                if (outStockLockInfo == null)
                 {
-                    PalletCode = item.PalletCode,
-                    AssignQuantity = item.Details.Where(x => x.MaterielCode == outboundOrderDetail.MaterielCode).Sum(x => x.OutboundQuantity),
-                    MaterielCode = outboundOrderDetail.MaterielCode,
-                    BatchNo = outboundOrderDetail.BatchNo,
-                    LocationCode = item.LocationCode,
-                    MaterielName = outboundOrderDetail.MaterielName,
-                    OrderDetailId = outboundOrderDetail.Id,
-                    OrderNo = outboundOrder.OrderNo,
-                    OrderType = outboundOrder.OrderType,
-                    OriginalQuantity = item.Details.Where(x => x.MaterielCode == outboundOrderDetail.MaterielCode).Sum(x => x.StockQuantity),
-                    Status = taskNum == null ? OutStockStatus.宸插垎閰�.ObjToInt() : OutStockStatus.鍑哄簱涓�.ObjToInt(),
-                    StockId = item.Id,
-                    TaskNum = taskNum
-                };
+                    outStockLockInfo = new Dt_OutStockLockInfo()
+                    {
+                        PalletCode = item.PalletCode,
+                        AssignQuantity = item.Details.Where(x => x.MaterielCode == outboundOrderDetail.MaterielCode).Sum(x => x.OutboundQuantity),
+                        MaterielCode = outboundOrderDetail.MaterielCode,
+                        BatchNo = item.Details.Select(x => x.BatchNo).FirstOrDefault(),
+                        //BatchNo = outboundOrderDetail.BatchNo,
+                        LocationCode = item.LocationCode,
+                        MaterielName = outboundOrderDetail.MaterielName,
+                        OrderDetailId = outboundOrderDetail.Id,
+                        OrderNo = outboundOrder.OrderNo,
+                        OrderType = outboundOrder.OrderType,
+                        OriginalQuantity = item.Details.Where(x => x.MaterielCode == outboundOrderDetail.MaterielCode).Sum(x => x.StockQuantity),
+                        //Status = taskNum == null ? OutStockStatus.宸插垎閰�.ObjToInt() : OutStockStatus.鍑哄簱涓�.ObjToInt(),
+                        StockId = item.Id,
+                        TaskNum = taskNum
+                    };
+                }
+                outStockLockInfo.Status = taskNum == null ? OutStockStatus.宸插垎閰�.ObjToInt() : OutStockStatus.鍑哄簱涓�.ObjToInt();
                 outStockLockInfos.Add(outStockLockInfo);
             }
 
@@ -60,5 +75,32 @@
         {
             return BaseDal.QueryData(x => x.OrderDetailId == orderDetailId && x.Status == outStockStatus.ObjToInt());
         }
+
+        public List<Dt_OutStockLockInfo> GetOutStockLockInfo(Dt_OutboundOrder outboundOrder, Dt_OutboundOrderDetail item, List<Dt_StockInfo> dt_StockInfos, int? taskNum = null, string BatchNo = null)
+        {
+            List<Dt_OutStockLockInfo> OutStockLockInfos = new List<Dt_OutStockLockInfo>();
+            foreach (var dt in dt_StockInfos)
+            {
+                Dt_OutStockLockInfo outStockLockInfo = new Dt_OutStockLockInfo()
+                {
+                    PalletCode = dt.PalletCode,
+                    AssignQuantity = 1,
+                    MaterielCode = item.MaterielCode,
+                    BatchNo = BatchNo,
+                    LocationCode = dt.LocationCode,
+                    MaterielName = item.MaterielName,
+                    OrderDetailId = item.Id,
+                    OrderNo = outboundOrder.OrderNo,
+                    OrderType = outboundOrder.OrderType,
+                    OriginalQuantity = 1,
+                    Status = taskNum == null ? OutLockStockStatusEnum.宸插垎閰�.ObjToInt() : OutLockStockStatusEnum.鍑哄簱涓�.ObjToInt(),
+                    StockId = dt.Id,
+                    TaskNum = taskNum,
+                    OrderQuantity = item.OrderQuantity
+                };
+                OutStockLockInfos.Add(outStockLockInfo);
+            }
+            return OutStockLockInfos;
+        }
     }
 }

--
Gitblit v1.9.3