Files
52-NingdePDC-MesProject/MisDataFunction/Function1056/OpcServer/MesRead.cs
2026-06-26 13:45:37 +08:00

130 lines
5.5 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.Collections.Generic;
using System.Data;
using System.Linq;
using System.Threading;
using MesDataFunction;
//using SystemFramework;
using MesServerWork;
using MisDataFunDll;
using MisDataSaveDate;
namespace MesServerFunctions
{
partial class FunctionMES
{
object lockMesRead = new object();
/// <summary>
/// 保存完成(针对半自动和手动压装工位)
/// </summary>
/// <param name="OpName"></param>
/// <param name="tagValue"></param>
private void MesRead(object e)
{
try
{
var msgEvent = (DeviceDriver_BasicData.CustomeEvetnArgs)e;
string OpName = Convert.ToString(msgEvent.OpName);
int tagValue = Convert.ToInt32(msgEvent.TagValue);
int EngineTypeID;
string EngineType;
string EngineID;
int PartPallet_Code;
string OrderForm;
if (tagValue == 1)
{
MisDataFun.LogRecording_OP(OpName, "INFO", "MesRead", "PLC允许保存数据");
MIS_BASE.Read_QualityMask(OpName, out int qualityMask);
MIS_BASE.GetEngineTypeFromPLC(OpName, out EngineTypeID, out EngineType, out EngineID, out PartPallet_Code, out OrderForm);
// PDC产线plc只写了发动机号和机型代码其余要从数据库中读取
MisDataFun.Moby_Select_PDC(EngineID, out OrderForm, out EngineType, out EngineTypeID);
#region
// 判断是否需要手动选择OK/NG
//if (MisDataFun.GetSpecialOpExist(OpName, "手动OKNG放行"))
//{
// MIS_BASE.Read_ConfirmOkGo(OpName, out bool okGo);
// MIS_BASE.Read_FalseGo(OpName, out bool falseGo);
// if (!okGo && !falseGo)
// {
// string errMsg = $"【{OpName}】请在界面选择 OK/NG 放行";
// MisDataFun.LogRecording_OP(OpName, "INFO", "MesRead", errMsg);
// SendMessageFun.AsyncSendMessage_Notice(OpName, errMsg);
// return;
// }
// if (okGo) qualityMask = 1;
// if(falseGo) qualityMask = 2;
//}
#endregion
// 保存质量数据
qualityMask = MisDataSaveDateMesRead.Funtion.MesRead(OpName, tagValue.ToString(), msgEvent.TagID.ToString());
// 保存物料数据
MisDataFun.Material_Insert(OpName, qualityMask);
// 保存过站信息
MisDataFun.WorkStartInsert(OpName, qualityMask);
// 从数据库查出质量数据组 MOM_质量数据_上传_查询
MisDataFun.GetPartQualityGroupParams(OpName, EngineID, out DataTable dt_quality);
// 调用工厂MES出站接口
string code;
string message;
if (dt_quality.Rows.Count > 0)
{
CallWebService.Call_dataCollectForSfcEx(OpName, EngineID, dt_quality, qualityMask, out code, out message);
}
else
{
CallWebService.Call_sfcComplete(OpName, EngineID, qualityMask, out code, out message);
}
if (code == "0")
{
}
else if (code == "13921") // 质量判定不合格 走不合格放行
{
qualityMask = 2;
MisDataFun.WorkStartInsert(OpName, qualityMask);
}
else
{
string msg = "出站失败:" + EngineID + "code" + code + "message" + message;
MisDataFun.LogRecording_OP(OpName, "ERROR", "MOM", msg);
return;
}
MIS_BASE.Write_OpNameIsOk(OpName, qualityMask); // 写入加工合格还是不合格 根据工位合格标志写
// 如果不合格 同时 是人工PC工位 则 需要屏幕上点放行后才能放行
if (qualityMask != 1 && MisDataFun.GetSpecialOpExist(OpName, "人工PC工位"))
{
SendInfomation("showOpWorkFalseGoBox", "1", OpName); // 显示不合格刷卡放行弹窗
MisDataFun.LogRecording_OP(OpName, "INFO", "MIS", $"{EngineID} 产品不合格 待人工确认后不合格放行!");
return;
}
MisDataBaseFun.WriteMesReadOver(OpName, true); // 保存完成工作完成
}
else
{
MisDataBaseFun.WriteMesReadOver(OpName, false); // 保存完成工作完成
// 写入加工合格还是不合格 根据工位合格标志写
MIS_BASE.Write_OpNameIsOk(OpName, -99);
MisDataFun.LogRecording_OP(OpName, "INFO", "MesRead", "PLC允许保存数据取消");
}
}
catch (Exception err)
{
////ApplicationLog.WriteLog(err, "Function08:MesReadOver");
}
}
}
}