wcs_server_kate_suzhou/WcsMain/Business/CirculationTask/StackerConvey/CheckAccount.cs

105 lines
4.3 KiB
C#
Raw Normal View History

using CirculateTool.Attribute;
2024-05-14 16:30:56 +08:00
using WcsMain.Business.CommonAction;
using WcsMain.DataBase.Dao;
using WcsMain.DataBase.TableEntity;
using WcsMain.Enum;
using WcsMain.EquipOperation.Entity;
using WcsMain.EquipOperation.StackerConvey;
2024-05-14 16:30:56 +08:00
namespace WcsMain.Business.CirculationTask.StackerConvey;
/// <summary>
/// 过账PLC任务回告 ---- 库前输送线
/// </summary>
[Circulation]
public class CheckAccount(AppWcsTaskDao wcsTaskDao, StackerConveyOperation stackerConveyOperation, WCSTaskExecuteEvent wcsTaskEvent)
{
/// <summary>
/// PLC过账
/// </summary>
/// <returns></returns>
[Circulation("监控PLC地址过账", 1000)]
public bool CheckAccountTask()
{
List<TaskFeedBackEntity>? taskFeedBackEntities = stackerConveyOperation.GetConveyTaskFeedBackData(20);
2024-05-14 16:30:56 +08:00
if (taskFeedBackEntities == default || taskFeedBackEntities.Count < 1) {return true; }
foreach (TaskFeedBackEntity taskFeedBackEntity in taskFeedBackEntities)
{
if (taskFeedBackEntity.PlcId == 0) { continue; }
List<AppWcsTask>? wcsTasks = wcsTaskDao.Select(new AppWcsTask() { PlcId = taskFeedBackEntity.PlcId });
2024-05-14 16:30:56 +08:00
if (wcsTasks == default)
{
ConsoleLog.Error($"【异常】库前输送过账查询任务数据失败,和数据库服务器连接中断");
Thread.Sleep(2000);
continue; // 网络连接中断
}
if (wcsTasks.Count < 1)
{
ConsoleLog.Warning($"【提示】库前输送过账区获取任务ID{taskFeedBackEntity.PlcId},无关联任务");
stackerConveyOperation.ClearFeedBackData(taskFeedBackEntity); // 清除过账
2024-05-14 16:30:56 +08:00
continue; // 任务无数据
}
var wcsTask = wcsTasks[0];
switch (taskFeedBackEntity.FeedBackType)
{
case (int)TaskFeedBackTypeEnum.cancel: // 任务取消
CancelTask(taskFeedBackEntity, wcsTask);
break;
case (int)TaskFeedBackTypeEnum.complete: // 任务完成
CompleteTask(taskFeedBackEntity, wcsTask);
break;
default:
OtherTaskFeedBackType(taskFeedBackEntity); // 其他任务类型,
break;
}
}
return true;
}
/// <summary>
/// 过账任务取消
/// </summary>
/// <param name="taskFeedBackEntity"></param>
private void CancelTask(TaskFeedBackEntity taskFeedBackEntity, AppWcsTask wcsTask)
{
ConsoleLog.Warning($"【提示】库前输送过账区获取任务ID{taskFeedBackEntity.PlcId},任务已经被取消,后续任务也一并取消,任务号:{wcsTask.TaskId}");
string? cleanAccountErr = stackerConveyOperation.ResetFeedBackData(taskFeedBackEntity); // 清除过账
2024-05-14 16:30:56 +08:00
if (!string.IsNullOrEmpty(cleanAccountErr))
{
ConsoleLog.Warning($"[警告]取消任务清除过账区发生异常,信息:{cleanAccountErr}");
}
/* 执行 WMS 任务异常动作 */
wcsTaskEvent.ErrTaskEvent(wcsTask, "任务被PLC取消");
2024-05-14 16:30:56 +08:00
}
/// <summary>
/// 过账任务完成
/// </summary>
/// <param name="taskFeedBackEntity"></param>
private void CompleteTask(TaskFeedBackEntity taskFeedBackEntity, AppWcsTask wcsTask)
{
ConsoleLog.Tip($"[提示]过账区获取任务ID{taskFeedBackEntity.PlcId},任务已经完成,任务号:{wcsTask.TaskId}");
string? cleanAccountErr = stackerConveyOperation.ResetFeedBackData(taskFeedBackEntity); // 清除过账
2024-05-14 16:30:56 +08:00
if (!string.IsNullOrEmpty(cleanAccountErr))
{
ConsoleLog.Warning($"[警告]完成任务清除过账区发生异常,信息:{cleanAccountErr}");
}
/* 执行 WMS 任务完成动作 */
wcsTaskEvent.CompleteTaskEvent(wcsTask, "PLC上报完成");
2024-05-14 16:30:56 +08:00
}
/// <summary>
/// 其他过账类型
/// </summary>
/// <param name="taskFeedBackEntity"></param>
private void OtherTaskFeedBackType(TaskFeedBackEntity taskFeedBackEntity)
{
ConsoleLog.Warning($"[警告]过账区获取任务ID{taskFeedBackEntity.PlcId},无法识别的过账类型:{taskFeedBackEntity.FeedBackType}");
stackerConveyOperation.ResetFeedBackData(taskFeedBackEntity); // 清除过账
2024-05-14 16:30:56 +08:00
}
}