From caf4dd3c752f5982adcd3708d2e8f976f81ff49f Mon Sep 17 00:00:00 2001
From: kingno <30263@KINGNO>
Date: 星期一, 23 六月 2025 09:59:57 +0800
Subject: [PATCH] Merge branch 'master' of http://gitblit.broconcentric.com:8088/r/M200

---
 src/Bro.M141.Process/M141Process_Mysql.cs |  240 +++++++++++++++++++++++++++++++++++++++++++++++++-----------
 1 files changed, 196 insertions(+), 44 deletions(-)

diff --git a/src/Bro.M141.Process/M141Process_Mysql.cs b/src/Bro.M141.Process/M141Process_Mysql.cs
index 632a3be..865db24 100644
--- a/src/Bro.M141.Process/M141Process_Mysql.cs
+++ b/src/Bro.M141.Process/M141Process_Mysql.cs
@@ -2,6 +2,7 @@
 using Bro.Common.Interface;
 using Bro.Common.Model;
 using Bro.M135.Common;
+using HalconDotNet;
 using MySql.Data.MySqlClient;
 using Newtonsoft.Json;
 using Sunny.UI;
@@ -12,6 +13,9 @@
 using System.Text;
 using System.Threading.Tasks;
 using Windows.Globalization.PhoneNumberFormatting;
+using Windows.Media.Ocr;
+using static Bro.Common.Helper.EnumHelper;
+using static NPOI.HSSF.Util.HSSFColor;
 using static Org.BouncyCastle.Math.EC.ECCurve;
 using static System.Windows.Forms.VisualStyles.VisualStyleElement.ListView;
 
@@ -22,7 +26,6 @@
 
         string connStrAll = "server=localhost;port=3306;user id=root;password=123456;database=BroDB;charset=utf8";
         string connStrLocal = "server=localhost;port=3306;user id=root;password=123456;database=BroDB;charset=utf8";
-
 
 
         #region 鍩虹鎿嶄綔
@@ -145,33 +148,19 @@
         {
             try
             {
-                if (pro.Details!=null)
+                if (pro.Details != null)
                 {
                     foreach (var item in pro.Details)
                     {
-                        if (item.ResultList!=null)
+                        if (item != 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;
-                                        }
-                                    });
-                                }
-                            });
+                            var defects = item.ResultList.GetDefectDescList();
+                            var ngSpecCodes = item.SpecList.Where(u => u.MeasureResult != true).Select(u => u.Code);
+                            defects.AddRange(ngSpecCodes);
+                            item.DefectList.AddRange(defects.Distinct());
                         }
                     }
                 }
-
-
 
                 JsonSerializerSettings settings = new JsonSerializerSettings
                 {
@@ -183,7 +172,7 @@
 
                 //CommonLogger.LogAsync(DateTime.Now, EnumHelper.LogLevel.Exception, $"{jsondata}");
 
-                string mysqlstr = $"update forlocal set data='{jsondata}' where plcnum='{pro.SEQUENCE}'";
+                string mysqlstr = $"update forlocal set data='{jsondata}',pid='{pro.PID}' where plcnum='{pro.SEQUENCE}'";
 
                 if (Operatoremysql(mysqlstr, connStrLocal))
                 {
@@ -200,35 +189,118 @@
             }
         }
 
-        public void NewForAll(ProductModel pro, string devicestr)
+        public void NewForAll(ProductModel pro, string devicestr, string netname)
         {
             Task.Run(() =>
             {
                 try
                 {
-
                     //淇濈暀鏁版嵁搴撴渶鏂扮殑1000鏉℃暟鎹�
                     //string destr = "delete from forall where id not in (select id from (select id from forall order BY id desc limit 1000) as subquery)";
                     //Operatoremysql(destr, connStrAll);
 
-                    string str1 = "select id from forall  order by id desc limit 1";
-                    string index = selectmysql(str1, connStrAll);
-                    if (!string.IsNullOrEmpty(index))
+                    if (string.IsNullOrEmpty(netname) /*|| devicestr != "S3" */)
                     {
-                        string str2 = $"delete from forall where id < ({index}-1000)";
-                        Operatoremysql(str2, connStrAll);
-                    }
+                        if (pro.Details != null)
+                        {
+                            foreach (var item in pro.Details)
+                            {
+                                if (item != null)
+                                {
+                                    var defects = item.ResultList.GetDefectDescList();
+                                    var ngSpecCodes = item.SpecList.Where(u => u.MeasureResult != true).Select(u => u.Code);
+                                    defects.AddRange(ngSpecCodes);
+                                    item.DefectList.AddRange(defects.Distinct());
+                                    item.DefectList = item.DefectList.Distinct().ToList();
+                                }
 
-
-                    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")}')";
-
-                    if (Operatoremysql(mysqlstr, connStrAll))
-                    {
-                        CommonLogger.LogAsync(DateTime.Now, EnumHelper.LogLevel.Action, $"鏁版嵁搴揻orall鎻掑叆鏁版嵁鎴愬姛");
+                            }
+                        }
                     }
                     else
                     {
-                        CommonLogger.LogAsync(DateTime.Now, EnumHelper.LogLevel.Error, $"鏁版嵁搴揻orall鎻掑叆鏁版嵁寮傚け璐�  {mysqlstr}");
+                        List<Netdefectdetail> allnetdetail = new List<Netdefectdetail>();
+                        if (pro.Details != null)
+                        {
+                            foreach (var item in pro.Details)
+                            {
+                                if (item != null)
+                                {
+                                    var defects = item.ResultList.GetDefectDescList();
+                                    var ngSpecCodes = item.SpecList.Where(u => u.MeasureResult != true).Select(u => u.Code);
+                                    defects.AddRange(ngSpecCodes);
+                                    item.DefectList.AddRange(defects.Distinct());
+                                    item.DefectList = item.DefectList.Distinct().ToList();
+
+                                    var defecttem = item.ResultList.SelectMany(u => u.AllNetResults.SelectMany(m => m.DetectDetails)).Where(u => u.ClassName == netname).ToList();
+
+                                    //CommonLogger.LogAsync(DateTime.Now, EnumHelper.LogLevel.Exception, $"{netname}涓暟{defecttem.Count}");
+
+                                    int num = 0;
+                                    foreach (var item1 in defecttem)
+                                    {
+                                        double x1 = item1.Rect.Point_LU.X + item1.Rect.Width / 2.0;
+                                        double y1 = item1.Rect.Point_LU.Y + item1.Rect.Height / 2.0;
+                                        num++;
+                                        //HOperatorSet.AffineTransPoint2d(new HTuple(pro.Centermatrix.ToArray()), x1, y1, out HTuple qx, out HTuple qy);
+
+                                        CommonLogger.LogAsync(DateTime.Now, EnumHelper.LogLevel.Detail, $"sql {pro.SN}鍘熷潗鏍噞num}   {x1},{y1}");
+                                        HOperatorSet.ProjectiveTransPixel(new HTuple(pro.Centermatrix.ToArray()), x1, y1, out HTuple qx, out HTuple qy);
+                                        CommonLogger.LogAsync(DateTime.Now, EnumHelper.LogLevel.Detail, $"sql {pro.SN}鏂板潗鏍噞num}   {qx},{qy}");
+
+                                        Netdefectdetail temc = new Netdefectdetail()
+                                        {
+                                            centerX = qx,
+                                            centerY = qy,
+                                            name = netname,
+                                        };
+                                        allnetdetail.Add(temc);
+                                    }
+                                }
+                            }
+
+                            pro.Netdefectdetails = allnetdetail;
+                        }
+                    }
+
+
+                    string strtem = "select * from forall  where plcnum='" + pro.SEQUENCE + "' and device='" + devicestr + "' ";
+
+                    var temdb = selectdt(strtem, connStrAll);
+                    if (temdb != null && temdb.Rows.Count > 0)
+                    {
+                        string mysqlstr = $"update forall set data='" + JsonConvert.SerializeObject(pro, new JsonSerializerSettings() { TypeNameHandling = TypeNameHandling.All }) + "' where plcnum='" + pro.SEQUENCE + "' and device='" + devicestr + "' ";
+
+                        if (Operatoremysql(mysqlstr, connStrAll))
+                        {
+                            CommonLogger.LogAsync(DateTime.Now, EnumHelper.LogLevel.Action, $"鏁版嵁搴揻orall鏇存柊鏁版嵁鎴愬姛");
+                        }
+                        else
+                        {
+                            CommonLogger.LogAsync(DateTime.Now, EnumHelper.LogLevel.Error, $"鏁版嵁搴揻orall鏇存柊鏁版嵁寮傚父  {mysqlstr}");
+                        }
+                    }
+                    else
+                    {
+                        string str1 = "select id from forall  order by id desc limit 1";
+                        string index = selectmysql(str1, 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, new JsonSerializerSettings() { TypeNameHandling = TypeNameHandling.All })}','{DateTime.Now.ToString("yyyyMMddHHmmss")}')";
+
+                        if (Operatoremysql(mysqlstr, connStrAll))
+                        {
+                            CommonLogger.LogAsync(DateTime.Now, EnumHelper.LogLevel.Action, $"鏁版嵁搴揻orall鎻掑叆鏁版嵁鎴愬姛");
+                        }
+                        else
+                        {
+                            CommonLogger.LogAsync(DateTime.Now, EnumHelper.LogLevel.Error, $"鏁版嵁搴揻orall鎻掑叆鏁版嵁寮傚け璐�  {mysqlstr}");
+                        }
                     }
 
                 }
@@ -263,20 +335,51 @@
             return null;
         }
 
-        public string Getbasketcode(string plcnum)
+
+        public List<Netdefectdetail> GetNetdefectdetails(string plcnum)
         {
             try
             {
-                string mysqlstr = $"select basketcode from forall where plcnum='{plcnum}' && device='S2' order by id desc limit 1";
+                string mysqlstr = $"select data from forall where plcnum='{plcnum}' && device='S3' order by id desc limit 1";
                 string str = selectmysql(mysqlstr, connStrAll);
-                if (!string.IsNullOrEmpty(str))
+                if (string.IsNullOrEmpty(str))
                 {
-                    return str;
+                    return null;
+                }
+                else
+                {
+                    ProductModel p = null;
+                    p = JsonConvert.DeserializeObject<ProductModel>(str, new JsonSerializerSettings() { TypeNameHandling = TypeNameHandling.All });
+                    return p.Netdefectdetails;
                 }
             }
             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;
+        }
+
+        public string Getbasketcode(string plcnum, out string sn)
+        {
+            sn = "Noread";
+            try
+            {
+                string mysqlstr = $"select basketcode,sn from forall where plcnum='{plcnum}' && device='S2' order by id desc limit 1";
+                var dt = selectdt(mysqlstr, connStrAll);
+                if (dt == null || dt.Rows.Count == 0)
+                {
+                    return "Noread";
+                }
+                else
+                {
+                    sn = dt.Rows[0][1].ToString();
+                    return dt.Rows[0][0].ToString();
+                }
+            }
+            catch (Exception e)
+            {
+
             }
             return "NoRead";
         }
@@ -286,7 +389,7 @@
         {
             try
             {
-                string mysqlstr = $"select data from forall where plcnum='{plcnum}'";
+                string mysqlstr = $"select data from forall where plcnum='{plcnum}' order by device";
                 var dt = selectdt(mysqlstr, connStrAll);
                 if (dt == null)
                 {
@@ -297,7 +400,9 @@
                     List<ProductModel> plist = new List<ProductModel>();
                     for (int i = 0; i < dt.Rows.Count; i++)
                     {
-                        ProductModel p = JsonConvert.DeserializeObject<ProductModel>(dt.Rows[i][0].ToString(), new JsonSerializerSettings() { TypeNameHandling = TypeNameHandling.All });
+                        string strjson = dt.Rows[i][0].ToString();
+                        strjson = strjson.Replace(@"\", @"\\");
+                        ProductModel p = JsonConvert.DeserializeObject<ProductModel>(strjson, new JsonSerializerSettings() { TypeNameHandling = TypeNameHandling.All });
 
                         //JsonConvert.DeserializeObject<IProcessConfig>(_configBackupStr, new JsonSerializerSettings() { TypeNameHandling = TypeNameHandling.All });
                         plist.Add(p);
@@ -313,5 +418,52 @@
         }
 
 
+
+        public DataTable getBasketCode()
+        {
+            try
+            {
+                string mysqlstr = $"select id,code,time from basketcode order by id desc limit 200";
+                var dt = selectdt(mysqlstr, connStrAll);
+                if (dt == null)
+                {
+                    return null;
+                }
+                else
+                {
+                    return dt;
+                }
+            }
+            catch (Exception e)
+            {
+                CommonLogger.LogAsync(DateTime.Now, EnumHelper.LogLevel.Exception, $"鏁版嵁搴揻orall鏁版嵁寮傚父 {e.ToString()}");
+            }
+            return null;
+
+
+
+        }
+
+
+        public void NewBasketcode(string code)
+        {
+            try
+            {
+                string mysqlstr = $"insert into basketcode(code,time) values('{code}','{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}')";
+                if (Operatoremysql(mysqlstr, connStrAll))
+                {
+                    CommonLogger.LogAsync(DateTime.Now, EnumHelper.LogLevel.Action, $"鏁版嵁搴揵asketcode鎻掑叆鏁版嵁鎴愬姛");
+                }
+                else
+                {
+                    CommonLogger.LogAsync(DateTime.Now, EnumHelper.LogLevel.Error, $"鏁版嵁搴揵asketcode鎻掑叆鏁版嵁寮傚け璐�  {mysqlstr}");
+                }
+            }
+            catch (Exception e)
+            {
+                CommonLogger.LogAsync(DateTime.Now, EnumHelper.LogLevel.Exception, $"鏁版嵁搴揵asketcode鎻掑叆鏁版嵁寮傚父 {e.ToString()}");
+            }
+        }
+
     }
 }

--
Gitblit v1.8.0