2024-06-20 09:23:01 +08:00
|
|
|
|
using WcsMain.ExtendMethod;
|
|
|
|
|
|
using WcsMain.DataBase.Dao;
|
|
|
|
|
|
using WcsMain.DataBase.TableEntity;
|
|
|
|
|
|
using WcsMain.DataBase.MixDao;
|
|
|
|
|
|
using WcsMain.Enum.TaskEnum;
|
|
|
|
|
|
using WcsMain.WcsAttribute.AutoFacAttribute;
|
|
|
|
|
|
using WcsMain.StaticData;
|
|
|
|
|
|
|
|
|
|
|
|
namespace WcsMain.Business.CommonAction;
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// WCS 任务 触发的事件
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
[Component]
|
|
|
|
|
|
public class WCSTaskExecuteEvent(TaskDao taskDao, SendWmsTaskStatus sendWmsTaskStatus, AppLocationDao locationDao)
|
|
|
|
|
|
{
|
|
|
|
|
|
private readonly AppLocationDao _locationDao = locationDao;
|
|
|
|
|
|
private readonly SendWmsTaskStatus _sendWmsTaskStatus = sendWmsTaskStatus;
|
|
|
|
|
|
private readonly TaskDao _taskDao = taskDao;
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 任务执行异常触发事件
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="task"></param>
|
|
|
|
|
|
/// <param name="errText"></param>
|
|
|
|
|
|
public void ErrTaskEvent(AppWcsTask task, string errText)
|
|
|
|
|
|
{
|
|
|
|
|
|
string errMsg = _taskDao.TaskErrAndCancelOtherTask(task, errText);
|
|
|
|
|
|
if (!string.IsNullOrEmpty(errMsg))
|
|
|
|
|
|
{
|
|
|
|
|
|
ConsoleLog.Error($"【异常】任务异常更新数据库失败,任务信息:{task},参考信息:{errMsg}");
|
|
|
|
|
|
}
|
|
|
|
|
|
if (task.CreatePerson == StaticString.WMS)
|
|
|
|
|
|
{
|
|
|
|
|
|
_sendWmsTaskStatus.SendTaskErr(task.TaskId, errText);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 任务执行异常触发事件 --- 取货位置无货
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="task"></param>
|
|
|
|
|
|
/// <param name="errText"></param>
|
|
|
|
|
|
public void EmptyOutTaskEvent(AppWcsTask task, string errText)
|
|
|
|
|
|
{
|
|
|
|
|
|
string errMsg = _taskDao.TaskErr(task, errText);
|
|
|
|
|
|
if (!string.IsNullOrEmpty(errMsg))
|
|
|
|
|
|
{
|
|
|
|
|
|
ConsoleLog.Error($"【异常】任务异常更新数据库失败,任务信息:{task},参考信息:{errMsg}");
|
|
|
|
|
|
}
|
|
|
|
|
|
if (task.CreatePerson == StaticString.WMS)
|
|
|
|
|
|
{
|
|
|
|
|
|
_sendWmsTaskStatus.SendTaskEmptyOut(task.TaskId);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 任务执行异常触发事件 --- 卸货位置有货
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="task"></param>
|
|
|
|
|
|
/// <param name="errText"></param>
|
|
|
|
|
|
public void DoubleInTaskEvent(AppWcsTask task, string errText)
|
|
|
|
|
|
{
|
|
|
|
|
|
string errMsg = _taskDao.TaskErr(task, errText);
|
|
|
|
|
|
if (!string.IsNullOrEmpty(errMsg))
|
|
|
|
|
|
{
|
|
|
|
|
|
ConsoleLog.Error($"【异常】卸货位置有货更新数据库失败,任务信息:{task},参考信息:{errMsg}");
|
|
|
|
|
|
}
|
|
|
|
|
|
if (task.CreatePerson == StaticString.WMS)
|
|
|
|
|
|
{
|
|
|
|
|
|
_sendWmsTaskStatus.SendTaskDoubleIn(task.TaskId);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// WCS任务开始时触发
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="task"></param>
|
|
|
|
|
|
public void StartTaskEvent(AppWcsTask task)
|
|
|
|
|
|
{
|
|
|
|
|
|
string errMsg = _taskDao.StartTask(task);
|
|
|
|
|
|
if (!string.IsNullOrEmpty(errMsg))
|
|
|
|
|
|
{
|
|
|
|
|
|
ConsoleLog.Error($"【异常】任务开始更新数据库失败,任务信息:{task},参考信息:{errMsg}");
|
|
|
|
|
|
}
|
|
|
|
|
|
if (task.IsFirstTask() && task.CreatePerson == StaticString.WMS)
|
|
|
|
|
|
{
|
|
|
|
|
|
_sendWmsTaskStatus.SendTaskStart(task.TaskId);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#region WCS 任务完成时触发
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// WCS任务完成时触发
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="task"></param>
|
|
|
|
|
|
/// <param name="msg"></param>
|
|
|
|
|
|
public void CompleteTaskEvent(AppWcsTask task, string msg)
|
|
|
|
|
|
{
|
|
|
|
|
|
UpdateLocationInfo(task); // 更新库位的相关信息
|
|
|
|
|
|
HandleTaskData(task, msg); // 处理任务数据
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private void HandleTaskData(AppWcsTask task, string msg)
|
|
|
|
|
|
{
|
|
|
|
|
|
string errMsg = _taskDao.ComlpeteTask(task, msg);
|
|
|
|
|
|
if(!string.IsNullOrEmpty(errMsg))
|
|
|
|
|
|
{
|
|
|
|
|
|
ConsoleLog.Error($"【异常】PlcId:{task.PlcId} 任务完成失败,异常信息:{errMsg}");
|
|
|
|
|
|
}
|
2024-07-10 10:42:49 +08:00
|
|
|
|
if (task.CreatePerson == StaticString.WMS) {
|
|
|
|
|
|
_sendWmsTaskStatus.SendTaskComplete(task.TaskId);
|
|
|
|
|
|
}
|
2024-06-20 09:23:01 +08:00
|
|
|
|
}
|
2024-07-10 10:42:49 +08:00
|
|
|
|
/*
|
|
|
|
|
|
AppWmsTaskDao.Instance().CompleteTaskWithTaskId(wcsTask.TaskId, "完成");
|
|
|
|
|
|
// 发送WMS任务完成
|
|
|
|
|
|
if (wcsTask.CreatePerson is "WMS")
|
|
|
|
|
|
{
|
|
|
|
|
|
//SendWmsTaskStatus.Instance().SendTaskComplete
|
|
|
|
|
|
SendWmsTaskStatus.SendTaskComplete(wcsTask.TaskId);
|
|
|
|
|
|
}
|
|
|
|
|
|
*/
|
2024-06-20 09:23:01 +08:00
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 更新库位的相关信息,
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="task"></param>
|
|
|
|
|
|
/// <remarks>
|
|
|
|
|
|
/// 特别注意:随缘更新,具体占用情况必须以WMS为准
|
|
|
|
|
|
/// </remarks>
|
|
|
|
|
|
private void UpdateLocationInfo(AppWcsTask task)
|
|
|
|
|
|
{
|
|
|
|
|
|
switch (task.TaskType)
|
|
|
|
|
|
{
|
|
|
|
|
|
case (int)TaskTypeEnum.inTask: // 入库任务
|
|
|
|
|
|
_locationDao.Update(AppLocation.CreateUsedInstance(task.Destination, task.VehicleNo));
|
|
|
|
|
|
break;
|
|
|
|
|
|
case (int)TaskTypeEnum.outTask: // 出库任务
|
|
|
|
|
|
_locationDao.Update(AppLocation.CreateEmptyInstance(task.Origin));
|
|
|
|
|
|
break;
|
|
|
|
|
|
case (int)TaskTypeEnum.moveTask: // 移库任务
|
|
|
|
|
|
_locationDao.Update(AppLocation.CreateUsedInstance(task.Destination, task.VehicleNo), AppLocation.CreateEmptyInstance(task.Origin));
|
|
|
|
|
|
break;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|