2025-05-22 13:06:49 +08:00
|
|
|
|
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;
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
|
* 任务表的混合操作类,一般用在此处的都是同时需要操作多个表的
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
/// <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.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<AppWcsTask>().Where(w => w.TaskId == wcsTask.TaskId).ExecuteCommand();
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
});
|
|
|
|
|
|
return result.Data ? string.Empty : result.ErrorException.Message;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|