From a619299816f2f632c7c6ba3a1bb869e2c212797d Mon Sep 17 00:00:00 2001
From: fcx <2246384483@qq.com>
Date: 星期五, 19 十二月 2025 14:12:33 +0800
Subject: [PATCH] 对添加巡检单物料编码进行去重

---
 StandardPda/MES.Service/service/QC/LljService.cs |  260 ++++++++++++++++++++++++++++++++++++++-------------
 1 files changed, 191 insertions(+), 69 deletions(-)

diff --git a/StandardPda/MES.Service/service/QC/LljService.cs b/StandardPda/MES.Service/service/QC/LljService.cs
index 5b2ad6e..6deba4d 100644
--- a/StandardPda/MES.Service/service/QC/LljService.cs
+++ b/StandardPda/MES.Service/service/QC/LljService.cs
@@ -4,7 +4,9 @@
 using MES.Service.Dto.service;
 using MES.Service.Modes;
 using MES.Service.util;
+using Microsoft.Extensions.Configuration;
 using Newtonsoft.Json;
+using Oracle.ManagedDataAccess.Client;
 using SqlSugar;
 using System.Data;
 using System.Security.Cryptography;
@@ -18,6 +20,10 @@
 public class LljService
 {
     private static readonly HttpClient client = new();
+    private static IConfiguration configuration = new ConfigurationBuilder()
+                .SetBasePath(Directory.GetCurrentDirectory())
+                .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
+                .Build();
 
     public (List<LtsLlj> item, int TotalCount) GetPage(XJPageResult queryObj)
     {
@@ -340,6 +346,8 @@
                 DbType.String, ParameterDirection.Input),
             new("PI_REMARK", sysSubmit.PI_REMARK,
                 DbType.String, ParameterDirection.Input),
+               new("PI_SAMPLE_QTY", sysSubmit.PI_SAMPLE_QTY,
+                DbType.String, ParameterDirection.Input),
             outputResult,
             outputMessage
         };
@@ -348,7 +356,51 @@
 
         // 浣跨敤 SqlSugar 鎵ц瀛樺偍杩囩▼
         db.Ado.ExecuteCommand(
-            "BEGIN PRC_MES_IQC_QC_SYSSUBMIT(:PI_BILLNO,:PI_USER,:PI_SAMPLE_STATUS,:PI_SAMPLE_TYPE,:PI_SAMPLE_REASON,:PI_INSPECT_TYPE,:PI_SAMPLE_PREPARATION,:PI_URGENCY,:PI_FIRMWAREVERSION,:PI_HARDWAREVERSION,:PI_REMARK, :o_Result, :o_Msg); END;",
+            "BEGIN PRC_MES_IQC_QC_SYSSUBMIT(:PI_BILLNO,:PI_USER,:PI_SAMPLE_STATUS,:PI_SAMPLE_TYPE,:PI_SAMPLE_REASON,:PI_INSPECT_TYPE,:PI_SAMPLE_PREPARATION,:PI_URGENCY,:PI_FIRMWAREVERSION,:PI_HARDWAREVERSION,:PI_REMARK,:PI_SAMPLE_QTY, :o_Result, :o_Msg); END;",
+            parameters.ToArray());
+
+        // 鑾峰彇杈撳嚭鍙傛暟鐨勫��
+        var resultValue = outputResult.Value?.ToString();
+        var messageValue = outputMessage.Value?.ToString();
+        var msg = new string[2];
+        msg[0] = resultValue;
+        msg[1] = messageValue;
+        return msg;
+    }
+
+
+    public string[] SaveYCCZSubmit(YCCZSubmit sysSubmit)
+    {
+        // 瀹氫箟杈撳嚭鍙傛暟
+        var outputResult = new SugarParameter("o_Result", null,
+            DbType.Int32, ParameterDirection.Output,
+            4000);
+
+        var outputMessage = new SugarParameter("o_Msg", null,
+            DbType.String,
+            ParameterDirection.Output, 4000);
+
+        // 瀹氫箟杈撳叆鍙傛暟
+        var parameters = new List<SugarParameter>
+        {
+            new("PI_BILLNO", sysSubmit.PI_BILLNO,
+                DbType.String, ParameterDirection.Input),
+            new("PI_USER", sysSubmit.PI_USER,
+                DbType.String, ParameterDirection.Input),
+            new("PTOTAL_QTY", sysSubmit.PI_QTY,
+                DbType.String, ParameterDirection.Input),
+            new("PNG_QTY", sysSubmit.PI_BADQTY,
+                DbType.String, ParameterDirection.Input),
+
+            outputResult,
+            outputMessage
+        };
+
+        var db = SqlSugarHelper.GetInstance();
+
+        // 浣跨敤 SqlSugar 鎵ц瀛樺偍杩囩▼
+        db.Ado.ExecuteCommand(
+            "BEGIN PRC_MES_IQC_QC_YCCZ(:PI_BILLNO,:PI_USER,:PTOTAL_QTY,:PNG_QTY,:o_Result, :o_Msg); END;",
             parameters.ToArray());
 
         // 鑾峰彇杈撳嚭鍙傛暟鐨勫��
@@ -1453,28 +1505,96 @@
         return SQLHelper.ExecuteQuery(sql1);
     }
 
+    //public void saveYzxBDlist(string id, DataTable DB)
+    //{
+    //    OracleSQLHelper SQLHelper = new();
+    //    //鍏堟妸缁撴灉娓呯┖
+    //    var sql1 =
+    //        string.Format(
+    //            @"update MES_IQC_CONSISTENCY_ck set ISCHACK=0 where PID='" +
+    //            id + "' ");
+    //    SQLHelper.ExecuteQuery(sql1);
+    //    var rowId = "";
+    //    for (var i = 0; i < DB.Rows.Count; i++)
+    //        rowId += "'" + DB.Rows[i]["id"] + "',";
+    //    rowId = rowId.Substring(0, rowId.Length - 1);
+
+
+    //    //淇敼缁撴灉
+    //    var sql2 =
+    //        string.Format(
+    //            @"update MES_IQC_CONSISTENCY_ck set ISCHACK=1 where PID='" +
+    //            id + "'and id in(" + rowId + ") ");
+    //    SQLHelper.ExecuteQuery(sql2);
+    //}
+
     public void saveYzxBDlist(string id, DataTable DB)
     {
-        OracleSQLHelper SQLHelper = new();
-        //鍏堟妸缁撴灉娓呯┖
-        var sql1 =
-            string.Format(
-                @"update MES_IQC_CONSISTENCY_ck set ISCHACK=0 where PID='" +
-                id + "' ");
-        SQLHelper.ExecuteQuery(sql1);
-        var rowId = "";
-        for (var i = 0; i < DB.Rows.Count; i++)
-            rowId += "'" + DB.Rows[i]["id"] + "',";
-        rowId = rowId.Substring(0, rowId.Length - 1);
+        var sqlHelper = new OracleSQLHelper();
 
+        using (var connection = new OracleConnection(AppsettingsUtility.Settings.DataBaseConn))
+        {
+            connection.Open();
+            using (var transaction = connection.BeginTransaction())
+            {
+                try
+                {
+                    // 1. 娓呯┖ ISCHACK
+                    var sql1 = @"UPDATE MES_IQC_CONSISTENCY_ck 
+                             SET ISCHACK = 0 
+                             WHERE PID = :pid";
 
-        //淇敼缁撴灉
-        var sql2 =
-            string.Format(
-                @"update MES_IQC_CONSISTENCY_ck set ISCHACK=1 where PID='" +
-                id + "'and id in(" + rowId + ") ");
-        SQLHelper.ExecuteQuery(sql2);
+                    using (var cmd1 = new OracleCommand(sql1, connection))
+                    {
+                        cmd1.Transaction = transaction;
+                        cmd1.Parameters.Add(new OracleParameter(":pid", id));
+                        cmd1.ExecuteNonQuery();
+                    }
+
+                    // 2. 濡傛灉 DataTable 閲屾湁瑕佹洿鏂扮殑 id
+                    if (DB != null && DB.Rows.Count > 0)
+                    {
+                        // 鎷兼帴 in 鏉′欢锛堝弬鏁板寲锛�
+                        var inParams = new List<string>();
+                        var parameters = new List<OracleParameter>
+                    {
+                        new OracleParameter(":pid", id)
+                    };
+
+                        for (int i = 0; i < DB.Rows.Count; i++)
+                        {
+                            string paramName = ":id" + i;
+                            inParams.Add(paramName);
+                            parameters.Add(new OracleParameter(paramName, DB.Rows[i]["id"]));
+                        }
+
+                        var sql2 = $@"
+                        UPDATE MES_IQC_CONSISTENCY_ck 
+                           SET ISCHACK = 1 
+                         WHERE PID = :pid 
+                           AND id IN ({string.Join(",", inParams)})";
+
+                        using (var cmd2 = new OracleCommand(sql2, connection))
+                        {
+                            cmd2.Transaction = transaction;
+                            cmd2.Parameters.AddRange(parameters.ToArray());
+                            cmd2.ExecuteNonQuery();
+                        }
+                    }
+
+                    // 鍏ㄩ儴鎴愬姛锛屾彁浜�
+                    transaction.Commit();
+                }
+                catch (Exception ex)
+                {
+                    // 鍑洪敊鍥炴粴
+                    transaction.Rollback();
+                    throw new Exception("鎵ц saveYzxBDlist 鍑洪敊: " + ex.Message, ex);
+                }
+            }
+        }
     }
+
 
     public string[] YzxImgVerify(string id)
     {
@@ -1843,14 +1963,14 @@
         {
             var apiParam = new ApiCommonParam
             {
-                // 鍙戞惡瀹簯鎻愪緵鐨刟ppKey
-                appKey = DataAcquisitionConfiguration.APP_KEY,
+                //// 鍙戞惡瀹簯鎻愪緵鐨刟ppKey
+                appKey = (configuration["AppSettings:XKYamgylchedd"] == "1") ? DataAcquisitionConfiguration.APP_KEY : DataAcquisitionConfiguration.TEST_APP_KEY,
                 // 鎺ュ彛鐗堟湰
                 version = "1.0",
                 // 鎿嶄綔鑰呮墍灞炲叕鍙哥紪鐮�
-                operateCompanyCode = DataAcquisitionConfiguration.COMPANY_CODE,
+                operateCompanyCode = (configuration["AppSettings:XKYamgylchedd"] == "1") ? DataAcquisitionConfiguration.COMPANY_CODE : DataAcquisitionConfiguration.TEST_COMPANY_CODE,
                 // 鏁版嵁鎵�灞炲叕鍙哥紪鐮侊紝闈為泦鍥㈠叕鍙搁粯璁よ祴鍊间负鎿嶄綔鍏徃
-                ownerCompanyCode = DataAcquisitionConfiguration.COMPANY_CODE,
+                ownerCompanyCode = (configuration["AppSettings:XKYamgylchedd"] == "1") ? DataAcquisitionConfiguration.COMPANY_CODE : DataAcquisitionConfiguration.TEST_COMPANY_CODE,
                 // 褰撳墠鏃堕棿瀵瑰簲鐨勬椂闂存埑锛堢鏁帮級
                 timestamps = DateTimeOffset.UtcNow.ToUnixTimeSeconds()
             };
@@ -1873,14 +1993,14 @@
         {
             var apiParam = new ApiCommonParam
             {
-                // 鍙戞惡瀹簯鎻愪緵鐨刟ppKey
-                appKey = DataAcquisitionConfiguration.TEST_APP_KEY,
+                //// 鍙戞惡瀹簯鎻愪緵鐨刟ppKey
+                appKey = (configuration["AppSettings:XKYamgylchedd"] == "1") ? DataAcquisitionConfiguration.APP_KEY : DataAcquisitionConfiguration.TEST_APP_KEY,
                 // 鎺ュ彛鐗堟湰
                 version = "1.0",
                 // 鎿嶄綔鑰呮墍灞炲叕鍙哥紪鐮�
-                operateCompanyCode = DataAcquisitionConfiguration.TEST_COMPANY_CODE,
+                operateCompanyCode = (configuration["AppSettings:XKYamgylchedd"] == "1") ? DataAcquisitionConfiguration.COMPANY_CODE : DataAcquisitionConfiguration.TEST_COMPANY_CODE,
                 // 鏁版嵁鎵�灞炲叕鍙哥紪鐮侊紝闈為泦鍥㈠叕鍙搁粯璁よ祴鍊间负鎿嶄綔鍏徃
-                ownerCompanyCode = DataAcquisitionConfiguration.TEST_COMPANY_CODE,
+                ownerCompanyCode = (configuration["AppSettings:XKYamgylchedd"] == "1") ? DataAcquisitionConfiguration.COMPANY_CODE : DataAcquisitionConfiguration.TEST_COMPANY_CODE,
                 // 褰撳墠鏃堕棿瀵瑰簲鐨勬椂闂存埑锛堢鏁帮級
                 timestamps = DateTimeOffset.UtcNow.ToUnixTimeSeconds()
             };
@@ -1908,29 +2028,31 @@
 
         public static XkyinnerVendorParam GetInit()
         {
+            
             var apiParam = new ApiCommonParam
             {
-                //// 鍙戞惡瀹簯鎻愪緵鐨刟ppKey
-                //appKey = DataAcquisitionConfiguration.APP_KEY,
-                //// 鎺ュ彛鐗堟湰
-                //version = "1.0",
-                //// 鎿嶄綔鑰呮墍灞炲叕鍙哥紪鐮�
-                //operateCompanyCode = DataAcquisitionConfiguration.COMPANY_CODE,
-                //// 鏁版嵁鎵�灞炲叕鍙哥紪鐮侊紝闈為泦鍥㈠叕鍙搁粯璁よ祴鍊间负鎿嶄綔鍏徃
-                //ownerCompanyCode = DataAcquisitionConfiguration.COMPANY_CODE,
-                //// 褰撳墠鏃堕棿瀵瑰簲鐨勬椂闂存埑锛堢鏁帮級
-                //timestamps = DateTimeOffset.UtcNow.ToUnixTimeSeconds()
 
-                // 鍙戞惡瀹簯鎻愪緵鐨刟ppKey
-                appKey = DataAcquisitionConfiguration.TEST_APP_KEY,
+                //// 鍙戞惡瀹簯鎻愪緵鐨刟ppKey
+                appKey = (configuration["AppSettings:XKYamgylchedd"]=="1")?DataAcquisitionConfiguration.APP_KEY: DataAcquisitionConfiguration.TEST_APP_KEY,
                 // 鎺ュ彛鐗堟湰
                 version = "1.0",
                 // 鎿嶄綔鑰呮墍灞炲叕鍙哥紪鐮�
-                operateCompanyCode = DataAcquisitionConfiguration.TEST_COMPANY_CODE,
+                operateCompanyCode = (configuration["AppSettings:XKYamgylchedd"] == "1")?DataAcquisitionConfiguration.COMPANY_CODE:DataAcquisitionConfiguration.TEST_COMPANY_CODE,
                 // 鏁版嵁鎵�灞炲叕鍙哥紪鐮侊紝闈為泦鍥㈠叕鍙搁粯璁よ祴鍊间负鎿嶄綔鍏徃
-                ownerCompanyCode = DataAcquisitionConfiguration.TEST_COMPANY_CODE,
+                ownerCompanyCode = (configuration["AppSettings:XKYamgylchedd"] == "1")?DataAcquisitionConfiguration.COMPANY_CODE: DataAcquisitionConfiguration.TEST_COMPANY_CODE,
                 // 褰撳墠鏃堕棿瀵瑰簲鐨勬椂闂存埑锛堢鏁帮級
                 timestamps = DateTimeOffset.UtcNow.ToUnixTimeSeconds()
+
+                // 鍙戞惡瀹簯鎻愪緵鐨刟ppKey
+                //appKey = DataAcquisitionConfiguration.TEST_APP_KEY,
+                //// 鎺ュ彛鐗堟湰
+                //version = "1.0",
+                //// 鎿嶄綔鑰呮墍灞炲叕鍙哥紪鐮�
+                //operateCompanyCode = DataAcquisitionConfiguration.TEST_COMPANY_CODE,
+                //// 鏁版嵁鎵�灞炲叕鍙哥紪鐮侊紝闈為泦鍥㈠叕鍙搁粯璁よ祴鍊间负鎿嶄綔鍏徃
+                //ownerCompanyCode = DataAcquisitionConfiguration.TEST_COMPANY_CODE,
+                //// 褰撳墠鏃堕棿瀵瑰簲鐨勬椂闂存埑锛堢鏁帮級
+                //timestamps = DateTimeOffset.UtcNow.ToUnixTimeSeconds()
             };
 
 
@@ -1958,28 +2080,28 @@
         public static XkyFlushedrVendorParam GetInit()
         {
             var apiParam = new ApiCommonParam
-            {
+            { 
                 //// 鍙戞惡瀹簯鎻愪緵鐨刟ppKey
-                //appKey = DataAcquisitionConfiguration.APP_KEY,
-                //// 鎺ュ彛鐗堟湰
-                //version = "1.0",
-                //// 鎿嶄綔鑰呮墍灞炲叕鍙哥紪鐮�
-                //operateCompanyCode = DataAcquisitionConfiguration.COMPANY_CODE,
-                //// 鏁版嵁鎵�灞炲叕鍙哥紪鐮侊紝闈為泦鍥㈠叕鍙搁粯璁よ祴鍊间负鎿嶄綔鍏徃
-                //ownerCompanyCode = DataAcquisitionConfiguration.COMPANY_CODE,
-                //// 褰撳墠鏃堕棿瀵瑰簲鐨勬椂闂存埑锛堢鏁帮級
-                //timestamps = DateTimeOffset.UtcNow.ToUnixTimeSeconds()
-
-                // 鍙戞惡瀹簯鎻愪緵鐨刟ppKey
-                appKey = DataAcquisitionConfiguration.TEST_APP_KEY,
+                appKey = (configuration["AppSettings:XKYamgylchedd"] == "1") ? DataAcquisitionConfiguration.APP_KEY : DataAcquisitionConfiguration.TEST_APP_KEY,
                 // 鎺ュ彛鐗堟湰
                 version = "1.0",
                 // 鎿嶄綔鑰呮墍灞炲叕鍙哥紪鐮�
-                operateCompanyCode = DataAcquisitionConfiguration.TEST_COMPANY_CODE,
+                operateCompanyCode = (configuration["AppSettings:XKYamgylchedd"] == "1") ? DataAcquisitionConfiguration.COMPANY_CODE : DataAcquisitionConfiguration.TEST_COMPANY_CODE,
                 // 鏁版嵁鎵�灞炲叕鍙哥紪鐮侊紝闈為泦鍥㈠叕鍙搁粯璁よ祴鍊间负鎿嶄綔鍏徃
-                ownerCompanyCode = DataAcquisitionConfiguration.TEST_COMPANY_CODE,
+                ownerCompanyCode = (configuration["AppSettings:XKYamgylchedd"] == "1") ? DataAcquisitionConfiguration.COMPANY_CODE : DataAcquisitionConfiguration.TEST_COMPANY_CODE,
                 // 褰撳墠鏃堕棿瀵瑰簲鐨勬椂闂存埑锛堢鏁帮級
                 timestamps = DateTimeOffset.UtcNow.ToUnixTimeSeconds()
+
+                // 鍙戞惡瀹簯鎻愪緵鐨刟ppKey
+                //appKey = DataAcquisitionConfiguration.TEST_APP_KEY,
+                //// 鎺ュ彛鐗堟湰
+                //version = "1.0",
+                //// 鎿嶄綔鑰呮墍灞炲叕鍙哥紪鐮�
+                //operateCompanyCode = DataAcquisitionConfiguration.TEST_COMPANY_CODE,
+                //// 鏁版嵁鎵�灞炲叕鍙哥紪鐮侊紝闈為泦鍥㈠叕鍙搁粯璁よ祴鍊间负鎿嶄綔鍏徃
+                //ownerCompanyCode = DataAcquisitionConfiguration.TEST_COMPANY_CODE,
+                //// 褰撳墠鏃堕棿瀵瑰簲鐨勬椂闂存埑锛堢鏁帮級
+                //timestamps = DateTimeOffset.UtcNow.ToUnixTimeSeconds()
             };
 
 
@@ -2009,26 +2131,26 @@
             var apiParam = new ApiCommonParam
             {
                 //// 鍙戞惡瀹簯鎻愪緵鐨刟ppKey
-                //appKey = DataAcquisitionConfiguration.APP_KEY,
-                //// 鎺ュ彛鐗堟湰
-                //version = "1.0",
-                //// 鎿嶄綔鑰呮墍灞炲叕鍙哥紪鐮�
-                //operateCompanyCode = DataAcquisitionConfiguration.COMPANY_CODE,
-                //// 鏁版嵁鎵�灞炲叕鍙哥紪鐮侊紝闈為泦鍥㈠叕鍙搁粯璁よ祴鍊间负鎿嶄綔鍏徃
-                //ownerCompanyCode = DataAcquisitionConfiguration.COMPANY_CODE,
-                //// 褰撳墠鏃堕棿瀵瑰簲鐨勬椂闂存埑锛堢鏁帮級
-                //timestamps = DateTimeOffset.UtcNow.ToUnixTimeSeconds()
-
-                // 鍙戞惡瀹簯鎻愪緵鐨刟ppKey
-                appKey = DataAcquisitionConfiguration.TEST_APP_KEY,
+                appKey = (configuration["AppSettings:XKYamgylchedd"] == "1") ? DataAcquisitionConfiguration.APP_KEY : DataAcquisitionConfiguration.TEST_APP_KEY,
                 // 鎺ュ彛鐗堟湰
                 version = "1.0",
                 // 鎿嶄綔鑰呮墍灞炲叕鍙哥紪鐮�
-                operateCompanyCode = DataAcquisitionConfiguration.TEST_COMPANY_CODE,
+                operateCompanyCode = (configuration["AppSettings:XKYamgylchedd"] == "1") ? DataAcquisitionConfiguration.COMPANY_CODE : DataAcquisitionConfiguration.TEST_COMPANY_CODE,
                 // 鏁版嵁鎵�灞炲叕鍙哥紪鐮侊紝闈為泦鍥㈠叕鍙搁粯璁よ祴鍊间负鎿嶄綔鍏徃
-                ownerCompanyCode = DataAcquisitionConfiguration.TEST_COMPANY_CODE,
+                ownerCompanyCode = (configuration["AppSettings:XKYamgylchedd"] == "1") ? DataAcquisitionConfiguration.COMPANY_CODE : DataAcquisitionConfiguration.TEST_COMPANY_CODE,
                 // 褰撳墠鏃堕棿瀵瑰簲鐨勬椂闂存埑锛堢鏁帮級
                 timestamps = DateTimeOffset.UtcNow.ToUnixTimeSeconds()
+
+                // 鍙戞惡瀹簯鎻愪緵鐨刟ppKey
+                //appKey = DataAcquisitionConfiguration.TEST_APP_KEY,
+                //// 鎺ュ彛鐗堟湰
+                //version = "1.0",
+                //// 鎿嶄綔鑰呮墍灞炲叕鍙哥紪鐮�
+                //operateCompanyCode = DataAcquisitionConfiguration.TEST_COMPANY_CODE,
+                //// 鏁版嵁鎵�灞炲叕鍙哥紪鐮侊紝闈為泦鍥㈠叕鍙搁粯璁よ祴鍊间负鎿嶄綔鍏徃
+                //ownerCompanyCode = DataAcquisitionConfiguration.TEST_COMPANY_CODE,
+                //// 褰撳墠鏃堕棿瀵瑰簲鐨勬椂闂存埑锛堢鏁帮級
+                //timestamps = DateTimeOffset.UtcNow.ToUnixTimeSeconds()
             };
 
 

--
Gitblit v1.9.3