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

132 lines
5.8 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 SystemFramework;
using MesServerWork;
using MisDataFunDll;
using MisDataSaveDate;
using System;
using System.Collections.Generic;
using System.Data;
using System.Threading;
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允许保存数据");
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);
// 保存质量数据
qualityMask = MisDataSaveDateMesRead.Funtion.MesRead(OpName, tagValue.ToString(), msgEvent.TagID.ToString());
// 保存物料数据
MisDataFun.Material_Insert(OpName, qualityMask);
// 保存过站信息
MisDataFun.WorkStartInsert(OpName, qualityMask);
// 写入加工合格还是不合格 根据工位合格标志写
MIS_BASE.Write_OpNameIsOk(OpName, qualityMask);
// 查看测试设备是否完成测试,如果完成测试的话流程结束,否则的话要等测试设备把数据传输过来
DataTable dt2 = MisDataFun.CheckAllFinish(OpName, EngineID, 1);
// EngineID = "001MB0D0012C003QF9910001";
string msg = "查询测试设备数据出错";
if (dt2 != null && dt2.Rows.Count > 0)
{
string result = dt2.Rows[0]["result"].ToString();
msg = dt2.Rows[0]["msg"].ToString();
if (EngineTypeID != 1 && EngineTypeID != 5) result = "1"; // 非PDC 和 W05 可直接放行
if (result == "1") //已完成
{
// 从数据库查出质量数据组 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
{
if(OpName == "OP230") CallWebService.Call_sfcComplete(OpName, EngineID, qualityMask, out code, out message); //测试设备不允许无质量数据出站
else // 除了 OP230 以外其他测试设备得带数据出站
{
code = "999";
message = "未读取到测试数据 未成功出站!";
}
}
if (code == "0")
{
}
else if (code == "13921") // 质量判定不合格 走不合格放行
{
MIS_BASE.Write_TagValueByTagTypeID(51, OpName, false); // 合格放行复位掉
MIS_BASE.Write_OpNameIsOk(OpName, 2);
MisDataFun.WorkStartInsert(OpName, 2);
}
else
{
string msg1 = "出站失败:" + EngineID + "code" + code + "message" + message;
MisDataFun.LogRecording_OP(OpName, "ERROR", "MOM", msg1);
return;
}
MisDataBaseFun.WriteMesReadOver(OpName, true); // 保存完成工作完成
}
else
{
MisDataFun.LogRecording_OP(OpName, "INFO", "MesRead", msg);
}
}
else
{
MisDataFun.LogRecording_OP(OpName, "INFO", "MesRead", msg);
}
}
else
{
// 写入加工合格还是不合格 根据工位合格标志写
MIS_BASE.Write_OpNameIsOk(OpName, -99);
MisDataBaseFun.WriteMesReadOver(OpName, false); // 保存完成工作完成
MisDataFun.LogRecording_OP(OpName, "INFO", "MesRead", "PLC允许保存数据取消");
}
}
catch (Exception err)
{
////ApplicationLog.WriteLog(err, "Function08:MesReadOver");
}
}
}
}