Administrator 2 年之前
父节点
当前提交
e9c3fbd614

+ 5 - 0
Projects/永冠/WCS.Service/Helpers/GeneralHelper.cs

@@ -29,6 +29,11 @@ namespace WCS.Service.Helpers
                     db.Default.SaveChanges();
                     WMS.UnBound(t.BARCODE);
                 }
+                else if (t != null && !needUnBind)
+                {
+                    t.ADDRTO = "2202";
+                    db.Default.SaveChanges();
+                }
                 device.Data3.PalletType = 0;
                 device.Data3.MaxQty = 0;
                 device.Data3.DocId = 0;

+ 10 - 2
Projects/永冠/WCS.Service/WebApi/WMS/WMS.cs

@@ -159,8 +159,16 @@ namespace WCS.Service
             });
             if (!res.ResType)
             {
-                TaskException(position, res.ResMessage);
-                throw new Exception(res.ResMessage);
+                if (devCode == "3001" || devCode == "2122" || devCode == "2131" || devCode == "2143")
+                {
+                    //TaskException(position, res.ResMessage);
+                    throw new Exception($"目标位置[{position}]获取出库任务失败,原因:[{res.ResMessage}]");
+                }
+                else
+                {
+                    TaskException(position, res.ResMessage);
+                    throw new Exception(res.ResMessage);
+                }               
             }
             var tcode = "TY" + res.TunnelNum;
 

+ 18 - 18
Projects/永冠/WCS.Service/Works/SC/SCWork.cs

@@ -67,8 +67,8 @@ namespace WCS.Service.Works
                     var task = db.Default.Set<WCS_TASK>().Find(taskid);
                     //记录一下原始状态,用于状态发生时进行记录
                     var oldStatus = task.STATUS;
-                    if (task == null) throw new Exception($"[{deviceCode}]任务号[{taskid}]不存在");
-                    if (task.STATUS < TaskStatus.堆垛机执行) throw new Exception($"[{deviceCode}]任务号[{taskid}]状态有误");
+                    if (task == null) throw new Exception($"[SRM{deviceCode.Substring(2)}]任务号[{taskid}]不存在");
+                    if (task.STATUS < TaskStatus.堆垛机执行) throw new Exception($"[SRM{deviceCode.Substring(2)}]任务号[{taskid}]状态有误");
 
                     if (task.TYPE == TaskType.入库)
                     {
@@ -112,7 +112,7 @@ namespace WCS.Service.Works
                             Uploader.Upload(db);
                         }
                     }
-                    else throw new Exception($"[{deviceCode}]任务类型错误");
+                    else throw new Exception($"[SRM{deviceCode.Substring(2)}]任务类型错误");
 
                     dev.Data2.FinishedACK = 1;
                     task.CreateStatusLog(db);
@@ -149,7 +149,7 @@ namespace WCS.Service.Works
             DB.Do(db =>
             {
                 var t = db.Default.Set<WCS_TASK>().Where(v => v.DEVICE == dev.Entity.CODE).Where(v => v.STATUS == TaskStatus.堆垛机执行).FirstOrDefault();
-                if (t != null) throw new Exception($"[{deviceCode}]有正在执行的任务:" + t.ID);
+                if (t != null) throw new Exception($"[SRM{deviceCode.Substring(2)}]有正在执行的任务:" + t.ID);
                 //属于当前堆垛机未执行的移库任务
                 isTransfer = db.Default.Set<WCS_TASK>().AsNoTracking().Where(v => v.DEVICE == dev.Entity.CODE && v.TYPE == TaskType.移库 && v.STATUS < TaskStatus.堆垛机执行).ToList();
                 //判断是否存在调整优先级任务,存在初始化isTransfer值 让本次执行优先任务
@@ -163,7 +163,7 @@ namespace WCS.Service.Works
             {
                 #region 移库
 
-                Ltc.Log($"[{deviceCode}]开始获取移库任务");
+                Ltc.Log($"[SRM{deviceCode.Substring(2)}]开始获取移库任务");
 
                 DB.Do(db =>
                 {
@@ -299,7 +299,7 @@ namespace WCS.Service.Works
                 DB.Do(db =>
                 {
                     var flag = db.Default.Set<WCS_TASK>().Any(d => d.DEVICE == sc && d.STATUS == TaskStatus.堆垛机执行);
-                    if (flag) throw new Exception($"[{deviceCode}]有正在执行的出库任务");
+                    if (flag) throw new Exception($"[SRM{deviceCode.Substring(2)}]有正在执行的出库任务");
 
                     //找到该堆垛机当前等待执行的任务
                     var q = db.Default.Set<WCS_TASK>().Where(v => v.STATUS == TaskStatus.新建)
@@ -347,7 +347,7 @@ namespace WCS.Service.Works
                     Uploader.Upload(db);
                     task.CreateStatusLog(db);
 
-                    if (task.ADDRFROM.Split('-').Length != 3) throw new Exception($"[{deviceCode}]出库任务起始位置错误:{task.ADDRFROM}");
+                    if (task.ADDRFROM.Split('-').Length != 3) throw new Exception($"[SRM{deviceCode.Substring(2)}]出库任务起始位置错误:{task.ADDRFROM}");
 
                     var arr = task.ADDRFROM.Split('-').Select(v => short.Parse(v)).ToArray();
                     dev.Data2.TaskID = task.ID;
@@ -402,14 +402,14 @@ namespace WCS.Service.Works
                 {
                     if (Ltc.Do(dev, v => v.Data.Status != SCRunStatus.空闲 && v.Data.Status != SCRunStatus.维护)) dev.Data2.Trigger = 0;
                 }
-                LogHelper.AddWCS_EXCEPTION($"WCS清除[{deviceCode}]执行任务触发信号");
+                LogHelper.AddWCS_EXCEPTION($"WCS清除[SRM{deviceCode.Substring(2)}]执行任务触发信号");
                 return;
             }
 
             if (Ltc.Do(dev, v => v.Data2.FinishedACK != 0))
             {
                 if (Ltc.Do(dev, v => v.Data.FinishedTask == 0)) dev.Data2.FinishedACK = 0;
-                LogHelper.AddWCS_EXCEPTION($"WCS清除[{deviceCode}]完成任务触发信号");
+                LogHelper.AddWCS_EXCEPTION($"WCS清除[SRM{deviceCode.Substring(2)}]完成任务触发信号");
                 return;
             }
 
@@ -420,7 +420,7 @@ namespace WCS.Service.Works
                 {
                     var taskid = dev.Data.FinishedTask;
                     task = db.Default.Set<WCS_TASK>().Find(taskid);
-                    if (task.STATUS < TaskStatus.堆垛机执行) throw new Exception($"[{deviceCode}],任务号" + taskid + "状态有误");
+                    if (task.STATUS < TaskStatus.堆垛机执行) throw new Exception($"[SRM{deviceCode.Substring(2)}],任务号" + taskid + "状态有误");
 
                     if (task.TYPE == TaskType.入库)
                     {
@@ -463,12 +463,12 @@ namespace WCS.Service.Works
                             Uploader.Upload(db);
                         }
                     }
-                    else throw new Exception($"[{deviceCode}]任务类型错误");
+                    else throw new Exception($"[SRM{deviceCode.Substring(2)}]任务类型错误");
 
                     dev.Data2.FinishedACK = 1;
                     task.CreateStatusLog(db);
                 });
-                LogHelper.AddWCS_EXCEPTION($"WCS变更[{deviceCode}]任务[{task.ID}]状态为[{task.STATUS}]");
+                LogHelper.AddWCS_EXCEPTION($"WCS变更[SRM{deviceCode.Substring(2)}]任务[{task.ID}]状态为[{task.STATUS}]");
                 return;
             }
 
@@ -489,7 +489,7 @@ namespace WCS.Service.Works
             DB.Do(db =>
             {
                 var t = db.Default.Set<WCS_TASK>().Where(v => v.DEVICE == dev.Entity.CODE).Where(v => v.STATUS == TaskStatus.堆垛机执行).FirstOrDefault();
-                if (t != null) throw new Exception($"[{deviceCode}]有正在执行的任务:" + t.ID);
+                if (t != null) throw new Exception($"[SRM{deviceCode.Substring(2)}]有正在执行的任务:" + t.ID);
                 //属于当前堆垛机未执行的移库任务
                 isTransfer = db.Default.Set<WCS_TASK>().AsNoTracking().Where(v => v.DEVICE == dev.Entity.CODE && v.TYPE == TaskType.移库 && v.STATUS < TaskStatus.堆垛机执行).ToList();
                 //判断是否存在调整优先级任务,存在初始化isTransfer值 让本次执行优先任务
@@ -503,7 +503,7 @@ namespace WCS.Service.Works
             {
                 #region 移库
 
-                Ltc.Log($"[{deviceCode}]开始获取移库任务");
+                Ltc.Log($"[SRM{deviceCode.Substring(2)}]开始获取移库任务");
 
                 DB.Do(db =>
                 {
@@ -563,7 +563,7 @@ namespace WCS.Service.Works
                     .ThenBy(v => v.UpdateTime).First();
 
                 if (!(st.Data.TASKNUM > 0 && st.Data.PH_STATUS && !st.Data3.Status.HasFlag(StationStatus.运行状态位)))
-                    throw new Exception($"[{deviceCode}]等待入库任务输送到位");
+                    throw new Exception($"[SRM{deviceCode.Substring(2)}]等待入库任务输送到位");
 
                 var t = st.Entity.ROUTES.First().NEXT.CODE;
 
@@ -637,7 +637,7 @@ namespace WCS.Service.Works
                 DB.Do(db =>
                 {
                     var flag = db.Default.Set<WCS_TASK>().Any(d => d.DEVICE == sc && d.STATUS == TaskStatus.堆垛机执行);
-                    if (flag) throw new Exception($"[{deviceCode}]有正在执行的出库任务");
+                    if (flag) throw new Exception($"[SRM{deviceCode.Substring(2)}]有正在执行的出库任务");
 
                     var q = db.Default.Set<WCS_TASK>().Where(v => v.STATUS == TaskStatus.新建)
                     .Where(v => v.DEVICE == sc)
@@ -666,7 +666,7 @@ namespace WCS.Service.Works
 
                     if (task == null)
                     {
-                        Ltc.Log($"{deviceCode}无出库任务可执行");
+                        Ltc.Log($"SRM{deviceCode.Substring(2)}无出库任务可执行");
                         return;
                     }
 
@@ -682,7 +682,7 @@ namespace WCS.Service.Works
                     db.Default.SaveChanges();
                     Uploader.Upload(db);
 
-                    if (task.ADDRFROM.Split('-').Length != 3) throw new Exception($"[{deviceCode}]出库任务起始位置错误:" + task.ADDRFROM);
+                    if (task.ADDRFROM.Split('-').Length != 3) throw new Exception($"[SRM{deviceCode.Substring(2)}]出库任务起始位置错误:" + task.ADDRFROM);
 
                     var arr = task.ADDRFROM.Split('-').Select(v => short.Parse(v)).ToArray();
                     dev.Data2.TaskID = task.ID;

+ 4 - 5
Projects/永冠/WCS.Service/Works/Stations/AGV交互.cs

@@ -399,8 +399,8 @@ namespace WCS.Service.Works.Stations
                                     {
                                         throw new Exception($"{agvtask.Position}正在执行的叫料任务数量已达{qty},暂停出库");
                                     }
-                                }
-                                var res = WMS.GetOutTask(agvtask.Position, dev.Entity.CODE);
+                                }                                                               
+                                var res = WMS.GetOutTask(agvtask.Position, dev.Entity.CODE);                                                                                         
                                 var sc = Device.Find(res.TunnelNum).ROUTES.Where(v => v.NEXT.IsSC()).Select(v => v.NEXT).FirstOrDefault();
 
                                 var loc = string.Format("{0}-{1}-{2}", res.Row, res.Colomn, res.Layer);
@@ -464,10 +464,9 @@ namespace WCS.Service.Works.Stations
                                 agvtask.Status = AGVTaskStatus.取消;
                                 agvtask.UpdateTime = DateTime.Now;
                                 db.Default.SaveChanges();
-                            }
-
+                            }                           
                             Ltc.Log("AGV任务" + agvtask.ID + ":" + ex.GetBaseException().Message);
-                            Configs.UploadException?.Invoke(agvtask.Position, ex.GetBaseException().Message);
+                            Configs.UploadException?.Invoke(agvtask.Position, ex.GetBaseException().Message);                         
                         }
                     }
                 });