|
@@ -9,7 +9,6 @@ using WCS.Entity.Protocol;
|
|
|
using WCS.Entity.Protocol.SRM;
|
|
|
using WCS.Service.Extensions;
|
|
|
using WCS.Service.Handlers;
|
|
|
-using WCS.Service.Helpers;
|
|
|
using WCS.Service.Log;
|
|
|
|
|
|
namespace WCS.Service.Works.SRM
|
|
@@ -41,9 +40,9 @@ namespace WCS.Service.Works.SRM
|
|
|
return;
|
|
|
}
|
|
|
if (obj.Data.FinishedACK_1 == 1 || obj.Data.FinishedACK_2 == 1)
|
|
|
- throw new Exception(LogHelper.SpliceLogMessage($"堆垛机完成任务WCS反馈信号未清除", deviceCode, WCS_EXCEPTIONTYPE.设备异常, GetType()));
|
|
|
+ throw new WarnException($"堆垛机完成任务WCS反馈信号未清除");
|
|
|
if (obj.Data2.VoucherNo_1 != obj.Data.VoucherNo_1 || obj.Data2.VoucherNo_2 != obj.Data.VoucherNo_2)
|
|
|
- throw new Exception(LogHelper.SpliceLogMessage($"等待执行{obj.Data.TaskID_1}-{obj.Data.TaskID_2}", deviceCode, WCS_EXCEPTIONTYPE.设备异常, GetType()));
|
|
|
+ throw new WarnException($"等待执行{obj.Data.TaskID_1}-{obj.Data.TaskID_2}");
|
|
|
|
|
|
//处理堆垛机已完成的任务
|
|
|
if (obj.Data2.FinishedTask_1 != 0 || obj.Data2.FinishedTask_2 != 0)
|
|
@@ -62,7 +61,7 @@ namespace WCS.Service.Works.SRM
|
|
|
DB.Do(db =>
|
|
|
{
|
|
|
var task = db.Default.Set<WCS_TASK>().Where(v => v.DEVICE == obj.Entity.CODE).Where(v => v.STATUS == TaskStatus.堆垛机执行).FirstOrDefault();
|
|
|
- if (task != null) throw new Exception(LogHelper.SpliceLogMessage($"[{deviceCode}]有正在执行的任务:[{task.ID}]", obj.Entity.CODE, WCS_EXCEPTIONTYPE.逻辑异常, GetType()));
|
|
|
+ if (task != null) throw new WarnException($"[{deviceCode}]有正在执行的任务:[{task.ID}]");
|
|
|
//属于当前堆垛机未执行的移库任务
|
|
|
isTransfer = db.Default.Set<WCS_TASK>().AsNoTracking().Where(v => v.DEVICE == obj.Entity.CODE && v.TYPE == TaskType.移库 && v.STATUS < TaskStatus.堆垛机执行).ToList();
|
|
|
//判断是否存在调整优先级任务,存在初始化isTransfer值 让本次执行优先任务
|
|
@@ -146,7 +145,7 @@ namespace WCS.Service.Works.SRM
|
|
|
//入库口设备信息 找一个有任务有光电且不在运行状态位的取货点 如果找不到代表任务还在输送途中
|
|
|
var st = arrIn.OrderBy(v => v.Data2.Tasknum > 0 && v.Data2.Status.HasFlag(IstationStatus.光电状态) && !v.Data3.Status.HasFlag(StationStatus.运行状态位) ? 0 : 1)
|
|
|
.ThenBy(v => v.UpdateTime)
|
|
|
- .FirstOrDefault() ?? throw new Exception($"[{deviceCode}]等待入库任务输送到位");
|
|
|
+ .FirstOrDefault() ?? throw new WarnException($"[{deviceCode}]等待入库任务输送到位");
|
|
|
|
|
|
//根据上述筛选条件筛选出来的入库任务 找到对应的设备组
|
|
|
var item = Device.Where(v => v.DEVICEGROUP.Any(p => p.MEMBER.CODE == st.Entity.CODE)).Single();
|
|
@@ -170,7 +169,7 @@ namespace WCS.Service.Works.SRM
|
|
|
var tunnel = dev1.Entity.ROUTES.First().NEXT.CODE;
|
|
|
var task1 = db.Default.Set<WCS_TASK>().FirstOrDefault(v => v.STATUS < TaskStatus.堆垛机执行 && v.ID == dev1.Data2.Tasknum);
|
|
|
if (task1 == null)
|
|
|
- throw new Exception(LogHelper.SpliceLogMessage($"设备有光电有任务且不在运行状态,但WCS找不到任务{dev1.Data2.Tasknum}", dev1.Entity.CODE, WCS_EXCEPTIONTYPE.设备异常, GetType()));
|
|
|
+ throw new WarnException($"设备有光电有任务且不在运行状态,但WCS找不到任务{dev1.Data2.Tasknum}");
|
|
|
var loc = WMS.GetLocalIn(task1.WMSTASK, tunnel, dev1.Entity.CODE, Entity.WareCellForkNum.货叉1);
|
|
|
var locno = string.Format("{0}-{1}-{2}", loc.Row, loc.Colomn, loc.Layer);
|
|
|
var oldTask = task1.STATUS;
|
|
@@ -196,7 +195,7 @@ namespace WCS.Service.Works.SRM
|
|
|
{
|
|
|
var tunnel = dev2.Entity.ROUTES.First().NEXT.CODE;
|
|
|
var task2 = db.Default.Set<WCS_TASK>().FirstOrDefault(v => v.STATUS < TaskStatus.堆垛机执行 && v.ID == dev2.Data2.Tasknum);
|
|
|
- if (task2 == null) throw new Exception(LogHelper.SpliceLogMessage($"设备有光电有任务且不在运行状态,但WCS找不到任务{dev2.Data2.Tasknum}", dev2.Entity.CODE, WCS_EXCEPTIONTYPE.设备异常, GetType()));
|
|
|
+ if (task2 == null) throw new WarnException($"设备有光电有任务且不在运行状态,但WCS找不到任务{dev2.Data2.Tasknum}");
|
|
|
var loc = WMS.GetLocalIn(task2.WMSTASK, tunnel, dev2.Entity.CODE, Entity.WareCellForkNum.货叉2);
|
|
|
var locno = string.Format("{0}-{1}-{2}", loc.Row, loc.Colomn, loc.Layer);
|
|
|
var oldTask = task2.STATUS;
|
|
@@ -287,7 +286,7 @@ namespace WCS.Service.Works.SRM
|
|
|
{
|
|
|
//堆垛机当前是否有正在执行的任务
|
|
|
if (db.Default.Set<WCS_TASK>().Any(d => d.DEVICE == sc && d.STATUS == TaskStatus.堆垛机执行))
|
|
|
- throw new Exception(LogHelper.SpliceLogMessage($"[{deviceCode}]有正在执行的出库任务", deviceCode, WCS_EXCEPTIONTYPE.逻辑异常, GetType()));
|
|
|
+ throw new WarnException($"[{deviceCode}]有正在执行的出库任务");
|
|
|
//找出等待执行的出库任务
|
|
|
var q = db.Default.Set<WCS_TASK>().Where(v => v.STATUS == TaskStatus.新建)
|
|
|
.Where(v => v.DEVICE == sc)
|