|
@@ -97,14 +97,16 @@ namespace WCS.WorkEngineering.Systems
|
|
|
switch (task.OutType)
|
|
switch (task.OutType)
|
|
|
{
|
|
{
|
|
|
case OutTypeEnum.自动出库任务:
|
|
case OutTypeEnum.自动出库任务:
|
|
|
- task.Status = Entity.TaskStatus.Finish;
|
|
|
|
|
|
|
+
|
|
|
var dev = new Station(Device.All.FirstOrDefault(v => v.Code == task.SrmStation), this.World);
|
|
var dev = new Station(Device.All.FirstOrDefault(v => v.Code == task.SrmStation), this.World);
|
|
|
if (task.AddrTo == "8271" || task.AddrTo == "8272" || task.AddrTo == "8273" || task.AddrTo == "8274" || task.AddrTo == "8275")
|
|
if (task.AddrTo == "8271" || task.AddrTo == "8272" || task.AddrTo == "8273" || task.AddrTo == "8274" || task.AddrTo == "8275")
|
|
|
{
|
|
{
|
|
|
|
|
+ task.Status = Entity.TaskStatus.Finish;
|
|
|
dev.Data.GoodsEnd = 8278;
|
|
dev.Data.GoodsEnd = 8278;
|
|
|
}
|
|
}
|
|
|
else
|
|
else
|
|
|
{
|
|
{
|
|
|
|
|
+ task.Status = TaskStatus.ConveyorExecution;
|
|
|
dev.Data.GoodsEnd = task.AddrTo.ToShort();
|
|
dev.Data.GoodsEnd = task.AddrTo.ToShort();
|
|
|
}
|
|
}
|
|
|
dev.Data.TaskNumber = task.ID;
|
|
dev.Data.TaskNumber = task.ID;
|
|
@@ -115,14 +117,16 @@ namespace WCS.WorkEngineering.Systems
|
|
|
break;
|
|
break;
|
|
|
|
|
|
|
|
case OutTypeEnum.全自动手动出库任务:
|
|
case OutTypeEnum.全自动手动出库任务:
|
|
|
- task.Status = Entity.TaskStatus.Finish;
|
|
|
|
|
|
|
+
|
|
|
var dev1 = new Station(Device.All.FirstOrDefault(v => v.Code == task.SrmStation), this.World);
|
|
var dev1 = new Station(Device.All.FirstOrDefault(v => v.Code == task.SrmStation), this.World);
|
|
|
if (task.AddrTo == "8271" || task.AddrTo == "8272" || task.AddrTo == "8273" || task.AddrTo == "8274" || task.AddrTo == "8275")
|
|
if (task.AddrTo == "8271" || task.AddrTo == "8272" || task.AddrTo == "8273" || task.AddrTo == "8274" || task.AddrTo == "8275")
|
|
|
{
|
|
{
|
|
|
|
|
+ task.Status = Entity.TaskStatus.Finish;
|
|
|
dev1.Data.GoodsEnd = 8278;
|
|
dev1.Data.GoodsEnd = 8278;
|
|
|
}
|
|
}
|
|
|
else
|
|
else
|
|
|
{
|
|
{
|
|
|
|
|
+ task.Status = TaskStatus.ConveyorExecution;
|
|
|
dev1.Data.GoodsEnd = task.AddrTo.ToShort();
|
|
dev1.Data.GoodsEnd = task.AddrTo.ToShort();
|
|
|
}
|
|
}
|
|
|
dev1.Data.TaskNumber = task.ID;
|
|
dev1.Data.TaskNumber = task.ID;
|
|
@@ -308,14 +312,7 @@ namespace WCS.WorkEngineering.Systems
|
|
|
World.Log($"堆垛机任务处理:结束---下发入库任务[{obj.Data.TaskNumber}][{obj.Data.SLine}][{obj.Data.SCol}][{obj.Data.SLayer}][{obj.Data.ELine}][{obj.Data.ECol}][{obj.Data.ELayer}][{obj.Data.TaskType}][{obj.Data.VoucherNo}]", LogLevelEnum.Mid);
|
|
World.Log($"堆垛机任务处理:结束---下发入库任务[{obj.Data.TaskNumber}][{obj.Data.SLine}][{obj.Data.SCol}][{obj.Data.SLayer}][{obj.Data.ELine}][{obj.Data.ECol}][{obj.Data.ELayer}][{obj.Data.TaskType}][{obj.Data.VoucherNo}]", LogLevelEnum.Mid);
|
|
|
}
|
|
}
|
|
|
else if (enterOrOut == 3 || !lastIsOut) //出库任务
|
|
else if (enterOrOut == 3 || !lastIsOut) //出库任务
|
|
|
- {
|
|
|
|
|
- //判断本次优先执行楼层,并设置下次执行时优先楼层
|
|
|
|
|
-
|
|
|
|
|
- //var floor = obj.Entity.GetFlag<int>("FloorOut");
|
|
|
|
|
-
|
|
|
|
|
- //floor = floor % 2 + 1;
|
|
|
|
|
- //obj.Entity.SetFlag("FloorOut", floor);
|
|
|
|
|
-
|
|
|
|
|
|
|
+ {
|
|
|
//获取当前堆垛机所有的取货站台
|
|
//获取当前堆垛机所有的取货站台
|
|
|
var arrOut = PutDevices.First(v => v.Key == obj.Entity.Code).Value;
|
|
var arrOut = PutDevices.First(v => v.Key == obj.Entity.Code).Value;
|
|
|
|
|
|
|
@@ -334,17 +331,21 @@ namespace WCS.WorkEngineering.Systems
|
|
|
|
|
|
|
|
SqlSugarHelper.Do(db =>
|
|
SqlSugarHelper.Do(db =>
|
|
|
{
|
|
{
|
|
|
|
|
+ var tasks = db.Default.Queryable<WCS_TaskInfo>().Where(v => v.Type == TaskType.OutDepot && v.Status == TaskStatus.ConveyorExecution).ToList();
|
|
|
var allOutCode = arrOut.Select(v => v.Entity.Code).ToList();
|
|
var allOutCode = arrOut.Select(v => v.Entity.Code).ToList();
|
|
|
//var taskIn = db.Default.Queryable<WCS_TaskInfo>().Where(v => v.Type == TaskType.EnterDepot && v.Status > TaskStatus.WaitingToExecute);
|
|
//var taskIn = db.Default.Queryable<WCS_TaskInfo>().Where(v => v.Type == TaskType.EnterDepot && v.Status > TaskStatus.WaitingToExecute);
|
|
|
|
|
|
|
|
//按条件先后排序获取一条排序后第一条结果1.优先级2.所在楼层与本次优先执行楼层
|
|
//按条件先后排序获取一条排序后第一条结果1.优先级2.所在楼层与本次优先执行楼层
|
|
|
var task = db.Default.Queryable<WCS_TaskInfo>().Where(v => v.Type == TaskType.OutDepot && v.Status == TaskStatus.WaitingToExecute)
|
|
var task = db.Default.Queryable<WCS_TaskInfo>().Where(v => v.Type == TaskType.OutDepot && v.Status == TaskStatus.WaitingToExecute)
|
|
|
- .Where(v => allOutCode.Contains(v.SrmStation))
|
|
|
|
|
|
|
+ .Where(v => allOutCode.Contains(v.SrmStation))
|
|
|
.OrderByDescending(v => v.Priority)
|
|
.OrderByDescending(v => v.Priority)
|
|
|
.OrderBy(v => v.AddTime)
|
|
.OrderBy(v => v.AddTime)
|
|
|
.First();
|
|
.First();
|
|
|
if (task == null) throw new KnownException($"{obj.Entity.Code}未找到出库任务", LogLevelEnum.High);
|
|
if (task == null) throw new KnownException($"{obj.Entity.Code}未找到出库任务", LogLevelEnum.High);
|
|
|
|
|
|
|
|
|
|
+ //控制出货口任务数量
|
|
|
|
|
+ if (task.AddrTo != "8278" && tasks.Count(v => v.AddrTo == task.AddrTo) >= 3) return;
|
|
|
|
|
+
|
|
|
//if (taskIn.Any(v => v.AddrNext == task.SrmStation))
|
|
//if (taskIn.Any(v => v.AddrNext == task.SrmStation))
|
|
|
//{
|
|
//{
|
|
|
// throw new KnownException($"等待入库任务执行", LogLevelEnum.High);
|
|
// throw new KnownException($"等待入库任务执行", LogLevelEnum.High);
|