From 29f01b0f46e056212c83513ca59be8c3b70d6b41 Mon Sep 17 00:00:00 2001
From: pan <antony1029@163.com>
Date: 星期五, 21 十一月 2025 08:07:26 +0800
Subject: [PATCH] 提交

---
 项目代码/WMS无仓储版/WIDESEA_WMSServer/WIDESEA_OutboundService/OutboundPickingService.cs |  117 +++++++++++++++++++++++++++++++++++++++++++++-------------
 1 files changed, 91 insertions(+), 26 deletions(-)

diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_OutboundService/OutboundPickingService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_OutboundService/OutboundPickingService.cs"
index 6d672b9..3c03457 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_OutboundService/OutboundPickingService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_OutboundService/OutboundPickingService.cs"
@@ -1,6 +1,7 @@
 锘縰sing Dm.filter;
 using MailKit.Search;
 using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
 using Microsoft.Extensions.Logging;
 using SqlSugar;
 using System;
@@ -230,8 +231,16 @@
                                }).ToList();
                             feedmodel.details = groupedData;
 
-                            _invokeMESService.FeedbackOutbound(feedmodel);
+                            var result = await _invokeMESService.FeedbackOutbound(feedmodel);
+                            if (result != null && result.code == 200)
+                            {
+                                await _outboundOrderDetailService.Db.Updateable<Dt_OutboundOrderDetail>().SetColumns(x => x.ReturnToMESStatus == 1) // 宸插畬鎴�
+                                            .Where(x => x.OrderId == outboundOrder.Id).ExecuteCommandAsync();
+                                await _outboundOrderService.Db.Updateable<Dt_OutboundOrder>() .SetColumns(x => x.ReturnToMESStatus == 1) // 宸插畬鎴�
+                                              .Where(x => x.OrderNo == orderNo) .ExecuteCommandAsync();
+                            }
                         }
+
                     }
                 }
                 catch (Exception ex)
@@ -244,6 +253,32 @@
 
         public async Task<WebResponseContent> ConfirmPicking(string orderNo, string palletCode, string barcode)
         {
+            #region "娴嬭瘯鎵撳嵃"
+            // var splitResults=new List<SplitResult>();
+            //  splitResults.Add(new SplitResult
+            //{
+            //    materialCode = "AAAAbbb",
+            //    supplierCode = "CVBG",
+            //    quantityTotal = "1234",
+            //    batchNumber = "WMLOT25111900032",
+            //    batch = "A234re",
+            //    factory = "01",
+            //    date = DateTime.Now.ToString("yyyy-MM-dd"),
+            //});
+
+            //splitResults.Add(new SplitResult
+            //{
+            //    materialCode = "CCDF",
+            //    supplierCode = "QWCVBG",
+            //    quantityTotal = "1234",
+            //    batchNumber = "WMLOT25111900032",
+            //    batch = "A234re",
+            //    factory = "01",
+            //    date = DateTime.Now.ToString("yyyy-MM-dd"),
+            //});
+
+            // return WebResponseContent.Instance.OK("鎷i�夌‘璁ゆ垚鍔燂紝宸茶嚜鍔ㄦ媶鍖�", new { SplitResults = splitResults });
+            #endregion
             try
             {
                 _unitOfWorkManage.BeginTran();
@@ -287,6 +322,9 @@
                 decimal stockQuantity = stockDetail.StockQuantity;
 
                 List<SplitResult> splitResults = new List<SplitResult>();
+                Dt_OutStockLockInfo finalLockInfo = lockInfo;
+                var finalBarcode = barcode;
+                var finalStockId = stockDetail.Id;
 
                 if (actualQty < stockQuantity)
                 {
@@ -328,7 +366,9 @@
                         IsSplitted = 1,
                         ParentLockId = lockInfo.Id
                     };
-                    await _outStockLockInfoService.Db.Insertable(newLockInfo).ExecuteCommandAsync();
+                    // 鎻掑叆鏂伴攣瀹氫俊鎭苟鑾峰彇ID
+                    var newLockId = await _outStockLockInfoService.Db.Insertable(newLockInfo).ExecuteReturnIdentityAsync();
+                    newLockInfo.Id = newLockId; // 纭繚ID琚纭缃�
 
                     // 璁板綍鎷嗗寘鍘嗗彶锛堢敤浜庤拷韪級
                     var splitHistory = new Dt_SplitPackageRecord
@@ -353,21 +393,37 @@
 
                     // 鏇存柊鍘熼攣瀹氫俊鎭负鍓╀綑搴撳瓨鏁伴噺
                     lockInfo.AssignQuantity = remainingStockQty;
-                    lockInfo.PickedQty = 0;  
-                                       
+                    lockInfo.PickedQty = 0;
+
                     await _outStockLockInfoService.Db.Updateable(lockInfo).ExecuteCommandAsync();
 
                     splitResults.Add(new SplitResult
                     {
-                        OriginalBarcode = barcode,
-                        NewBarcode = newBarcode,
-                        SplitQuantity = actualQty,
-                        RemainQuantity = remainingStockQty
-                    });
+                        materialCode = lockInfo.MaterielCode,
+                        supplierCode = lockInfo.SupplyCode,
+                        quantityTotal = actualQty.ToString("F2"),
+                        batchNumber = newBarcode,
+                        batch = lockInfo.BatchNo,
+                        factory = lockInfo.FactoryArea,
+                        date = DateTime.Now.ToString("yyyy-MM-dd"),
 
+                    });
+                    splitResults.Add(new SplitResult
+                    {
+                        materialCode = lockInfo.MaterielCode,
+                        supplierCode = lockInfo.SupplyCode,
+                        quantityTotal = remainingStockQty.ToString("F2"),
+                        batchNumber = barcode,
+                        batch = lockInfo.BatchNo,
+                        factory = lockInfo.FactoryArea,
+                        date = DateTime.Now.ToString("yyyy-MM-dd"),
+                    });
                     // 鏇存柊鎷i�夎褰曚腑鐨勬潯鐮佷负鏂版潯鐮�
                     barcode = newBarcode;
                     lockInfo = newLockInfo;
+                    finalLockInfo = newLockInfo;
+                    finalBarcode = newBarcode;
+                    finalStockId = stockDetail.Id; // 浣跨敤鍘熷簱瀛業D
                 }
                 else if (actualQty == stockQuantity)
                 {
@@ -379,6 +435,9 @@
                     lockInfo.PickedQty += actualQty;
                     lockInfo.Status = (int)OutLockStockStatusEnum.鎷i�夊畬鎴�;
                     await _outStockLockInfoService.Db.Updateable(lockInfo).ExecuteCommandAsync();
+                    finalLockInfo = lockInfo;
+                    finalBarcode = barcode;
+                    finalStockId = stockDetail.Id;
                 }
                 else
                 {
@@ -399,18 +458,21 @@
                     await _outStockLockInfoService.Db.Updateable(lockInfo).ExecuteCommandAsync();
 
                     var _relatedSplitRecords = await _splitPackageService.Db.Queryable<Dt_SplitPackageRecord>()
-        .Where(it => it.OriginalBarcode == barcode || it.NewBarcode == barcode)
-        .Where(it => !it.IsReverted)
-        .ToListAsync();
+                                                .Where(it => it.OriginalBarcode == barcode || it.NewBarcode == barcode)
+                                                .Where(it => !it.IsReverted)
+                                                .ToListAsync();
 
                     foreach (var record in _relatedSplitRecords)
                     {
                         record.Status = (int)SplitPackageStatusEnum.宸叉嫞閫�;
                         await _splitPackageService.Db.Updateable(record).ExecuteCommandAsync();
                     }
+                    finalLockInfo = lockInfo;
+                    finalBarcode = barcode;
+                    finalStockId = stockDetail.Id;
                 }
 
-   
+
 
                 await _outboundOrderDetailService.Db.Updateable<Dt_OutboundOrderDetail>()
                     .SetColumns(it => it.PickedQty == it.PickedQty + actualQty)
@@ -421,23 +483,26 @@
 
                 // 鏌ヨ浠诲姟琛� 
                 var task = _taskRepository.QueryData(x => x.OrderNo == orderNo && x.PalletCode == palletCode).FirstOrDefault();
-
+                if (finalLockInfo.Id <= 0)
+                {
+                    throw new Exception($"閿佸畾淇℃伅ID鏃犳晥: {finalLockInfo.Id}锛屾棤娉曡褰曟嫞閫夊巻鍙�");
+                }
                 // 璁板綍鎷i�夊巻鍙�
                 var pickingHistory = new Dt_PickingRecord
                 {
-                    FactoryArea = lockInfo.FactoryArea,
+                    FactoryArea = finalLockInfo.FactoryArea,
                     TaskNo = task?.TaskNum ?? 0,
                     LocationCode = task?.SourceAddress ?? "",
-                    StockId = stockDetail.Id,
+                    StockId = finalStockId,
                     OrderNo = orderNo,
-                    OrderDetailId = lockInfo.OrderDetailId,
+                    OrderDetailId = finalLockInfo.OrderDetailId,
                     PalletCode = palletCode,
-                    Barcode = barcode,
-                    MaterielCode = lockInfo.MaterielCode,
+                    Barcode = finalBarcode,
+                    MaterielCode = finalLockInfo.MaterielCode,
                     PickQuantity = actualQty,
                     PickTime = DateTime.Now,
                     Operator = App.User.UserName,
-                    OutStockLockId = lockInfo.Id
+                    OutStockLockId = finalLockInfo.Id
                 };
                 await Db.Insertable(pickingHistory).ExecuteCommandAsync();
 
@@ -449,7 +514,7 @@
                     return WebResponseContent.Instance.OK("鎷i�夌‘璁ゆ垚鍔燂紝宸茶嚜鍔ㄦ媶鍖�", new { SplitResults = splitResults });
                 }
 
-                return WebResponseContent.Instance.OK("鎷i�夌‘璁ゆ垚鍔�");
+                return WebResponseContent.Instance.OK("鎷i�夌‘璁ゆ垚鍔�", new { SplitResults = splitResults });
 
             }
             catch (Exception ex)
@@ -458,7 +523,7 @@
                 return WebResponseContent.Instance.Error($"鎷i�夌‘璁ゅけ璐ワ細{ex.Message}");
             }
         }
-        
+
         /// <summary>
         /// 鍥炲簱鎿嶄綔  
         /// </summary>
@@ -566,7 +631,7 @@
                             .Where(it => lockIds.Contains(it.Id))
                             .ExecuteCommandAsync();
 
-           
+
 
                         // 澶勭悊搴撳瓨璁板綍
                         foreach (var lockInfo in palletLocks)
@@ -664,9 +729,9 @@
                         CreateReturnTask(tasks, task, palletCode, newLocation);
                     }
 
-                 
+
                 }
-            
+
                 var allSplitRecords = await _splitPackageService.Db.Queryable<Dt_SplitPackageRecord>()
                     .Where(it => it.OrderNo == orderNo && it.PalletCode == palletCode && !it.IsReverted)
                     .ToListAsync();
@@ -1082,7 +1147,7 @@
         private async Task RecordCancelHistory(string orderNo, string palletCode, string barcode,
             decimal cancelQty, int pickingRecordId, string materielCode, string reason)
         {
-           
+
             //var cancelHistory = new Dt_PickingCancelRecord
             //{
             //    OrderNo = orderNo,

--
Gitblit v1.9.3