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/QC/RKJService.cs |  232 +++++++++++++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 213 insertions(+), 19 deletions(-)

diff --git a/MES.Service/service/QC/RKJService.cs b/MES.Service/service/QC/RKJService.cs
index ca300f8..70d4478 100644
--- a/MES.Service/service/QC/RKJService.cs
+++ b/MES.Service/service/QC/RKJService.cs
@@ -3,6 +3,7 @@
 using MES.Service.Modes;
 using MES.Service.util;
 using SqlSugar;
+using System.Data;
 
 namespace MES.Service.service.QC;
 
@@ -367,46 +368,239 @@
                 return commit;
             });
 
+        // 娉ㄩ噴鎺夎嚜鍔ㄦ彁浜ら�昏緫锛屾敼涓烘墜鍔ㄦ彁浜�
+        // var isNull = db.Queryable<QsItemOqcItem>()
+        //     .Where(s => s.Pid == detail.Gid && s.IsPass == null).Count();
+        //
+        // if (isNull > 0) return 1;
+        //
+        //
+        // //鑾峰彇妫�楠屽崟鐨勬楠岄」鐩殑涓暟
+        // var sum = db.Queryable<QsItemOqcItem>()
+        //     .Where(s => s.Pid == detail.Gid).Count();
+        //
+        // if (sum == 0) return 1;
+        //
+        // //鑾峰彇妫�楠屽崟涓嬬殑鍚堟牸鐨勬楠岄」鐩釜鏁�
+        // var icount = db.Queryable<QsItemOqcItem>()
+        //     .Where(s => s.Pid == detail.Gid && s.IsPass == 1).Count();
+        //
+        // var FcheckResu = "涓嶅悎鏍�";
+        //
+        // //瀹為檯涓暟绛変簬鐞嗚涓暟鏃跺妫�楠屽崟杩涜鍒ゅ畾
+        // if (sum == icount)
+        //     //鍚堟牸鐨勬楠岀粨鏋滅瓑浜庢�绘楠屾暟瑙嗕负鍚堟牸
+        //     FcheckResu = "鍚堟牸";
+        //
+        // SqlSugarHelper.UseTransactionWithOracle(db =>
+        // {
+        //     return db.Updateable<QsItemOqcReq>()
+        //         .SetColumns(s => s.FcheckResu == FcheckResu)
+        //         .SetColumns(s => s.FcheckDate == DateTime.Now)
+        //         .SetColumns(s => s.FcheckBy == detail.CreateBy)
+        //         .SetColumns(s => s.LastupdateBy == detail.CreateBy)
+        //         .SetColumns(s => s.LastupdateDate == DateTime.Now)
+        //         .Where(s => s.Id == detail.Gid)
+        //         .ExecuteCommand();
+        // });
+        //
+        // if (FcheckResu.Equals("涓嶅悎鏍�"))
+        //     //鑷姩鐢熸垚鍏ュ簱妫�寮傚父瀵圭瓥
+        //     saveDetect02(detail.Gid, detail.CreateBy);
+
+        return useTransactionWithOracle;
+    }
+
+    /// <summary>
+    /// 鎵嬪姩鎻愪氦鍏ュ簱妫�缁撴灉
+    /// </summary>
+    /// <param name="gid">鍏ュ簱妫�涓昏〃ID</param>
+    /// <param name="userNo">鎿嶄綔浜�</param>
+    /// <returns>鎻愪氦缁撴灉</returns>
+    public int SubmitRKJResult(decimal? gid, string userNo)
+    {
+        var db = SqlSugarHelper.GetInstance();
+
+        // 妫�鏌ユ槸鍚︽墍鏈夋楠岄」鐩兘宸插畬鎴�
         var isNull = db.Queryable<QsItemOqcItem>()
-            .Where(s => s.Pid == detail.Gid && s.IsPass == null).Count();
+            .Where(s => s.Pid == gid && s.IsPass == null).Count();
 
-        if (isNull > 0) return 1;
+        if (isNull > 0)
+        {
+            throw new Exception("杩樻湁妫�楠岄」鐩湭瀹屾垚锛屾棤娉曟彁浜�");
+        }
 
-
-        //鑾峰彇妫�楠屽崟鐨勬楠岄」鐩殑涓暟
+        // 鑾峰彇妫�楠屽崟鐨勬楠岄」鐩殑涓暟
         var sum = db.Queryable<QsItemOqcItem>()
-            .Where(s => s.Pid == detail.Gid).Count();
+            .Where(s => s.Pid == gid).Count();
 
-        if (sum == 0) return 1;
+        if (sum == 0)
+        {
+            throw new Exception("娌℃湁妫�楠岄」鐩紝鏃犳硶鎻愪氦");
+        }
 
-        //鑾峰彇妫�楠屽崟涓嬬殑鍚堟牸鐨勬楠岄」鐩釜鏁�
+        // 鑾峰彇妫�楠屽崟涓嬬殑鍚堟牸鐨勬楠岄」鐩釜鏁�
         var icount = db.Queryable<QsItemOqcItem>()
-            .Where(s => s.Pid == detail.Gid && s.IsPass == 1).Count();
+            .Where(s => s.Pid == gid && s.IsPass == 1).Count();
 
         var FcheckResu = "涓嶅悎鏍�";
 
-        //瀹為檯涓暟绛変簬鐞嗚涓暟鏃跺妫�楠屽崟杩涜鍒ゅ畾
+        // 瀹為檯涓暟绛変簬鐞嗚涓暟鏃跺妫�楠屽崟杩涜鍒ゅ畾
         if (sum == icount)
-            //鍚堟牸鐨勬楠岀粨鏋滅瓑浜庢�绘楠屾暟瑙嗕负鍚堟牸
+            // 鍚堟牸鐨勬楠岀粨鏋滅瓑浜庢�绘楠屾暟瑙嗕负鍚堟牸
             FcheckResu = "鍚堟牸";
 
-        SqlSugarHelper.UseTransactionWithOracle(db =>
+        Console.WriteLine($"妫�楠岀粨鏋滃垽瀹�: 鎬婚」鐩暟={sum}, 鍚堟牸椤圭洰鏁�={icount}, 鍒ゅ畾缁撴灉={FcheckResu}");
+
+        var result = SqlSugarHelper.UseTransactionWithOracle(db =>
         {
-            return db.Updateable<QsItemOqcReq>()
+            var updateResult = db.Updateable<QsItemOqcReq>()
                 .SetColumns(s => s.FcheckResu == FcheckResu)
                 .SetColumns(s => s.FcheckDate == DateTime.Now)
-                .SetColumns(s => s.FcheckBy == detail.CreateBy)
-                .SetColumns(s => s.LastupdateBy == detail.CreateBy)
+                .SetColumns(s => s.FcheckBy == userNo)
+                .SetColumns(s => s.LastupdateBy == userNo)
                 .SetColumns(s => s.LastupdateDate == DateTime.Now)
-                .Where(s => s.Id == detail.Gid)
+                .Where(s => s.Id == gid)
                 .ExecuteCommand();
+
+            // 濡傛灉涓嶅悎鏍硷紝鍦ㄤ簨鍔″唴璋冪敤瀛樺偍杩囩▼鐢熸垚寮傚父澶勭疆鍗�
+            if (FcheckResu.Equals("涓嶅悎鏍�"))
+            {
+                CallRKJUnqualifiedStoredProcedureInTransaction(db, gid, userNo);
+            }
+
+            return updateResult;
         });
 
-        if (FcheckResu.Equals("涓嶅悎鏍�"))
-            //鑷姩鐢熸垚鍏ュ簱妫�寮傚父瀵圭瓥
-            saveDetect02(detail.Gid, detail.CreateBy);
+        return result;
+    }
 
-        return useTransactionWithOracle;
+    /// <summary>
+    /// 璋冪敤鍏ュ簱妫�涓嶅悎鏍煎瓨鍌ㄨ繃绋嬶紙浜嬪姟鍐呰皟鐢級
+    /// </summary>
+    /// <param name="db">鏁版嵁搴撹繛鎺�</param>
+    /// <param name="gid">鍏ュ簱妫�涓昏〃ID</param>
+    /// <param name="userNo">鎿嶄綔浜�</param>
+    private void CallRKJUnqualifiedStoredProcedureInTransaction(ISqlSugarClient db, decimal? gid, string userNo)
+    {
+        try
+        {
+            Console.WriteLine($"寮�濮嬭皟鐢ㄥ叆搴撴涓嶅悎鏍煎瓨鍌ㄨ繃绋嬶紝gid: {gid}, userNo: {userNo}");
+            
+            // 鑾峰彇鍏ュ簱妫�鍗曚俊鎭�
+            var rkjInfo = db.Queryable<QsItemOqcReq>()
+                .Where(s => s.Id == gid)
+                .First();
+                
+            if (rkjInfo == null) 
+            {
+                Console.WriteLine($"鏈壘鍒板叆搴撴鍗曚俊鎭紝gid: {gid}");
+                return;
+            }
+
+            Console.WriteLine($"鎵惧埌鍏ュ簱妫�鍗曚俊鎭紝ReleaseNo: {rkjInfo.ReleaseNo}");
+
+            // 瀹氫箟杈撳嚭鍙傛暟
+            var outputResult = new SugarParameter("o_Result", null,
+                System.Data.DbType.Int32, ParameterDirection.Output, 4000);
+
+            var outputMessage = new SugarParameter("o_Msg", null,
+                System.Data.DbType.String, ParameterDirection.Output, 4000);
+
+            // 瀹氫箟杈撳叆鍙傛暟
+            var parameters = new List<SugarParameter>
+            {
+                new("p_Gid", gid, System.Data.DbType.Decimal, ParameterDirection.Input),
+                new("p_Release_No", rkjInfo.ReleaseNo, System.Data.DbType.String, ParameterDirection.Input),
+                new("p_User", userNo, System.Data.DbType.String, ParameterDirection.Input),
+                outputResult,
+                outputMessage
+            };
+
+            Console.WriteLine($"鍑嗗鎵ц瀛樺偍杩囩▼锛屽弬鏁�: gid={gid}, releaseNo={rkjInfo.ReleaseNo}, userNo={userNo}");
+
+            // 鎵ц瀛樺偍杩囩▼
+            db.Ado.ExecuteCommand(
+                "BEGIN PRC_MES_RKJ_UNQUALIFIED(:p_Gid, :p_Release_No, :p_User, :o_Result, :o_Msg); END;",
+                parameters.ToArray());
+
+            // 鑾峰彇杈撳嚭鍙傛暟鐨勫��
+            var resultValue = outputResult.Value?.ToString();
+            var messageValue = outputMessage.Value?.ToString();
+
+            Console.WriteLine($"瀛樺偍杩囩▼鎵ц瀹屾垚锛岀粨鏋�: {resultValue}, 娑堟伅: {messageValue}");
+
+            if ("1".Equals(resultValue)) 
+            {
+                throw new Exception($"鍏ュ簱妫�寮傚父澶勭疆鍗曠敓鎴愬け璐�: {messageValue}");
+            }
+            
+            Console.WriteLine("鍏ュ簱妫�寮傚父澶勭疆鍗曠敓鎴愭垚鍔�");
+        }
+        catch (Exception ex)
+        {
+            Console.WriteLine($"鍏ュ簱妫�寮傚父澶勭疆鍗曠敓鎴愬け璐�: {ex.Message}");
+            // 鍦ㄤ簨鍔″唴锛屽鏋滃瓨鍌ㄨ繃绋嬭皟鐢ㄥけ璐ワ紝搴旇鎶涘嚭寮傚父浠ュ洖婊氫簨鍔�
+            throw new Exception($"鍏ュ簱妫�寮傚父澶勭疆鍗曠敓鎴愬け璐�: {ex.Message}");
+        }
+    }
+
+    /// <summary>
+    /// 璋冪敤鍏ュ簱妫�涓嶅悎鏍煎瓨鍌ㄨ繃绋嬶紙浜嬪姟澶栬皟鐢紝鐢ㄤ簬鍏煎锛�
+    /// </summary>
+    /// <param name="gid">鍏ュ簱妫�涓昏〃ID</param>
+    /// <param name="userNo">鎿嶄綔浜�</param>
+    private void CallRKJUnqualifiedStoredProcedure(decimal? gid, string userNo)
+    {
+        try
+        {
+            var db = SqlSugarHelper.GetInstance();
+            
+            // 鑾峰彇鍏ュ簱妫�鍗曚俊鎭�
+            var rkjInfo = db.Queryable<QsItemOqcReq>()
+                .Where(s => s.Id == gid)
+                .First();
+                
+            if (rkjInfo == null) return;
+
+            // 瀹氫箟杈撳嚭鍙傛暟
+            var outputResult = new SugarParameter("o_Result", null,
+                System.Data.DbType.Int32, ParameterDirection.Output, 4000);
+
+            var outputMessage = new SugarParameter("o_Msg", null,
+                System.Data.DbType.String, ParameterDirection.Output, 4000);
+
+            // 瀹氫箟杈撳叆鍙傛暟
+            var parameters = new List<SugarParameter>
+            {
+                new("p_Gid", gid, System.Data.DbType.Decimal, ParameterDirection.Input),
+                new("p_Release_No", rkjInfo.ReleaseNo, System.Data.DbType.String, ParameterDirection.Input),
+                new("p_User", userNo, System.Data.DbType.String, ParameterDirection.Input),
+                outputResult,
+                outputMessage
+            };
+
+            // 鎵ц瀛樺偍杩囩▼
+            db.Ado.ExecuteCommand(
+                "BEGIN PRC_MES_RKJ_UNQUALIFIED(:p_Gid, :p_Release_No, :p_User, :o_Result, :o_Msg); END;",
+                parameters.ToArray());
+
+            // 鑾峰彇杈撳嚭鍙傛暟鐨勫��
+            var resultValue = outputResult.Value?.ToString();
+            var messageValue = outputMessage.Value?.ToString();
+
+            if ("1".Equals(resultValue)) 
+            {
+                throw new Exception($"鍏ュ簱妫�寮傚父澶勭疆鍗曠敓鎴愬け璐�: {messageValue}");
+            }
+        }
+        catch (Exception ex)
+        {
+            // 璁板綍鏃ュ織浣嗕笉褰卞搷涓绘祦绋�
+            Console.WriteLine($"鍏ュ簱妫�寮傚父澶勭疆鍗曠敓鎴愬け璐�: {ex.Message}");
+            // 鍙互鏍规嵁闇�瑕佸喅瀹氭槸鍚︽姏鍑哄紓甯�
+            // throw new Exception($"鍏ュ簱妫�寮傚父澶勭疆鍗曠敓鎴愬け璐�: {ex.Message}");
+        }
     }
 
     public int saveDetect02(decimal? gid, string? createBy)

--
Gitblit v1.9.3