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

145 lines
6.9 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 System.Linq;
using MesDataFunction;
using MesServerWork;
using MisDataFunDll;
using MisDataSaveDate;
namespace MesServerFunctions
{
partial class FunctionMES
{
/// <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", "MIS", "PLC允许保存数据");
MIS_BASE.Read_QualityMask(OpName, out int qualityMask);
#region
//// 判断是否需要手动选择OK/NG 不需要了 按照PLC给的合格标志做
//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", "MIS", errMsg);
// SendMessageFun.AsyncSendMessage_Notice(OpName, errMsg);
// return;
// }
// if (okGo) qualityMask = 1;
// if (falseGo) qualityMask = 2;
//}
#endregion
MIS_BASE.GetEngineTypeFromPLC(OpName, out EngineTypeID, out EngineType, out EngineID, out PartPallet_Code, out OrderForm);
string code;
string message;
if (MisDataFun.GetSpecialOpExist(OpName, "自动入箱工位"))
{
// 把模组码和箱体码绑定到执行计划列表中 DBB640-679
string TrunEngineID = MIS_BASE.Read_TagValueByTagTypeID(203, OpName);
// 调用接口进行物料装配验证
CallWebService.Call_miAssmebleAndCollectDataForSfc(OpName, EngineID, TrunEngineID,"", out code, out message);
if (code != "0")
{
MisDataFun.LogRecording_OP(OpName, "ERROR", "MIS", "PACK装配模组失败message: " + message);
return;
}
// 把PLC给得 模组码存入Pack中 同时给 模组记录Pack信息
MisDataFun.WorkPlan_TurnLine(EngineID, TrunEngineID, 1);
}
// PDC产线plc只写了发动机号和机型代码其余要从数据库中读取
MisDataFun.Moby_Select_PDC(EngineID, out OrderForm, out EngineType, out EngineTypeID);
// 保存质量数据
MisDataSaveDateMesRead.Funtion.MesRead(OpName, tagValue.ToString(), msgEvent.TagID.ToString());
//MisDataFun.MOM_SaveQDataToUpload(OpName, EngineID); // 数据存至临时表
MisDataFun.WorkStartInsert(OpName, qualityMask); // 保存不合格过站信息
// 判断是否存在首件标志
if (MIS_BASE.Read_TagValueByTagTypeID(62, OpName) == "1") MisDataFun.Save_FristWorkData(OpName, EngineID); // 第一个产品 存首件数据
// 保存物料数据
MisDataFun.Material_Insert(OpName, qualityMask);
// 从数据库查出质量数据组 MOM_质量数据_上传_查询
MisDataFun.GetPartQualityGroupParams(OpName, EngineID, out DataTable dt_quality);
// 调用工厂MES出站接口
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")
{
MIS_BASE.Write_OpNameIsOk(OpName, qualityMask); // 写入加工合格还是不合格 根据工位合格标志写
}
else if (code == "13921") // 质量判定不合格 走不合格放行
{
qualityMask = 2;
MIS_BASE.Write_OpNameIsOk(OpName, qualityMask);
MisDataFun.WorkStartInsert(OpName, qualityMask); // 保存不合格过站信息
}
else
{
string msg = "出站失败:" + EngineID + "code" + code + "message" + message;
MisDataFun.LogRecording_OP(OpName, "ERROR", "MOM", msg);
return;
}
// 保存过站信息
MisDataFun.WorkStartInsert(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", "MIS", "PLC允许保存数据取消");
}
}
catch (Exception err)
{
////ApplicationLog.WriteLog(err, "Function08:MesReadOver");
}
}
}
}