|
@@ -43,10 +43,9 @@ namespace WCS.Service.Works.RGV
|
|
|
|
|
|
//筛选出有任务号和起始及目标地址的设备
|
|
|
var dev = obj.RGVGetTaskedDevice() ?? throw new WarnException("无可用任务");
|
|
|
-
|
|
|
+ var taskids = dev.Select(v => v.Data2.Tasknum);
|
|
|
DB.Do(db =>
|
|
|
{
|
|
|
- var taskids = dev.Select(v => v.Data2.Tasknum);
|
|
|
var tasks = db.Default.Set<WCS_TASK>().Where(p => taskids.Contains(p.ID));
|
|
|
if (tasks.GroupBy(p => p.TaskGroupKey).Count() > 1)
|
|
|
throw new WarnException("任务组ID不一致");
|
|
@@ -80,11 +79,9 @@ namespace WCS.Service.Works.RGV
|
|
|
|
|
|
foreach (var task in tasks)
|
|
|
{
|
|
|
- var msg = $"下达从{rgv.Data.StartPosition_1}移动至{rgv.Data.DestPosition_1}的RGV PLC指令。";
|
|
|
- msg += $"[{task.ID}][{rgv.Data.StartPosition_1}][{rgv.Data.DestPosition_1}[{rgv.Data.Trigger_1}]";
|
|
|
-
|
|
|
- task.CreateStatusLog(db, msg, this.GetType());
|
|
|
+ task.CreateStatusLog(db, "RGV开始执行", this.GetType());
|
|
|
}
|
|
|
+ db.Default.SaveChanges();
|
|
|
});
|
|
|
});
|
|
|
}
|
|
@@ -112,10 +109,10 @@ namespace WCS.Service.Works.RGV
|
|
|
if (rgvDevice.IsPut())
|
|
|
{
|
|
|
if (!rgvDevice.Data2.Status_1.HasFlag(WCS.Entity.Protocol.RGVStatus.光电)) throw new WarnException("RGV无光电,无法放货,请检查实际情况");
|
|
|
+ var taskids = new List<int>() { rgvDevice.Data2.TaskID_1, rgvDevice.Data2.TaskID_2 };
|
|
|
//取小车上的任务
|
|
|
DB.Do(db =>
|
|
|
{
|
|
|
- var taskids = new List<int>() { rgvDevice.Data2.TaskID_1, rgvDevice.Data2.TaskID_2 };
|
|
|
var tasks = db.Default.Set<WCS_TASK>().Where(p => taskids.Contains(p.ID));
|
|
|
if (tasks.GroupBy(p => p.TaskGroupKey).Count() > 1)
|
|
|
throw new WarnException("任务组ID不一致");
|
|
@@ -140,15 +137,15 @@ namespace WCS.Service.Works.RGV
|
|
|
//是否需要取货
|
|
|
if (devise is { Count: > 0 } && pickStation.IsPickUp(rgvDevice))
|
|
|
{
|
|
|
+ if (rgvDevice.Data.TaskID_1 != pickStation.Entity.CODE.Replace("G", "").ToShort()) throw new WarnException($"目标站台{rgvDevice.Data.TaskID_1}与当前站台{pickStation.Entity.CODE.Replace("G", "").ToShort()}不一致");
|
|
|
+ if (rgvDevice.Data2.TaskType_1 != RGVTaskType.移动) throw new WarnException($"RGV正在执行{rgvDevice.Data2.TaskType_1}");
|
|
|
+ if (rgvDevice.Data2.Status_1.HasFlag(WCS.Entity.Protocol.RGVStatus.光电)) throw new WarnException("RGV有光电,无法取货,请检查实际情况");
|
|
|
+ if (!rgvDevice.Data2.Status_1.HasFlag(WCS.Entity.Protocol.RGVStatus.RGV到站)) throw new WarnException("RGV无到站状态,请检查RGV实际状态");
|
|
|
+ var taskids = devise.Select(v => v.Data2.Tasknum);
|
|
|
+
|
|
|
//开始下达取货任务
|
|
|
DB.Do(db =>
|
|
|
{
|
|
|
- if (rgvDevice.Data.TaskID_1 != pickStation.Entity.CODE.Replace("G","").ToShort()) throw new WarnException($"目标站台{rgvDevice.Data.TaskID_1}与当前站台{pickStation.Entity.CODE.Replace("G", "").ToShort()}不一致");
|
|
|
- if (rgvDevice.Data2.TaskType_1 != RGVTaskType.移动) throw new WarnException($"RGV正在执行{rgvDevice.Data2.TaskType_1}");
|
|
|
- if (rgvDevice.Data2.Status_1.HasFlag(WCS.Entity.Protocol.RGVStatus.光电)) throw new WarnException("RGV有光电,无法取货,请检查实际情况");
|
|
|
- if (!rgvDevice.Data2.Status_1.HasFlag(WCS.Entity.Protocol.RGVStatus.RGV到站)) throw new WarnException("RGV无到站状态,请检查RGV实际状态");
|
|
|
-
|
|
|
- var taskids = devise.Select(v => v.Data2.Tasknum);
|
|
|
var tasks = db.Default.Set<WCS_TASK>().Where(p => taskids.Contains(p.ID));
|
|
|
if (tasks.GroupBy(p => p.TaskGroupKey).Count() > 1)
|
|
|
throw new WarnException("任务组ID不一致");
|
|
@@ -172,11 +169,9 @@ namespace WCS.Service.Works.RGV
|
|
|
|
|
|
foreach (var task in tasks)
|
|
|
{
|
|
|
- var msg = $"下达从{rgvDevice.Data.StartPosition_1}移动至{rgvDevice.Data.DestPosition_1}的RGV PLC指令。";
|
|
|
- msg += $"[{task.ID}][{rgvDevice.Data.StartPosition_1}][{rgvDevice.Data.DestPosition_1}[{rgvDevice.Data.Trigger_1}]";
|
|
|
-
|
|
|
- task.CreateStatusLog(db, msg, this.GetType());
|
|
|
+ task.CreateStatusLog(db, $"取货任务下达至{rgvDevice.Entity.CODE}", this.GetType());
|
|
|
}
|
|
|
+ db.Default.SaveChanges();
|
|
|
});
|
|
|
return;
|
|
|
}
|
|
@@ -215,7 +210,7 @@ namespace WCS.Service.Works.RGV
|
|
|
//找到自己的后一个小车
|
|
|
var afterRgv = rgvDevice.After();
|
|
|
|
|
|
- //自己是否阻挡了该小车
|
|
|
+ //自己是否阻挡了该小车
|
|
|
if (afterRgv.Data2.WorkMode == RGVMode.自动 && afterRgv.Data2.SystemStatus != RGVRunStatus.空闲 && rgvDevice.StopedByMe(afterRgv))
|
|
|
{
|
|
|
switch (pickStation.Entity.CODE)
|
|
@@ -320,14 +315,13 @@ namespace WCS.Service.Works.RGV
|
|
|
//是否需要取货
|
|
|
if (devs != null && devs.Count() > 0)
|
|
|
{
|
|
|
+ if (obj.Data2.TaskType_1 != RGVTaskType.移动) throw new WarnException($"RGV正在执行{obj.Data2.TaskType_1}");
|
|
|
+ if (obj.Data2.Status_1.HasFlag(WCS.Entity.Protocol.RGVStatus.光电)) throw new WarnException("RGV有光电,无法取货,请检查实际情况");
|
|
|
+ if (!obj.Data2.Status_1.HasFlag(WCS.Entity.Protocol.RGVStatus.RGV到站)) throw new WarnException("RGV无到站状态,请检查RGV实际状态");
|
|
|
+ var taskids = devs.Select(v => v.Data2.Tasknum);
|
|
|
//开始下达取货任务
|
|
|
DB.Do(db =>
|
|
|
{
|
|
|
- if (obj.Data2.TaskType_1 != RGVTaskType.移动) throw new WarnException($"RGV正在执行{obj.Data2.TaskType_1}");
|
|
|
- if (obj.Data2.Status_1.HasFlag(WCS.Entity.Protocol.RGVStatus.光电)) throw new WarnException("RGV有光电,无法取货,请检查实际情况");
|
|
|
- if (!obj.Data2.Status_1.HasFlag(WCS.Entity.Protocol.RGVStatus.RGV到站)) throw new WarnException("RGV无到站状态,请检查RGV实际状态");
|
|
|
-
|
|
|
- var taskids = devs.Select(v => v.Data2.Tasknum);
|
|
|
var tasks = db.Default.Set<WCS_TASK>().Where(p => taskids.Contains(p.ID));
|
|
|
if (tasks.GroupBy(p => p.TaskGroupKey).Count() > 1)
|
|
|
throw new WarnException("任务组ID不一致");
|
|
@@ -343,10 +337,7 @@ namespace WCS.Service.Works.RGV
|
|
|
|
|
|
foreach (var task in tasks)
|
|
|
{
|
|
|
- var msg = $"下达从{obj.Data.StartPosition_1}移动至{obj.Data.DestPosition_1}的RGV PLC指令。";
|
|
|
- msg += $"[{task.ID}][{obj.Data.StartPosition_1}][{obj.Data.DestPosition_1}[{obj.Data.Trigger_1}]";
|
|
|
-
|
|
|
- task.CreateStatusLog(db, msg, this.GetType());
|
|
|
+ task.CreateStatusLog(db, $"取货任务下达至{obj.Entity.CODE}", this.GetType());
|
|
|
}
|
|
|
});
|
|
|
return;
|