| | |
| | | using Bro.Common.Interface; |
| | | using Bro.Common.Model; |
| | | using Bro.M135.Common; |
| | | using HalconDotNet; |
| | | using MySql.Data.MySqlClient; |
| | | using Newtonsoft.Json; |
| | | using Sunny.UI; |
| | |
| | | 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; |
| | | |
| | |
| | | } |
| | | } |
| | | |
| | | public void NewForAll(ProductModel pro, string devicestr) |
| | | public void NewForAll(ProductModel pro, string devicestr, string netname) |
| | | { |
| | | Task.Run(() => |
| | | { |
| | |
| | | //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); |
| | | |
| | | if (pro.Details != null) |
| | | if (string.IsNullOrEmpty(netname) /*|| devicestr != "S3" */) |
| | | { |
| | | foreach (var item in pro.Details) |
| | | if (pro.Details != null) |
| | | { |
| | | if (item != null) |
| | | foreach (var item in pro.Details) |
| | | { |
| | | 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(); |
| | | 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()), 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 + "' "; |
| | | |
| | |
| | | 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, $"数据库forlocal获取对象异常 {e.ToString()}"); |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | public string Getbasketcode(string plcnum, out string sn) |
| | | { |
| | | sn = "Noread"; |
| | |
| | | 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); |
| | |
| | | } |
| | | |
| | | |
| | | |
| | | 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, $"数据库forall数据异常 {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, $"数据库basketcode插入数据成功"); |
| | | } |
| | | else |
| | | { |
| | | CommonLogger.LogAsync(DateTime.Now, EnumHelper.LogLevel.Error, $"数据库basketcode插入数据异失败 {mysqlstr}"); |
| | | } |
| | | } |
| | | catch (Exception e) |
| | | { |
| | | CommonLogger.LogAsync(DateTime.Now, EnumHelper.LogLevel.Exception, $"数据库basketcode插入数据异常 {e.ToString()}"); |
| | | } |
| | | } |
| | | |
| | | } |
| | | } |