using ServiceCenter.SqlSugars;
using WCS.Core;
using WCS.Entity;
using WCS.WorkEngineering.Worlds.Logs;
namespace WCS.WorkEngineering.Extensions
{
///
/// 任务扩展
///
public static class TaskExtension
{
///
/// 更新任务执行记录
///
/// 任务信息
/// 数据库上下文
/// 当前地址
/// 描述
public static void AddWCS_TASK_DTL(this WCS_TaskInfo task, SqlSugarHelper db, string curPoint, string desc) => task.AddWCS_TASK_DTL(db, curPoint, "", desc);
///
/// 更新任务执行记录
///
/// 任务信息
/// 数据库上下文
/// 当前地址
/// 下一个地址
/// 描述
public static void AddWCS_TASK_DTL(this WCS_TaskInfo task, SqlSugarHelper db, string curPoint, string NextPoint, string desc)
{
db.Default.Insertable(new WCS_TaskDtl
{
ID = Guid.NewGuid(),
ParentTaskCode = task.ID,
CurPoint = curPoint,
NextPoint = NextPoint,
Desc = desc,
AddWho = "WCS"
}).AddQueue();
}
///
/// 完成或取消任务
///
///
///
///
public static void CompleteOrCancelTasks(this WCS_TaskInfo taskInfo, SqlSugarHelper db, World world)
{
if (taskInfo.Status is not Entity.TaskStatus.Finish and not Entity.TaskStatus.Cancel)
{
world.Log("任务未完成或取消,无法执行WCS_TaskInfo与WCS_TaskOld同步动作", LogLevelEnum.Mid, ErrorTypeEnum.Kown, LogUpLoadEnum.NotUpLoad);
}
else // 任务完成或取消,进行相关同步动作
{
WCS_TaskOld taskOld = db.Default.Queryable().SplitTable(tabs => tabs.Take(1)).Where(v => v.ID == taskInfo.ID).OrderByDescending(v => v.AddTime).First();
if (taskOld is null)
{
world.Log($"WCS_TaskOld表中不存在任务:{taskInfo.ID},无法执行WCS_TaskInfo与WCS_TaskOld同步动作", LogLevelEnum.Mid, ErrorTypeEnum.Kown, LogUpLoadEnum.UpLoadWMS);
}
else
{
//状态
taskOld.Status = taskInfo.Status;
taskOld.Uploaded = taskInfo.Uploaded;
//任务号
taskOld.WmsTask = taskInfo.WmsTask;
taskOld.AgvTaskID = taskInfo.AgvTaskID;
taskOld.TaskGroupKey = taskInfo.TaskGroupKey;
taskOld.Priority = taskInfo.Priority;
//时间与用户
taskOld.AddTime = taskInfo.AddTime;
taskOld.AddWho = taskInfo.AddWho;
taskOld.StartTime = taskInfo.StartTime;
taskOld.EndTime = taskInfo.EedTime;
taskOld.EditWho = taskInfo.EditWho;
taskOld.EditTime = taskInfo.EditTime;
//条码与地址
taskOld.BarCode = taskInfo.BarCode;
taskOld.MaterialCode = taskInfo.MaterialCode;
taskOld.AddrFrom = taskInfo.AddrFrom;
taskOld.AddrTo = taskInfo.AddrTo;
taskOld.LastInteractionPoint = taskInfo.LastInteractionPoint;
taskOld.AddrNext = taskInfo.AddrNext;
taskOld.Tunnel = taskInfo.Tunnel;
taskOld.Floor = taskInfo.Floor;
taskOld.Device = taskInfo.Device;
taskOld.SrmStation = taskInfo.SrmStation;
//码垛信息
taskOld.DocID = taskInfo.DocID;
taskOld.PalletType = taskInfo.PalletType;
taskOld.ProdLine = taskInfo.ProdLine;
taskOld.FullQty = taskInfo.FullQty;
//外形信息
taskOld.Height = taskInfo.Height;
taskOld.Length = taskInfo.Length;
//手动处理备注
taskOld.ManualRemarks = taskInfo.ManualRemarks;
//更新任务历史表,删除任务当前表
db.Default.Updateable(taskOld).AddQueue();
db.Default.Deleteable(taskInfo).AddQueue();
}
}
}
}
}