dc/Handlers/EventHandlers/Process_FinishHandler.cs
13118993771@163.com 562bd7a7b8 新版
2023-02-23 11:33:23 +08:00

215 lines
9.0 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#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 = Configurations.conf.sRDConfiguration.tryGetSVOrDV(key);
switch (name)
{
case ("SubstrateID"):
{
processFinishBody.substrateId = trans.Primary.Root.Item(3).Item(1).Item(2).Item(index).Value.ToString();
}
break;
case ("Clock"):
{
processFinishBody.eventTimestamp = trans.Primary.Root.Item(3).Item(1).Item(2).Item(index).Value.ToString();
}
break;
case ("StateFlag"):
{
processFinishBody.stateFlag = trans.Primary.Root.Item(3).Item(1).Item(2).Item(index).Value.ToString();
trans.Primary.Root.Item(3).Item(1).Item(2).Item(index).Name = name;
}
break;
case ("ProcessResult"):
{
processFinishBody.materialStatus = trans.Primary.Root.Item(3).Item(1).Item(2).Item(index).Value.ToString();
}
break;
case ("CurrentEquipmentState"):
{
processFinishBody.currentEquipmentState = trans.Primary.Root.Item(3).Item(1).Item(2).Item(index).Value.ToString();
}
break;
case ("PreviousEquipmentState"):
{
processFinishBody.previousEquipmentState = trans.Primary.Root.Item(3).Item(1).Item(2).Item(index).Value.ToString();
}
break;
default:
{
formatCheck(key, trans.Primary.Root.Item(3).Item(1).Item(2).Item(index));
processFinishBody.processData.Add($"{name}", trans.Primary.Root.Item(3).Item(1).Item(2).Item(index).Value.ToString());
}
break;
}
trans.Primary.Root.Item(3).Item(1).Item(2).Item(index).Name = name;
index++;
}
Global.MF.addlog(trans, LoggerService.Receive, even.name, 0);
LoggerService.SECSLogger.Info(trans.Primary);
Global.MF.addlog(trans, LoggerService.Send, even.name, 1);
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 = Configurations.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 = Configurations.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));
}
}
}
}