Explorar el Código

修复拍照ng跳过当前螺丝锁付没有ng信息上传mes

KWD hace 5 meses
padre
commit
82ff1b8bb1
Se han modificado 1 ficheros con 106 adiciones y 62 borrados
  1. 106 62
      TeamAAS-VM/Core/Management.cs

+ 106 - 62
TeamAAS-VM/Core/Management.cs

@@ -1394,7 +1394,7 @@ namespace TeamAAS_VP.Core
         string[] revision { get; set; } = new string[10];//产品revision
 
         Dictionary<string, string> dataToMes = new Dictionary<string, string>();//上传mes的数据
-        List<string> resultToMes = new List<string>();//上传mes的数据
+        List<string> resultToMes { get; set; } = new List<string>();//上传mes的数据
         /// <summary>
         /// PLC命令触发时
         /// </summary>
@@ -1672,11 +1672,21 @@ namespace TeamAAS_VP.Core
                                 {
                                     UpCameraPutResults[cameraIndex] = new PointF((float)visionResult.X, (float)visionResult.Y);
                                 }
-
+                                if (resultToMes.Contains($"Screw{cameraIndex}_Fail"))
+                                {
+                                    resultToMes.Remove($"Screw{cameraIndex}_Fail");
+                                    SendTaskMessage($"Screw{cameraIndex}:重复拍照成功", MessageLevel.Debug);
+                                }
                                 await plc.WriteNodeAsync(addressConfig.Out_UpCameraPutStatus.Address, (Int16)1);
                             }
                             else
                             {
+                                if (!resultToMes.Contains($"Screw{cameraIndex}_Fail"))
+                                {
+                                    resultToMes.Add($"Screw{cameraIndex}_Fail");
+                                    SendTaskMessage($"Screw{cameraIndex}:拍照失败", MessageLevel.Error);
+                                }                         
+                                
                                 await plc.WriteNodeAsync(addressConfig.Out_UpCameraPutStatus.Address, (Int16)2);
                             }
                         }
@@ -2015,7 +2025,11 @@ namespace TeamAAS_VP.Core
                             //dataToMes.Add($"LastResult{lockResult.Number}", $"{lastRes}");
                             if (!lastRes)//如果不合格,则在MES结果中添加"Screw{lockResult.Number}_Fail"
                             {
-                                resultToMes.Add($"Screw{lockResult.Number}_Fail");
+                                if (!resultToMes.Contains($"Screw{lockResult.Number}_Fail"))
+                                {
+                                    resultToMes.Add($"Screw{lockResult.Number}_Fail");
+                                    SendTaskMessage($"Screw{lockResult.Number}:锁附不合格", MessageLevel.Error);
+                                }
                             }
                             SendTaskMessage($"螺丝序号:{lockResult.Number},扭力:{lockResult.LockTorque},压力:{lockResult.Pressure},圈数:{lockResult.LockTurns}", MessageLevel.Info);
                             _maxPressure = 0;
@@ -2564,82 +2578,113 @@ namespace TeamAAS_VP.Core
                                         else //直接基于RFID询问是否过站
                                         {
                                             SendTaskMessage($"基于RFID询问是否过站", MessageLevel.Debug);
-                                            (bool isSuccess, string response) = await _mesService.StationGetAsync(code, "", 2);//询问mes
+                                            (bool isSuccess, string response) = await _mesService.StationGetExAsync(code, "", 2);
                                             if (isSuccess)
                                             {
+                                                string ProductMainSN_Temp = "";
                                                 LogHelper.WriteLogMes($"询问mes成功");
                                                 SendTaskMessage($"询问mes成功:{response}", MessageLevel.Debug);
-
-                                                var item = response.Split('\n');
+                                                string[] item = response.Split('\n');
+                                                //获取过度件sn
                                                 string snItem = item.FirstOrDefault(f => f.Contains("sn="));
                                                 if (snItem != null)
                                                 {
-                                                    ProductMainSN[i] = snItem.Replace("sn=", "").Trim();
-                                                    _productService.CurrentProductCode = ProductMainSN[i];
-                                                    //_eventAggregator.GetEvent<DelaySaveImageNotification>().Publish(true);//通知界面延迟保存图片,等待MES查询结果返回,避免图片和数据不同步
-                                                    SendTaskMessage($"产品主sn:{ProductMainSN[i]}", MessageLevel.Info);
-                                                }
-                                                string woItem = item.FirstOrDefault(f => f.Contains("wo="));
-                                                if (woItem != null)
-                                                {
-                                                    wo[i] = woItem.Replace("wo=", "").Trim();
-                                                    SendTaskMessage($"工单信息:{wo[i]}", MessageLevel.Info);
-                                                }
-                                                string modelItem = item.FirstOrDefault(f => f.Contains("model_num="));
-                                                if (modelItem != null)
-                                                {
-                                                    model_num[i] = modelItem.Replace("model_num=", "").Trim();
-                                                    SendTaskMessage($"model_num:{model_num[i]}", MessageLevel.Info);
-                                                }
-                                                string colorItem = item.FirstOrDefault(f => f.Contains("color="));
-                                                if (colorItem != null)
-                                                {
-                                                    color[i] = colorItem.Replace("color=", "").Trim();
-                                                    SendTaskMessage($"color:{color[i]}", MessageLevel.Info);
-                                                }
-                                                string ppidItem = item.FirstOrDefault(f => f.Contains("ppid="));
-                                                if (ppidItem != null)
-                                                {
-                                                    ppid[i] = ppidItem.Replace("ppid=", "").Trim();
-                                                    SendTaskMessage($"ppid:{ppid[i]}", MessageLevel.Info);
-                                                }
-                                                string revisionItem = item.FirstOrDefault(f => f.Contains("stage="));
-                                                if (revisionItem != null)
-                                                {
-                                                    revision[i] = revisionItem.Replace("stage=", "").Trim();
-                                                    SendTaskMessage($"stage:{revision[i]}", MessageLevel.Info);
+                                                    ProductMainSN_Temp = snItem.Replace("sn=", "").Trim();
+                                                    SendTaskMessage($"过度件sn:{ProductMainSN_Temp}", MessageLevel.Info);
                                                 }
 
-                                                //切换产品
-                                                if (i == 0)//i=0时才会切换产品
+                                                LogHelper.WriteLogMes($"询问mes成功");
+                                                SendTaskMessage($"询问mes成功:{response}", MessageLevel.Debug);
+
+                                                (bool isSuccess2, string response2) = await _mesService.StationGetAsync(ProductMainSN_Temp, "", 2);//询问mes
+                                                if (isSuccess2)
                                                 {
-                                                    var q = await _systemDatabaseService.QueryProductFromMesAsync(model_num[i], color[i]);
-                                                    if (q != null && !string.IsNullOrEmpty(q.ProductName))
+                                                    LogHelper.WriteLogMes($"询问mes成功");
+                                                    SendTaskMessage($"询问mes成功:{response2}", MessageLevel.Debug);
+
+                                                    item = response2.Split('\n');
+                                                    snItem = item.FirstOrDefault(f => f.Contains("sn="));
+                                                    if (snItem != null)
+                                                    {
+                                                        ProductMainSN[i] = snItem.Replace("sn=", "").Trim();
+                                                        _productService.CurrentProductCode = ProductMainSN[i];
+                                                        SendTaskMessage($"产品主sn:{ProductMainSN[i]}", MessageLevel.Info);
+                                                    }
+                                                    string woItem = item.FirstOrDefault(f => f.Contains("wo="));
+                                                    if (woItem != null)
                                                     {
-                                                        ProductList = new ObservableCollection<ProductModel>(_productService.GetAllProducts());
-                                                        Guid productId = Guid.Empty;
-                                                        foreach (var itt in ProductList)
+                                                        wo[i] = woItem.Replace("wo=", "").Trim();
+                                                        SendTaskMessage($"工单信息:{wo[i]}", MessageLevel.Info);
+                                                    }
+                                                    string modelItem = item.FirstOrDefault(f => f.Contains("model_num="));
+                                                    if (modelItem != null)
+                                                    {
+                                                        model_num[i] = modelItem.Replace("model_num=", "").Trim();
+                                                        SendTaskMessage($"model_num:{model_num[i]}", MessageLevel.Info);
+                                                    }
+                                                    string colorItem = item.FirstOrDefault(f => f.Contains("color="));
+                                                    if (colorItem != null)
+                                                    {
+                                                        color[i] = colorItem.Replace("color=", "").Trim();
+                                                        SendTaskMessage($"color:{color[i]}", MessageLevel.Info);
+                                                    }
+                                                    string ppidItem = item.FirstOrDefault(f => f.Contains("ppid="));
+                                                    if (ppidItem != null)
+                                                    {
+                                                        ppid[i] = ppidItem.Replace("ppid=", "").Trim();
+                                                        SendTaskMessage($"ppid:{ppid[i]}", MessageLevel.Info);
+                                                    }
+                                                    string revisionItem = item.FirstOrDefault(f => f.Contains("stage="));
+                                                    if (revisionItem != null)
+                                                    {
+                                                        revision[i] = revisionItem.Replace("stage=", "").Trim();
+                                                        SendTaskMessage($"stage:{revision[i]}", MessageLevel.Info);
+                                                    }
+
+                                                    LogHelper.WriteLogMes($"第二次询问mes成功");
+                                                    SendTaskMessage($"第二次询问mes成功:{response2}", MessageLevel.Debug);
+
+                                                    //切换产品
+                                                    if (i == 0)//i=0时才会切换产品
+                                                    {
+                                                        var q = await _systemDatabaseService.QueryProductFromMesAsync(model_num[i], color[i]);
+                                                        if (q != null && !string.IsNullOrEmpty(q.ProductName))
                                                         {
-                                                            if (itt.Name == q.ProductName)
+                                                            ProductList = new ObservableCollection<ProductModel>(_productService.GetAllProducts());
+                                                            Guid productId = Guid.Empty;
+                                                            foreach (var itt in ProductList)
+                                                            {
+                                                                if (itt.Name == q.ProductName)
+                                                                {
+                                                                    productId = itt.ID;
+                                                                    break;
+                                                                }
+                                                            }
+                                                            if (currentProduct.ID != productId)
                                                             {
-                                                                productId = itt.ID;
-                                                                break;
+                                                                //切换产品
+                                                                await _productService.LoadProductAsync(productId);
+                                                                _productService.SetCurrentProduct(productId);
+                                                                await WriteParameterToPlcExAsync();
+                                                                SendTaskMessage($"切换产品成功", MessageLevel.Debug);
                                                             }
                                                         }
-                                                        if (currentProduct.ID != productId)
-                                                        {
-                                                            //切换产品
-                                                            await _productService.LoadProductAsync(productId);
-                                                            _productService.SetCurrentProduct(productId);
-                                                            await WriteParameterToPlcExAsync();
-                                                            SendTaskMessage($"切换产品成功", MessageLevel.Debug);
-                                                        }
                                                     }
+
+                                                    //产品发生改变并且供料器发生了变化时,需要通知PLC进行取料更改
+                                                    await plc.WriteNodeAsync(addressConfig.Out_ScrewFeederIsChanged.Address, (Int16)1); //不发生改变
+                                                    await plc.WriteNodeAsync(string.Format(addressConfig.Out_MesStatus.Address, i), (Int16)1);
+
                                                 }
+                                                else
+                                                {
+                                                    LogHelper.WriteLogMes($"第二次询问mes失败");
+                                                    SendTaskMessage($"第二次询问mes失败:{response2}", MessageLevel.Error);
 
-                                                //产品发生改变并且供料器发生了变化时,需要通知PLC进行取料更改
-                                                await plc.WriteNodeAsync(addressConfig.Out_ScrewFeederIsChanged.Address, (Int16)1); //不发生改变
-                                                await plc.WriteNodeAsync(string.Format(addressConfig.Out_MesStatus.Address, i), (Int16)1);
+                                                    //产品发生改变并且供料器发生了变化时,需要通知PLC进行取料更改
+                                                    await plc.WriteNodeAsync(addressConfig.Out_ScrewFeederIsChanged.Address, (Int16)1); //不发生改变
+                                                    await plc.WriteNodeAsync(string.Format(addressConfig.Out_MesStatus.Address, i), (Int16)2);
+                                                }
                                             }
                                             else
                                             {
@@ -2660,7 +2705,6 @@ namespace TeamAAS_VP.Core
                                         if (i == 0)
                                         {
                                             _productService.CurrentProductCode = ProductMainSN[i];
-                                            //_eventAggregator.GetEvent<DelaySaveImageNotification>().Publish(true);//通知界面延迟保存图片,等待MES查询结果返回,避免图片和数据不同步
                                         }
 
                                         LogHelper.WriteLogMes($"【未启用mes】");