林豪 左 2 years ago
parent
commit
1fdf3e444c

+ 12 - 4
Projects/永冠OPP/WCS.Service/Extensions/DeviceExtension.cs

@@ -287,10 +287,16 @@ namespace WCS.Service.Extensions
         /// BCR 站点是否被禁止
         /// </summary>
         /// <returns></returns>
-        public void BcrStationIsForbid()
+        public bool BcrStationIsForbid()
         {
+            var res = true;
             var config = ProtocolProxy.YGWMS150Redis.Get("ForbidTubuEnter").Split(",");
-            if (config.Contains(Entity.CODE)) throw new WarnException("当前入库口已被禁用,请联系机修人员了解具体情况");
+            if (config.Contains(Entity.CODE))
+            {
+                InfoLog.INFO_WarnDb("当前入库口已被禁用,请联系机修人员了解具体情况", Entity.CODE, WCS_EXCEPTIONTYPE.逻辑异常);
+                res = false;
+            };
+            return res;
         }
     }
 
@@ -1048,13 +1054,15 @@ namespace WCS.Service.Extensions
             InfoLog.INFO_WARN($"[{Entity.CODE}]--{ex.Message}");
             if (ex.Message.Contains("The database operation was expected")) return;
 
-            LogHelper.AddWCS_EXCEPTION(ex.Message, Entity.CODE, WCS_EXCEPTIONTYPE.无.ToString());
+            if (!reportMonitor)
+            {
+                LogHelper.AddWCS_EXCEPTION(ex.Message, Entity.CODE, WCS_EXCEPTIONTYPE.无.ToString());
+            }
             //排除部分频繁触发的异常上报
             if (ex.Message.Contains("触发并发管控")) return;
 
             if (reportMonitor)
             {
-                Ltc.Log(ex.GetBaseException().Message);
                 throw new Exception($"[{Entity.CODE}]--{ex.Message}");
             }
         }

+ 15 - 4
Projects/永冠OPP/WCS.Service/Helpers/FinishTaskList.cs

@@ -2,6 +2,7 @@
 using System.Linq;
 using WCS.Service.Entity;
 using WCS.Service.Extensions;
+using WCS.Service.Log;
 
 namespace WCS.Service.Helpers
 {
@@ -32,7 +33,7 @@ namespace WCS.Service.Helpers
     /// 处理完成任务记录集合
     /// </summary>
     /// <typeparam name="T"></typeparam>
-    public class FinishTaskList<T,T1>
+    public class FinishTaskList<T, T1>
     {
         public FinishTaskList(T finishCode, T1 station)
         {
@@ -58,11 +59,21 @@ namespace WCS.Service.Helpers
         /// </summary>
         /// <param name="finishes"></param>
         /// <exception cref="WarnException"></exception>
-        public static void Valid(this List<FinishTaskList<string>> finishes)
+        public static bool Valid(this List<FinishTaskList<string>> finishes, string code)
         {
+            var res = true;
             var maxGoodsnum = finishes.Select(v => v.Station.Data2.Goodsnum).OrderByDescending(v => v).FirstOrDefault();
-            if (finishes.Count != maxGoodsnum) throw new WarnException($"可用货物数{finishes.Count},实际货物数{maxGoodsnum}");
-            if (!finishes.Any()) throw new DoException("没有任务");
+            if (finishes.Count != maxGoodsnum)
+            {
+                InfoLog.INFO_WarnDb($"可用货物数{finishes.Count},实际货物数{maxGoodsnum}", code, WCS.Entity.WCS_EXCEPTIONTYPE.逻辑异常);
+                res = false;
+            };
+            if (!finishes.Any())
+            {
+                InfoLog.INFO_WarnDb("没有任务", code, WCS.Entity.WCS_EXCEPTIONTYPE.逻辑异常);
+                res = false;
+            }
+            return res;
         }
 
         /// <summary>

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

@@ -11,6 +11,7 @@ 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
@@ -25,10 +26,21 @@ namespace WCS.Service.Works.Station
         {
             obj.EX(stationDeviceGroup =>
             {
-                stationDeviceGroup.BcrStationIsForbid();
+                if (!stationDeviceGroup.BcrStationIsForbid()) return;
+
                 //设备组无论单卷还是双卷都必须满足的条件
-                if (stationDeviceGroup.Items.Any(v => v.Data.VoucherNo != v.Data2.VoucherNo)) throw new WarnException($"等待任务执行--凭证号不一致");
-                if (stationDeviceGroup.Items.Any(v => v.Data3.Status.HasFlag(StationStatus.运行状态位))) throw new WarnException($"设备运行中");
+                if (stationDeviceGroup.Items.Any(v => v.Data.VoucherNo != v.Data2.VoucherNo))
+                {
+                    InfoLog.INFO_WarnDb($"等待任务执行--凭证号不一致", obj.Entity.CODE, WCS_EXCEPTIONTYPE.设备异常);
+                    return;
+                }
+
+                if (stationDeviceGroup.Items.Any(v => v.Data3.Status.HasFlag(StationStatus.运行状态位)))
+                {
+                    InfoLog.INFO_INFO($"设备运行中");
+                    return;
+                }
+
 
                 //成功创建的任务
                 var finishTaskList = new List<FinishTaskList<int>>();
@@ -37,7 +49,7 @@ namespace WCS.Service.Works.Station
                 DB.Do(db =>
                 {
                     var devise = stationDeviceGroup.GetBcrValid();
-                    devise.Valid();
+                    if (!devise.Valid(stationDeviceGroup.Entity.CODE)) return;
                     var infos = devise.GetWMSInTask();
 
                     foreach (var item in devise)

+ 6 - 4
Projects/永冠OPP/WCS.Service/Works/Station/一楼入库.cs

@@ -28,7 +28,8 @@ namespace WCS.Service.Works.Station
             timer.Start();
             obj.EX(obj =>
                 {
-                    obj.BcrStationIsForbid();
+                    if (!obj.BcrStationIsForbid()) return;
+
                     //设备组无论单卷还是双卷都必须满足的条件
                     if (obj.Items.Any(v => v.Data.VoucherNo != v.Data2.VoucherNo)) throw new WarnException($"等待任务执行--凭证号不一致");
                     if (obj.Items.Any(v => v.Data3.Status.HasFlag(StationStatus.运行状态位))) throw new WarnException($"设备运行中");
@@ -36,7 +37,8 @@ namespace WCS.Service.Works.Station
                     //成功创建的任务
                     var finishTaskList = new List<FinishTaskList<int>>();
                     var devs = obj.GetBcrValid();
-                    devs.Valid();
+                    if (!devs.Valid(obj.Entity.CODE)) return;
+                   
                     var infos = devs.GetWMSInTask();
                     if (!infos.Any()) throw new WarnException($"{obj.Entity.CODE}: WMS未返回结果");
                     //创建对应的任务
@@ -183,7 +185,7 @@ namespace WCS.Service.Works.Station
                         task.ADDRNEXT = tunnelInfo.taskIN.CODE;
                         task.TaskGroupKey = res.WMSTaskGroupKey;
                         task.ADDRTO = task.DEVICE;
-                        task.CreateStatusLog(db,$"一次分配至堆垛机{task.DEVICE}", this.GetType());
+                        task.CreateStatusLog(db, $"一次分配至堆垛机{task.DEVICE}", this.GetType());
                         finishTaskList.Add(new FinishTaskList<int>(task.ID, item.Entity.Create<StationDevice>()));
                     }
 
@@ -282,7 +284,7 @@ namespace WCS.Service.Works.Station
                         task.ADDRNEXT = tunnelInfo.taskIN.CODE;
                         task.TaskGroupKey = res.WMSTaskGroupKey;
                         task.ADDRTO = task.DEVICE;
-                        task.CreateStatusLog(db,$"二次分配至堆垛机{task.TUNNEL}", this.GetType());
+                        task.CreateStatusLog(db, $"二次分配至堆垛机{task.TUNNEL}", this.GetType());
                         finishTaskList.Add(new FinishTaskList<int>(task.ID, dev));
                     }
                     db.Default.SaveChanges();

+ 4 - 3
Projects/永冠OPP/WCS.Service/Works/Station/涂布入库.cs

@@ -56,7 +56,7 @@ namespace WCS.Service.Works.Station
                         else if (tasking.Status == AGVTaskStatus.执行 && tasking.AGVStatus == AGVTaskStatus.确认 && string.IsNullOrEmpty(tasking.Station))
                         {
                             //判断提升机是否被禁用
-                            stationDeviceGroup.BcrStationIsForbid();
+                            if (!stationDeviceGroup.BcrStationIsForbid()) return;
 
                             if (stationDeviceGroup.Items.Any(v => !v.Data3.Status.HasFlag(StationStatus.自动)))
                             {
@@ -235,7 +235,8 @@ namespace WCS.Service.Works.Station
         {
             obj.EX(stationDeviceGroup =>
             {
-                stationDeviceGroup.BcrStationIsForbid();
+                if (!stationDeviceGroup.BcrStationIsForbid()) return;
+
                 //设备组无论单卷还是双卷都必须满足的条件
                 if (stationDeviceGroup.Items.Any(v => v.Data.VoucherNo != v.Data2.VoucherNo)) throw new WarnException($"等待任务执行--凭证号不一致");
                 if (stationDeviceGroup.Items.Any(v => v.Data3.Status.HasFlag(StationStatus.运行状态位))) throw new WarnException($"设备运行中");
@@ -246,7 +247,7 @@ namespace WCS.Service.Works.Station
                 }
 
                 var devise = stationDeviceGroup.GetBcrValid();
-                devise.Valid();
+                if (!devise.Valid(stationDeviceGroup.Entity.CODE)) return;
                 var infos = devise.GetWMSInTask();
                 WCS_AGVTask agvTask = null;