|
@@ -77,35 +77,7 @@ namespace WCS.WorkEngineering.Systems
|
|
|
case TaskType.EnterDepot:
|
|
|
if (task.LastInteractionPoint == "2")
|
|
|
{
|
|
|
- string sta = "";
|
|
|
- if (task.WarehouseCode.Contains("1"))
|
|
|
- {
|
|
|
- var n = db.Default.Queryable<WCS_AgvTaskInfo>().NoLock().Where(v => v.Status >= AGVTaskStatus.Confirm && v.Status < AGVTaskStatus.MissionCompleted && v.TaskType == AGVTaskType.EnterDepot && v.Station.Contains("25"))
|
|
|
- .SplitTable(v => v.Take(2)).Count();
|
|
|
- var s = db.Default.Queryable<WCS_AgvTaskInfo>().NoLock().Where(v => v.Status >= AGVTaskStatus.Confirm && v.Status < AGVTaskStatus.MissionCompleted && v.TaskType == AGVTaskType.EnterDepot && v.Station.Contains("27"))
|
|
|
- .SplitTable(v => v.Take(2)).Count();
|
|
|
- sta = n > s ? "2701" : "2501";
|
|
|
- }
|
|
|
- else if (task.WarehouseCode.Contains("2"))
|
|
|
- {
|
|
|
- var n2 = db.Default.Queryable<WCS_AgvTaskInfo>().NoLock().Where(v => v.Status >= AGVTaskStatus.Confirm && v.Status < AGVTaskStatus.MissionCompleted && v.TaskType == AGVTaskType.EnterDepot && v.Station.Contains("29"))
|
|
|
- .SplitTable(v => v.Take(2)).Count();
|
|
|
- var s2 = db.Default.Queryable<WCS_AgvTaskInfo>().NoLock().Where(v => v.Status >= AGVTaskStatus.Confirm && v.Status < AGVTaskStatus.MissionCompleted && v.TaskType == AGVTaskType.EnterDepot && v.Station.Contains("31"))
|
|
|
- .SplitTable(v => v.Take(2)).Count();
|
|
|
- sta = n2 > s2 ? "3101" : "2901";
|
|
|
- }
|
|
|
- else if (task.WarehouseCode.Contains("3"))
|
|
|
- {
|
|
|
- var n3 = db.Default.Queryable<WCS_AgvTaskInfo>().NoLock().Where(v => v.Status >= AGVTaskStatus.Confirm && v.Status < AGVTaskStatus.MissionCompleted && v.TaskType == AGVTaskType.EnterDepot && v.Station.Contains("33"))
|
|
|
- .SplitTable(v => v.Take(2)).Count();
|
|
|
- var s3 = db.Default.Queryable<WCS_AgvTaskInfo>().NoLock().Where(v => v.Status >= AGVTaskStatus.Confirm && v.Status < AGVTaskStatus.MissionCompleted && v.TaskType == AGVTaskType.EnterDepot && v.Station.Contains("35"))
|
|
|
- .SplitTable(v => v.Take(2)).Count();
|
|
|
- sta = n3 > s3 ? "3501" : "3301";
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- return;
|
|
|
- }
|
|
|
+ var sta = GetAgvStation(task, db);
|
|
|
var agv = new WCS_AgvTaskInfo()
|
|
|
{
|
|
|
ID = db.GetAgvTaskId(),
|
|
@@ -241,49 +213,7 @@ namespace WCS.WorkEngineering.Systems
|
|
|
var devs = Device.All.Where(x => x.HasFlag(DeviceFlags.AGV取货站台口)).Select(x => x.Code);
|
|
|
if (devs.Contains(task.SrmStation) && task.LastInteractionPoint != "3") //车间叫料任务,此值为3时是单独取满任务
|
|
|
{
|
|
|
- string sta = "";
|
|
|
- var n = 0;
|
|
|
- var s = 0;
|
|
|
- //同侧之间均分
|
|
|
- if (task.WarehouseCode.Contains("1"))
|
|
|
- {
|
|
|
- n = db.Default.Queryable<WCS_AgvTaskInfo>().NoLock().Where(v => v.Status >= AGVTaskStatus.Confirm && v.Status < AGVTaskStatus.Complete1 && v.TaskType == AGVTaskType.EnterDepot && v.Station.Contains("25"))
|
|
|
- .SplitTable(v => v.Take(2)).Count();
|
|
|
- s = db.Default.Queryable<WCS_AgvTaskInfo>().NoLock().Where(v => v.Status >= AGVTaskStatus.Confirm && v.Status < AGVTaskStatus.Complete1 && v.TaskType == AGVTaskType.EnterDepot && v.Station.Contains("27"))
|
|
|
- .SplitTable(v => v.Take(2)).Count();
|
|
|
- sta = n > s ? "2701" : "2501";
|
|
|
- }
|
|
|
- else if (task.WarehouseCode.Contains("2"))
|
|
|
- {
|
|
|
- n = db.Default.Queryable<WCS_AgvTaskInfo>().NoLock().Where(v => v.Status >= AGVTaskStatus.Confirm && v.Status < AGVTaskStatus.Complete1 && v.TaskType == AGVTaskType.EnterDepot && v.Station.Contains("29"))
|
|
|
- .SplitTable(v => v.Take(2)).Count();
|
|
|
- s = db.Default.Queryable<WCS_AgvTaskInfo>().NoLock().Where(v => v.Status >= AGVTaskStatus.Confirm && v.Status < AGVTaskStatus.Complete1 && v.TaskType == AGVTaskType.EnterDepot && v.Station.Contains("31"))
|
|
|
- .SplitTable(v => v.Take(2)).Count();
|
|
|
- sta = n > s ? "3101" : "2901";
|
|
|
- }
|
|
|
- else if (task.WarehouseCode.Contains("3"))
|
|
|
- {
|
|
|
- n = db.Default.Queryable<WCS_AgvTaskInfo>().NoLock().Where(v => v.Status >= AGVTaskStatus.Confirm && v.Status < AGVTaskStatus.Complete1 && v.TaskType == AGVTaskType.EnterDepot && v.Station.Contains("33"))
|
|
|
- .SplitTable(v => v.Take(2)).Count();
|
|
|
- s = db.Default.Queryable<WCS_AgvTaskInfo>().NoLock().Where(v => v.Status >= AGVTaskStatus.Confirm && v.Status < AGVTaskStatus.Complete1 && v.TaskType == AGVTaskType.EnterDepot && v.Station.Contains("35"))
|
|
|
- .SplitTable(v => v.Take(2)).Count();
|
|
|
- sta = n > s ? "3501" : "3301";
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- return;
|
|
|
- }
|
|
|
-
|
|
|
- n = db.Default.Queryable<WCS_AgvTaskInfo>().NoLock().Where(v =>
|
|
|
- v.Status >= AGVTaskStatus.Confirm &&
|
|
|
- v.Status < AGVTaskStatus.Complete1 &&
|
|
|
- v.TaskType == AGVTaskType.EnterDepot && v.Station == sta)
|
|
|
- .SplitTable(v => v.Take(2)).Count();
|
|
|
- if (n > 5)
|
|
|
- {
|
|
|
- sta = db.Default.Queryable<WCS_AgvTaskInfo>().NoLock().Where(v => v.Status >= AGVTaskStatus.Confirm && v.Status < AGVTaskStatus.Complete1 && v.TaskType == AGVTaskType.EnterDepot)
|
|
|
- .SplitTable(v => v.Take(2)).ToList().GroupBy(x => x.Station).Select(x => new { x.Key, Count = x.Count() }).MinBy(x => x.Count).Key;
|
|
|
- }
|
|
|
+ var sta = GetAgvStation(task, db);
|
|
|
|
|
|
var agv = new WCS_AgvTaskInfo()
|
|
|
{
|
|
@@ -326,5 +256,60 @@ namespace WCS.WorkEngineering.Systems
|
|
|
{
|
|
|
return dev.Code == nameof(NoInteractionSystems);
|
|
|
}
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 获取AGV的目标站台
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="task"></param>
|
|
|
+ /// <param name="db"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ public string GetAgvStation(WCS_TaskInfo task, SqlSugarHelper db)
|
|
|
+ {
|
|
|
+ string sta = "";
|
|
|
+ var n = 0;
|
|
|
+ var s = 0;
|
|
|
+ //同侧之间均分
|
|
|
+ if (task.WarehouseCode.Contains("1"))
|
|
|
+ {
|
|
|
+ n = db.Default.Queryable<WCS_AgvTaskInfo>().NoLock().Where(v => v.Status >= AGVTaskStatus.Confirm && v.Status < AGVTaskStatus.Complete1 && v.TaskType == AGVTaskType.EnterDepot && v.Station.Contains("25"))
|
|
|
+ .SplitTable(v => v.Take(2)).Count();
|
|
|
+ s = db.Default.Queryable<WCS_AgvTaskInfo>().NoLock().Where(v => v.Status >= AGVTaskStatus.Confirm && v.Status < AGVTaskStatus.Complete1 && v.TaskType == AGVTaskType.EnterDepot && v.Station.Contains("27"))
|
|
|
+ .SplitTable(v => v.Take(2)).Count();
|
|
|
+ sta = n > s ? "2701" : "2501";
|
|
|
+ }
|
|
|
+ else if (task.WarehouseCode.Contains("2"))
|
|
|
+ {
|
|
|
+ n = db.Default.Queryable<WCS_AgvTaskInfo>().NoLock().Where(v => v.Status >= AGVTaskStatus.Confirm && v.Status < AGVTaskStatus.Complete1 && v.TaskType == AGVTaskType.EnterDepot && v.Station.Contains("29"))
|
|
|
+ .SplitTable(v => v.Take(2)).Count();
|
|
|
+ s = db.Default.Queryable<WCS_AgvTaskInfo>().NoLock().Where(v => v.Status >= AGVTaskStatus.Confirm && v.Status < AGVTaskStatus.Complete1 && v.TaskType == AGVTaskType.EnterDepot && v.Station.Contains("31"))
|
|
|
+ .SplitTable(v => v.Take(2)).Count();
|
|
|
+ sta = n > s ? "3101" : "2901";
|
|
|
+ }
|
|
|
+ else if (task.WarehouseCode.Contains("3"))
|
|
|
+ {
|
|
|
+ n = db.Default.Queryable<WCS_AgvTaskInfo>().NoLock().Where(v => v.Status >= AGVTaskStatus.Confirm && v.Status < AGVTaskStatus.Complete1 && v.TaskType == AGVTaskType.EnterDepot && v.Station.Contains("33"))
|
|
|
+ .SplitTable(v => v.Take(2)).Count();
|
|
|
+ s = db.Default.Queryable<WCS_AgvTaskInfo>().NoLock().Where(v => v.Status >= AGVTaskStatus.Confirm && v.Status < AGVTaskStatus.Complete1 && v.TaskType == AGVTaskType.EnterDepot && v.Station.Contains("35"))
|
|
|
+ .SplitTable(v => v.Take(2)).Count();
|
|
|
+ sta = n > s ? "3501" : "3301";
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ return default;
|
|
|
+ }
|
|
|
+
|
|
|
+ n = db.Default.Queryable<WCS_AgvTaskInfo>().NoLock().Where(v =>
|
|
|
+ v.Status >= AGVTaskStatus.Confirm &&
|
|
|
+ v.Status < AGVTaskStatus.Complete1 &&
|
|
|
+ v.TaskType == AGVTaskType.EnterDepot && v.Station == sta)
|
|
|
+ .SplitTable(v => v.Take(2)).Count();
|
|
|
+ if (n > 5)
|
|
|
+ {
|
|
|
+ sta = db.Default.Queryable<WCS_AgvTaskInfo>().NoLock().Where(v => v.Status >= AGVTaskStatus.Confirm && v.Status < AGVTaskStatus.Complete1 && v.TaskType == AGVTaskType.EnterDepot)
|
|
|
+ .SplitTable(v => v.Take(2)).ToList().GroupBy(x => x.Station).Select(x => new { x.Key, Count = x.Count() }).MinBy(x => x.Count).Key;
|
|
|
+ }
|
|
|
+
|
|
|
+ return sta;
|
|
|
+ }
|
|
|
}
|
|
|
}
|