From fba48d2d676cd9b6d493163aef9d87f6e5090aee Mon Sep 17 00:00:00 2001
From: 如洲 陈 <1278080563@qq.com>
Date: 星期五, 12 九月 2025 19:02:00 +0800
Subject: [PATCH] 出库检和退货检验

---
 MES.Service/service/Warehouse/MesReturnwareManager.cs |  122 ++++++++++++++++++++++++++++++++++++----
 1 files changed, 110 insertions(+), 12 deletions(-)

diff --git a/MES.Service/service/Warehouse/MesReturnwareManager.cs b/MES.Service/service/Warehouse/MesReturnwareManager.cs
index c83afa9..7bb85c8 100644
--- a/MES.Service/service/Warehouse/MesReturnwareManager.cs
+++ b/MES.Service/service/Warehouse/MesReturnwareManager.cs
@@ -4,6 +4,7 @@
 using MES.Service.DB;
 using MES.Service.Modes;
 using MES.Service.Dto.webApi;
+using System.Data;
 
 namespace MES.Service.service
 {
@@ -92,7 +93,12 @@
             var orUpdate = base.Insert(mesReturnware);
             var baOrUpdate = ReturnwareDetailsManager.InsertRange(mesReturnwareDetails);
 
-            if (orUpdate && baOrUpdate) return true;
+            if (orUpdate && baOrUpdate)
+            {
+                // 淇濆瓨鎴愬姛鍚庯紝璋冪敤瀛樺偍杩囩▼鐢熸垚妫�楠屽崟
+                GenerateInspectionOrder(db, mesReturnware, mesReturnwareDetails);
+                return true;
+            }
             throw new NotImplementedException("鎻掑叆鎴栨洿鏂板け璐�");
 
 
@@ -117,7 +123,12 @@
             var insertOrUpdate = db.Deleteable<MesReturnwareDetails>().Where(it => mesReturnwareDetail.Any(p => p.ReturnwareNo == it.ReturnNo && p.ReturnwareType == it.ReturnType)).ExecuteCommand() > 0;
 
 
-            if (update && insertOrUpdate) return true;
+            if (update && insertOrUpdate)
+            {
+                // 鏇存柊鎴愬姛鍚庯紝璋冪敤瀛樺偍杩囩▼鐢熸垚妫�楠屽崟
+                GenerateInspectionOrder(db, mesReturnware, mesReturnwareDetails);
+                return true;
+            }
             throw new NotImplementedException("鏇存柊澶辫触");
         }
 
@@ -187,27 +198,114 @@
 
         public bool Delete(YFDelete data)
         {
-
-
             return UseTransaction(db =>
             {
-                var update = db.Deleteable<MesReturnware>()
-                       .Where(it => it.ReturnNo == data.FBillNo &&
-                                    it.ReturnType == data.FBillTypeID)
-                       .ExecuteCommand() > 0;
-
-                var insertOrUpdate = db.Deleteable<MesReturnwareDetails>()
+                // 鍏堝垹闄ら��璐ч�氱煡鍗曟槑缁�
+                var detailsDeleted = db.Deleteable<MesReturnwareDetails>()
                       .Where(it => it.ReturnNo == data.FBillNo &&
                                    it.ReturnType == data.FBillTypeID)
                       .ExecuteCommand() > 0;
 
+                // 鍐嶅垹闄ら��璐ч�氱煡鍗曚富琛�
+                var mainDeleted = db.Deleteable<MesReturnware>()
+                       .Where(it => it.ReturnNo == data.FBillNo &&
+                                    it.ReturnType == data.FBillTypeID)
+                       .ExecuteCommand() > 0;
 
-
-                if (update && insertOrUpdate) return 1;
+                if (detailsDeleted && mainDeleted)
+                {
+                    // 鍒犻櫎鎴愬姛鍚庯紝璋冪敤瀛樺偍杩囩▼鍒犻櫎瀵瑰簲鐨勬楠屽崟
+                    DeleteInspectionOrder(db, data.FBillTypeID, data.FBillNo);
+                    return 1;
+                }
+                
                 throw new NotImplementedException("鍒犻櫎澶辫触");
             }) > 0;
+        }
 
+        /// <summary>
+        /// 璋冪敤瀛樺偍杩囩▼鐢熸垚妫�楠屽崟
+        /// </summary>
+        /// <param name="mesReturnware">閫�璐ч�氱煡鍗曚富琛�</param>
+        /// <param name="mesReturnwareDetails">閫�璐ч�氱煡鍗曟槑缁嗚〃</param>
+        private void GenerateInspectionOrder(SqlSugarScope db, MesReturnware mesReturnware, List<MesReturnwareDetails> mesReturnwareDetails)
+        {
+            try
+            {
+                // 瀹氫箟杈撳叆鍙傛暟
+                var inputParam1 = new SugarParameter("P_RETURN_TYPE", mesReturnware.ReturnType ?? "");
+                var inputParam2 = new SugarParameter("P_RETURN_NO", mesReturnware.ReturnNo ?? "");
+                
+                // 瀹氫箟杈撳嚭鍙傛暟
+                var outParam1 = new SugarParameter("P_RESULT", null, true);
+                var outParam2 = new SugarParameter("P_MESSAGE", null, true);
 
+                // 浣跨敤 SqlSugar 鎵ц瀛樺偍杩囩▼
+                db.Ado.ExecuteCommand("BEGIN SP_GEN_RETURN_INSP(:P_RETURN_TYPE,:P_RETURN_NO,:P_RESULT,:P_MESSAGE); END;", 
+                    inputParam1, inputParam2, outParam1, outParam2);
+
+                // 鑾峰彇杈撳嚭鍙傛暟鐨勫��
+                int result = int.Parse((string)outParam1.Value);
+                string message = outParam2.Value == DBNull.Value ? string.Empty : (string)outParam2.Value;
+
+                if (result != 1)
+                {
+                    // 璁板綍璀﹀憡鏃ュ織锛屼絾涓嶅奖鍝嶉��璐ч�氱煡鍗曠殑淇濆瓨
+                    Console.WriteLine($"鐢熸垚妫�楠屽崟璀﹀憡: {message}");
+                }
+                else
+                {
+                    Console.WriteLine($"鐢熸垚妫�楠屽崟鎴愬姛: {message}");
+                }
+            }
+            catch (Exception ex)
+            {
+                // 璁板綍閿欒鏃ュ織锛屼絾涓嶅奖鍝嶉��璐ч�氱煡鍗曠殑淇濆瓨
+                Console.WriteLine($"鐢熸垚妫�楠屽崟鏃跺彂鐢熼敊璇�: {ex.Message}");
+            }
+        }
+
+        /// <summary>
+        /// 璋冪敤瀛樺偍杩囩▼鍒犻櫎妫�楠屽崟
+        /// </summary>
+        /// <param name="db">鏁版嵁搴撹繛鎺�</param>
+        /// <param name="returnType">閫�璐у崟鍒�</param>
+        /// <param name="returnNo">閫�璐у崟鍙�</param>
+        private void DeleteInspectionOrder(SqlSugarScope db, string returnType, string returnNo)
+        {
+            try
+            {
+                // 瀹氫箟杈撳叆鍙傛暟
+                var inputParam1 = new SugarParameter("P_RETURN_TYPE", returnType ?? "");
+                var inputParam2 = new SugarParameter("P_RETURN_NO", returnNo ?? "");
+                
+                // 瀹氫箟杈撳嚭鍙傛暟
+                var outParam1 = new SugarParameter("P_RESULT", null, true);
+                var outParam2 = new SugarParameter("P_MESSAGE", null, true);
+
+                // 浣跨敤 SqlSugar 鎵ц瀛樺偍杩囩▼
+                db.Ado.ExecuteCommand("BEGIN SP_DEL_RETURN_INSP(:P_RETURN_TYPE,:P_RETURN_NO,:P_RESULT,:P_MESSAGE); END;", 
+                    inputParam1, inputParam2, outParam1, outParam2);
+
+                // 鑾峰彇杈撳嚭鍙傛暟鐨勫��
+                int result = int.Parse((string)outParam1.Value);
+                string message = outParam2.Value == DBNull.Value ? string.Empty : (string)outParam2.Value;
+
+                if (result != 1)
+                {
+                    // 璁板綍璀﹀憡鏃ュ織锛屼絾涓嶅奖鍝嶉��璐ч�氱煡鍗曠殑鍒犻櫎
+                    Console.WriteLine($"鍒犻櫎妫�楠屽崟璀﹀憡: {message}");
+                }
+                else
+                {
+                    Console.WriteLine($"鍒犻櫎妫�楠屽崟鎴愬姛: {message}");
+                }
+            }
+            catch (Exception ex)
+            {
+                // 璁板綍閿欒鏃ュ織锛屼絾涓嶅奖鍝嶉��璐ч�氱煡鍗曠殑鍒犻櫎
+                Console.WriteLine($"鍒犻櫎妫�楠屽崟鏃跺彂鐢熼敊璇�: {ex.Message}");
+            }
         }
 
 

--
Gitblit v1.9.3