From 1bc2df66bc88a6405df345dccc24a5031e18b592 Mon Sep 17 00:00:00 2001
From: patrick.xu <patrick.xu@broconcentric.com>
Date: 星期一, 21 十二月 2020 09:54:48 +0800
Subject: [PATCH] 1. gocator添加byte2/byte4的配置,目前测试byte4不成功,暂时还是使用byte2配置。 2. 添加键名代码映射配置和NG键名代码上传功能

---
 src/Bro.M071.Process/M071Process_MES.cs |   66 ++++++++++++++++++++++++++++----
 1 files changed, 57 insertions(+), 9 deletions(-)

diff --git a/src/Bro.M071.Process/M071Process_MES.cs b/src/Bro.M071.Process/M071Process_MES.cs
index a5277b3..7f63e68 100644
--- a/src/Bro.M071.Process/M071Process_MES.cs
+++ b/src/Bro.M071.Process/M071Process_MES.cs
@@ -82,14 +82,14 @@
         {
             get
             {
-                if (incomingCheckMethod == null)
+                if (dataUploadMethod == null)
                 {
-                    incomingCheckMethod = InitialMESWebServiceMethod(DataUploadMethodName, out DataUploadObj);
+                    dataUploadMethod = InitialMESWebServiceMethod(DataUploadMethodName, out DataUploadObj);
                 }
 
-                return incomingCheckMethod;
+                return dataUploadMethod;
             }
-            set => incomingCheckMethod = value;
+            set => dataUploadMethod = value;
         }
 
         private MethodInfo InitialMESWebServiceMethod(string methodName, out object invokeClass)
@@ -138,7 +138,7 @@
             //string paraStr = JsonConvert.SerializeObject(paras);
             //LogAsync(DateTime.Now, $"MES鍏ユ枡妫�娴� {url}", paraStr);
 
-            IncomingCheckMethod = InitialMESWebServiceMethod(IncomingCheckMethodName, out IncomingCheckObj);
+            //IncomingCheckMethod = InitialMESWebServiceMethod(IncomingCheckMethodName, out IncomingCheckObj);
 
             Stopwatch sw = new Stopwatch();
             sw.Start();
@@ -178,7 +178,7 @@
             //string paraStr = JsonConvert.SerializeObject(paras);
             //LogAsync(DateTime.Now, $"MES鏁版嵁涓婁紶 {url}", paraStr);
 
-            DataUploadMethod = InitialMESWebServiceMethod(DataUploadMethodName, out DataUploadObj);
+            //DataUploadMethod = InitialMESWebServiceMethod(DataUploadMethodName, out DataUploadObj);
 
             Stopwatch sw = new Stopwatch();
             sw.Start();
@@ -195,7 +195,8 @@
                 pMeasure.PResult == "OK" ? "PASS" : "FAIL",
                 Config.LineCode,
                 GetMESSlantData(pMeasure),
-                GetMESAlignmentData(pMeasure)
+                GetMESAlignmentData(pMeasure),
+                GetNGKeys(pMeasure)
             };
 
             //LogAsync(DateTime.Now, $"{barcode}浜у搧妫�娴嬫暟鎹笂浼�", JsonConvert.SerializeObject(paras));
@@ -210,12 +211,59 @@
 
         private string GetMESAlignmentData(ProductionMeasurement pMeasure)
         {
-            return string.Join(",", pMeasure.Measurements.Where(u => u.MeasureType == "Alignment").Select(u => $"{u.Name}:{u.Spec.ActualValue.Value.ToString(_precision)}"));
+            return string.Join(",", pMeasure.Measurements.Where(u => u.MeasureType.StartsWith("Alignment")).Select(u => $"{u.Name}:{u.Spec.ActualValue.Value.ToString(_precision)}"));
         }
 
         private string GetMESSlantData(ProductionMeasurement pMeasure)
         {
-            return string.Join(",", pMeasure.Measurements.Where(u => u.MeasureType == "Slant").Select(u => $"{u.Name}:{u.Spec.ActualValue.Value.ToString(_precision)}"));
+            return string.Join(",", pMeasure.Measurements.Where(u => u.MeasureType.StartsWith("Slant")).Select(u => $"{u.Name}:{u.Spec.ActualValue.Value.ToString(_precision)}"));
+        }
+
+        private string GetNGKeys(ProductionMeasurement pMeasure)
+        {
+            string ngCodes = "";
+            Dictionary<string, List<string>> ngCodeDict = new Dictionary<string, List<string>>();
+
+            var ngList = pMeasure.Measurements.Where(m => m.Spec.MeasureResult != true).ToList();
+            if (ngList.Count == 0)
+                return "";
+
+            ngList.GroupBy(m => m.MeasureType).ToList().ForEach(g =>
+                  {
+                      var mType = Config.MeasureTypeCollection.FirstOrDefault(u => u.Code == g.Key);
+                      if (mType != null)
+                      {
+                          if (!ngCodeDict.ContainsKey(mType.NGCode))
+                          {
+                              ngCodeDict[mType.NGCode] = new List<string>();
+                          }
+
+                          g.ToList().ForEach(k =>
+                          {
+                              k.KeyUnitCollection.Select(kk => kk.Key).ToList().ForEach(key =>
+                              {
+                                  string uploadKeyCode = key;
+                                  var keyCodeMap = Config.KeyCodeMappingCollection.FirstOrDefault(kcm => kcm.Key == key);
+                                  if (keyCodeMap != null)
+                                  {
+                                      uploadKeyCode = keyCodeMap.KeyCode;
+                                  }
+
+                                  if (!ngCodeDict[mType.NGCode].Contains(uploadKeyCode))
+                                  {
+                                      ngCodeDict[mType.NGCode].Add(uploadKeyCode);
+                                  }
+                              });
+                          });
+                      }
+                  });
+
+            if (ngCodeDict.Count > 0)
+            {
+                ngCodes = string.Join(";", ngCodeDict.ToList().Select(u => $"{u.Key}:{string.Join(",", u.Value)}"));
+            }
+
+            return ngCodes;
         }
     }
 

--
Gitblit v1.8.0