|
@@ -103,22 +103,26 @@ namespace WCS.Service.Works.RGV
|
|
|
if (rgvDevice.Data2.Trigger_1 != rgvDevice.Data.Trigger_1) throw new WarnException($"等待执行任务{rgvDevice.Data2.TaskID_1}--{rgvDevice.Data2.TaskID_2}");
|
|
|
if (rgvDevice.Data2.WorkMode != RGVMode.自动) throw new DoException(rgvDevice.Data2.WorkMode.ToString());
|
|
|
if (rgvDevice.Data2.SystemStatus != RGVRunStatus.空闲) throw new DoException(rgvDevice.Data2.SystemStatus.ToString());
|
|
|
+ rgvDevice.End();
|
|
|
//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 };
|
|
|
+ List<WCS_TASK> tasks = new List<WCS_TASK>();
|
|
|
//取小车上的任务
|
|
|
DB.Do(db =>
|
|
|
{
|
|
|
- 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 destStation = Device.Find(tasks.FirstOrDefault()!.ADDRNEXT).Create<StationDeviceGroup>();
|
|
|
- rgvDevice.Put(destStation, rgvDevice.Data2.TaskID_1, rgvDevice.Data2.TaskID_2);
|
|
|
+ tasks = db.Default.Set<WCS_TASK>().Where(p => taskids.Contains(p.ID)).ToList();
|
|
|
});
|
|
|
+
|
|
|
+ if (tasks.GroupBy(p => p.TaskGroupKey).Count() > 1)
|
|
|
+ throw new WarnException("任务组ID不一致");
|
|
|
+ if (!tasks.GroupBy(p => p.TaskGroupKey).Any())
|
|
|
+ throw new WarnException("无任务组ID");
|
|
|
+ var destStation = Device.Find(tasks.FirstOrDefault()!.ADDRNEXT).Create<StationDeviceGroup>();
|
|
|
+ rgvDevice.Put(destStation, rgvDevice.Data2.TaskID_1, rgvDevice.Data2.TaskID_2);
|
|
|
+ rgvDevice.Add();
|
|
|
return;
|
|
|
}
|
|
|
//当前有rgv的取货站台
|
|
@@ -140,37 +144,39 @@ namespace WCS.Service.Works.RGV
|
|
|
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);
|
|
|
-
|
|
|
+ List<WCS_TASK> tasks = new List<WCS_TASK>();
|
|
|
//开始下达取货任务
|
|
|
DB.Do(db =>
|
|
|
{
|
|
|
- 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($"{rgvDevice.Entity.CODE}目标地址不一致");
|
|
|
- }
|
|
|
-
|
|
|
- InfoLog.INFO_RGVINFO($"[{rgvDevice.Entity.CODE}]--写入RGV取货任务-开始:{rgvDevice.Data.TaskID_1},{rgvDevice.Data.TaskID_2},{rgvDevice.Data.TaskType_1},{rgvDevice.Data.DestPosition_1},{rgvDevice.Data.Trigger_1}");
|
|
|
- rgvDevice.Data.TaskID_1 = gw1.Data2.Tasknum;
|
|
|
- rgvDevice.Data.TaskID_2 = gw2.Data2.Tasknum;
|
|
|
- rgvDevice.Data.TaskType_1 = RGVTaskType.取货;
|
|
|
- rgvDevice.Data.DestPosition_1 = pickStation.Entity.CODE.Replace("G", "").ToShort();
|
|
|
- InfoLog.INFO_RGVINFO($"[{rgvDevice.Entity.CODE}]--写入RGV取货任务-结束:{rgvDevice.Data.TaskID_1},{rgvDevice.Data.TaskID_2},{rgvDevice.Data.TaskType_1},{rgvDevice.Data.DestPosition_1},{rgvDevice.Data.Trigger_1}");
|
|
|
-
|
|
|
- rgvDevice.Data.Trigger_1++;
|
|
|
+ tasks = db.Default.Set<WCS_TASK>().Where(p => taskids.Contains(p.ID)).ToList();
|
|
|
+ });
|
|
|
+ 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($"{rgvDevice.Entity.CODE}目标地址不一致");
|
|
|
+ }
|
|
|
|
|
|
+ InfoLog.INFO_RGVINFO($"[{rgvDevice.Entity.CODE}]--写入RGV取货任务-开始:{rgvDevice.Data.TaskID_1},{rgvDevice.Data.TaskID_2},{rgvDevice.Data.TaskType_1},{rgvDevice.Data.DestPosition_1},{rgvDevice.Data.Trigger_1}");
|
|
|
+ rgvDevice.Data.TaskID_1 = gw1.Data2.Tasknum;
|
|
|
+ rgvDevice.Data.TaskID_2 = gw2.Data2.Tasknum;
|
|
|
+ rgvDevice.Data.TaskType_1 = RGVTaskType.取货;
|
|
|
+ rgvDevice.Data.DestPosition_1 = pickStation.Entity.CODE.Replace("G", "").ToShort();
|
|
|
+ InfoLog.INFO_RGVINFO($"[{rgvDevice.Entity.CODE}]--写入RGV取货任务-结束:{rgvDevice.Data.TaskID_1},{rgvDevice.Data.TaskID_2},{rgvDevice.Data.TaskType_1},{rgvDevice.Data.DestPosition_1},{rgvDevice.Data.Trigger_1}");
|
|
|
+ rgvDevice.Data.Trigger_1++;
|
|
|
+ DB.Do(db =>
|
|
|
+ {
|
|
|
foreach (var task in tasks)
|
|
|
{
|
|
|
task.CreateStatusLog(db, $"取货任务下达至{rgvDevice.Entity.CODE}", this.GetType());
|
|
|
}
|
|
|
db.Default.SaveChanges();
|
|
|
});
|
|
|
+ rgvDevice.Add();
|
|
|
return;
|
|
|
}
|
|
|
|
|
@@ -201,6 +207,7 @@ namespace WCS.Service.Works.RGV
|
|
|
if (station11Dev != null && station11Dev.Count > 0)
|
|
|
{
|
|
|
rgvDevice.Move(station11);
|
|
|
+ rgvDevice.Add();
|
|
|
return;
|
|
|
}
|
|
|
}
|
|
@@ -237,12 +244,14 @@ namespace WCS.Service.Works.RGV
|
|
|
|
|
|
//写入移动任务
|
|
|
rgvDevice.Move(beforeStation);
|
|
|
+ rgvDevice.Add();
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
if (pickStation.Entity.CODE == "G11")
|
|
|
{
|
|
|
rgvDevice.Move(Device.Find("G2").Create<StationDeviceGroup>());
|
|
|
+ rgvDevice.Add();
|
|
|
return;
|
|
|
}
|
|
|
}
|
|
@@ -252,6 +261,7 @@ namespace WCS.Service.Works.RGV
|
|
|
{
|
|
|
pickStation = rgvDevice.BeforeStation();
|
|
|
rgvDevice.Move(pickStation);
|
|
|
+ rgvDevice.Add();
|
|
|
return;
|
|
|
}
|
|
|
}
|
|
@@ -262,6 +272,7 @@ namespace WCS.Service.Works.RGV
|
|
|
if (rgvDevice.RGVList.Any(v => v.Data2.SystemStatus != RGVRunStatus.空闲)) return;
|
|
|
pickStation = rgvDevice.BeforeStation();
|
|
|
rgvDevice.Move(pickStation);
|
|
|
+ rgvDevice.Add();
|
|
|
});
|
|
|
}
|
|
|
|
|
@@ -354,7 +365,6 @@ namespace WCS.Service.Works.RGV
|
|
|
// .Select(v => v.Create<StationDeviceGroup>())
|
|
|
// .OrderBy(v => pickStation.Distance(v))
|
|
|
// .FirstOrDefault();
|
|
|
-
|
|
|
// //写入移动任务
|
|
|
// obj.Move(beforeStation);
|
|
|
// return;
|