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? 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,
TaskMsg = msg
})
.IgnoreColumns(ignoreAllNullColumns: true)
.ExecuteCommand();
}
});
return result.Data ? string.Empty : result.ErrorException.Message;
}
}