From ccb1ebbf88c1fb456ca30f121c6ef108246689cc Mon Sep 17 00:00:00 2001
From: tjx <t2856754968@163.com>
Date: 星期六, 13 十二月 2025 17:10:32 +0800
Subject: [PATCH] 111

---
 StandardPda/MESApplication/Controllers/Warehouse/SalesPalletController.cs |   26 ++++++
 StandardPda/MES.Service/Dto/webApi/ShippingDetailDto.cs                   |   32 ++++++++
 StandardPda/MES.Service/obj/Debug/net8.0/MES.Service.AssemblyInfo.cs      |    2 
 StandardPda/MES.Service/service/Warehouse/SalesPalletManager.cs           |   63 +++++++++++++++
 StandardPda/MES.Service/Dto/webApi/CreateSalesOrderShippingRequestDto.cs  |   33 ++++++++
 StandardPda/MES.Service/Dto/webApi/CreateSalesOrderShippingResponseDto.cs |   27 ++++++
 6 files changed, 182 insertions(+), 1 deletions(-)

diff --git a/StandardPda/MES.Service/Dto/webApi/CreateSalesOrderShippingRequestDto.cs b/StandardPda/MES.Service/Dto/webApi/CreateSalesOrderShippingRequestDto.cs
new file mode 100644
index 0000000..add35e5
--- /dev/null
+++ b/StandardPda/MES.Service/Dto/webApi/CreateSalesOrderShippingRequestDto.cs
@@ -0,0 +1,33 @@
+namespace MES.Service.Dto.webApi;
+
+/// <summary>
+///     鍒涘缓閿�鍞鍗曞彂璐ц姹侱TO
+/// </summary>
+public class CreateSalesOrderShippingRequestDto
+{
+    /// <summary>
+    ///     鎿嶄綔鐢ㄦ埛缂栫爜
+    /// </summary>
+    public string? UserCode { get; set; }
+    public string? Station { get; set; }
+
+    /// <summary>
+    ///     鎿嶄綔鐢ㄦ埛濮撳悕
+    /// </summary>
+    public string? UserName { get; set; }
+
+    /// <summary>
+    ///     閿�鍞墭鐩業D鍒楄〃
+    /// </summary>
+    public List<decimal>? PalletIds { get; set; }
+
+    /// <summary>
+    ///     鍙戣揣鏄庣粏鍒楄〃
+    /// </summary>
+    public List<ShippingDetailDto>? ShippingDetails { get; set; }
+
+    /// <summary>
+    ///     鍙戣揣鏃堕棿
+    /// </summary>
+    public DateTime? ShippingTime { get; set; }
+}
diff --git a/StandardPda/MES.Service/Dto/webApi/CreateSalesOrderShippingResponseDto.cs b/StandardPda/MES.Service/Dto/webApi/CreateSalesOrderShippingResponseDto.cs
new file mode 100644
index 0000000..e6422d4
--- /dev/null
+++ b/StandardPda/MES.Service/Dto/webApi/CreateSalesOrderShippingResponseDto.cs
@@ -0,0 +1,27 @@
+namespace MES.Service.Dto.webApi;
+
+/// <summary>
+///     鍒涘缓閿�鍞鍗曞彂璐у搷搴擠TO
+/// </summary>
+public class CreateSalesOrderShippingResponseDto
+{
+    /// <summary>
+    ///     鍙戣揣鍗曞彿
+    /// </summary>
+    public string? ShippingId { get; set; }
+
+    /// <summary>
+    ///     鎴愬姛鍙戣揣鏁伴噺
+    /// </summary>
+    public int SuccessCount { get; set; }
+
+    /// <summary>
+    ///     澶辫触鏁伴噺
+    /// </summary>
+    public int FailedCount { get; set; }
+
+    /// <summary>
+    ///     鍙戣揣鏃堕棿
+    /// </summary>
+    public DateTime? ShippingTime { get; set; }
+}
diff --git a/StandardPda/MES.Service/Dto/webApi/ShippingDetailDto.cs b/StandardPda/MES.Service/Dto/webApi/ShippingDetailDto.cs
new file mode 100644
index 0000000..910b72c
--- /dev/null
+++ b/StandardPda/MES.Service/Dto/webApi/ShippingDetailDto.cs
@@ -0,0 +1,32 @@
+namespace MES.Service.Dto.webApi;
+
+/// <summary>
+///     鍙戣揣鏄庣粏DTO
+/// </summary>
+public class ShippingDetailDto
+{
+    /// <summary>
+    ///     閿�鍞墭鐩業D
+    /// </summary>
+    public decimal Id { get; set; }
+
+    /// <summary>
+    ///     鍗曟嵁缂栧彿
+    /// </summary>
+    public string BillNo { get; set; }
+
+    /// <summary>
+    ///     鐗╂枡缂栫爜
+    /// </summary>
+    public string ItemNo { get; set; }
+
+    /// <summary>
+    ///     鐗╂枡鍚嶇О
+    /// </summary>
+    public string ItemName { get; set; }
+
+    /// <summary>
+    ///     鍙戣揣鏁伴噺
+    /// </summary>
+    public decimal Quantity { get; set; }
+}
diff --git a/StandardPda/MES.Service/obj/Debug/net8.0/MES.Service.AssemblyInfo.cs b/StandardPda/MES.Service/obj/Debug/net8.0/MES.Service.AssemblyInfo.cs
index f6dcff7..b11781d 100644
--- a/StandardPda/MES.Service/obj/Debug/net8.0/MES.Service.AssemblyInfo.cs
+++ b/StandardPda/MES.Service/obj/Debug/net8.0/MES.Service.AssemblyInfo.cs
@@ -13,7 +13,7 @@
 [assembly: System.Reflection.AssemblyCompanyAttribute("MES.Service")]
 [assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
 [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
-[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+7d13b041f6cf87bddb0e3523c4cf1a328fc159f6")]
+[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+93770f3ba3276cd222480d83dbbcae9ae7a5fa31")]
 [assembly: System.Reflection.AssemblyProductAttribute("MES.Service")]
 [assembly: System.Reflection.AssemblyTitleAttribute("MES.Service")]
 [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
diff --git a/StandardPda/MES.Service/service/Warehouse/SalesPalletManager.cs b/StandardPda/MES.Service/service/Warehouse/SalesPalletManager.cs
index 038c2ac..5fb2d0b 100644
--- a/StandardPda/MES.Service/service/Warehouse/SalesPalletManager.cs
+++ b/StandardPda/MES.Service/service/Warehouse/SalesPalletManager.cs
@@ -94,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
diff --git a/StandardPda/MESApplication/Controllers/Warehouse/SalesPalletController.cs b/StandardPda/MESApplication/Controllers/Warehouse/SalesPalletController.cs
index 7c73129..9c8eb02 100644
--- a/StandardPda/MESApplication/Controllers/Warehouse/SalesPalletController.cs
+++ b/StandardPda/MESApplication/Controllers/Warehouse/SalesPalletController.cs
@@ -66,4 +66,30 @@
             return ResponseResult.ResponseError(ex);
         }
     }
+
+    /// <summary>
+    /// 鍒涘缓閿�鍞鍗曞彂璐�
+    /// </summary>
+    /// <param name="request">鍙戣揣璇锋眰鍙傛暟</param>
+    /// <returns>鍙戣揣缁撴灉</returns>
+    [HttpPost("CreateSalesOrderShipping")]
+    public ResponseResult CreateSalesOrderShipping(
+        [FromBody] CreateSalesOrderShippingRequestDto request)
+    {
+        try
+        {
+            var result = _manager.CreateSalesOrderShipping(request);
+
+            return new ResponseResult
+            {
+                status = 0,
+                message = "閿�鍞鍗曞彂璐ф垚鍔�",
+                data = result
+            };
+        }
+        catch (Exception ex)
+        {
+            return ResponseResult.ResponseError(ex);
+        }
+    }
 }
\ No newline at end of file

--
Gitblit v1.9.3