using System.Threading.Tasks; using WcsMain.Common; using WcsMain.DataBase.Dao; using WcsMain.DataBase.TableEntity; using WcsMain.Enum.Stacker; using WcsMain.ExtendMethod; using WcsMain.WcsAttribute.AutoFacAttribute; namespace WcsMain.DataBase.MixDao; /* * 任务表的混合操作类,一般用在此处的都是同时需要操作多个表的 */ /// /// 任务表的混合操作类 /// [Component] public class TaskDao { /// /// 插入WCS任务,同时将WMS任务更成排队中 /// /// /// public string? CreateWcsTask(params AppWcsTask[] wcsTasks) { if(wcsTasks.Length < 1) return "未传入任务"; DateTime dateTime = DateTime.Now; var result = CommonTool.DbServe.Ado.UseTran(() => { /* 插入WCS任务表 */ CommonTool.DbServe.Insertable(wcsTasks).ExecuteCommand(); /* 更新WMS任务表状态为排队中 */ foreach(var wcsTask in wcsTasks) { CommonTool.DbServe.Updateable(new AppWmsTask { TaskId = wcsTask.TaskId, TaskStatus = (int)WmsTaskStatusEnum.queuing, StartTime = dateTime }).IgnoreColumns(ignoreAllNullColumns: true).ExecuteCommand(); } }); return result.Data ? string.Empty : result.ErrorException.Message; } /// /// wcs任务开始 /// /// /// /// /// 将该任务状态更新为启动,若该任务是第一个任务,把对应的WMS任务更新为启动 /// public string StartTask(AppWcsTask wcsTask) { DateTime dateTime = DateTime.Now; var result = CommonTool.DbServe.Ado.UseTran(() => { /* 更新WCS任务表状态 */ CommonTool.DbServe.Updateable(new AppWcsTask { PlcId = wcsTask.PlcId, TaskStatus = (int)WcsTaskStatusEnum.running, StartTime = dateTime }).IgnoreColumns(ignoreAllNullColumns: true) .ExecuteCommand(); if(wcsTask.IsFirstTask()) { /* 更新WMS任务表状态 */ CommonTool.DbServe.Updateable(new AppWmsTask { TaskId = wcsTask.TaskId, TaskStatus = (int)WmsTaskStatusEnum.running, StartTime = dateTime }).IgnoreColumns(ignoreAllNullColumns: true) .ExecuteCommand(); } }); return result.Data ? string.Empty : result.ErrorException.Message; } /// /// 任务异常,取消全部后续任务和该任务号的Wms任务 /// /// /// /// public string TaskErrAndCancelOtherTask(AppWcsTask wcsTask, string errMsg) { DateTime dateTime = DateTime.Now; var result = CommonTool.DbServe.Ado.UseTran(() => { /* 更新WCS任务表状态 */ CommonTool.DbServe.Updateable(new AppWcsTask { TaskStatus = (int)WcsTaskStatusEnum.err, CompleteTime = dateTime, Remark = errMsg }) .UpdateColumns(u => new { u.TaskStatus, u.CompleteTime, u.Remark }) .Where(w => w.TaskSort >= wcsTask.TaskSort && w.TaskId == wcsTask.TaskId) .ExecuteCommand(); if (wcsTask.IsFirstTask()) { /* 更新WMS任务表状态 */ CommonTool.DbServe.Updateable(new AppWmsTask { TaskId = wcsTask.TaskId, TaskStatus = (int)WmsTaskStatusEnum.err, EndTime = dateTime, TaskMsg = errMsg }) .IgnoreColumns(ignoreAllNullColumns: true) .ExecuteCommand(); } }); return result.Data ? string.Empty : result.ErrorException.Message; } /// /// 任务异常,只异常当前任务 /// /// /// /// public string TaskErr(AppWcsTask wcsTask, string errMsg) { DateTime dateTime = DateTime.Now; var result = CommonTool.DbServe.Ado.UseTran(() => { /* 更新WCS任务表状态 */ CommonTool.DbServe.Updateable(new AppWcsTask { TaskStatus = (int)WcsTaskStatusEnum.err, CompleteTime = dateTime, Remark = errMsg }) .UpdateColumns(u => new { u.TaskStatus, u.CompleteTime, u.Remark }) .Where(w => w.PlcId == wcsTask.PlcId) .ExecuteCommand(); if (wcsTask.IsFirstTask()) { /* 更新WMS任务表状态 */ CommonTool.DbServe.Updateable(new AppWmsTask { TaskId = wcsTask.TaskId, TaskStatus = (int)WmsTaskStatusEnum.err, EndTime = dateTime, TaskMsg = errMsg }) .IgnoreColumns(ignoreAllNullColumns: true) .ExecuteCommand(); } }); return result.Data ? string.Empty : result.ErrorException.Message; } /// /// WCS任务完成 /// /// /// /// /// /// 若完成的是最后一个任务,则完成WMS任务 /// public string ComlpeteTask(AppWcsTask wcsTask, string msg) { DateTime dateTime = DateTime.Now; var result = CommonTool.DbServe.Ado.UseTran(() => { /* 更新WCS任务表状态 */ CommonTool.DbServe.Updateable(new AppWcsTask { TaskStatus = (int)WcsTaskStatusEnum.complete, CompleteTime = dateTime, Remark = msg }) .UpdateColumns(u => new { u.TaskStatus, u.CompleteTime, u.Remark }) .Where(w => w.TaskSort >= wcsTask.TaskSort && w.TaskId == wcsTask.TaskId) .ExecuteCommand(); if (wcsTask.IsLastTask()) { // -- 更新wms任务状态 CommonTool.DbServe .Updateable(new AppWmsTask() { TaskId = wcsTask.TaskId, TaskStatus = (int)WmsTaskStatusEnum.complete, EndTime = DateTime.Now, TaskMsg = msg }) .IgnoreColumns(ignoreAllNullColumns: true) .ExecuteCommand(); // -- 更新wcs任务表状态 CommonTool.DbServe .Updateable(new AppWcsTask() { TaskId = wcsTask.TaskId, TaskStatus = (int)WcsTaskStatusEnum.complete, Remark = msg, CompleteTime = DateTime.Now }) .UpdateColumns(u => new { u.TaskStatus, u.Remark, u.CompleteTime }).WhereColumns(w => new { w.TaskId }) .ExecuteCommand(); // -- 备份WCS任务表 CommonTool.DbServe.Ado.ExecuteCommand( $"insert into tbl_app_wcs_task_bak select * from tbl_app_wcs_task where task_id = '{wcsTask.TaskId}'"); // -- 删除WCS任务表 CommonTool.DbServe.Deleteable().Where(w => w.TaskId == wcsTask.TaskId).ExecuteCommand(); } }); return result.Data ? string.Empty : result.ErrorException.Message; } }