using ServiceCenter.Extensions;
using ServiceCenter.SqlSugars;
using System.ComponentModel;
using WCS.Core;
using WCS.Entity;
using WCS.Entity.Protocol.Station;
using WCS.WorkEngineering.Extensions;
using WCS.WorkEngineering.Worlds;
using TaskStatus = WCS.Entity.TaskStatus;
namespace WCS.WorkEngineering.Systems.桁架码垛
{
///
/// 二次码垛任务到RGV取货位处理
///
[BelongTo(typeof(SortingPalletizingWorld))]
[Description("二次码垛任务到RGV取货位处理")]
public class 二次码垛任务到RGV取货位处理 : DeviceSystem>
{
protected override bool ParallelDo => true;
protected override bool SaveLogsToFile => true;
public override void Do(Device obj)
{
if (!obj.Data3.Status.HasFlag(StationStatus.Auto)) return;
if (!obj.Data3.Status.HasFlag(StationStatus.PH_Status)) return;
if (!obj.Data3.Status.HasFlag(StationStatus.OT_Status)) return;
if (obj.Data2.Request != 1) return;
var addNext = 1;
int taskId = 0;
SqlSugarHelper.Do(_db =>
{
var db = _db.Default;
var soDev = obj.Entity.Sources.First();
var taskInfo = db.Queryable().Where(x => x.SrmStation == soDev.Code && x.Status == TaskStatus.StackerCompleted).OrderBy(x => x.EditTime).First();
if (taskInfo == null) return;
var pall = db.Queryable().RowLock().First(x => x.TaskId == taskInfo.ID && !x.Finish);
if (pall == null) return;
taskInfo.Status = TaskStatus.Finish;
taskInfo.EditTime = DateTime.Now;
taskInfo.EndTime = DateTime.Now;
db.UpdateableRowLock(taskInfo).ExecuteCommand();
taskInfo.AddWCS_TASK_DTL(db, obj.Entity.Code, "二次码垛出库任务完成");
addNext = pall.PalletizingStation.ToShort();
taskId = pall.Id;
});
if (taskId == 0) return;
obj.Data.TaskNumber = taskId;
obj.Data.GoodsStart = obj.Entity.Code.ToShort();
obj.Data.GoodsEnd = addNext.ToShort();
obj.Data.VoucherNo++;
}
public override bool Select(Device dev)
{
return dev.Code is "1606" or "1616" or "1626" or "1636" or "1646" or "1656";
}
}
}