|
@@ -106,47 +106,49 @@ namespace WCS.Service.Works.RGV
|
|
|
}
|
|
|
|
|
|
var pickStation = obj.CurrentStation();
|
|
|
- //RGV是否在任何一个取货站点
|
|
|
+ //RGV是否在任何一个站台
|
|
|
if (pickStation != null)
|
|
|
{
|
|
|
- // 检查取货点是否需要取货
|
|
|
- //pickStation.WhetherToExecute();
|
|
|
- // 筛选出有任务号和起始及目标地址的设备
|
|
|
- var devs = pickStation.RGVGetTaskedDevice();
|
|
|
- //是否需要取货
|
|
|
- if (devs != null && devs.Count() > 0)
|
|
|
+ //是否是取货站台
|
|
|
+ if (pickStation.Entity.Is(DF.涂布RGV取货设备组))
|
|
|
{
|
|
|
- //开始下达取货任务
|
|
|
- DB.Do(db =>
|
|
|
+ // 筛选出有任务号和起始及目标地址的设备
|
|
|
+ var devs = pickStation.RGVGetTaskedDevice();
|
|
|
+ //是否需要取货
|
|
|
+ if (devs != null && devs.Count() > 0)
|
|
|
{
|
|
|
- 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不一致");
|
|
|
- if (!tasks.GroupBy(p => p.TaskGroupKey).Any())
|
|
|
- throw new WarnException("无任务组ID");
|
|
|
- var gw1 = pickStation.Items.ToArray()[0];
|
|
|
- var gw2 = pickStation.Items.ToArray()[1];
|
|
|
- if (gw1.Data2.Tasknum != 0 && gw2.Data2.Tasknum != 0)
|
|
|
+ //开始下达取货任务
|
|
|
+ DB.Do(db =>
|
|
|
{
|
|
|
- if (gw1.Data2.Goodsend != gw2.Data2.Goodsend) throw new WarnException($"{obj.Entity.CODE}目标地址不一致");
|
|
|
- }
|
|
|
- obj.Data.TaskID_1 = gw1.Data2.Tasknum;
|
|
|
- obj.Data.TaskID_2 = gw2.Data2.Tasknum;
|
|
|
- obj.Data.TaskType_1 = RGVTaskType.取货;
|
|
|
- obj.Data.DestPosition_1 = pickStation.Entity.CODE.Replace("G", "").ToShort();
|
|
|
+ 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不一致");
|
|
|
+ if (!tasks.GroupBy(p => p.TaskGroupKey).Any())
|
|
|
+ throw new WarnException("无任务组ID");
|
|
|
+ var gw1 = pickStation.Items.ToArray()[0];
|
|
|
+ var gw2 = pickStation.Items.ToArray()[1];
|
|
|
+ if (gw1.Data2.Tasknum != 0 && gw2.Data2.Tasknum != 0)
|
|
|
+ {
|
|
|
+ if (gw1.Data2.Goodsend != gw2.Data2.Goodsend) throw new WarnException($"{obj.Entity.CODE}目标地址不一致");
|
|
|
+ }
|
|
|
+ obj.Data.TaskID_1 = gw1.Data2.Tasknum;
|
|
|
+ obj.Data.TaskID_2 = gw2.Data2.Tasknum;
|
|
|
+ obj.Data.TaskType_1 = RGVTaskType.取货;
|
|
|
+ obj.Data.DestPosition_1 = pickStation.Entity.CODE.Replace("G", "").ToShort();
|
|
|
|
|
|
- obj.Data.Trigger_1++;
|
|
|
+ obj.Data.Trigger_1++;
|
|
|
|
|
|
- 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}]";
|
|
|
+ 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());
|
|
|
- }
|
|
|
- });
|
|
|
- return;
|
|
|
+ task.CreateStatusLog(db, msg, this.GetType());
|
|
|
+ }
|
|
|
+ });
|
|
|
+ return;
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
//找到自己的后一个小车
|
|
@@ -170,14 +172,13 @@ namespace WCS.Service.Works.RGV
|
|
|
}
|
|
|
return;
|
|
|
}
|
|
|
-
|
|
|
|
|
|
//此时RGV即没有等待执行的放货任务,也不在任何一个取货点,因此需要调往最近的一个取货点
|
|
|
//找到距离这个RGV最近的一个取货点
|
|
|
//必须所有RGV都是空闲状态时才可以进行初始化
|
|
|
- //if (obj.RGVList.Any(v => v.Data2.SystemStatus != RGVRunStatus.空闲 || v.Data2.WorkMode != RGVMode.自动)) return;
|
|
|
- //pickStation = obj.BeforeStation();
|
|
|
- //obj.Move(pickStation);
|
|
|
+ if (obj.RGVList.Any(v => v.Data2.SystemStatus != RGVRunStatus.空闲 || v.Data2.WorkMode != RGVMode.自动)) return;
|
|
|
+ pickStation = obj.BeforeStation();
|
|
|
+ obj.Move(pickStation);
|
|
|
});
|
|
|
}
|
|
|
|