From 968d603a08117e7e6707ffe07c6da9c325e36c08 Mon Sep 17 00:00:00 2001
From: kazelee <1847801760@qq.com>
Date: 星期一, 12 五月 2025 17:04:17 +0800
Subject: [PATCH] 完成并测试抽检出库的逻辑,修复相关问题

---
 Services/MoboxService.cs |   92 +++++++++++++++++++++++++++++----------------
 1 files changed, 59 insertions(+), 33 deletions(-)

diff --git a/Services/MoboxService.cs b/Services/MoboxService.cs
index d2f68a6..cdc9920 100644
--- a/Services/MoboxService.cs
+++ b/Services/MoboxService.cs
@@ -383,24 +383,48 @@
             }
         }
 
+        /// <summary>
+        /// 鍒涘缓鎶芥鍗�+        /// </summary>
+        /// <param name="model"></param>
+        /// <returns></returns>
         public static SimpleResult CreateCheckOrder(CreateCheckOrderInfo model) {
             var db = DbHelper.GetDbClient();
             try {
+                // 缁戝畾鎿嶄綔锛氭彃鍏ュ嚭搴撳崟銆佹墍鏈夌殑鍑哄簱鍗曟槑缁�+                using (var tran = db.Ado.UseTran()) {
 
-                var order = new TN_Check_Order {
-                    S_CG_ID = model.CgId,
-                    S_ITEM_NAME = model.ItemName,
-                    S_BATCH_NO = model.BatchNo,
-                    N_QTY = model.Qty,
-                    S_END_AREA = model.EndArea,
-                };
+                    var order = new TN_Check_Order {
+                        S_NO = model.No,
+                        S_CG_ID = model.CgId,
+                        S_ITEM_NAME = model.ItemName,
+                        S_BATCH_NO = model.BatchNo,
+                        N_COUNT = model.Count,
+                        S_END_AREA = model.EndArea,
+                    };
 
-                if (db.Insertable<TN_Check_Order>(order).ExecuteCommand() > 0) {
-                    return BuildSimpleResult(0, "鎻掑叆鎶芥鍗曟垚鍔燂細" + JsonConvert.SerializeObject(order));
+                    if (db.Insertable<TN_Check_Order>(order).ExecuteCommand() <= 0) {
+                        tran.RollbackTran();
+                        return BuildSimpleResult(2, "鐢熸垚 鎶芥鍗�澶辫触锛� + JsonConvert.SerializeObject(order));
+                    }
+
+                    for (int i = 0; i < model.Count; i++) {
+                        var detail = new TN_Check_Detail {
+                            S_NO = model.No,
+                            S_CG_ID = model.CgId,
+                            S_BATCH_NO = model.BatchNo,
+                            S_END_AREA = model.EndArea
+                        };
+
+                        if (db.Insertable<TN_Check_Detail>(detail).ExecuteCommand() <= 0) {
+                            tran.RollbackTran();
+                            return BuildSimpleResult(3, "鐢熸垚 鎶芥鍗曟槑缁�澶辫触锛� + JsonConvert.SerializeObject(detail));
+                        }
+                    }
+
+                    tran.CommitTran();
                 }
-                else {
-                    return BuildSimpleResult(2, "鎻掑叆鎶芥鍗曞け璐ワ細" + JsonConvert.SerializeObject(order));
-                }
+                return BuildSimpleResult(0, $"鍒涘缓 鎶芥鍗�鎴愬姛锛氬崟鍙�{model.No}");
             }
             catch (Exception ex) {
                 return BuildSimpleEx(ex);
@@ -425,13 +449,12 @@
                     return BuildSimpleResult(2, "鍑哄簱鍗曞彿涓嶈兘涓虹┖");
                 }
 
-                if (model.OutboundDetails.Count == 0) {
-                    return BuildSimpleResult(2, "鍑哄簱鍗曟槑缁嗘病鏈夐」鐩�);
-                }
-
                 using (var tran = db.Ado.UseTran()) {
                     var order = new TN_Outbound_Order {
                         S_NO = model.No,
+                        S_CG_ID = model.CgId,
+                        S_BATCH_NO = model.BatchNo,
+                        S_END_AREA = model.EndArea,
                         N_FORCE = model.Forced ? 1 : 0
                     };
 
@@ -440,16 +463,16 @@
                         return BuildSimpleResult(3, "鐢熸垚鍑哄簱鍗曞け璐ワ細" + JsonConvert.SerializeObject(order));
                     }
 
-                    foreach (var detail in model.OutboundDetails) {
-                        var newDetail = new TN_Outbound_Detail {
-                            S_NO = order.S_NO,
-                            S_CG_ID = detail.CgCode,
-                            S_BATCH_NO = detail.PatchNo,
-                            N_QTY = detail.Qty,
-                            N_FORCE = order.N_FORCE,
-                            S_END_AREA = detail.EndArea
+                    for (int i = 0; i < model.Count; i++) {
+                        var detail = new TN_Outbound_Detail {
+                            S_NO = model.No,
+                            S_CG_ID = model.CgId,
+                            S_BATCH_NO = model.BatchNo,
+                            N_FORCE = model.Forced ? 1 : 0,
+                            S_END_AREA = model.EndArea
                         };
-                        if (db.Insertable<TN_Outbound_Detail>(newDetail).ExecuteCommand() <= 0) {
+
+                        if (db.Insertable<TN_Outbound_Detail>(detail).ExecuteCommand() <= 0) {
                             tran.RollbackTran();
                             return BuildSimpleResult(4, "鐢熸垚鍑哄簱鍗曟槑缁嗗け璐ワ細" + JsonConvert.SerializeObject(detail));
                         }
@@ -488,19 +511,22 @@
                         return BuildSimpleResult(3, "鐢熸垚鍑哄簱鍗曞け璐ワ細" + JsonConvert.SerializeObject(order));
                     }
 
-                    foreach (var detail in model.OutboundDetails) {
-                        var newDetail = new TN_Outbound_Detail {
-                            S_NO = order.S_NO,
-                            S_CG_ID = detail.CgCode,
-                            S_BATCH_NO = detail.PatchNo,
-                            N_QTY = detail.Qty,
-                            N_FORCE = order.N_FORCE
+                    for (int i = 0; i < model.Count; i++) {
+                        var detail = new TN_Outbound_Detail {
+                            S_NO = model.No,
+                            S_CG_ID = model.CgId,
+                            S_BATCH_NO = model.BatchNo,
+                            N_FORCE = model.Forced ? 1 : 0,
+                            S_END_AREA = model.EndArea
                         };
-                        if (db.Insertable<TN_Inbound_Order>(order).ExecuteCommand() <= 0) {
+
+                        if (db.Insertable<TN_Outbound_Detail>(detail).ExecuteCommand() <= 0) {
                             tran.RollbackTran();
                             return BuildSimpleResult(4, "鐢熸垚鍑哄簱鍗曟槑缁嗗け璐ワ細" + JsonConvert.SerializeObject(detail));
                         }
                     }
+
+                    tran.CommitTran();
                 }
 
                 return BuildSimpleResult(0, "鐢熸垚鍑哄簱鍗曟垚鍔�);

--
Gitblit v1.9.1