#region << 版 本 注 释 >> /*---------------------------------------------------------------- * 创建者:Hupe * 创建时间:2021/10/14 20:04:50 * 版本:V1.0.0 * 描述: * * ---------------------------------------------------------------- * 修改人: * 时间: * 修改说明: * * 版本:V1.0.1 *----------------------------------------------------------------*/ #endregion << 版 本 注 释 >> using ARI.EAP.HOST.Common; using ARI.EAP.HOST.MQ; using ARI.EAP.HOST.MQ.body; using ARI.EAP.HOST.SRD; using Glorysoft.SECS.EQP.Common; using Glorysoft.SECS.EQP.Utilities; using Glorysoft.SECSwell; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ARI.EAP.HOST.Handlers.EventHandlers { public class Process_FinishHandler : IEventHandler { public void Execute(SECSTransaction trans, EVENT even) { try { MQMessage mQMessage = new MQMessage(); mQMessage.header.messageName = "ProcessFinished"; ProcessFinishBody processFinishBody = new ProcessFinishBody(); processFinishBody.spoolingFlag = EquipmentStatus.SpoolingFlag.ToString(); int index = 1; foreach (var key in even.validVariables) { string name = Configuration.conf.sRDConfiguration.tryGetSVOrDV(key); switch (name) { case ("SubstrateID"): { processFinishBody.substrateId = trans.Primary.Root.Item(3).Item(2).Item(index).Value.ToString(); } break; case ("Clock"): { processFinishBody.eventTimestamp = trans.Primary.Root.Item(3).Item(2).Item(index).Value.ToString(); } break; case ("StateFlag"): { processFinishBody.stateFlag = trans.Primary.Root.Item(3).Item(2).Item(index).Value.ToString(); trans.Primary.Root.Item(3).Item(2).Item(index).Name = name; } break; case ("PPExecName"): { processFinishBody.ppExecName = trans.Primary.Root.Item(3).Item(2).Item(index).Value.ToString(); } break; case ("MaterialStatus"): { processFinishBody.materialStatus = trans.Primary.Root.Item(3).Item(2).Item(index).Value.ToString(); } break; case ("CurrentEquipmentState"): { processFinishBody.currentEquipmentState = trans.Primary.Root.Item(3).Item(2).Item(index).Value.ToString(); } break; case ("PreviousEquipmentState"): { processFinishBody.previousEquipmentState = trans.Primary.Root.Item(3).Item(2).Item(index).Value.ToString(); } break; default: { formatCheck(key, trans.Primary.Root.Item(3).Item(2).Item(index)); processFinishBody.processData.Add($"{name}", trans.Primary.Root.Item(3).Item(2).Item(index).Value.ToString()); } break; } trans.Primary.Root.Item(3).Item(2).Item(index).Name = name; index++; } Global.MF.addlog(LoggerService.EtoH, $"S{trans.Primary.Stream}F{trans.Primary.Function}", LoggerService.Receive, even.name, "=" + trans.Primary.SystemBytes.ToString()); LoggerService.SECSLogger.Info(trans.Primary); Global.MF.addlog(LoggerService.HtoE, $"S{trans.Secondary.Stream}F{trans.Secondary.Function}", LoggerService.Send, even.name, "=" + trans.Secondary.SystemBytes.ToString()); LoggerService.SECSLogger.Info(trans.Secondary); mQMessage.body = processFinishBody; Task.Run(() => { MainForm.mq.EAPRequest(mQMessage); MainForm.mq.EAPRequestToRTDB(mQMessage); }); } catch (Exception e) { LoggerService.SECSLogger.Error(e); } } public void formatCheck(uint id,SECSItem item) { eSECS_FORMAT standardFormat = Configuration.conf.sRDConfiguration.GetSECS_FORMAT(id); eSECS_FORMAT format = item.Format; if (standardFormat != format) { MQMessage mQMessage = new MQMessage(); mQMessage.header.messageName = "FormatError"; FormatErrorBody formatErrorBody = new FormatErrorBody(); formatErrorBody.eventName = "ProcessFinished"; formatErrorBody.paramName = Configuration.conf.sRDConfiguration.tryGetSVOrDV(id); formatErrorBody.paramValue = item.Value.ToString(); switch (format) { case eSECS_FORMAT.LIST: formatErrorBody.paramFormat = "L"; break; case eSECS_FORMAT.BOOLEAN: formatErrorBody.paramFormat = "B"; break; case eSECS_FORMAT.ASCII: formatErrorBody.paramFormat = "A"; break; case eSECS_FORMAT.I8: formatErrorBody.paramFormat = "I8"; break; case eSECS_FORMAT.I2: formatErrorBody.paramFormat = "I2"; break; case eSECS_FORMAT.I1: formatErrorBody.paramFormat = "I1"; break; case eSECS_FORMAT.I4: formatErrorBody.paramFormat = "I4"; break; case eSECS_FORMAT.U1: formatErrorBody.paramFormat = "U1"; break; case eSECS_FORMAT.U2: formatErrorBody.paramFormat = "U2"; break; case eSECS_FORMAT.U4: formatErrorBody.paramFormat = "U4"; break; case eSECS_FORMAT.U8: formatErrorBody.paramFormat = "U8"; break; case eSECS_FORMAT.F8: formatErrorBody.paramFormat = "F8"; break; case eSECS_FORMAT.F4: formatErrorBody.paramFormat = "F4"; break; default: formatErrorBody.paramFormat = "A"; break; } switch(standardFormat) { case eSECS_FORMAT.LIST: formatErrorBody.standardFormat = "L"; break; case eSECS_FORMAT.BOOLEAN: formatErrorBody.standardFormat = "B"; break; case eSECS_FORMAT.ASCII: formatErrorBody.standardFormat = "A"; break; case eSECS_FORMAT.I8: formatErrorBody.standardFormat = "I8"; break; case eSECS_FORMAT.I2: formatErrorBody.standardFormat = "I2"; break; case eSECS_FORMAT.I1: formatErrorBody.standardFormat = "I1"; break; case eSECS_FORMAT.I4: formatErrorBody.standardFormat = "I4"; break; case eSECS_FORMAT.U1: formatErrorBody.standardFormat = "U1"; break; case eSECS_FORMAT.U2: formatErrorBody.standardFormat = "U2"; break; case eSECS_FORMAT.U4: formatErrorBody.standardFormat = "U4"; break; case eSECS_FORMAT.U8: formatErrorBody.standardFormat = "U8"; break; case eSECS_FORMAT.F8: formatErrorBody.standardFormat = "F8"; break; case eSECS_FORMAT.F4: formatErrorBody.standardFormat = "F4"; break; default: formatErrorBody.standardFormat = "A"; break; } mQMessage.body = formatErrorBody; Task.Run(() => MainForm.mq.EAPRequest(mQMessage)); } } } }