| | |
| | | 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; |
| | |
| | | } |
| | | else |
| | | { |
| | | 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) |
| | |
| | | } |
| | | } |
| | | |
| | | //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) |
| | | { |
| | | |
| | |
| | | |
| | | 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)) |
| | | //while ((DateTime.Now - dt).TotalMilliseconds < timeoutMes) |
| | | //{ |
| | | if (!string.IsNullOrEmpty(tem[0].receive)) |
| | | { |
| | | |
| | | CommonLogger.LogAsync(DateTime.Now, EnumHelper.LogLevel.Information, $"RabbitMQ {keystr}二次接收 返回值正常 {tem.receive}"); |
| | | |
| | | return tem.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); |
| | |
| | | } |
| | | else |
| | | { |
| | | CommonLogger.LogAsync(DateTime.Now, EnumHelper.LogLevel.Exception, $"RabbitMQ 篮具 返回超时1,zbguid={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,zbguid={guid}"); |
| | | |
| | | return null; |
| | | } |
| | | } |
| | |
| | | { |
| | | 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) |
| | | { |
| | |
| | | zbarcode = pro.SN, |
| | | zresult = zresult, |
| | | zreson = zr, |
| | | //zreson = pro.Result == "OK" ? "" : "SZ2014", |
| | | // |
| | | |
| | | // |
| | | zno = znonum.ToString(), |
| | | zwoid = pro.Zword, |
| | | endtray = endtray, |
| | |
| | | _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 |