From 6caff8e3b06535a9652a791454135cf0e6ac110e Mon Sep 17 00:00:00 2001
From: kingno <30263@KINGNO>
Date: 星期一, 23 六月 2025 09:59:46 +0800
Subject: [PATCH] 新增篮具码,界面

---
 src/Bro.M135.Common/ProductModel.cs |   88 +++++++++++++++++++++++++++++++++++--------
 1 files changed, 71 insertions(+), 17 deletions(-)

diff --git a/src/Bro.M135.Common/ProductModel.cs b/src/Bro.M135.Common/ProductModel.cs
index ecca1b3..6737e19 100644
--- a/src/Bro.M135.Common/ProductModel.cs
+++ b/src/Bro.M135.Common/ProductModel.cs
@@ -1,7 +1,9 @@
 锘縰sing Bro.Common.Helper;
+using Bro.Common.Interface;
 using Bro.Common.Model;
 using Bro.M135.DBManager;
 using Newtonsoft.Json;
+using static System.Windows.Forms.VisualStyles.VisualStyleElement.ListView;
 
 namespace Bro.M135.Common
 {
@@ -53,11 +55,11 @@
             {
                 if (!string.IsNullOrWhiteSpace(d.FAIData))
                 {
-                    d.SpecList = JsonConvert.DeserializeObject<List<Spec>>(d.FAIData);
+                    d.SpecList = JsonConvert.DeserializeObject<List<ISpec>>(d.FAIData);
                 }
                 else
                 {
-                    d.SpecList = new List<Spec>();
+                    d.SpecList = new List<ISpec>();
                 }
 
                 if (!string.IsNullOrWhiteSpace(d.DefectDesc))
@@ -73,6 +75,13 @@
         #endregion
 
         public bool IsPreStationOK { get; set; } = false;
+
+        [JsonIgnore]
+        public List<string> ImagePaths { get; set; } = new List<string>();
+
+        public List<Netdefectdetail> Netdefectdetails = new List<Netdefectdetail>();
+
+        public List<double> Centermatrix { get; set; } = new List<double>();
 
         public DateTime? EndTime { get; set; } = null;
 
@@ -193,10 +202,12 @@
                 });
             });
 
+            allSpecs.RemoveAll(u => (u.Code.ToLower() == "ngspec" || u.Code == "妫�娴婽BD"));
+
             head = $"鏃堕棿,PID,鏍忓叿鐮�,鐗╂枡鐮�,鏉$爜,姹囨�绘娴嬬粨鏋�,";
 
             positionList = new List<string>();
-            Details = Details.OrderBy(u => u.PositionName).ToList();
+            Details = Details.OrderBy(u => u.STATION_CODE).ThenBy(u => u.PositionName).ToList();
             foreach (var d in Details)
             {
                 positionList.Add($"{d.STATION_CODE}_{d.PositionName}");
@@ -302,6 +313,8 @@
                 });
             });
 
+            allSpecs.RemoveAll(u => u.Code.ToLower() == "ngspec" || u.Code == "妫�娴婽BD");
+
             head = $"鏃堕棿,鏍忓叿鐮�,PID,搴忓彿,鏉$爜,";
 
             foreach (var d in positionDetail)
@@ -379,22 +392,22 @@
                 }
             });
 
-            positionDetail.ForEach(detail =>
-            {
-                if (detail.IsDone)
-                {
+            //positionDetail.ForEach(detail =>
+            //{
+            //    if (detail.IsDone)
+            //    {
 
-                    var results = detail.ResultList;
+            //        var results = detail.ResultList;
 
-                    var list = results.Where((DetectResult u) => u.ResultState != EnumHelper.ResultState.OK).SelectMany((DetectResult u) => u.NetResults.Where((NetResult m) => !m.IsAbandoned && m.CurResult != EnumHelper.ResultState.OK).SelectMany((NetResult m) => from n in m.DetectDetails where !n.IsAbandoned && n.FinalResult != EnumHelper.ResultState.OK select n)).ToList();
+            //        var list = results.Where((DetectResult u) => u.ResultState != EnumHelper.ResultState.OK).SelectMany((DetectResult u) => u.NetResults.Where((NetResult m) => !m.IsAbandoned && m.CurResult != EnumHelper.ResultState.OK).SelectMany((NetResult m) => from n in m.DetectDetails where !n.IsAbandoned && n.FinalResult != EnumHelper.ResultState.OK select n)).ToList();
 
-                    list.ForEach(d =>
-                    {
-                        data += $"{(d.Rect.Height * d.PixelSize).ToString("f4")},";
-                        data += $"{(d.Rect.Width * d.PixelSize).ToString("f4")},";
-                    });
-                }
-            });
+            //        list.ForEach(d =>
+            //        {
+            //            data += $"{(d.Rect.Height * d.PixelSize).ToString("f4")},";
+            //            data += $"{(d.Rect.Width * d.PixelSize).ToString("f4")},";
+            //        });
+            //    }
+            //});
 
 
 
@@ -416,12 +429,20 @@
         #endregion
 
         #region PositionCheckTimes
-        public void InitialPositionCheckList(string positionName, List<int> checkTimes)
+        public void InitialPositionCheckList(string positionName, List<int> checkTimes, string stationName)
         {
             lock (_checkResultLock)
             {
                 PositionCheckList[positionName] = new List<int>(checkTimes);
                 Details.RemoveAll(u => u.PositionName == positionName);
+
+
+                P_PRODUCT_DETAIL detail = new P_PRODUCT_DETAIL();
+                detail.STATION_CODE = stationName;
+                detail.PositionName = positionName;
+                detail.PID = PID;
+                detail.IsDone = false;
+                Details.Add(detail);
             }
         }
 
@@ -477,4 +498,37 @@
             TimeoutTimer = null;
         }
     }
+
+
+
+    public class Netdefectdetail
+    {
+        public string name { get; set; }
+
+        public double centerX { get; set; }
+        public double centerY { get; set; }
+
+      
+
+
+        public static double GetDistance(double x1, double y1, double x2, double y2)
+        {
+            double dx = x2 - x1;
+            double dy = y2 - y1;
+            return Math.Sqrt(dx * dx + dy * dy);
+        }
+        public static bool operator ==(Netdefectdetail a, Netdefectdetail b)
+        {
+            if (GetDistance(a.centerX, a.centerY, b.centerX, b.centerY) < 50)
+            {
+                return true;
+            }
+            return false;
+        }
+
+        public static bool operator !=(Netdefectdetail a, Netdefectdetail b)
+        {
+            return !(a == b);
+        }
+    }
 }

--
Gitblit v1.8.0