Files
2-BeiqiFutian-MesProject/MisDataFunction/MesServer.Function/Function1051/OpcServer/EngineGetOver.cs
2026-06-01 15:33:29 +08:00

139 lines
7.0 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 System.Data;
using bizFacade;
using MesServerWork;
//using SystemFramework;
namespace MesServerFunctions
{
partial class FunctionMES
{
object lockBarcodeEngineTypeGetOver = new object();
/// <summary>
/// PLC传递机型处理
/// </summary>
/// <param name="OpName"></param>
/// <param name="tagValue"></param>
private void EngineTypeGetOver_PLC(object e)
{
lock(lockBarcodeEngineTypeGetOver)
{
try
{
DoWhatPlc.CustomeEvetnArgs msgEvent = (DoWhatPlc.CustomeEvetnArgs)e;
string OpName = Convert.ToString(msgEvent.OpName);
int tagValue = Convert.ToInt32(msgEvent.TagValue);
//判断PLC机型与MES机型是否一致
if (tagValue == 1)
{
bool MesRead = false;
int EngineTypeID;//机型代码
int PartPallet_Code;//托盘编号
string EngineType;//机型
string EngineID;//工件编号
int EngineTypeID_MES;//机型代码
string EngineType_MES;//机型
string EngineID_MES;//工件编号
//上线工位清MES传递机型信号
MIS_BASE.Write_EngineTypeGetOver_MES(OpName, false);
MIS_BASE.Read_QualityData_Read_CF(OpName, out MesRead);
//第一步判断允许保存和保存完成信号是否全部被清空若未清空则通知复位MES&PLC
if (MesRead)
{
//未能清空信号,请求复位
SendMessageFun.SendInfomation("AskReset", "1", OpName);
return;
}
string OrderForm;
string OrderForm_MES;
MIS_BASE.GetEngineTypeFromPLC(OpName, out EngineTypeID, out EngineType, out EngineID, out PartPallet_Code, out OrderForm);
MIS_BASE.GetEngineTypeFromPLC_MES(OpName, out EngineTypeID_MES, out EngineType_MES, out EngineID_MES, out OrderForm_MES);
// 判断是否存在异常导致不允许工作 输出msg到前端
DataTable OpNameIsWorkDt = BaseDataSystemMES.OpNameIsAllowWork(OpName);
if (Convert.ToInt32(OpNameIsWorkDt.Rows[0]["提示类型"]) == 3)
{
SendMessageFun.SendInfomation("ShowTipBox", OpNameIsWorkDt.Rows[0]["提示文本"].ToString(), OpName);
return;
}
if (EngineTypeID_MES == EngineTypeID & EngineID_MES == EngineID & EngineType_MES == EngineType & OrderForm_MES == OrderForm)
{
DataTable dt = BaseDataSystemMES.EngineTypeChange(OpName, EngineID);
// 提示机型发生变化
if (dt.Rows.Count > 0)
{
string mesValue = Newtonsoft.Json.JsonConvert.SerializeObject(dt);//<DoWhatPlc.CustomeEvetnArgs>(recData);
string message = "MES|MaterialList_Dif_Resources|" + OpName + "|" + mesValue;
SendMessage.AsyncSendMessage(message);
}
//写入到数据库的[北汽福田工位状态监控MOBY]表中
BaseDataSystemMES.OpName_MIS_MOBY_Insert(OpName, MobyTagType.EngineTypeID, EngineTypeID.ToString());
BaseDataSystemMES.OpName_MIS_MOBY_Insert(OpName, MobyTagType.EngineType, EngineType);
BaseDataSystemMES.OpName_MIS_MOBY_Insert(OpName, MobyTagType.EngineID, EngineID);
BaseDataSystemMES.OpName_MIS_MOBY_Insert(OpName, MobyTagType.OrderForm, OrderForm);
BaseDataSystemMES.OpName_MIS_MOBY_Insert(OpName, MobyTagType.PartPallet_Code, PartPallet_Code.ToString());
// 判断是否返修件 是否需要继续工作
DataTable backWorkDt = BaseDataSystemMES.Get_IsBackWork(OpName, EngineID);
if (backWorkDt.Rows[0]["result"].ToString() == "1")
{
// 写返修点并且退出方法
MIS_BASE.WritePLC(33, OpName, true);
string message = "MES|ShowTipBox|" + OpName + "|该工件为返工工件!";
SendMessage.AsyncSendMessage(message);
return;
}
// 判断是否需要二次确认工作(返修线返修优先,其次已工作过)
DataTable dt2 = BaseDataSystemMES.EngineIsNeedTwoWorkConfirm(OpName, OrderForm, EngineID);
if (dt2.Rows[0]["result"].ToString() == "1") //已完成s
{
//不允许工作
MIS_BASE.Write_FixAllow(OpName, false);
// 通知WEB校验重新工作还是跳过 点重新工作给允许工作,点跳过给工作完成
string msg = dt2.Rows[0]["msg"].ToString().Replace("|", " ").Replace("&", " ");
string color = dt2.Rows[0]["color"].ToString();
string message = "MES|Engine_Is_TwoWork_Msg|" + OpName + "|" + msg + "&" + color;
SendMessage.AsyncSendMessage(message);
}
else
{
//正常传递机型流程
EngineTypeGetOver_PLC_Work(OpName, EngineTypeID, EngineType, EngineID, PartPallet_Code, OrderForm);
}
//EngineTypeGetOver_PLC_Work(OpName, EngineTypeID, EngineType, EngineID, PartPallet_Code, OrderForm);
return;
}
else
{
SendMessage.AsyncSendMessage_Notice(OpName, "码块RFID机型与MES机型不匹配");
}
}
}
catch (Exception err)
{
// 保存出错日志 1.申请上线 2.传递机型 3.允许保存 4.扫码
MisDataSaveDate.FuntionMesRead.Alarm_SaveFileLog4Error(2, e, "Fun1051", err);
////ApplicationLog.WriteLog(err, "Function08:EngineTypeGetOver_PLC");
}
}
}
}
}