Files
52-NingdePDC-MesProject/MisDataFunction/Function1058/OpcServer/WebSubmit.cs
XingCheng3 dff0156cdd MVP!
2026-05-26 09:41:24 +08:00

316 lines
14 KiB
C#
Raw 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.
using System;
using MesServerWork;
using System.Threading;
using MisDataSaveDate;
using System.Collections;
namespace MesServerFunctions
{
partial class FunctionMES
{
/// <summary>
/// 处理WEB页面发送过来的请求m_Command + "|" + m_Value;
/// </summary>
/// <param name="OpName"></param>
/// <param name="Content"></param>
private void WebSubmit(object e)
{
try
{
var msgEvent = (DeviceDriver_BasicData.CustomeEvetnArgs)e;
string OpName = Convert.ToString(msgEvent.OpName);
string Content = Convert.ToString(msgEvent.TagValue);
string opName_SubLine = "";
string engineID = "";//工件信息
string[] dataArray = Content.Split('|');
if (dataArray.Length != 2)
return;
string m_Command = dataArray[0].ToString();//消息类型
string m_Value = dataArray[1].ToString();//消息参数
string[] m_Value_array = m_Value.Split('&');//消息参数数量
int m_Value_length = m_Value_array.Length; //消息参数长度
if (MIS_BASE.hashtable_EngineGetOver_EngineTypeID == null)
{
MIS_BASE.InitHashtable_MesServerCode();
}
if (MIS_BASE.hashtable_EngineGetOver_EngineID.ContainsKey(OpName))
{
engineID = MIS_BASE.hashtable_EngineGetOver_EngineID[OpName].ToString();
}
if (MIS_BASE.hashtable_OpNameRepair == null)
{
MIS_BASE.InitHashtable_MesServerCode();
}
var _e = new DeviceDriver_BasicData.CustomeEvetnArgs();
_e.OpName = OpName;
_e.TagValue = m_Value;
string msg;
bool bolVal;
//根据请求的命令处理逻辑
switch (m_Command)
{
case "Barcode":
if (m_Value_length > 1) return;
fun_Barcode(_e);
break;
case "ConfirmOkGo"://合格放行
//修改托盘状态
//BaseDataSystemMES.BaseData_tagTable_Engine_IsNG_Delete(OpName, engineID);
MIS_BASE.Write_ConfirmOkGo(OpName, true);
MIS_BASE.Write_FalseGO(OpName, false);
Thread.Sleep(1000);
MIS_BASE.Write_ConfirmOkGo(OpName, false);
break;
case "FalseGO"://返修放行
//修改托盘状态
//BaseDataSystemMES.BaseData_tagTable_Engine_IsNG_Delete(OpName, engineID);
MIS_BASE.Write_FalseGO(OpName, true);
MIS_BASE.Write_ConfirmOkGo(OpName, false);
Thread.Sleep(1000);
MIS_BASE.Write_FalseGO(OpName, false);
break;
case "NgGO"://不合格放行
//修改托盘状态
//保存不合格信息(必须保存不合格放行信息由于B5A的Moby没有不合格标志位)
//BaseDataSystemMES.BaseData_tagTable_Engine_IsNG_Insert(OpName, engineID, "", "");
MIS_BASE.Write_FalseGO(OpName, true);
MIS_BASE.Write_ConfirmOkGo(OpName, false);
Thread.Sleep(1000);
MIS_BASE.Write_FalseGO(OpName, false);
break;
case "FixAllow"://重新拧紧
break;
case "RepairUplineMES"://返修上线
MIS_BASE.Write_RepairUpline_MES(OpName, true);
break;
case "Normal"://启用正常拧紧工位
MIS_BASE.Write_Normal(OpName, 1);
MIS_BASE.Write_UnNormal(OpName, 0);
break;
case "UnNormal"://启用备用拧紧工位
MIS_BASE.Write_Normal(OpName, 0);
MIS_BASE.Write_UnNormal(OpName, 1);
break;
case "ResetDevice"://复位设备
MIS_BASE.Write_ResetDevice(OpName, true);
System.Threading.Thread.Sleep(1000);
MIS_BASE.Write_ResetDevice(OpName, false);
break;
case "IsNeedRepaire"://返修上线(返修上线点)
if (Convert.ToInt32(m_Value) == 1)
{
//修改托盘状态
MIS_BASE.Write_PalletInfo(OpName, 3);
//通知修改成功
MIS_BASE.Write_UpdatePalletOK(OpName, true);
IsNeedRepaire_OK(OpName);
}
else if (Convert.ToInt32(m_Value) == 0)
{
//直接给出工作完成
MIS_BASE.Write_MesWorkFinish(OpName, true);
}
break;
case "PalletGO":
if (Convert.ToInt32(m_Value) == 1)
{
//直接给出工作完成
MIS_BASE.Write_MesWorkFinish(opName_SubLine, true);
}
break;
case "ContinueMatch":
//BaseDataSystemMES.QualityVerifyStatus_Hash_Write(OpName, true);
fun_EngineTypeGetOverPLC(_e);
break;
//初始化网页信号
case "IniSingalToWeb":
InitializeSingalToWeb(OpName);
break;
// 检查项 检查完成
case "checkWorkOver":
//MIS_BASE.Write_TagValueByTagTypeID(30, OpName,1);
//msg = "MES|checkWorkOverIsShow|" + OpName + "|" + 0;
//SendMessage.AsyncSendMessage(msg);
break;
// 重新申请上线
case "againPartLoad":
// 判断是否有工件到位
MIS_BASE.Read_WorkStart(OpName, out bolVal);
if (bolVal)
{
MIS_BASE.Write_TagValueByTagTypeID(35, OpName, 1);
msg = "【" + OpName + "】" + "重新申请上线完成!";
SendMessage.AsyncSendMessage_Notice(OpName, msg);
}
else
{
msg = "【" + OpName + "】" + "当前无工件到位信号,请确认是否存在工件!";
SendMessage.AsyncSendMessage_Notice(OpName, msg);
}
break;
// 跳过交互
case "skipWork":
// 判断是否有工件到位
MIS_BASE.Read_WorkStart(OpName, out bolVal);
if (bolVal)
{
MIS_BASE.Write_EngineTypeGetOver_MES(OpName, true); // 传递机型
MIS_BASE.Write_FixAllow(OpName, true); // 允许工作
MIS_BASE.Write_TagValueByTagTypeID(30, OpName, 1); // 检查完成
MIS_BASE.Write_MesReadOver(OpName, true); // 保存完成
MIS_BASE.Write_MesWorkFinish(OpName, true); // 工作完成
msg = "【" + OpName + "】" + "跳过交互完成!";
SendMessage.AsyncSendMessage_Notice(OpName, msg);
}
else
{
msg = "【" + OpName + "】" + "当前无工件到位信号,请确认是否存在工件!";
SendMessage.AsyncSendMessage_Notice(OpName, msg);
}
break;
case "twoWorkSkip"://重新工作工件跳过工作(重新工作工件)
//工作完成
EngineTypeGetOver_PLC_Work_Skip(OpName);
break;
case "twoWork"://重新工作工件重新工作(重新工作工件)
//允许工作
EngineTypeGetOver_PLC_Work_two(OpName);
break;
default: break;
}
}
catch (Exception err)
{
////ApplicationLog.WriteLog(err, "Function08:WebSubmit");
}
}
/// <summary>
/// 网页重现登录,恢复关闭前的页面状态
/// </summary>
/// <param name="Opname">工位号</param>
private void InitializeSingalToWeb(string Opname)
{
int EngineTypeID;
string EngineType;
string EngineID;
int PartPallet_Code;
int ProcessCode;
bool S_FixOK;
bool S_FixOver;
bool S_FixAllow;//允许工作 DBX3.1
bool S_WorkStart;//工件到位 DBX0.1
bool S_PartLoad;//申请上线
bool S_EngineGetOver;//传递机型 DBX0.4
bool S_MesRead;//允许保存 DBX3.1
bool S_ReadOver;//保存完成
bool S_MaterialVerifyOver;//工作完成 DBX0.3
int BoltCode;
int workStepProperty;
int S_QualityMask;//合格标志 DBX588
string S_plcStatus = "false";//DBX501.5 PLC直通1 强制放行 0 正常循环
//获取Moby
MIS_BASE.GetEngineTypeFromDB(Opname, out EngineTypeID, out EngineType, out EngineID, out PartPallet_Code);
MIS_BASE.Read_FixAllow(Opname, out S_FixAllow);
MIS_BASE.Read_FixOK(Opname, out S_FixOK);
MIS_BASE.Read_FixOver(Opname, out S_FixOver);
MIS_BASE.Read_WorkStart(Opname, out S_WorkStart);
MIS_BASE.Read_PartLoad(Opname, out S_PartLoad);
MIS_BASE.Read_EngineGetOver_PLC(Opname, out S_EngineGetOver);
MIS_BASE.Read_QualityData_Read_CF(Opname, out S_MesRead);
MIS_BASE.Read_MesReadOver(Opname, out S_ReadOver);
MIS_BASE.Read_MaterialVerifyOver(Opname, out S_MaterialVerifyOver);
MIS_BASE.Read_QualityMask(Opname, out S_QualityMask);
if (S_WorkStart == true)
{
SendMessageFun.SendInfomation("WorkStart", Convert.ToString(Convert.ToInt32(S_WorkStart)), Opname);
}
//----------------------------------------------------
if (S_PartLoad == true)
{
SendMessageFun.SendInfomation("PartLoad", Convert.ToString(Convert.ToInt32(S_PartLoad)), Opname);
}
//----------------------------------------------------
if (S_EngineGetOver == true)
{
SendMessageFun.SendInfomation("EngineTypeGetOverPLC", Convert.ToString(Convert.ToInt32(S_EngineGetOver)), Opname);
//通知web显示
SendMessageFun.SendMessage("5123", "1111", Opname);
}
//----------------------------------------------------
if (S_FixAllow == true)
{
SendMessageFun.SendInfomation("FixAllow", Convert.ToString(Convert.ToInt32(S_FixAllow)), Opname);
}
//----------------------------------------------------
if (S_MesRead == true)
{
SendMessageFun.SendInfomation("MesRead", Convert.ToString(Convert.ToInt32(S_MesRead)), Opname);
}
//----------------------------------------------------
if (S_ReadOver == true)
{
SendMessageFun.SendInfomation("MesReadOver", Convert.ToString(Convert.ToInt32(S_ReadOver)), Opname);
}
//----------------------------------------------------
if (S_MaterialVerifyOver == true)
{
SendMessageFun.SendInfomation("MaterialVerifyOver", Convert.ToString(Convert.ToInt32(S_MaterialVerifyOver)), Opname);
}
//----------------------------------------------------
if (S_QualityMask == 1)
{
SendMessageFun.SendInfomation("QualityMask", Convert.ToString(Convert.ToInt32(S_QualityMask)), Opname);
}
//----------------------------------------------------
if (S_plcStatus.ToLower() == "false")
{
SendMessageFun.SendInfomation("PlcStatus", "0", Opname);
}
else
{
SendMessageFun.SendInfomation("PlcStatus", "1", Opname);
}
//----------------------------------------------------
if (S_FixAllow == true)
{
SendMessageFun.SendInfomation("FixAllow", Convert.ToString(Convert.ToInt32(S_FixAllow)), Opname);
}
//----------------------------------------------------
if (S_FixOK == true)
{
SendMessageFun.SendInfomation("FixOK", Convert.ToString(Convert.ToInt32(S_FixOK)), Opname);
}
//----------------------------------------------------
if (S_FixOver == true)
{
SendMessageFun.SendInfomation("FixOver", Convert.ToString(Convert.ToInt32(S_FixOver)), Opname);
}
// 报警信息
InitAlarm(Opname);
}
private void InitAlarm(string Opname)
{
FuntionMesRead.Alarm_InitAlarm_Send(Opname, out Hashtable ht);
foreach (DictionaryEntry kv in ht)
{
var TagID = kv.Key.ToString();
var TagValue = kv.Value.ToString();
FuntionMesRead.Send_AlarmMsg(TagID, TagValue);
}
}
}
}