From ff7cab72419729ce2c5adc46350ef45d89a5d1e5 Mon Sep 17 00:00:00 2001
From: patrick.xu <patrick.xu@broconcentric.com>
Date: 星期六, 24 七月 2021 10:31:41 +0800
Subject: [PATCH] MES动作添加异常捕捉和重试机制

---
 src/Bro.M071.Process/M071Process_MES.cs |   52 +++++++++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 45 insertions(+), 7 deletions(-)

diff --git a/src/Bro.M071.Process/M071Process_MES.cs b/src/Bro.M071.Process/M071Process_MES.cs
index 3b19a35..28e399e 100644
--- a/src/Bro.M071.Process/M071Process_MES.cs
+++ b/src/Bro.M071.Process/M071Process_MES.cs
@@ -7,6 +7,7 @@
 using System.Linq;
 using System.Reflection;
 using System.Text;
+using System.Threading;
 using System.Threading.Tasks;
 
 namespace Bro.M071.Process
@@ -138,20 +139,38 @@
             //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();
             //var result = _webApiHelper.dooPost(url, paraStr);
 
-            object[] paras = new object[] { barcode, Config.StationCode };
+            object[] paras = new object[] { barcode, Config.StationCode, Config.ProjectCode };
 
             if (Config.IsEnableMESLog)
             {
                 LogAsync(DateTime.Now, $"MES鍏ユ枡妫�娴�", JsonConvert.SerializeObject(paras));
             }
 
-            var result = IncomingCheckMethod?.Invoke(IncomingCheckObj, paras).ToString();
+            string result = "-3";
+
+            int repeatTime = 3;
+
+            do
+            {
+                try
+                {
+                    result = IncomingCheckMethod?.Invoke(IncomingCheckObj, paras).ToString();
+                }
+                catch (Exception ex)
+                {
+                    LogAsync(DateTime.Now, $"{barcode}浜у搧鏉$爜妫�娴嬪紓甯�", ex.GetExceptionMessage());
+                    repeatTime--;
+
+                    Thread.Sleep(100);
+                    result = "-3";
+                }
+            } while (repeatTime > 0);
             var mesReturn = (MESIncomingCheckReturn)int.Parse(result);
             sw.Stop();
             LogAsync(DateTime.Now, $"{barcode}浜у搧鏉$爜妫�娴嬶紝{result}|{mesReturn.ToString()}", $"鑰楁椂锛歿sw.ElapsedMilliseconds}ms");
@@ -184,7 +203,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();
@@ -196,7 +215,7 @@
                 Config.IsDisableMultipleCheckTimes,
                 Config.ProjectCode,
                 pMeasure.Barcode,
-                checkTime.ToString("yyyy-MM-dd HH:mm:ss"),
+                checkTime,
                 Config.StationCode,
                 pMeasure.PResult == "OK" ? "PASS" : "FAIL",
                 Config.LineCode,
@@ -207,10 +226,29 @@
 
             if (Config.IsEnableMESLog)
             {
-                LogAsync(DateTime.Now, $"{barcode}浜у搧妫�娴嬫暟鎹笂浼�", JsonConvert.SerializeObject(paras));
+                LogAsync(DateTime.Now, $"{pMeasure.Barcode}浜у搧妫�娴嬫暟鎹笂浼�", JsonConvert.SerializeObject(paras));
             }
 
-            var result = DataUploadMethod?.Invoke(DataUploadObj, paras).ToString();
+            string result = "-3";
+
+            int repeatTime = 3;
+            do
+            {
+                try
+                {
+                    result = DataUploadMethod?.Invoke(DataUploadObj, paras).ToString();
+                    repeatTime = -1;
+                }
+                catch (Exception ex)
+                {
+                    LogAsync(DateTime.Now, $"{barcode}浜у搧妫�娴嬫暟鎹笂浼犲紓甯�", ex.GetExceptionMessage());
+                    repeatTime--;
+
+                    Thread.Sleep(100); 
+                    result = "-3";
+                }
+            } while (repeatTime > 0);
+
             var mesReturn = (MESUploadReturn)int.Parse(result);
             sw.Stop();
             LogAsync(DateTime.Now, $"{barcode}浜у搧妫�娴嬫暟鎹笂浼狅紝{result}|{mesReturn.ToString()}", $"鑰楁椂锛歿sw.ElapsedMilliseconds}ms");

--
Gitblit v1.8.0