|
@@ -1,5 +1,4 @@
|
|
|
-using NetTaste;
|
|
|
-using ServiceCenter.Extensions;
|
|
|
+using ServiceCenter.Extensions;
|
|
|
using ServiceCenter.SqlSugars;
|
|
|
using SqlSugar;
|
|
|
using System.ComponentModel;
|
|
@@ -9,7 +8,6 @@ using WCS.Entity.Protocol.Station;
|
|
|
using WCS.WorkEngineering.Extensions;
|
|
|
using WCS.WorkEngineering.Model.WMS;
|
|
|
using WCS.WorkEngineering.WebApi.Controllers;
|
|
|
-using WCS.WorkEngineering.WebApi.Models.WMS.Request;
|
|
|
using WCS.WorkEngineering.WebApi.Models.WMS.Response;
|
|
|
using WCS.WorkEngineering.Worlds;
|
|
|
using DeviceFlags = WCS.WorkEngineering.Extensions.DeviceFlags;
|
|
@@ -197,50 +195,16 @@ namespace WCS.WorkEngineering.Systems
|
|
|
var db = _db.Default;
|
|
|
var isDP = GetIsDirectPalletizing(obj.Entity.Parent.Code, db);
|
|
|
KeyValuePair<short, short> ringPallet = new KeyValuePair<short, short>();
|
|
|
- var device = "";
|
|
|
if (isDP) //直接码垛
|
|
|
{
|
|
|
- device = obj.Entity.Code;
|
|
|
//此位置是否有未结束的码垛信息
|
|
|
var ringPalletizingInfo = db.Queryable<BillRingPalletizingInfo>().Where(x => x.MaDuoGongWei == obj.Entity.Code && x.Out == false).ToList()
|
|
|
.OrderBy(x => x.AddTime).FirstOrDefault();
|
|
|
+ if (ringPalletizingInfo == null) return;
|
|
|
var bomsetgrp = db.Queryable<BillBomsetgrp>().NoLock().Where(x => x.Id == ringPalletizingInfo.BomSetGrpId).First();
|
|
|
ringPallet = new KeyValuePair<short, short>(bomsetgrp.ShortCode, ringPalletizingInfo.HWCountQty.ToShort());
|
|
|
-
|
|
|
- var task = db.Queryable<WCS_TaskInfo>().NoLock().First(x => x.Type == TaskType.Delivery && x.AddrTo == obj.Entity.Code && x.Status < TaskStatus.Finish);
|
|
|
- if (task != null) return;
|
|
|
- //开始获取当前地址上个设备的上一个设备中的非零九托盘拆机
|
|
|
- var addrFrom = obj.Entity.Sources.SelectMany(x => x.Sources).Single(x => x.HasFlag(DeviceFlags.拆盘机));
|
|
|
- var dev = Device.All.Where(x => x.Code == addrFrom.Code).Select(x => new Device<IStation520>(x, World)).FirstOrDefault();
|
|
|
- if (dev.Data.TaskNumber != 0 /*|| dev.Data.GoodsEnd != 0*/)
|
|
|
- {
|
|
|
- World.Log($"拆盘机残留任务信息: {dev.Entity.Code}有残留任务信息 {dev.Data.TaskNumber} - {dev.Data.GoodsEnd} ,请确认处理!");
|
|
|
- return;
|
|
|
- }
|
|
|
-
|
|
|
- //开始创建搬运任务
|
|
|
- task = new WCS_TaskInfo()
|
|
|
- {
|
|
|
- AddrFrom = addrFrom.Code,
|
|
|
- AddrTo = obj.Entity.Code,
|
|
|
- BarCode = "码垛托盘搬运-" + obj.Entity.Code,
|
|
|
- Status = Entity.TaskStatus.NewBuild,
|
|
|
- PalletType = ringPallet.Key,
|
|
|
- FullQty = ringPallet.Value,
|
|
|
- Type = TaskType.Delivery,
|
|
|
- AddWho = "WCS",
|
|
|
- AddTime = DateTime.Now
|
|
|
- };
|
|
|
- var res = db.InsertableRowLock(task).ExecuteReturnEntity();
|
|
|
- var taskOld = res.Mapper<WCS_TaskOld, WCS_TaskInfo>();
|
|
|
- taskOld.Id = res.ID;
|
|
|
- taskOld.AddTime = DateTime.Now;
|
|
|
- db.InsertableRowLock(taskOld).SplitTable().ExecuteCommand();
|
|
|
- res.AddWCS_TASK_DTL(db, obj.Entity.Code, task.AddrTo, "初始化码垛托盘搬运任务");
|
|
|
- deliveryTask = res;
|
|
|
}
|
|
|
-
|
|
|
- if(device == "" || ( obj.Entity.Code != device && !string.IsNullOrEmpty(device)))
|
|
|
+ else
|
|
|
{
|
|
|
//检查是否有待执行状态放货点是自己的出库任务
|
|
|
var ringTask = db.Queryable<WCS_TaskInfo>().NoLock().First(x => x.Type == TaskType.OutDepot && x.Status <= TaskStatus.WaitingToExecute && x.SrmStation == obj.Entity.Code);
|
|
@@ -270,39 +234,38 @@ namespace WCS.WorkEngineering.Systems
|
|
|
return;
|
|
|
}
|
|
|
ringPallet = new KeyValuePair<short, short>(ringTask.PalletType, ringTask.FullQty);
|
|
|
-
|
|
|
- var task = db.Queryable<WCS_TaskInfo>().NoLock().First(x => x.Type == TaskType.Delivery && x.AddrTo == obj.Entity.Code && x.Status < TaskStatus.Finish);
|
|
|
- if (task != null) return;
|
|
|
- //开始获取当前地址上个设备的上一个设备中的非零九托盘拆机
|
|
|
- var addrFrom = obj.Entity.Sources.SelectMany(x => x.Sources).Single(x => x.HasFlag(DeviceFlags.拆盘机));
|
|
|
- var dev = Device.All.Where(x => x.Code == addrFrom.Code).Select(x => new Device<IStation520>(x, World)).FirstOrDefault();
|
|
|
- if (dev.Data.TaskNumber != 0 /*|| dev.Data.GoodsEnd != 0*/)
|
|
|
- {
|
|
|
- World.Log($"拆盘机残留任务信息: {dev.Entity.Code}有残留任务信息 {dev.Data.TaskNumber} - {dev.Data.GoodsEnd} ,请确认处理!");
|
|
|
- return;
|
|
|
- }
|
|
|
-
|
|
|
- //开始创建搬运任务
|
|
|
- task = new WCS_TaskInfo()
|
|
|
- {
|
|
|
- AddrFrom = addrFrom.Code,
|
|
|
- AddrTo = obj.Entity.Code,
|
|
|
- BarCode = "码垛托盘搬运-" + obj.Entity.Code,
|
|
|
- Status = Entity.TaskStatus.NewBuild,
|
|
|
- PalletType = ringPallet.Key,
|
|
|
- FullQty = ringPallet.Value,
|
|
|
- Type = TaskType.Delivery,
|
|
|
- AddWho = "WCS",
|
|
|
- AddTime = DateTime.Now
|
|
|
- };
|
|
|
- var res = db.InsertableRowLock(task).ExecuteReturnEntity();
|
|
|
- var taskOld = res.Mapper<WCS_TaskOld, WCS_TaskInfo>();
|
|
|
- taskOld.Id = res.ID;
|
|
|
- taskOld.AddTime = DateTime.Now;
|
|
|
- db.InsertableRowLock(taskOld).SplitTable().ExecuteCommand();
|
|
|
- res.AddWCS_TASK_DTL(db, obj.Entity.Code, task.AddrTo, "初始化码垛托盘搬运任务");
|
|
|
- deliveryTask = res;
|
|
|
}
|
|
|
+ var task = db.Queryable<WCS_TaskInfo>().NoLock().First(x => x.Type == TaskType.Delivery && x.AddrTo == obj.Entity.Code && x.Status < TaskStatus.Finish);
|
|
|
+ if (task != null) return;
|
|
|
+ //开始获取当前地址上个设备的上一个设备中的非零九托盘拆机
|
|
|
+ var addrFrom = obj.Entity.Sources.SelectMany(x => x.Sources).Single(x => x.HasFlag(DeviceFlags.拆盘机));
|
|
|
+ var dev = Device.All.Where(x => x.Code == addrFrom.Code).Select(x => new Device<IStation520>(x, World)).FirstOrDefault();
|
|
|
+ if (dev.Data.TaskNumber != 0 /*|| dev.Data.GoodsEnd != 0*/)
|
|
|
+ {
|
|
|
+ World.Log($"拆盘机残留任务信息: {dev.Entity.Code}有残留任务信息 {dev.Data.TaskNumber} - {dev.Data.GoodsEnd} ,请确认处理!");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ //开始创建搬运任务
|
|
|
+ task = new WCS_TaskInfo()
|
|
|
+ {
|
|
|
+ AddrFrom = addrFrom.Code,
|
|
|
+ AddrTo = obj.Entity.Code,
|
|
|
+ BarCode = "码垛托盘搬运-" + obj.Entity.Code,
|
|
|
+ Status = Entity.TaskStatus.NewBuild,
|
|
|
+ PalletType = ringPallet.Key,
|
|
|
+ FullQty = ringPallet.Value,
|
|
|
+ Type = TaskType.Delivery,
|
|
|
+ AddWho = "WCS",
|
|
|
+ AddTime = DateTime.Now
|
|
|
+ };
|
|
|
+ var res = db.InsertableRowLock(task).ExecuteReturnEntity();
|
|
|
+ var taskOld = res.Mapper<WCS_TaskOld, WCS_TaskInfo>();
|
|
|
+ taskOld.Id = res.ID;
|
|
|
+ taskOld.AddTime = DateTime.Now;
|
|
|
+ db.InsertableRowLock(taskOld).SplitTable().ExecuteCommand();
|
|
|
+ res.AddWCS_TASK_DTL(db, obj.Entity.Code, task.AddrTo, "初始化码垛托盘搬运任务");
|
|
|
+ deliveryTask = res;
|
|
|
});
|
|
|
}
|
|
|
|
|
@@ -311,7 +274,7 @@ namespace WCS.WorkEngineering.Systems
|
|
|
dev.Data.TaskNumber = deliveryTask.ID;
|
|
|
dev.Data.GoodsEnd = deliveryTask.AddrTo.ToShort();
|
|
|
}
|
|
|
- }
|
|
|
+ }
|
|
|
|
|
|
public override bool Select(Device dev)
|
|
|
{
|