Kaynağa Gözat

新增日志验证bopp分配问题

林豪 左 3 yıl önce
ebeveyn
işleme
fff651f324

+ 12 - 1
Projects/永冠OPP/WCS.Service/Extensions/WCS_TaskExtensions.cs

@@ -2,6 +2,7 @@
 using System;
 using WCS.Entity;
 using WCS.Entity.Protocol;
+using WCS.Service.Log;
 
 namespace WCS.Service.Extensions
 {
@@ -34,5 +35,15 @@ namespace WCS.Service.Extensions
                 Console.WriteLine(e.Message);
             }
         }
+
+        public static void infolog(this string code, string msg)
+        {
+            if (code == "G1190")
+            {
+                InfoLog.INFO_ERRORCHECK(msg);
+                //InfoLog.INFO_ERRORCHECK($"{res.WMSTaskGroupKey}第一次分配:WMS返回{JsonConvert.SerializeObject(tunnels)}。");
+                //InfoLog.INFO_ERRORCHECK($"{res.WMSTaskGroupKey}第一次分配:WCS选择{tunnelInfo.Tunnel.CODE}。");
+            }
+        }
     }
-}
+}

+ 10 - 1
Projects/永冠OPP/WCS.Service/Log/InfoLog.cs

@@ -39,6 +39,15 @@ namespace WCS.Service.Log
             LogHelper.Init(this);
         }
 
+        /// <summary>
+        /// 错误检查
+        /// </summary>
+        /// <param name="msg"></param>
+        public static void INFO_ERRORCHECK(string msg)
+        {
+            Log.Info(msg, "INFO_ERRORCHECK");
+        }
+
         /// <summary>
         /// 系统执行信息
         /// </summary>
@@ -180,4 +189,4 @@ namespace WCS.Service.Log
             Log.Info(msg, "INFO_AGV");
         }
     }
-}
+}

+ 18 - 10
Projects/永冠OPP/WCS.Service/Works/Station/BOPP入库.cs

@@ -1,5 +1,6 @@
 using DBHelper;
 using Microsoft.EntityFrameworkCore;
+using Newtonsoft.Json;
 using System;
 using System.Collections.Generic;
 using System.Linq;
@@ -10,7 +11,6 @@ using WCS.Entity.Protocol.SRM;
 using WCS.Service.Extensions;
 using WCS.Service.Handlers;
 using WCS.Service.Helpers;
-using WCS.Service.Log;
 using TaskStatus = WCS.Entity.TaskStatus;
 
 namespace WCS.Service.Works.Station
@@ -129,12 +129,12 @@ namespace WCS.Service.Works.Station
                     var res = WMS.GetTunnelList(taskList.Select(v => v.WMSTASK.ToString()).ToList(), code);
                     if (string.IsNullOrEmpty(res.TunnelNum)) throw new WarnException($"WMS未返回巷道");
 
-                    InfoLog.INFO_INFO($"一次分配  任务号:{taskList[0].ID},可用巷道:{res.TunnelNum},设备:{code}");
                     var tunnelNo = res.TunnelNum.Split(',').Select(v => "TY" + v).ToList();
 
                     var tunnels = Device.Where(v => tunnelNo.Contains(v.CODE)).ToList();
 
                     var tunnelInfos = new List<TunnelInfo>();
+
                     foreach (var item in tunnels)
                     {
                         //当前巷道的取货点
@@ -173,8 +173,6 @@ namespace WCS.Service.Works.Station
                         .Where(v => !db.Default.Set<WCS_TASK>().Any(p => p.Priority > 0 && p.DEVICE == v.SRM.Entity.CODE && p.STATUS < TaskStatus.堆垛机完成)).MinBy(v => tunnelNo.IndexOf(v.Tunnel.CODE));
                     if (tunnelInfo == null) throw new WarnException("无可用巷道");
 
-                    InfoLog.INFO_INFO($"一次分配  任务号:{taskList[0].ID},选择巷道:{tunnelInfo.Tunnel.CODE},设备:{code}");
-
                     //开始变更任务信息
                     foreach (var item in devise)
                     {
@@ -247,27 +245,29 @@ namespace WCS.Service.Works.Station
                     var res = WMS.GetTunnelList(taskList.Select(v => v.WMSTASK.ToString()).ToList(), code);
                     if (string.IsNullOrEmpty(res.TunnelNum)) throw new WarnException($"WMS未返回巷道");
 
-                    InfoLog.INFO_INFO($"二次分配  任务号:{taskList[0].ID},可用巷道:{res.TunnelNum},设备:{code}");                   
                     var tunnelNo = res.TunnelNum.Split(',').Select(v => "TY" + v).ToList();
 
                     var tunnels = Device.Where(v => tunnelNo.Contains(v.CODE)).ToList();
 
                     var tunnelInfos = new List<TunnelInfo>();
+                    code.infolog($"{res.WMSTaskGroupKey}第二次分配:WMS返回{JsonConvert.SerializeObject(tunnels)}。");
                     foreach (var item in tunnels)
                     {
                         //当前巷道的取货点
                         var allIn = Device.Where(v => v.Is(DF.SRMBOPP取货))
-                                          .Where(v => v.ROUTES.Any(p => p.NEXT == item)) //下一个点为当前巷道的取货点
+                                          .Where(v => v.ROUTES.Any(p => p.NEXT.CODE == item.CODE)) //下一个点为当前巷道的取货点
                                           .Select(v => v.CODE)
                                           .ToList();
+                        code.infolog($"allIn:{JsonConvert.SerializeObject(allIn)};item:{item.CODE}");
                         //下一个目标地址包含取货点的设备,此时获得的数据是旋转台
                         var turntable = Device.Where(v => v.IsConv() && v.ROUTES.Any(p => p.NEXT != null && allIn.Contains(p.NEXT.CODE)))
                                               .Where(v => stationDeviceGroup.Items.Any(p => p.Entity == v))// 筛选出包含在当前设备组的设备
                                               .Distinct()
                                               .FirstOrDefault();//去一次重
+                        code.infolog($"turntable:{JsonConvert.SerializeObject(turntable)};item:{item.CODE}");
                         if (turntable == null) continue;
                         var dev = Device.Where(p => p.CODE.StartsWith("G") && p.DEVICEGROUP.Any(d => allIn.Contains(d.MEMBER.CODE))).MinBy(p => p.CODE);
-
+                        code.infolog($"dev:{JsonConvert.SerializeObject(dev)};item:{item.CODE}");
                         tunnelInfos.Add(new TunnelInfo
                         {
                             Tunnel = item,
@@ -276,10 +276,18 @@ namespace WCS.Service.Works.Station
                         });
                     }
                     //筛选出优先级最高的可用巷道
-                    var tunnelInfo = tunnelInfos.Where(v => { try { return v.SRM.Data3.SCAlarm == 0 && v.SRM.Data2.SRMMode == SCMode.远程 && v.SRM.Data2.SRMStatus == SCRunStatus.空闲; } catch { return false; } }).MinBy(v => tunnelNo.IndexOf(v.Tunnel.CODE));
+                    var tunnelInfo = tunnelInfos.Where(v =>
+                    {
+                        try
+                        {
+                            return v.SRM.Data3.SCAlarm == 0 && v.SRM.Data2.SRMMode == SCMode.远程 && v.SRM.Data2.SRMStatus == SCRunStatus.空闲;
+                            code.infolog($"SCAlarm:{v.SRM.Data3.SCAlarm};SRMMode:{v.SRM.Data2.SRMMode};SRMStatus:{v.SRM.Data2.SRMStatus};CODE:{v.SRM.Entity.CODE}");
+                        }
+                        catch { return false; }
+                    }).MinBy(v => tunnelNo.IndexOf(v.Tunnel.CODE));
+                    code.infolog($"tunnelNo:{JsonConvert.SerializeObject(tunnelNo)}。");
                     if (tunnelInfo == null) throw new WarnException("无可用巷道");
-
-                    InfoLog.INFO_INFO($"二次分配  任务号:{taskList[0].ID},选择巷道:{tunnelInfo.Tunnel.CODE},设备:{code}");
+                    code.infolog($"{res.WMSTaskGroupKey}第二次分配:WCS选择{tunnelInfo.Tunnel.CODE}。");
 
                     //开始变更任务信息
                     foreach (var item in devise)

+ 2 - 1
Projects/永冠OPP/WCS.Service/config.json

@@ -20,7 +20,8 @@
         "INFO_UPEX": "INFO_I_WCS_GetExcTask",
         "INFO_CREATETASKIN": "CreateTaskIn",
         "INFO_RGVINFO": "RgvInfo",
-        "INFO_AGV": "info_agv"
+        "INFO_AGV": "info_agv",
+        "INFO_ERRORCHECK": "INFO_ErrorCheck"
       }
     },
     {