diff --git a/MisDataFunction/Function1054/Methods/TcsAgvDispatch.cs b/MisDataFunction/Function1054/Methods/TcsAgvDispatch.cs new file mode 100644 index 0000000..73ce9a7 --- /dev/null +++ b/MisDataFunction/Function1054/Methods/TcsAgvDispatch.cs @@ -0,0 +1,67 @@ +using System; +using System.Threading; +using MesServerWork; +using MisDataSaveDate; +using MisDataSaveDate.Helper; + +namespace MesServerFunctions +{ + public partial class FunctionMES + { + private class TcsAgvDispatchContext + { + public DeviceDriver_BasicData.CustomeEvetnArgs EventArgs { get; set; } + public string ActionType { get; set; } + } + + private void fun_TcsAgvDispatch(DeviceDriver_BasicData.CustomeEvetnArgs e, string actionType) + { + ThreadPool.QueueUserWorkItem(TcsAgvDispatch, new TcsAgvDispatchContext + { + EventArgs = e, + ActionType = actionType + }); + } + + private void TcsAgvDispatch(object state) + { + string opName = ""; + try + { + TcsAgvDispatchContext context = state as TcsAgvDispatchContext; + if (context == null || context.EventArgs == null) + { + throw new Exception("TCS任务参数为空"); + } + + opName = Convert.ToString(context.EventArgs.OpName); + if (string.IsNullOrWhiteSpace(opName)) + { + throw new Exception("PLC事件未包含工位号"); + } + + int completionCode = context.ActionType == "插" ? 400 : 401; + MIS_BASE.WritePLC(completionCode, opName, false); + + TCSAGV_CallResult result = TCSAGV_BusinessLogic.DispatchStationTask( + opName, context.ActionType, "", "PLC_AUTO", "PLC自动", "", true); + if (!result.Success) + { + throw new Exception(result.Message); + } + + string logText = "TCS" + context.ActionType + "任务已下发:工位=" + opName + + ",外部任务编号=" + result.ExternalCode; + ApiLogHelper.SaveMesLog(opName, logText, MesLogType.INFO); + SendMessage.AsyncSendMessage_Notice(opName, logText); + } + catch (Exception ex) + { + string logText = "TCS插拔任务下发失败:" + ex.Message; + ApiLogHelper.SaveMesLog(opName, logText, MesLogType.ERROR); + SendMessage.AsyncSendMessage_Notice(opName, logText); + MyLog4Net.MyLogHelper.Error("Function1054_TcsAgvDispatch", logText + Environment.NewLine + ex); + } + } + } +}