139 lines
7.0 KiB
C#
139 lines
7.0 KiB
C#
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");
|
||
}
|
||
}
|
||
|
||
}
|
||
|
||
|
||
|
||
}
|
||
}
|