From 8ec9fab52eea2b110ad4e1a0b2300fead0018cd1 Mon Sep 17 00:00:00 2001
From: tjx <t2856754968@163.com>
Date: 星期日, 21 十二月 2025 15:20:36 +0800
Subject: [PATCH] 1111

---
 StandardPda/MES.Service/service/Warehouse/SalesPalletManager.cs |   64 ++++++++++++++++++++++++++++++++
 1 files changed, 64 insertions(+), 0 deletions(-)

diff --git a/StandardPda/MES.Service/service/Warehouse/SalesPalletManager.cs b/StandardPda/MES.Service/service/Warehouse/SalesPalletManager.cs
index 645b536..5fb2d0b 100644
--- a/StandardPda/MES.Service/service/Warehouse/SalesPalletManager.cs
+++ b/StandardPda/MES.Service/service/Warehouse/SalesPalletManager.cs
@@ -29,6 +29,7 @@
             .LeftJoin<SysUser>((z, a, b, s, u, su) => su.Fcode == z.CheckUser)
             .LeftJoin<MesDepots>((z, a, b, s, u, su, d) =>
                 d.DepotId.ToString() == b.Warehouse)
+            .Where((z, a, b, s, u, su, d)=>z.SalesQuantity > 0)
             .WhereIF(!string.IsNullOrEmpty(request.BillNo),
                 (z, a, b, s, u, su, d) => z.BillNo.Contains(request.BillNo))
             .WhereIF(!string.IsNullOrEmpty(request.ItemNo),
@@ -93,4 +94,67 @@
 
         return query.ToList();
     }
+
+    /// <summary>
+    /// 鍒涘缓閿�鍞鍗曞彂璐�
+    /// </summary>
+    /// <param name="request">鍙戣揣璇锋眰鍙傛暟</param>
+    /// <returns></returns>
+    public int CreateSalesOrderShipping(CreateSalesOrderShippingRequestDto request)
+    {
+        //楠岃瘉request.PalletIds鏄惁涓虹┖
+        if (request.PalletIds == null || !request.PalletIds.Any())
+        {
+            throw new Exception("閿�鍞墭鐩業D鍒楄〃涓嶈兘涓虹┖");
+        }
+
+        //璋冪敤GetSalesPalletDetail鏂规硶鎷垮埌杩斿洖鍊�
+        var allDetails = new List<SalesPalletDetailQueryDto>();
+        foreach (var palletId in request.PalletIds)
+        {
+            var detailQuery = new SalesPalletDetailQueryDto { Mid = palletId };
+            var details = GetSalesPalletDetail(detailQuery);
+            allDetails.AddRange(details);
+        }
+
+        if (!allDetails.Any())
+        {
+            throw new Exception("鏈壘鍒伴攢鍞墭鐩樻槑缁嗘暟鎹�");
+        }
+
+        //鎻愬彇鍑虹粨鏋滈泦鐨凷tackcode骞跺幓閲�
+        var stackCodes = allDetails
+            .Where(d => !string.IsNullOrEmpty(d.Stackcode))
+            .Select(d => d.Stackcode)
+            .Distinct()
+            .ToList();
+
+        if (!stackCodes.Any())
+        {
+            throw new Exception("鏈壘鍒版湁鏁堢殑鏍堟澘鐮�");
+        }
+
+        //select * from MES_INV_ITEM_STOCKS where STACKCODE in (Stackcode鍘婚噸鍚庣殑缁撴灉);
+        var stockItems = Db.Queryable<MesInvItemStocks>()
+            .Where(s => stackCodes.Contains(s.StackCode) && s.Quantity > 0)
+            .ToList();
+
+        if (!stockItems.Any())
+        {
+            throw new Exception("鏈壘鍒板搴旂殑搴撳瓨鏁版嵁");
+        }
+
+        //璋冪敤MesInvItemStocksManager.CreateReturnMaterialRequest鏂规硶
+        var stockManager = new MesInvItemStocksManager();
+        var itemStockQuery = new ItemStockQueryDto
+        {
+            UserCode = request.UserCode,
+            Station = request.Station,
+            ItemBarcodes = stackCodes
+        };
+
+        stockManager.CreateReturnMaterialRequest(itemStockQuery);
+
+        return stackCodes.Count;
+    }
 }
\ No newline at end of file

--
Gitblit v1.9.3