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 |  105 +++++++++++++++++++++++-----------------------------
 1 files changed, 47 insertions(+), 58 deletions(-)

diff --git a/src/Bro.M141.Process/MyMQTT.cs b/src/Bro.M141.Process/MyMQTT.cs
index 84ea30a..e458671 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;
@@ -81,8 +80,6 @@
                 InitConsumer(_receiveChannel2, _queue2, HandleQueue2Message);
             }
 
-
-
             CommonLogger.LogAsync(DateTime.Now, EnumHelper.LogLevel.Information, "RabbitMQ 杩炴帴鎴愬姛");
         }
 
@@ -111,16 +108,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 +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)
@@ -148,8 +157,8 @@
                 CommonLogger.LogAsync(DateTime.Now, EnumHelper.LogLevel.Exception, $"RabbitMQ 鐗╂枡 瑙f瀽寮傚父锛歿ex.Message}");
             }
         }
-        //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)
         {
 
@@ -157,28 +166,36 @@
 
             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))
-                    {
-                        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);
+                    //}
                 }
-                MSGClasses.RemoveAll(u => u.key == keystr);
-                return tem.receive;
+                else 
+                {
+                    num = 0;
+                    CommonLogger.LogAsync(DateTime.Now, EnumHelper.LogLevel.Information, $"RabbitMQ瓒呮椂澶勭悊娆℃暟瓒呰繃鍗佹");
+                    //return null;
+                }
+                CommonLogger.LogAsync(DateTime.Now, EnumHelper.LogLevel.Information, $"RabbitMQ浜屾鎺ユ敹鏁版嵁鎺ユ敹涓虹┖");
+                //return null;
             }
-
-
-
 
             var guid = Guid.NewGuid().ToString();
             var tcs = new TaskCompletionSource<string>(TaskCreationOptions.RunContinuationsAsynchronously);
             _pendingTask1[guid] = tcs;
-
 
             var msgObj = new AutoLineMacQueue
             {
@@ -207,22 +224,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 +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)
             {
@@ -289,10 +282,6 @@
                 zbarcode = pro.SN,
                 zresult = zresult,
                 zreson = zr,
-                //zreson = pro.Result == "OK" ? "" : "SZ2014",
-                //
-
-                //
                 zno = znonum.ToString(),
                 zwoid = pro.Zword,
                 endtray = endtray,
@@ -305,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