| | |
| | | using RabbitMQ.Client; |
| | | using RabbitMQ.Client.Events; |
| | | using SourceGrid.Cells.Editors; |
| | | |
| | | using Sunny.UI.Win32; |
| | | using System; |
| | | using System.Collections.Concurrent; |
| | |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | using ZXing; |
| | | |
| | | |
| | | namespace Bro.M141.Process |
| | | { |
| | |
| | | |
| | | 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") |
| | | { |
| | |
| | | } |
| | | else |
| | | { |
| | | 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 篮具 收到未匹配 zbguid:{obj?.zbguid}"); |
| | | } |
| | | } |
| | |
| | | CommonLogger.LogAsync(DateTime.Now, EnumHelper.LogLevel.Exception, $"RabbitMQ 物料 解析异常:{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) |
| | | { |
| | | |
| | | 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) |
| | | { |
| | | if (!string.IsNullOrEmpty(tem.receive)) |
| | | { |
| | | return tem.receive; |
| | | } |
| | | Thread.Sleep(1000); |
| | | } |
| | | MSGClasses.RemoveAll(u => u.key == keystr); |
| | | return tem.receive; |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | var guid = Guid.NewGuid().ToString(); |
| | | var tcs = new TaskCompletionSource<string>(TaskCreationOptions.RunContinuationsAsynchronously); |
| | | _pendingTask1[guid] = tcs; |
| | | |
| | | |
| | | var msgObj = new AutoLineMacQueue |
| | | { |
| | |
| | | _sendChannel.BasicPublish("", "auto_line_mac_queue", null, body); |
| | | |
| | | var completed = await Task.WhenAny(tcs.Task, Task.Delay(timeoutMes)); |
| | | |
| | | |
| | | _pendingTask1.TryRemove(guid, out _); |
| | | if (completed == tcs.Task) |
| | | { |
| | | return await tcs.Task; |
| | | } |
| | | else |
| | | { |
| | | MSGClasses.Add(new MSGClass() |
| | | { |
| | | key = keystr, |
| | | zguid = guid, |
| | | }); |
| | | |
| | | |
| | | CommonLogger.LogAsync(DateTime.Now, EnumHelper.LogLevel.Exception, $"RabbitMQ 篮具 返回超时1,zbguid={guid}"); |
| | | return null; |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | public async Task<string> MESForProduceAsync(ProductModel pro, string zversion, int znonum, string endtray = "N", string line = "NQ216", int timeoutMs = 3000) |
| | | { |
| | |
| | | ["划伤"] = "SZ2021" |
| | | }; |
| | | const string DefaultErrorCode = "S31006"; |
| | | |
| | | |
| | | string zr = DefectCodeMap.TryGetValue(pro.Result, out var code) ? code : DefaultErrorCode; |
| | | |
| | | |
| | |
| | | } |
| | | } |
| | | |
| | | public class MSGClass |
| | | { |
| | | public string key { get; set; } |
| | | |
| | | public string zguid { get; set; } |
| | | |
| | | public string receive { get; set; } |
| | | |
| | | } |
| | | |
| | | |
| | | |
| | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | public class AutoLineMacQueue |
| | | { |
| | | /// <summary> |
| | |
| | | /// 2:预满载(表示4号位预满载,3号位开始往4号位搬时) |
| | | /// </summary> |
| | | public string zstatus { get; set; } |
| | | |
| | | } |
| | | |
| | | public class AutoLineMacQueueBak |
| | | { |
| | | public string zbguid { get; set; } |
| | |
| | | /// </summary> |
| | | public string zwoid { get; set; } |
| | | } |
| | | |
| | | public class AutoLineMacBarcodeQueue |
| | | { |
| | | /// <summary> |
| | | /// 唯一ID |
| | | /// </summary> |
| | | public string zbguid { get; set; } = Guid.NewGuid().ToString(); |
| | | |
| | | /// <summary> |
| | | /// 时间戳,精确到耗秒 |
| | | /// </summary> |
| | |
| | | /// 默认:N;零数尾盘:Y |
| | | /// </summary> |
| | | public string endtray { get; set; } = "N"; |
| | | /// <summary> |
| | | /// <summary> |
| | | /// 每个ztype下对应独立一个序列号,一个业务动作一个,从0开始, |
| | | /// 每次加1,到达阈值后可重置(比如100后从0开始),只要和上一 |
| | | /// 次的不一样即可 |
| | |
| | | /// </summary> |
| | | public string tary_label { get; set; } |
| | | } |
| | | |
| | | |
| | | } |
| | | |
| | | |
| | | |