wcs_server_kate_suzhou/WcsMain/DataBase/MixDao/TaskDao.cs

203 lines
6.9 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using WcsMain.Common;
using WcsMain.DataBase.TableEntity;
using WcsMain.Enum.TaskEnum;
using WcsMain.ExtendMethod;
using WcsMain.WcsAttribute.AutoFacAttribute;
namespace WcsMain.DataBase.MixDao;
/*
* 任务表的混合操作类,一般用在此处的都是同时需要操作多个表的
*/
/// <summary>
/// 任务表的混合操作类
/// </summary>
[Component]
public class TaskDao
{
/// <summary>
/// 插入WCS任务同时将WMS任务更成排队中
/// </summary>
/// <param name="wcsTasks"></param>
/// <returns></returns>
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;
}
/// <summary>
/// wcs任务开始
/// </summary>
/// <param name="wcsTask"></param>
/// <returns></returns>
/// <remarks>
/// 将该任务状态更新为启动若该任务是第一个任务把对应的WMS任务更新为启动
/// </remarks>
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;
}
/// <summary>
/// 任务异常取消全部后续任务和该任务号的Wms任务
/// </summary>
/// <param name="wcsTask"></param>
/// <param name="errMsg"></param>
/// <returns></returns>
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;
}
/// <summary>
/// 任务异常,只异常当前任务
/// </summary>
/// <param name="wcsTask"></param>
/// <param name="errMsg"></param>
/// <returns></returns>
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;
}
/// <summary>
/// WCS任务完成
/// </summary>
/// <param name="wcsTask"></param>
/// <param name="msg"></param>
/// <returns></returns>
/// <remarks>
/// 若完成的是最后一个任务则完成WMS任务
/// </remarks>
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;
}
}