From c9f926d24416de35c19558d2c0a67216693f3510 Mon Sep 17 00:00:00 2001
From: quanzhou <quan.zhou@broconcentric.com>
Date: 星期一, 23 三月 2026 13:46:09 +0800
Subject: [PATCH] 修改篮具上传超时时间,修改产品条码上传逻辑由一次性上传50片产品变成两片单独上传

---
 src/Bro.M141.Process/MyMQTT.cs |  111 +++++++++++++++++++++++--------------------------------
 1 files changed, 46 insertions(+), 65 deletions(-)

diff --git a/src/Bro.M141.Process/MyMQTT.cs b/src/Bro.M141.Process/MyMQTT.cs
index 84ea30a..86192f9 100644
--- a/src/Bro.M141.Process/MyMQTT.cs
+++ b/src/Bro.M141.Process/MyMQTT.cs
@@ -8,7 +8,6 @@
 using RabbitMQ.Client;
 using RabbitMQ.Client.Events;
 using SourceGrid.Cells.Editors;
-
 using Sunny.UI.Win32;
 using System;
 using System.Collections.Concurrent;
@@ -62,7 +61,6 @@
             _connection = _factory.CreateConnection();
             _sendChannel = _connection.CreateModel();
 
-
             if (channel == 0)
             {
                 _receiveChannel1 = _connection.CreateModel();
@@ -80,8 +78,6 @@
                 _receiveChannel2 = _connection.CreateModel();
                 InitConsumer(_receiveChannel2, _queue2, HandleQueue2Message);
             }
-
-
 
             CommonLogger.LogAsync(DateTime.Now, EnumHelper.LogLevel.Information, "RabbitMQ 杩炴帴鎴愬姛");
         }
@@ -111,16 +107,20 @@
                 }
                 else
                 {
+
+                    CommonLogger.LogAsync(DateTime.Now, EnumHelper.LogLevel.Information, $"RabbitMQ 绡叿 鏀跺埌鏈尮閰� zbguid锛歿obj?.zbguid}");
+
                     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;
+
+                            CommonLogger.LogAsync(DateTime.Now, EnumHelper.LogLevel.Information, $"RabbitMQ 绡叿鏈夎秴鏃跺姩浣滐紝鎴暀涓嬪尮閰嶄俊鎭細{message}");
                         }
                     }
-
-                    CommonLogger.LogAsync(DateTime.Now, EnumHelper.LogLevel.Information, $"RabbitMQ 绡叿 鏀跺埌鏈尮閰� zbguid锛歿obj?.zbguid}");
                 }
             }
             catch (Exception ex)
@@ -140,7 +140,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)
@@ -148,37 +156,44 @@
                 CommonLogger.LogAsync(DateTime.Now, EnumHelper.LogLevel.Exception, $"RabbitMQ 鐗╂枡 瑙f瀽寮傚父锛歿ex.Message}");
             }
         }
-        //Dictionary<string, Task> dic_ispass = new Dictionary<string, Task>();///value涓烘敹鍒版暟鎹�
 
-        public async Task<string> MESForBasketAsync(string ztype, string zlsn, string zlpn, string zstatus, string zversion, int timeoutMes = 30000)
+        int num = 0;
+        public async Task<string> MESForBasketAsync(string ztype, string zlsn, string zlpn, string zstatus, string zversion, int timeoutMes = 60000)
         {
 
             string keystr = ztype + "_" + zlsn + "_" + zlpn + "_" + zstatus;
 
             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.Where(u => u.key == keystr && !string.IsNullOrEmpty(u.receive)).ToList();
+                if (num < 10)
                 {
-                    if (!string.IsNullOrEmpty(tem.receive))
+                    if (tem!=null)
                     {
-                        return tem.receive;
-                    }
-                    Thread.Sleep(1000);
+                        if (tem.Count()>0)
+                        {
+                            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);
+                        }                       
+                    }               
                 }
-                MSGClasses.RemoveAll(u => u.key == keystr);
-                return tem.receive;
+                else 
+                {
+                    num = 0;
+                    CommonLogger.LogAsync(DateTime.Now, EnumHelper.LogLevel.Information, $"RabbitMQ瓒呮椂澶勭悊娆℃暟瓒呰繃鍗佹");
+                }
+                CommonLogger.LogAsync(DateTime.Now, EnumHelper.LogLevel.Information, $"RabbitMQ浜屾鎺ユ敹鏁版嵁鎺ユ敹涓虹┖");
             }
-
-
-
 
             var guid = Guid.NewGuid().ToString();
             var tcs = new TaskCompletionSource<string>(TaskCreationOptions.RunContinuationsAsynchronously);
             _pendingTask1[guid] = tcs;
-
 
             var msgObj = new AutoLineMacQueue
             {
@@ -199,7 +214,6 @@
 
             var completed = await Task.WhenAny(tcs.Task, Task.Delay(timeoutMes));
 
-
             _pendingTask1.TryRemove(guid, out _);
             if (completed == tcs.Task)
             {
@@ -207,22 +221,23 @@
             }
             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;
             }
         }
-
-
-
-
-
 
 
         public async Task<string> MESForProduceAsync(ProductModel pro, string zversion, int znonum, string endtray = "N", string line = "NQ216", int timeoutMs = 3000)
@@ -240,31 +255,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)
             {
@@ -279,8 +269,6 @@
 
             string zr = DefectCodeMap.TryGetValue(pro.Result, out var code) ? code : DefaultErrorCode;
 
-
-
             var msgObj = new AutoLineMacBarcodeQueue
             {
                 zbguid = guid,
@@ -289,10 +277,6 @@
                 zbarcode = pro.SN,
                 zresult = zresult,
                 zreson = zr,
-                //zreson = pro.Result == "OK" ? "" : "SZ2014",
-                //
-
-                //
                 zno = znonum.ToString(),
                 zwoid = pro.Zword,
                 endtray = endtray,
@@ -305,7 +289,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
@@ -328,11 +312,8 @@
     public class MSGClass
     {
         public string key { get; set; }
-
         public string zguid { get; set; }
-
         public string receive { get; set; }
-
     }
 
 

--
Gitblit v1.8.0