From a97ac998301461e6284595b1cf2c7b40ce5b2459 Mon Sep 17 00:00:00 2001
From: kingno <30263@KINGNO>
Date: 星期四, 03 四月 2025 14:09:36 +0800
Subject: [PATCH] 优化数据库字段的json传输 新增打印机

---
 src/Bro.M141.Process/M141Process_Mysql.cs |  117 +++++++++++++++++++++++++++++++++++++++++++++++-----------
 1 files changed, 95 insertions(+), 22 deletions(-)

diff --git a/src/Bro.M141.Process/M141Process_Mysql.cs b/src/Bro.M141.Process/M141Process_Mysql.cs
index b9f00c8..632a3be 100644
--- a/src/Bro.M141.Process/M141Process_Mysql.cs
+++ b/src/Bro.M141.Process/M141Process_Mysql.cs
@@ -1,5 +1,6 @@
 锘縰sing Bro.Common.Helper;
 using Bro.Common.Interface;
+using Bro.Common.Model;
 using Bro.M135.Common;
 using MySql.Data.MySqlClient;
 using Newtonsoft.Json;
@@ -11,6 +12,7 @@
 using System.Text;
 using System.Threading.Tasks;
 using Windows.Globalization.PhoneNumberFormatting;
+using static Org.BouncyCastle.Math.EC.ECCurve;
 using static System.Windows.Forms.VisualStyles.VisualStyleElement.ListView;
 
 namespace Bro.M141.Process
@@ -29,7 +31,7 @@
             connStrAll = $"server={IP};port=3306;user id=root;password=123456;database=BroDB;charset=utf8";
         }
 
-        public void Operatoremysql(string sql, string connStr)//鎿嶄綔
+        public bool Operatoremysql(string sql, string connStr)//鎿嶄綔
         {
             MySqlConnection con = new MySqlConnection(connStr);
             try
@@ -41,12 +43,16 @@
                 con.Open();
                 MySqlCommand coon = new MySqlCommand(sql, con);
                 coon.ExecuteNonQuery();
+                con.Close();
             }
             catch (Exception e)
             {
-                CommonLogger.LogAsync(DateTime.Now, EnumHelper.LogLevel.Exception, $"鏁版嵁搴撴搷浣滃紓甯� {sql} {e.ToString()}");
+                con.Close();
+                return false;
+                //CommonLogger.LogAsync(DateTime.Now, EnumHelper.LogLevel.Exception, $"鏁版嵁搴撴搷浣滃紓甯� {sql} {e.ToString()}");
             }
-            con.Close();
+            return true;
+
         }
 
         public DataTable selectdt(string str, string connStr)//鏌ヨ琛ㄦ牸
@@ -62,12 +68,14 @@
                 con.Open();
                 MySqlDataAdapter da = new MySqlDataAdapter(str, con);
                 da.Fill(dt);
+                con.Close();
             }
             catch (Exception e)
             {
-                CommonLogger.LogAsync(DateTime.Now, EnumHelper.LogLevel.Exception, $"鏁版嵁搴撴煡璇㈠紓甯� {str} {e.ToString()}");
+                //CommonLogger.LogAsync(DateTime.Now, EnumHelper.LogLevel.Exception, $"鏁版嵁搴撴煡璇㈠紓甯� {str} {e.ToString()}");
+                con.Close();
+                return null;
             }
-            con.Close();
             return dt;
         }
 
@@ -89,9 +97,8 @@
             }
             catch (Exception e)
             {
-                CommonLogger.LogAsync(DateTime.Now, EnumHelper.LogLevel.Exception, $"鏁版嵁搴撴煡璇㈡暟鎹紓甯� {str}  {e.ToString()}");
+                //CommonLogger.LogAsync(DateTime.Now, EnumHelper.LogLevel.Exception, $"鏁版嵁搴撴煡璇㈡暟鎹紓甯� {str}  {e.ToString()}");
             }
-
             con.Close();
             return strr;
         }
@@ -111,13 +118,22 @@
                 string str1 = "select id from forlocal  order by id desc limit 1";
                 string index = selectmysql(str1, connStrLocal);
 
-                string str2 = $"delete from forlocal where id < ({index}-1000)";
-                Operatoremysql(str2, connStrLocal);
+                if (!string.IsNullOrEmpty(index))
+                {
+                    string str2 = $"delete from forlocal where id < ({index}-1000)";
+                    Operatoremysql(str2, connStrLocal);
+                }
 
+                string mysqlstr = $"insert into forlocal (basketcode,pid,plcnum,sn,data,time) values('{pro.BasketCode}','{pro.PID}','{pro.SEQUENCE}','{pro.SN}','{JsonConvert.SerializeObject(pro, new JsonSerializerSettings() { TypeNameHandling = TypeNameHandling.All })}','{DateTime.Now.ToString("yyyyMMddHHmmss")}')";
 
-                string mysqlstr = $"insert into forlocal (basketcode,pid,plcnum,sn,data,time) values('{pro.BasketCode}','{pro.PID}','{pro.SEQUENCE}','{pro.SN}','{JsonConvert.SerializeObject(pro)}','{DateTime.Now.ToString("yyyyMMddHHmmss")}')";
-
-                Operatoremysql(mysqlstr, connStrLocal);
+                if (Operatoremysql(mysqlstr, connStrLocal))
+                {
+                    CommonLogger.LogAsync(DateTime.Now, EnumHelper.LogLevel.Action, $"鏁版嵁搴揻orlocal鎻掑叆鏁版嵁鎴愬姛");
+                }
+                else
+                {
+                    CommonLogger.LogAsync(DateTime.Now, EnumHelper.LogLevel.Error, $"鏁版嵁搴揻orlocal鎻掑叆鏁版嵁寮傚け璐�  {mysqlstr}");
+                }
             }
             catch (Exception e)
             {
@@ -129,8 +145,54 @@
         {
             try
             {
-                string mysqlstr = $"update forlocal set data='{JsonConvert.SerializeObject(pro)}' where plcnum='{pro.SEQUENCE}'";
-                Operatoremysql(mysqlstr, connStrLocal);
+                if (pro.Details!=null)
+                {
+                    foreach (var item in pro.Details)
+                    {
+                        if (item.ResultList!=null)
+                        {
+                            item.ResultList.ForEach(u =>
+                            {
+                                if (u.NetResults != null)
+                                {
+                                    u.NetResults.ForEach(x =>
+                                    {
+                                        if (x.DetectDetails != null)
+                                        {
+                                            var distinctItems = x.DetectDetails.GroupBy(i => new { i.ClassName, i.FinalResult }) // 鏍规嵁Id鍜孨ame鍘婚噸
+                             .Select(g => g.First()) // 閫夋嫨姣忎釜缁勭殑绗竴涓厓绱�
+                             .ToList();
+                                            x.DetectDetails = distinctItems;
+                                        }
+                                    });
+                                }
+                            });
+                        }
+                    }
+                }
+
+
+
+                JsonSerializerSettings settings = new JsonSerializerSettings
+                {
+                    TypeNameHandling = TypeNameHandling.All
+                };
+
+                string jsondata = JsonConvert.SerializeObject(pro, settings);
+
+
+                //CommonLogger.LogAsync(DateTime.Now, EnumHelper.LogLevel.Exception, $"{jsondata}");
+
+                string mysqlstr = $"update forlocal set data='{jsondata}' where plcnum='{pro.SEQUENCE}'";
+
+                if (Operatoremysql(mysqlstr, connStrLocal))
+                {
+                    CommonLogger.LogAsync(DateTime.Now, EnumHelper.LogLevel.Action, $"鏁版嵁搴揻orlocal鏇存柊鏁版嵁鎴愬姛");
+                }
+                else
+                {
+                    CommonLogger.LogAsync(DateTime.Now, EnumHelper.LogLevel.Error, $"鏁版嵁搴揻orlocal鏇存柊鏁版嵁澶辫触 {mysqlstr}");
+                }
             }
             catch (Exception e)
             {
@@ -151,14 +213,24 @@
 
                     string str1 = "select id from forall  order by id desc limit 1";
                     string index = selectmysql(str1, connStrAll);
-
-                    string str2 = $"delete from forall where id < ({index}-1000)";
-                    Operatoremysql(str2, connStrAll);
+                    if (!string.IsNullOrEmpty(index))
+                    {
+                        string str2 = $"delete from forall where id < ({index}-1000)";
+                        Operatoremysql(str2, connStrAll);
+                    }
 
 
-                    string mysqlstr = $"insert into forall (basketcode,device,plcnum,sn,data,time) values('{pro.BasketCode}','{devicestr}','{pro.SEQUENCE}','{pro.SN}','{JsonConvert.SerializeObject(pro)}','{DateTime.Now.ToString("yyyyMMddHHmmss")}')";
+                    string mysqlstr = $"insert into forall (basketcode,device,plcnum,sn,data,time) values('{pro.BasketCode}','{devicestr}','{pro.SEQUENCE}','{pro.SN}','{JsonConvert.SerializeObject(pro, new JsonSerializerSettings() { TypeNameHandling = TypeNameHandling.All })}','{DateTime.Now.ToString("yyyyMMddHHmmss")}')";
 
-                    Operatoremysql(mysqlstr, connStrAll);
+                    if (Operatoremysql(mysqlstr, connStrAll))
+                    {
+                        CommonLogger.LogAsync(DateTime.Now, EnumHelper.LogLevel.Action, $"鏁版嵁搴揻orall鎻掑叆鏁版嵁鎴愬姛");
+                    }
+                    else
+                    {
+                        CommonLogger.LogAsync(DateTime.Now, EnumHelper.LogLevel.Error, $"鏁版嵁搴揻orall鎻掑叆鏁版嵁寮傚け璐�  {mysqlstr}");
+                    }
+
                 }
                 catch (Exception e)
                 {
@@ -179,13 +251,14 @@
                 }
                 else
                 {
-                    ProductModel p = JsonConvert.DeserializeObject<ProductModel>(str, new JsonSerializerSettings() { TypeNameHandling = TypeNameHandling.All });
+                    ProductModel p = null;
+                    p = JsonConvert.DeserializeObject<ProductModel>(str, new JsonSerializerSettings() { TypeNameHandling = TypeNameHandling.All });
                     return p;
                 }
             }
             catch (Exception e)
             {
-                CommonLogger.LogAsync(DateTime.Now, EnumHelper.LogLevel.Exception, $"鏁版嵁搴揻orlocal鏇存柊鏁版嵁寮傚父 {e.ToString()}");
+                CommonLogger.LogAsync(DateTime.Now, EnumHelper.LogLevel.Exception, $"鏁版嵁搴揻orlocal鑾峰彇瀵硅薄寮傚父 {e.ToString()}");
             }
             return null;
         }
@@ -203,7 +276,7 @@
             }
             catch (Exception e)
             {
-                CommonLogger.LogAsync(DateTime.Now, EnumHelper.LogLevel.Exception, $"鏁版嵁搴揻orlocal鏇存柊鏁版嵁寮傚父 {e.ToString()}");
+                //CommonLogger.LogAsync(DateTime.Now, EnumHelper.LogLevel.Exception, $"鏁版嵁搴揻orlocal鑾峰彇寮傚父 {e.ToString()}");
             }
             return "NoRead";
         }

--
Gitblit v1.8.0