quanzhou
2 天以前 86f899fa91e811415614dff1a699141144bfc802
src/Bro.M141.Process/MyMQTT.cs
@@ -114,6 +114,7 @@
                    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;
@@ -140,7 +141,15 @@
                }
                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)
@@ -149,8 +158,7 @@
            }
        }
        //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)
        {
@@ -158,31 +166,32 @@
            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);
@@ -215,14 +224,20 @@
            }
            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;
            }
        }
@@ -243,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)
            {
@@ -292,10 +282,6 @@
                zbarcode = pro.SN,
                zresult = zresult,
                zreson = zr,
                //zreson = pro.Result == "OK" ? "" : "SZ2014",
                //
                //
                zno = znonum.ToString(),
                zwoid = pro.Zword,
                endtray = endtray,
@@ -308,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