using MesServerWork;
using MesWork;
using MisDataFunDll;
using MisDataSaveDate;
using System;
using System.Collections.Generic;
using System.Data;
using System.Windows.Forms;
//using SystemFramework;
namespace MesServerFunctions
{
partial class FunctionMES
{
///
/// 允许保存(针对半自动和手动压装工位)
///
///
///
private void MesRead(object e)
{
try
{
var msgEvent = (DeviceDriver_BasicData.CustomeEvetnArgs)e;
string OpName = Convert.ToString(msgEvent.OpName);
int tagValue = Convert.ToInt32(msgEvent.TagValue);
if (tagValue == 1)
{
// 1.读取所有的电芯码,总合格标志
var cell_code = new string[8];
cell_code[0] = MIS_BASE.Read_TagValueByTagTypeID(200, OpName).ToString();
cell_code[1] = MIS_BASE.Read_TagValueByTagTypeID(201, OpName).ToString();
cell_code[2] = MIS_BASE.Read_TagValueByTagTypeID(202, OpName).ToString();
cell_code[3] = MIS_BASE.Read_TagValueByTagTypeID(203, OpName).ToString();
cell_code[4] = MIS_BASE.Read_TagValueByTagTypeID(204, OpName).ToString();
cell_code[5] = MIS_BASE.Read_TagValueByTagTypeID(205, OpName).ToString();
cell_code[6] = MIS_BASE.Read_TagValueByTagTypeID(206, OpName).ToString();
cell_code[7] = MIS_BASE.Read_TagValueByTagTypeID(207, OpName).ToString();
var operationTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff");
var qualityMask = Convert.ToInt32(MIS_BASE.Read_TagValueByTagTypeID(21, OpName));
// 2.保存质量数据
MisDataSaveDateMesRead.Funtion.MesRead_Cell(cell_code, OpName, tagValue.ToString(), msgEvent.TagID.ToString(), qualityMask);
for (int i = 0; i < cell_code.Length ; i++)
{
string EngineID = cell_code[i];
// 3.保存过站数据
MisDataFun.Cell_PassStation(OpName, EngineID, operationTime, 2, qualityMask);
// 4.上传数据至工厂MES 如果不合格 则在 114—121 8个电芯合格标志 写入 每颗电芯的合格状态
if (MisDataFun.GetSpecialOpExist(OpName, "角度检测工位"))
{
string code;
string message;
// 从数据库查出质量数据组 MOM_质量数据_上传_查询
MisDataFun.GetPartQualityGroupParams(OpName, EngineID, out DataTable dt_quality);
CallWebService.Call_cellCustomOneDCCheck(OpName, EngineID, dt_quality, out code, out message,out string checkResult);
if (code == "0")
{
MisDataFun.LogRecording_OP(OpName, "INFO", "MOM", $"电芯{EngineID}结果写入1 合格");
MIS_BASE.Write_TagValueByTagTypeID(114 + i, OpName, 1);
}
else if (code == "13921") // 质量判定不合格 走不合格放行
{
string msg = "电芯数据存在质量不合格:" + EngineID + ",code:" + code + ",message:" + message;
MisDataFun.LogRecording_OP(OpName, "ERROR", "MOM", msg);
MisDataFun.LogRecording_OP(OpName, "INFO", "MOM", $"电芯{EngineID}结果写入5 质量不合格");
MIS_BASE.Write_TagValueByTagTypeID(114 + i, OpName, 5);
}
else
{
string msg = "电芯数据保存失败:" + EngineID + ",code:" + code + ",message:" + message;
MisDataFun.LogRecording_OP(OpName, "ERROR", "MOM", msg);
MisDataFun.LogRecording_OP(OpName, "INFO", "MOM", $"电芯{EngineID}结果写入6 上传失败");
MIS_BASE.Write_TagValueByTagTypeID(114 + i, OpName, 6); // 还有一种是上传失败的!
}
}
}
// 判断是否存在首件标志
if (MIS_BASE.Read_TagValueByTagTypeID(62,OpName) == "1") MisDataFun.Save_FristWorkData(OpName, cell_code[0]); // 第一个产品 存首件数据
// 写入加工合格还是不合格 根据工位合格标志写
MIS_BASE.Write_OpNameIsOk(OpName, qualityMask);
// 4.通知PLC保存完成
MIS_BASE.Write_TagValueByTagTypeID(20, OpName, true);
// 工作完成
MIS_BASE.Write_MesWorkFinish(OpName, true);
}
else
{
// 写入加工合格还是不合格 根据工位合格标志写
MIS_BASE.Write_OpNameIsOk(OpName, -99);
// 保存完成(MES)
MIS_BASE.Write_TagValueByTagTypeID(20, OpName, false);
// 工作完成
MIS_BASE.Write_MesWorkFinish(OpName, false);
MIS_BASE.Write_TagValueByTagTypeID(114, OpName, 0);
MIS_BASE.Write_TagValueByTagTypeID(115, OpName, 0);
MIS_BASE.Write_TagValueByTagTypeID(116, OpName, 0);
MIS_BASE.Write_TagValueByTagTypeID(117, OpName, 0);
MIS_BASE.Write_TagValueByTagTypeID(118, OpName, 0);
MIS_BASE.Write_TagValueByTagTypeID(119, OpName, 0);
MIS_BASE.Write_TagValueByTagTypeID(120, OpName, 0);
MIS_BASE.Write_TagValueByTagTypeID(121, OpName, 0);
}
}
catch (Exception err)
{
////ApplicationLog.WriteLog(err, "Function08:MesReadOver");
}
}
}
}