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/MyMQTT.cs |   94 ++++++++++++++++++++---------------------------
 1 files changed, 40 insertions(+), 54 deletions(-)

diff --git a/src/Bro.M141.Process/MyMQTT.cs b/src/Bro.M141.Process/MyMQTT.cs
index da6a495..e458671 100644
--- a/src/Bro.M141.Process/MyMQTT.cs
+++ b/src/Bro.M141.Process/MyMQTT.cs
@@ -114,6 +114,7 @@
                     if (MSGClasses.Any(u => u.zguid == obj?.zbguid))
                     {
                         var tem = MSGClasses.FirstOrDefault(u => u.zguid == obj?.zbguid);
+
                         if (!string.IsNullOrEmpty(tem.receive))
                         {
                             tem.receive = message;
@@ -140,7 +141,15 @@
                 }
                 else
                 {
-                    CommonLogger.LogAsync(DateTime.Now, EnumHelper.LogLevel.Information, $"RabbitMQ 鐗╂枡 鏀跺埌鏈尮閰� zbguid锛歿obj?.zbguid}");
+                    Thread.Sleep(100);
+                    if (_pendingTask2.TryRemove(obj.zbguid, out var tcs2))
+                    {
+                        tcs2.TrySetResult(message);
+                    }
+                    else
+                    {
+                        CommonLogger.LogAsync(DateTime.Now, EnumHelper.LogLevel.Information, $"RabbitMQ 鐗╂枡 鏀跺埌鏈尮閰� zbguid锛歿obj?.zbguid}");
+                    }
                 }
             }
             catch (Exception ex)
@@ -149,8 +158,7 @@
             }
         }
 
-        //Dictionary<string, Task> dic_ispass = new Dictionary<string, Task>();///value涓烘敹鍒版暟鎹�
-
+        int num = 0;
         public async Task<string> MESForBasketAsync(string ztype, string zlsn, string zlpn, string zstatus, string zversion, int timeoutMes = 30000)
         {
 
@@ -158,31 +166,32 @@
 
             if (MSGClasses.Any(u => u.key == keystr))
             {
-                var tem = MSGClasses.FirstOrDefault(u => u.key == keystr);
-
-                DateTime dt = DateTime.Now;
-                while ((DateTime.Now - dt).TotalMilliseconds < timeoutMes)
+                CommonLogger.LogAsync(DateTime.Now, EnumHelper.LogLevel.Information, $"{keystr}鍖归厤鎴愬姛");
+                num++;
+                //var tem = MSGClasses.FirstOrDefault(u => u.key == keystr);
+                var tem = MSGClasses.Where(u => u.key == "1" && !string.IsNullOrEmpty(u.receive)).ToList();
+                //DateTime dt = DateTime.Now;
+                if (num < 10)
                 {
-                    if (!string.IsNullOrEmpty(tem.receive))
-                    {
-
-                        CommonLogger.LogAsync(DateTime.Now, EnumHelper.LogLevel.Information, $"RabbitMQ {keystr}浜屾鎺ユ敹 杩斿洖鍊兼甯� {tem.receive}");
-                    
-                        return tem.receive;
-                    }
-                    Thread.Sleep(1000);
+                    //while ((DateTime.Now - dt).TotalMilliseconds < timeoutMes)
+                    //{
+                        if (!string.IsNullOrEmpty(tem[0].receive))
+                        {
+                            CommonLogger.LogAsync(DateTime.Now, EnumHelper.LogLevel.Information, $"RabbitMQ {keystr}浜屾鎺ユ敹 杩斿洖鍊兼甯� {tem[0].receive}");
+                            return tem[0].receive;
+                        }
+                        Thread.Sleep(1000);
+                    //}
                 }
-                if (MSGClasses.Count > 10)
+                else 
                 {
-                    MSGClasses.RemoveAt(0);
-                    CommonLogger.LogAsync(DateTime.Now, EnumHelper.LogLevel.Information, $"RabbitMQ浜屾鎺ユ敹鏁版嵁瓒呰繃鍗佹潯 娓呴櫎绗竴鏉¤秴鏃舵暟鎹�");
+                    num = 0;
+                    CommonLogger.LogAsync(DateTime.Now, EnumHelper.LogLevel.Information, $"RabbitMQ瓒呮椂澶勭悊娆℃暟瓒呰繃鍗佹");
+                    //return null;
                 }
-                //MSGClasses.RemoveAll(u => u.key == keystr);
-               
-
-                return null;
+                CommonLogger.LogAsync(DateTime.Now, EnumHelper.LogLevel.Information, $"RabbitMQ浜屾鎺ユ敹鏁版嵁鎺ユ敹涓虹┖");
+                //return null;
             }
-
 
             var guid = Guid.NewGuid().ToString();
             var tcs = new TaskCompletionSource<string>(TaskCreationOptions.RunContinuationsAsynchronously);
@@ -215,14 +224,20 @@
             }
             else
             {
+                CommonLogger.LogAsync(DateTime.Now, EnumHelper.LogLevel.Exception, $"RabbitMQ 绡叿 杩斿洖瓒呮椂1锛寊bguid={guid}");
+
                 MSGClasses.Add(new MSGClass()
                 {
                     key = keystr,
                     zguid = guid,
                 });
 
+                if (MSGClasses.Count > 10)
+                {
+                    MSGClasses.RemoveAt(0);                    
+                }
 
-                CommonLogger.LogAsync(DateTime.Now, EnumHelper.LogLevel.Exception, $"RabbitMQ 绡叿 杩斿洖瓒呮椂1锛寊bguid={guid}");
+               
                 return null;
             }
         }
@@ -243,31 +258,6 @@
             {
                 zresult = "NG";
             }
-            //string zr;
-            //switch (pro.Result)
-            //{
-            //    case "ok":
-            //        zr = "";
-            //        break;
-            //    case "寮傝壊":
-            //        zr = "SZ2001";
-            //        break;
-            //    case "纾ㄥ嵃":
-            //        zr = "SZ2012";
-            //        break;
-            //    case "鍘嬩激":
-            //        zr = "SZ2014";
-            //        break;
-            //    case "鍙樺舰":
-            //        zr = "SZ2014";
-            //        break;
-            //    case "鍒掍激":
-            //        zr = "SZ2021";
-            //        break;
-            //    default:
-            //        zr = "S31006";
-            //        break;
-            //}
 
             var DefectCodeMap = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase)
             {
@@ -292,10 +282,6 @@
                 zbarcode = pro.SN,
                 zresult = zresult,
                 zreson = zr,
-                //zreson = pro.Result == "OK" ? "" : "SZ2014",
-                //
-
-                //
                 zno = znonum.ToString(),
                 zwoid = pro.Zword,
                 endtray = endtray,
@@ -308,7 +294,7 @@
             _sendChannel.BasicPublish("", "auto_line_mac_barcode_queue", null, body);
 
             var completed = await Task.WhenAny(tcs.Task, Task.Delay(timeoutMs));
-            _pendingTask2.TryRemove(guid, out _);
+            //_pendingTask2.TryRemove(guid, out _);
             if (completed == tcs.Task)
                 return await tcs.Task;
             else

--
Gitblit v1.8.0