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 | 153 ++++++++++++++++++++++++++++++++++++++++----------
1 files changed, 122 insertions(+), 31 deletions(-)
diff --git a/src/Bro.M141.Process/MyMQTT.cs b/src/Bro.M141.Process/MyMQTT.cs
index 53a5f75..e458671 100644
--- a/src/Bro.M141.Process/MyMQTT.cs
+++ b/src/Bro.M141.Process/MyMQTT.cs
@@ -17,6 +17,7 @@
using System.Threading.Tasks;
using ZXing;
+
namespace Bro.M141.Process
{
public class RabbitMQHelper
@@ -32,6 +33,10 @@
private readonly string _queue1 = "auto_line_mac_queue_bak";
private readonly string _queue2 = "auto_line_mac_barcode_queue_bak";
+
+ List<MSGClass> MSGClasses = new List<MSGClass>();
+
+
public RabbitMQHelper(string host = "10.2.20.114", int port = 15672, string user = "aoiUser", string pwd = "Chia@aoi")
{
@@ -75,8 +80,6 @@
InitConsumer(_receiveChannel2, _queue2, HandleQueue2Message);
}
-
-
CommonLogger.LogAsync(DateTime.Now, EnumHelper.LogLevel.Information, "RabbitMQ 杩炴帴鎴愬姛");
}
@@ -105,7 +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}");
+ }
+ }
}
}
catch (Exception ex)
@@ -125,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)
@@ -134,8 +158,41 @@
}
}
- public async Task<string> MESForBasketAsync(string ztype, string zlsn, string zlpn, string zstatus, string zversion, int timeoutMs = 3000)
+ int num = 0;
+ public async Task<string> MESForBasketAsync(string ztype, string zlsn, string zlpn, string zstatus, string zversion, int timeoutMes = 30000)
{
+
+ string keystr = ztype + "_" + zlsn + "_" + zlpn + "_" + zstatus;
+
+ if (MSGClasses.Any(u => u.key == keystr))
+ {
+ 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)
+ {
+ //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);
+ //}
+ }
+ 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;
@@ -157,18 +214,36 @@
CommonLogger.LogAsync(DateTime.Now, EnumHelper.LogLevel.Information, $"RabbitMQ 绡叿 鍙戦��1锛歿message}");
_sendChannel.BasicPublish("", "auto_line_mac_queue", null, body);
- var completed = await Task.WhenAny(tcs.Task, Task.Delay(timeoutMs));
+ var completed = await Task.WhenAny(tcs.Task, Task.Delay(timeoutMes));
+
+
_pendingTask1.TryRemove(guid, out _);
if (completed == tcs.Task)
+ {
return await tcs.Task;
+ }
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);
+ }
+
+
return null;
}
}
- public async Task<string> MESForProduceAsync(ProductModel pro, int znonum, string endtray = "N", string line = "NQ216", int timeoutMs = 3000)
+
+ public async Task<string> MESForProduceAsync(ProductModel pro, string zversion, int znonum, string endtray = "N", string line = "NQ216", int timeoutMs = 3000)
{
var guid = Guid.NewGuid().ToString();
var tcs = new TaskCompletionSource<string>(TaskCreationOptions.RunContinuationsAsynchronously);
@@ -184,6 +259,21 @@
zresult = "NG";
}
+ var DefectCodeMap = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase)
+ {
+ ["OK"] = "",
+ ["寮傝壊"] = "SZ2001",
+ ["纾ㄥ嵃"] = "SZ2012",
+ ["鍘嬩激"] = "SZ2014",
+ ["鍙樺舰"] = "SZ2014",
+ ["鍒掍激"] = "SZ2021"
+ };
+ const string DefaultErrorCode = "S31006";
+
+ string zr = DefectCodeMap.TryGetValue(pro.Result, out var code) ? code : DefaultErrorCode;
+
+
+
var msgObj = new AutoLineMacBarcodeQueue
{
zbguid = guid,
@@ -191,19 +281,20 @@
zline = line,
zbarcode = pro.SN,
zresult = zresult,
- zreson = pro.Result == "OK" ? "" : "SZ2014",
+ zreson = zr,
zno = znonum.ToString(),
zwoid = pro.Zword,
- endtray = endtray
+ endtray = endtray,
+ zversion = zversion
};
var message = JsonConvert.SerializeObject(msgObj);
var body = Encoding.UTF8.GetBytes(message);
- CommonLogger.LogAsync(DateTime.Now, EnumHelper.LogLevel.Information, $"RabbitMQ鍙戦�佷骇鍝亄pro.PID} 鏁版嵁2锛歿message}");
+ CommonLogger.LogAsync(DateTime.Now, EnumHelper.LogLevel.Information, $"RabbitMQ鍙戦�佷骇鍝亄pro.PID} 鏁版嵁2锛歿message},缂洪櫡浠g爜涓簕zr}");
_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
@@ -223,8 +314,15 @@
}
}
+ public class MSGClass
+ {
+ public string key { get; set; }
+ public string zguid { get; set; }
+ public string receive { get; set; }
+
+ }
@@ -480,21 +578,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
public class AutoLineMacQueue
{
/// <summary>
@@ -551,9 +634,7 @@
/// 2锛氶婊¤浇锛堣〃绀�4鍙蜂綅棰勬弧杞斤紝3鍙蜂綅寮�濮嬪線4鍙蜂綅鎼椂锛�
/// </summary>
public string zstatus { get; set; }
-
}
-
public class AutoLineMacQueueBak
{
public string zbguid { get; set; }
@@ -570,14 +651,12 @@
/// </summary>
public string zwoid { get; set; }
}
-
public class AutoLineMacBarcodeQueue
{
/// <summary>
/// 鍞竴ID
/// </summary>
public string zbguid { get; set; } = Guid.NewGuid().ToString();
-
/// <summary>
/// 鏃堕棿鎴筹紝绮剧‘鍒拌�楃
/// </summary>
@@ -610,6 +689,17 @@
/// 榛樿锛歂;闆舵暟灏剧洏锛歒
/// </summary>
public string endtray { get; set; } = "N";
+ /// <summary>
+ /// 姣忎釜ztype涓嬪搴旂嫭绔嬩竴涓簭鍒楀彿锛屼竴涓笟鍔″姩浣滀竴涓紝浠�0寮�濮嬶紝
+ /// 姣忔鍔�1锛屽埌杈鹃槇鍊煎悗鍙噸缃紙姣斿100鍚庝粠0寮�濮嬶級锛屽彧瑕佸拰涓婁竴
+ /// 娆$殑涓嶄竴鏍峰嵆鍙�
+ /// 涓氬姟鍔ㄤ綔瑙i噴锛氭瘮濡倆type涓�2鏃讹紝Q01-000001瑙g粦鏃朵紶搴忓垪鍙�1锛�
+ /// 濡傛灉Q01-000001鍦ㄤ竴浜涘紓甯告儏鍐典笅锛岄渶瑕侀噸璇曞垯杩樻槸浼犲簭鍒楀彿涓�1,
+ /// 涓嬩竴涓猀01-000002瑙g粦鏃朵紶搴忓垪鍙�2
+ /// 閫氫織鐨勮锛氫竴涓獄type+zversion鍙兘鎴愬姛澶勭悊涓�娆★紙闃堝�奸噸缃鑷�
+ /// 鐨勯噸澶嶉櫎澶栵級
+ /// </summary>
+ public string zversion { get; set; }
}
public class AutoLineMacBarcodeQueueBak
@@ -627,6 +717,7 @@
/// </summary>
public string tary_label { get; set; }
}
-
-
}
+
+
+
--
Gitblit v1.8.0