using WcsMain.Common; using WcsMain.DataBase.TableEntity; using WcsMain.Enum.TaskEnum; using WcsMain.ExtendMethod; using WcsMain.WcsAttribute.AutoFacAttribute; namespace WcsMain.DataBase.MixDao; /* * 任务表的混合操作类,一般用在此处的都是同时需要操作多个表的 */ /// /// 任务表的混合操作类 /// [Component] public class TaskDao { /// /// 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, TaskMsg = msg }) .IgnoreColumns(ignoreAllNullColumns: true) .ExecuteCommand(); } }); return result.Data ? string.Empty : result.ErrorException.Message; } }