From 86f899fa91e811415614dff1a699141144bfc802 Mon Sep 17 00:00:00 2001
From: quanzhou <quan.zhou@broconcentric.com>
Date: 星期五, 12 十二月 2025 13:25:37 +0800
Subject: [PATCH] S5上传mes逻辑修改及打印机逻辑修改和数据库存储数据增加
---
src/Bro.M141.Process/M141Process_Mysql.cs | 411 ++++++++++++++++++++++++++++++++++++++++++++++++++++++----
1 files changed, 380 insertions(+), 31 deletions(-)
diff --git a/src/Bro.M141.Process/M141Process_Mysql.cs b/src/Bro.M141.Process/M141Process_Mysql.cs
index d6b7296..592ceda 100644
--- a/src/Bro.M141.Process/M141Process_Mysql.cs
+++ b/src/Bro.M141.Process/M141Process_Mysql.cs
@@ -1,5 +1,8 @@
锘縰sing Bro.Common.Helper;
+using Bro.Common.Interface;
+using Bro.Common.Model;
using Bro.M135.Common;
+using HalconDotNet;
using MySql.Data.MySqlClient;
using Newtonsoft.Json;
using Sunny.UI;
@@ -10,17 +13,18 @@
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;
namespace Bro.M141.Process
{
public class M141Process_Mysql
{
-
- string connStrAll = "server=127.0.0.1;port=3306;user id=root;password=123456;database=BroDB;charset=utf8";
- string connStrLocal = "server=127.0.0.1;port=3306;user id=root;password=123456;database=BroDB;charset=utf8";
-
-
+ 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 鍩虹鎿嶄綔
public void IniDBIP(string IP)
@@ -28,7 +32,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
@@ -40,12 +44,16 @@
con.Open();
MySqlCommand coon = new MySqlCommand(sql, con);
coon.ExecuteNonQuery();
+ con.Close();
}
catch (Exception e)
{
- CommonLogger.LogAsync(DateTime.Now, EnumHelper.LogLevel.Exception, $"鏁版嵁搴撴搷浣滃紓甯� {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)//鏌ヨ琛ㄦ牸
@@ -61,12 +69,14 @@
con.Open();
MySqlDataAdapter da = new MySqlDataAdapter(str, con);
da.Fill(dt);
+ con.Close();
}
catch (Exception e)
{
- CommonLogger.LogAsync(DateTime.Now, EnumHelper.LogLevel.Exception, $"鏁版嵁搴撴煡璇㈠紓甯� {e.ToString()}");
+ //CommonLogger.LogAsync(DateTime.Now, EnumHelper.LogLevel.Exception, $"鏁版嵁搴撴煡璇㈠紓甯� {str} {e.ToString()}");
+ con.Close();
+ return null;
}
- con.Close();
return dt;
}
@@ -88,9 +98,8 @@
}
catch (Exception e)
{
- CommonLogger.LogAsync(DateTime.Now, EnumHelper.LogLevel.Exception, $"鏁版嵁搴撴煡璇㈡暟鎹紓甯� {e.ToString()}");
+ //CommonLogger.LogAsync(DateTime.Now, EnumHelper.LogLevel.Exception, $"鏁版嵁搴撴煡璇㈡暟鎹紓甯� {str} {e.ToString()}");
}
-
con.Close();
return strr;
}
@@ -98,14 +107,33 @@
#endregion
-
public void NewProduct(ProductModel pro)
{
try
{
- string mysqlstr = $"insert into forlocal (pid,plcnum,sn,data,time) values('{pro.PID}','{pro.SEQUENCE}','{pro.SN}','{JsonConvert.SerializeObject(pro)}','{DateTime.Now.ToString("yyyyMMddHHmmss")}')";
+ //淇濈暀鏁版嵁搴撴渶鏂扮殑1000鏉℃暟鎹�
+ //string destr = "delete from forlocal where id not in (select id from (select id from forlocal order BY id desc limit 1000) as subquery)";
+ //Operatoremysql(destr, connStrAll);
- Operatoremysql(mysqlstr, connStrLocal);
+ string str1 = "select id from forlocal order by id desc limit 1";
+ string index = selectmysql(str1, connStrLocal);
+
+ if (!string.IsNullOrEmpty(index))
+ {
+ string str2 = $"delete from forlocal where id < ({index}-2000)";
+ 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")}')";
+
+ 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)
{
@@ -117,8 +145,40 @@
{
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 != 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());
+ }
+ }
+ }
+
+ 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}',pid='{pro.PID}' 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)
{
@@ -126,45 +186,334 @@
}
}
- public void NewForAll(ProductModel pro, string devicestr)
+ public void NewForAll(ProductModel pro, string devicestr, string netname)
{
- try
+ Task.Run(() =>
{
- string mysqlstr = $"insert into forall (device,plcnum,sn,data,time) values('{devicestr}','{pro.SEQUENCE}','{pro.SN}','{JsonConvert.SerializeObject(pro)}','{DateTime.Now.ToString("yyyyMMddHHmmss")}')";
+ 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);
- Operatoremysql(mysqlstr, connStrAll);
- }
- catch (Exception e)
- {
- CommonLogger.LogAsync(DateTime.Now, EnumHelper.LogLevel.Exception, $"鏁版嵁搴揻orall鎻掑叆鏁版嵁寮傚父 {e.ToString()}");
- }
+ if (string.IsNullOrEmpty(netname) || devicestr != "S3")
+ {
+ 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();
+ }
+ }
+ }
+ }
+ else
+ {
+ 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()), y1, x1, 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}-2000)";
+ Operatoremysql(str2, connStrAll);
+ }
+
+ string mysqlstr = $"insert into forall (basketcode,zword,device,plcnum,sn,data,time) values('{pro.BasketCode}','{pro.Zword}','{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}");
+ }
+ }
+
+ }
+ catch (Exception e)
+ {
+ CommonLogger.LogAsync(DateTime.Now, EnumHelper.LogLevel.Exception, $"鏁版嵁搴揻orall鎻掑叆鏁版嵁寮傚父 {e.ToString()}");
+ }
+ });
}
-
public ProductModel GetProduct(string plcnum)
{
try
{
- string mysqlstr = $"select data from forlocal where plcnum='{plcnum}'";
- string str= selectmysql(mysqlstr, connStrLocal);
+ string mysqlstr = $"select data from forlocal where plcnum='{plcnum}' order by id desc limit 1";
+ string str = selectmysql(mysqlstr, connStrLocal);
if (string.IsNullOrEmpty(str))
{
return null;
}
else
{
- ProductModel p = JsonConvert.DeserializeObject<ProductModel>(str);
+ 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;
}
+ public List<Netdefectdetail> GetNetdefectdetails(string plcnum)
+ {
+ try
+ {
+ 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))
+ {
+ 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()}");
+ }
+ return null;
+ }
+ public bool GetS2Result(string plcnum)
+ {
+ try
+ {
+ string mysqlstr = $"select data from forall where plcnum='{plcnum}' && device='S2' order by id desc limit 1";
+ string str = selectmysql(mysqlstr, connStrAll);
+ if (string.IsNullOrEmpty(str))
+ {
+ return false;
+ }
+ else
+ {
+ ProductModel p = null;
+ p = JsonConvert.DeserializeObject<ProductModel>(str, new JsonSerializerSettings() { TypeNameHandling = TypeNameHandling.All });
+
+ return p.Result == "OK";
+ }
+ }
+ catch (Exception e)
+ {
+ CommonLogger.LogAsync(DateTime.Now, EnumHelper.LogLevel.Exception, $"鏁版嵁搴揻orlocal鑾峰彇瀵硅薄寮傚父 {e.ToString()}");
+ }
+ return false;
+ }
+
+ public string Getbasketcode(string plcnum, out string sn, out string zword)
+ {
+ sn = "Noread";
+ zword = "Noread";
+ try
+ {
+ string mysqlstr = $"select basketcode,sn,zword 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();
+ zword = dt.Rows[0][2].ToString();
+ return dt.Rows[0][0].ToString();
+ }
+ }
+ catch (Exception e)
+ {
+
+ }
+ return "NoRead";
+ }
+
+ public List<ProductModel> SNGetProductList(string sn,string device)
+ {
+ try
+ {
+ string mysqlstr = $"select data from forall where sn='{sn}' and device='{device}'";
+ var dt = selectdt(mysqlstr, connStrAll);
+ if (dt == null)
+ {
+ return null;
+ }
+ else
+ {
+ List<ProductModel> plist = new List<ProductModel>();
+ for (int i = 0; i < dt.Rows.Count; i++)
+ {
+ 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);
+ }
+ return plist;
+ }
+ }
+ catch (Exception e)
+ {
+ CommonLogger.LogAsync(DateTime.Now, EnumHelper.LogLevel.Exception, $"鏁版嵁搴揻orall鏁版嵁寮傚父 {e.ToString()}");
+ }
+ return null;
+ }
+
+ public List<ProductModel> GetProductList(string plcnum)
+ {
+ try
+ {
+ string mysqlstr = $"select data from forall where plcnum='{plcnum}' order by device";
+ var dt = selectdt(mysqlstr, connStrAll);
+ if (dt == null)
+ {
+ return null;
+ }
+ else
+ {
+ List<ProductModel> plist = new List<ProductModel>();
+ for (int i = 0; i < dt.Rows.Count; i++)
+ {
+ 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);
+ }
+ return plist;
+ }
+ }
+ catch (Exception e)
+ {
+ CommonLogger.LogAsync(DateTime.Now, EnumHelper.LogLevel.Exception, $"鏁版嵁搴揻orall鏁版嵁寮傚父 {e.ToString()}");
+ }
+ return null;
+ }
+
+ 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