|
|
@@ -7,6 +7,7 @@ using WCS.Entity;
|
|
|
using WCS.WorkEngineering.Extensions;
|
|
|
using WCS.WorkEngineering.Protocol.BCR;
|
|
|
using WCS.WorkEngineering.Protocol.RGV;
|
|
|
+using WCS.WorkEngineering.Protocol.Robot;
|
|
|
using WCS.WorkEngineering.Protocol.Station;
|
|
|
using WCS.WorkEngineering.Protocol.Truss;
|
|
|
using WCS.WorkEngineering.Worlds;
|
|
|
@@ -46,7 +47,7 @@ namespace WCS.WorkEngineering.Systems
|
|
|
if (obj.Data.VoucherNo != obj.Data2.VoucherNo) throw new KnownException($"凭证号不一致,DB520:{obj.Data.VoucherNo}-DB521:{obj.Data2.VoucherNo}", LogLevelEnum.High);
|
|
|
if (obj.Data2.WorkMode != RGVWorkMode.Automatic) return;
|
|
|
|
|
|
- if (obj.Data.RES1 == 1) return;
|
|
|
+ if (obj.Data.RES1 == 1) return; //wcs任务完成确认信号未清除
|
|
|
|
|
|
if (obj.Data2.Status.HasFlag(RGVStatus.Taskfinishi))
|
|
|
{
|
|
|
@@ -55,25 +56,37 @@ namespace WCS.WorkEngineering.Systems
|
|
|
case RGVCmdType.PickGoods: //单独取货任务完成,默认只有空托盘才会下发单独取货任务
|
|
|
//开始申请读码信息
|
|
|
var bcrCode = obj.Data3.GetBCRCode();
|
|
|
- WCS_Palletizing palletizing = null;
|
|
|
+ int taskNumber = 0;
|
|
|
SqlSugarHelper.Do(_db =>
|
|
|
{
|
|
|
var db = _db.Default;
|
|
|
-
|
|
|
- //开始绑定任务,并下发新的任务信息到小车
|
|
|
- WCS_Palletizing palletizingInfo = db.Queryable<WCS_Palletizing>().Single(x => x.Id == obj.Data2.TaskNumber);
|
|
|
- if (palletizingInfo == null) return;
|
|
|
- palletizingInfo.PalleCode = bcrCode;
|
|
|
- db.Updateable(palletizingInfo).ExecuteCommand();
|
|
|
- palletizing = palletizingInfo;
|
|
|
+ var dev = Device.All.First(x => x.Code == obj.Data2.StartPosition.ToString());
|
|
|
+ if (dev.HasFlag(DeviceFlags.拆盘机09))
|
|
|
+ {
|
|
|
+ //开始绑定任务,并下发新的任务信息到小车
|
|
|
+ WCS_Palletizing palletizingInfo = db.Queryable<WCS_Palletizing>().Single(x => x.Id == obj.Data2.TaskNumber);
|
|
|
+ if (palletizingInfo == null) return;
|
|
|
+ palletizingInfo.PalleCode = bcrCode;
|
|
|
+ db.Updateable(palletizingInfo).ExecuteCommand();
|
|
|
+ taskNumber = palletizingInfo.Id;
|
|
|
+ }
|
|
|
+ else if (dev.HasFlag(DeviceFlags.拆盘机非09))
|
|
|
+ {
|
|
|
+ //开始处理对应的搬运任务信息
|
|
|
+ var task = db.Queryable<WCS_TaskInfo>().First(x => x.Type == TaskType.Delivery && x.ID == obj.Data2.TaskNumber && x.AddrTo == obj.Data2.DestPosition.ToString());
|
|
|
+ task.BarCode = bcrCode;
|
|
|
+ db.Updateable(task).ExecuteCommand();
|
|
|
+ task.AddWCS_TASK_DTL(db, obj.Entity.Code, obj.Data2.DestPosition.ToString(), $"环形库码垛位{obj.Data2.DestPosition}搬运任务绑定条码信息{bcrCode}");
|
|
|
+ taskNumber = task.ID;
|
|
|
+ }
|
|
|
});
|
|
|
- if (palletizing == null) return;
|
|
|
+ if (taskNumber == 0) return;
|
|
|
//清空起始点信息
|
|
|
- var staDev = new Device<IStation520, IStation521>(Device.All.FirstOrDefault(x => x.Code == obj.Data.DestPosition.ToString())!, World);
|
|
|
+ var staDev = new Device<IStation520, IStation521>(Device.All.FirstOrDefault(x => x.Code == obj.Data2.DestPosition.ToString())!, World);
|
|
|
staDev.Data.TaskNumber = 0;
|
|
|
staDev.Data.GoodsStart = 0;
|
|
|
staDev.Data.GoodsEnd = 0;
|
|
|
- obj.Data2.TaskNumber = palletizing.Id;
|
|
|
+ obj.Data2.TaskNumber = taskNumber;
|
|
|
obj.Data.RES1 = 1;
|
|
|
break;
|
|
|
|
|
|
@@ -81,15 +94,31 @@ namespace WCS.WorkEngineering.Systems
|
|
|
WCS_TaskInfo finishiTask = null;
|
|
|
var startPosition = Device.All.Where(x => x.Code == obj.Data2.StartPosition.ToString()).Select(x => new Device<IStation520, IStation521, IStation523>(x, World)).FirstOrDefault();
|
|
|
var destPosition = Device.All.FirstOrDefault(x => x.Code == obj.Data2.DestPosition.ToString());
|
|
|
- var isPalletizing = destPosition!.HasFlag(DeviceFlags.码垛位09, DeviceFlags.环形库码垛工位);
|
|
|
- palletizing = null;
|
|
|
+ var isPalletizing = destPosition!.HasFlag(DeviceFlags.桁架码垛位, DeviceFlags.环形库码垛工位);
|
|
|
+ short countQty = 0;
|
|
|
+ short shortCode = 0;
|
|
|
SqlSugarHelper.Do(_db =>
|
|
|
{
|
|
|
var db = _db.Default;
|
|
|
if (isPalletizing)
|
|
|
{
|
|
|
- var palletizingInfo = db.Queryable<WCS_Palletizing>().First(x => x.Id == obj.Data.TaskNumber);
|
|
|
- palletizing = palletizingInfo;
|
|
|
+ if (destPosition.HasFlag(DeviceFlags.桁架码垛位))
|
|
|
+ {
|
|
|
+ var palletizingInfo = db.Queryable<WCS_Palletizing>().First(x => x.Id == obj.Data.TaskNumber);
|
|
|
+ countQty = palletizingInfo.CountQty.ToShort();
|
|
|
+ shortCode = palletizingInfo.ShortCode;
|
|
|
+ }
|
|
|
+ else if (destPosition.HasFlag(DeviceFlags.环形库码垛工位))
|
|
|
+ {
|
|
|
+ var deliveryTask = db.Queryable<WCS_TaskInfo>().First(x => x.ID == obj.Data.TaskNumber);
|
|
|
+ countQty = deliveryTask.FullQty;
|
|
|
+ shortCode = deliveryTask.PalletType;
|
|
|
+ deliveryTask.Status = TaskStatus.RgvCompleted;
|
|
|
+ deliveryTask.EditTime = DateTime.Now;
|
|
|
+ deliveryTask.LastInteractionPoint = obj.Entity.Code;
|
|
|
+ db.Updateable(deliveryTask).ExecuteCommand();
|
|
|
+ deliveryTask.AddWCS_TASK_DTL(db, deliveryTask.AddrTo, $"RGV任务执行结束");
|
|
|
+ }
|
|
|
}
|
|
|
});
|
|
|
|
|
|
@@ -99,10 +128,20 @@ namespace WCS.WorkEngineering.Systems
|
|
|
//目标地址是码垛工位
|
|
|
if (isPalletizing)
|
|
|
{
|
|
|
- var dest = new Device<IStation520, IStation521, IStation521, ITruss530, ITruss531>(destPosition!, World);
|
|
|
- dest.Data4.MaxQuantity = palletizing.CountQty.ToShort();
|
|
|
- dest.Data4.Type = palletizing.ShortCode;
|
|
|
- dest.Data4.VoucherNo++;
|
|
|
+ if (destPosition.HasFlag(DeviceFlags.桁架码垛位))
|
|
|
+ {
|
|
|
+ var dest = new Device<ITruss531>(destPosition!, World);
|
|
|
+ dest.Data.MaxQuantity = countQty;
|
|
|
+ dest.Data.Type = shortCode;
|
|
|
+ dest.Data.VoucherNo++;
|
|
|
+ }
|
|
|
+ else if (destPosition.HasFlag(DeviceFlags.环形库码垛工位))
|
|
|
+ {
|
|
|
+ var dest = new Device<IRobot531>(destPosition!, World);
|
|
|
+ dest.Data.MaxQuantity = countQty;
|
|
|
+ dest.Data.Type = shortCode;
|
|
|
+ dest.Data.VoucherNo++;
|
|
|
+ }
|
|
|
}
|
|
|
obj.Data.RES1 = 1;
|
|
|
break;
|