Files
01-Siyuan-MesProject/MIS_FuntionSaveData/MIS_FuntionSaveData/Funtion.MesRead.cs
2026-05-29 10:07:05 +08:00

778 lines
34 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 bizFacade;
using DataLinkMesWork;
using DoWhatPlc;
using MesServerWork;
using MesWork;
using Newtonsoft.Json;
using System;
using System.Collections;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace MisDataSaveDate
{
public partial class Funtion
{
/// <summary>
/// 允许保存(针对半自动和手动压装工位)
/// </summary>
/// <param name="OpName"></param>
/// <param name="tagValue"></param>ss
private static void MesRead(string opName, string tagValue, int tagid)
{
if (tagValue == "0")
{
MIS_BASE.Write_TagTypeID(20, opName, false);
}
else
{
DateTime arrivedTime = DateTime.Now;
DateTime leavedTime = DateTime.Now;
int TimeDiff = 0;
int QualityMark = 0;
String orderFrom = "";
String engineCount = "";
String workpieceCount = "";
// 保存物料信息
BaseDataSystemMES.Material_Insert(opName, 1);
// 记录过站信息
QualityMark = Convert.ToInt32(DtWebApi.ReadWritePLC.ReadPLC("21", opName));
//int targetTime = 0;
//订单号
orderFrom = DtWebApi.ReadWritePLC.ReadPLC("45", opName).ToString();
//产品型号
engineCount = DtWebApi.ReadWritePLC.ReadPLC("11", opName).ToString();
//壳体编号
workpieceCount = DtWebApi.ReadWritePLC.ReadPLC("10", opName).ToString();
//保存信号日志
BaseDataSystemMES.Save_saveLog(opName, QualityMark, orderFrom, engineCount, workpieceCount);
string isPass;
string SendMessage;
if (QualityMark == 1)
{
isPass = "1";
SendMessage = "MES|ConfirmOkGo|" + opName + "|" + "1";
}
else
{
isPass = "0";
SendMessage = "MES|FalseGo|" + opName + "|" + "2";
}
MIS_BASE.asyncSendMessage(SendMessage);
WorkStartInsert_V2022(opName, arrivedTime, leavedTime, TimeDiff, isPass);
// 保存质量数据
SaveQualityData(opName, Convert.ToInt32(tagValue), tagid);
MIS_BASE.asyncSendMessage("MES|ShowTimelyQuality|" + opName + "|" + QualityMark.ToString());
//if (MIS_BASE.hashtable_tagTable_OpName_SaveData==null)
//{
// MesServerWork.MIS_BASE.InitHashtable_MesServerCode();
//}
//if(MIS_BASE.hashtable_tagTable_OpName_SaveData.Contains(opName))
//{
// if (MIS_BASE.hashtable_tagTable_OpName_SaveData[opName].ToString() == "1")
// {
// SaveQualityData(opName, Convert.ToInt32(tagValue), tagid);
// MIS_BASE.Write_TagTypeID(20, opName, true);
// }
// else
// {
// MIS_BASE.Write_TagTypeID(20, opName, true);
// }
//}
//else
//{
// MIS_BASE.Write_TagTypeID(20, opName, true);
//}
}
}
private static void SaveQualityData(string opName, int tagValue, int tagID)
{
try
{
int id_tagCF;
int qualityMask = 0;
int engineTypeID = 0;
string engineID = "";
string engineType = "";
string engineTraceCode = "";
string engineCap = "";
string partPallet = "";
string orderFormPlc = "";
DataTable dt_WWW;
Hashtable valueList;
var tagValues = DtWebApi.ReadWritePLC.ReadPLC_OpName(opName); //GetDbAndMaxLengthByOpNameByBytes(opName);
valueList = ReadPLC_OpName_Qd(tagValues);
engineTypeID = Convert.ToInt32(GetValueByTagTypeCodeID(tagValues, Convert.ToInt32(EnumTagTypeCodeID.EngineTypeID)));
engineID = GetValueByTagTypeCodeID(tagValues, Convert.ToInt32(EnumTagTypeCodeID.EngineID)).ToString();
engineType = GetValueByTagTypeCodeID(tagValues, Convert.ToInt32(EnumTagTypeCodeID.EngineType)).ToString();
orderFormPlc = GetValueByTagTypeCodeID(tagValues, Convert.ToInt32(EnumTagTypeCodeID.OrderFormPLC)).ToString();
engineID = GetValueByTagTypeCodeID(tagValues, Convert.ToInt32(EnumTagTypeCodeID.EngineID)).ToString();
qualityMask = Convert.ToInt32(GetValueByTagTypeCodeID(tagValues, Convert.ToInt32(EnumTagTypeCodeID.QualityMask)));
//valueList = ReadPLC_Sync_DataList_MesRead(opName);
//ReadPLC_Sync_DataList_MesRead(opName, out valueList, out MIS_BASE.BasicDataTagValue, out MIS_BASE.BasicDataTagValueUpDown, out MIS_BASE.hashtable_EngineTypeID, out MIS_BASE.hashtable_tagTable_OpName_SaveData);
//valueList = GetQualityData_GoodBad_Values(valueList);
int mes_MustTest = 0;
int onLineState = 0;
int partMoveDirection = 0;
int pressIsOK = 0;
int pressIsNoOK = 0;
//BaseDataSystemMES.GetQualityDataTable_B5A(valueList, opName, MIS_BASE.BasicDataTagValue,
// MIS_BASE.BasicDataTagValueUpDown,
// out dt_WWW,//数据列表
// out qualityMask,//工位合格标志
// out engineTypeID,//发动机类型代码
// out engineID,//发动机编号
// out engineType, //发动机型号
// out partPallet,//托盘编号
// out engineTraceCode, //发动机条码
// out engineCap,//缸盖号,
// MIS_BASE.hashtable_EngineTypeID,//发动机类型转换表
// out mes_MustTest, out onLineState, out partMoveDirection, out pressIsOK, out pressIsNoOK);
GetQualityDataTable(valueList, opName, MIS_BASE.BasicDataTagValue,
MIS_BASE.BasicDataTagValueUpDown, out dt_WWW);
// 1:通过监控系统保存采集的质量数据;0:不通过监控系统保存采集的质量数据
if (Convert.ToInt32(MIS_BASE.hashtable_tagTable_OpName_SaveData[opName]) != 0)
{
DateTime lastupdatetime = DateTime.Now;
BaseData_tagTable_QualityData_B5A_IndexInsert(engineID, tagID, engineType, engineTypeID, opName, qualityMask, partPallet, out id_tagCF);
BaseData_tagTable_QualityData_B5A_Insert(id_tagCF, engineTypeID, engineID, opName, dt_WWW);
}
// 判断特殊工位给清料信号
if(opName == "OP1010" || opName == "OP2010" || opName == "OP2011" || opName == "OP1011")
{
string OpName2 = opName;
if (OpName2 == "OP1011") OpName2 = "OP1010";
if (OpName2 == "OP2011") OpName2 = "OP2010";
// 1.根据工位号获取上个订单盆子过站数量 判断是否全部订单都绑定了盆子 绑定了就给清料
DataTable dt2;
BaseDataSystemMES.GetMaxPartCount(OpName2, out dt2);
// 3.判断是否全部订单都绑定了盆子 绑定了就给清料
if (Convert.ToInt32(dt2.Rows[0]["未绑定数"]) == 0)
{
// 4.数量相等或大于返回清料信号
DtWebApi.ReadWritePLC.WritePLC("52", OpName2, true);
//5.删除工位小车所有信息,上料位置,抓取位置等
//BaseDataSystemMES.ClearOpCarData(OpName2);
}
}
//临时增加 清除交互区壳体码
if(opName == "OP0020")
{
MIS_BASE.Write_EngineID_MES(opName, "");
}
//启动线程保存过站信息
MIS_BASE.Write_TagTypeID(20, opName, true);
#region
#endregion
}
catch (Exception err)
{
MIS_BASE.Write_TagTypeID(20, opName, true);
////ApplicationLog.WriteLog(err, err.Message);
}
}
public static Hashtable ReadPLC_OpName_Qd(ConcurrentDictionary<string, TagFormat> tagValues)
{
//lock (l)
{
//var tagValues = DtWebApi.ReadWritePLC.ReadPLC_OpName(opName); //GetDbAndMaxLengthByOpNameByBytes(opName);
var keyValues = tagValues.OrderBy(x => x.Key).ToDictionary(k => k.Key, v => v.Value);
TagFormat tagFormatTemp;
int tagIndex = 1;
int isOK = 0;
Hashtable ht = new Hashtable();
foreach (KeyValuePair<string, TagFormat> _cd in keyValues)
{
if (_cd.Key.ToString()[0].ToString() == "7")
{
tagFormatTemp = _cd.Value;
if (tagIndex % 3 == 1)
{
isOK = Convert.ToInt32(tagFormatTemp.TagValue);
}
else if (tagIndex % 3 == 2)
{
var TF = _cd.Value;
QualityDataType qualityDataType;
qualityDataType = GetQualityDataType(TF);
qualityDataType.isGoodBad = isOK;
ht.Add(qualityDataType.tagID, qualityDataType);
}
else if (tagIndex % 3 == 0)
{
var TF = (TagFormat)_cd.Value;
QualityDataType qualityDataType;
qualityDataType = GetQualityDataType(TF);
qualityDataType.isGoodBad = isOK;
ht.Add(qualityDataType.tagID, qualityDataType);
}
tagIndex++;
}
//Console.WriteLine($"key{kv.Key} value{kv.Value}");
}
return ht;
}
}
public static QualityDataType GetQualityDataType(TagFormat TF)
{
QualityDataType qualityDataType;
qualityDataType = new QualityDataType();
qualityDataType.tagID = TF.TagID;
qualityDataType.tagTypeID = TF.TagTypeID;//变量类型
qualityDataType.opName = TF.OpName;
int.TryParse(TF.TagQuality, out int TagQuality);
qualityDataType.tagQuality = TagQuality;
qualityDataType.tagValueType = TF.TagTypeCodeID;
int.TryParse(TF.TagOrderBy, out int TagOrderBy);
qualityDataType.tagOrderBy = TagOrderBy;
int.TryParse(TF.TagItemOrderBy, out int TagItemOrderBy);
qualityDataType.tagItemOrderBy = TagItemOrderBy;
qualityDataType.tagProperty = TF.TagProperty;//变量特点
qualityDataType.tagValue = TF.TagValue;//变量值
return qualityDataType;
}
static public void GetQualityDataTable(Hashtable valuList, string opName, DataTable BasicDataTagValue,
DataTable BasicDataTagValueUpDown,
out DataTable dt
)
{
//78 0屏蔽MES1启用MES(必须MIS)
//79 通过线体工位PC实现下达工位工作状态工位有三种状态在线、离线、屏蔽。在线;0正常状态实现正常功能。1离线2屏蔽。(必须MIS)
//41 机体流向标志1 BYTE0普通工位1上线发动机上线2下线发动机下线(必须PLC)
//51 返修工位修改后的数据MES将数据写入PLC MES通知PLC数据修改完成。(YN)
//8 只要返修必须由mes发送此信号plc接收此信号后才能放行
//暂时没用用于有扳手拧紧工位。通知设备螺钉拧紧完成。PC已经将数据保存到数据库中。(B5A)
QualityDataType qualityData;
//是否有数据
//bool isUsing;
DataRow dr;
DataRow[] dr_WWW;
//MES_基本数据_测量范围
DataRow[] dr_WWW_UpDown;
dt = BaseDataSystemMES.BuildDataTables_WWW();
//测量位置
string shaftID;
//测量项目
string item;
//测量单位
string unit;
//机体类型
//原始数据中的机型代码
int engineTypeID_Source;
//上限值
string tagValueUp;
//下限值
string tagValueDown;
//理论值
string tagValeNormal;
//TagValue
// 合格标志
//string IsGoodBad;
foreach (DictionaryEntry valueItem in valuList) //ht为一个Hashtable实例
{
try
{
qualityData = (QualityDataType)valueItem.Value;
//if ((qualityData.tagProperty != 2) || (qualityData.tagProperty != 6))
//{
// continue ;
//}
//if ((qualityData.tagProperty == 2) || (qualityData.tagProperty == 6))
{
//if (engineTypeID == 0)
//{
// engineTypeID = 1;
//}
dr_WWW = BasicDataTagValue.Select("TagID = " + qualityData.tagID);
try
{
dr_WWW_UpDown = BasicDataTagValueUpDown.Select("TagID = " + qualityData.tagID);
}
catch { dr_WWW_UpDown = null; }
//if (dr_WWW.Length > 0)
//{
// {
// engineTypeID_Source = Convert.ToInt32(dr_WWW[0]["机体类型"]);
// int temp;
// temp = engineTypeID_Source & engineTypeID;
// if (temp == 0)
// {
// continue;
// }
// if (qualityData.isGoodBad == -1)
// {
// continue;
// }
// }
//}
//else
//{
// continue;
//}
try
{
shaftID = dr_WWW[0]["测量位置"].ToString();
}
catch
{
shaftID = "";
}
try
{
item = dr_WWW[0]["测量项目"].ToString();
}
catch
{
item = "";
}
try
{
unit = dr_WWW[0]["测量单位"].ToString();
}
catch
{
unit = "";
}
try
{
tagValueUp = "";
if (dr_WWW_UpDown != null && dr_WWW_UpDown.Length > 0)
{
tagValueUp = dr_WWW_UpDown[0]["值上限"].ToString();
}
else
{
tagValueUp = "";
}
}
catch
{
tagValueUp = "";
}
try
{
tagValueDown = "";
if (dr_WWW_UpDown != null && dr_WWW_UpDown.Length > 0)
{
tagValueDown = dr_WWW_UpDown[0]["值下限"].ToString();
}
}
catch
{
tagValueDown = "";
}
try
{
tagValeNormal = "";
if (dr_WWW_UpDown != null && dr_WWW_UpDown.Length > 0)
{
tagValeNormal = dr_WWW_UpDown[0]["理论值"].ToString();
}
}
catch
{
tagValeNormal = "";
}
dr = dt.NewRow();
dr["TagID"] = qualityData.tagID;
dr["测量位置"] = shaftID;
dr["测量项目"] = item;
dr["测量单位"] = unit;
dr["上限值"] = tagValueUp;
dr["下限值"] = tagValueDown;
dr["理论值"] = tagValeNormal;
dr["工位号"] = opName;
dr["列位置"] = qualityData.tagOrderBy;
dr["变量排序"] = qualityData.tagItemOrderBy;
dr["IsGoodBad"] = qualityData.isGoodBad;
switch (qualityData.tagTypeID)//
{
//合格标志数组
case 8203:
dr["TagValue"] = BaseDataSystemMES.GetQualityData_GoodBad_String((bool[])qualityData.tagValue);
break;
case 8209:
dr["TagValue"] = "";
break;
//非标准REAL
case 8210:
dr["TagValue"] = BaseDataSystemMES.GetNoNormalReal(qualityData.tagValue);
dt.Rows.Add(dr);
break;
default:
dr["TagValue"] = Convert.ToString(qualityData.tagValue);
dt.Rows.Add(dr);
break;
}
//对质量数据特殊处理保留2位小数点
dr["TagValue"] = Convert.ToDouble(dr["TagValue"]).ToString("0.##");
}
}
catch (Exception err)
{
//ApplicationLog.WriteLog(err, err.Message);
}
}
}
private static object GetValueByTagTypeCodeID(ConcurrentDictionary<string, TagFormat> opTagList, int TagTypeCodeID)
{
try
{
return opTagList.Where(x => x.Value.TagTypeCodeID == TagTypeCodeID).ToList()[0].Value.TagValue;
}
catch (Exception err) { return "-3"; }
}
private static void SaveQualityDataBak(string opName, int tagValue, int tagID)
{
try
{
int id_tagCF;
int qualityMask = 0;
int engineTypeID = 0;
string engineID = "";
string engineType = "";
string engineTraceCode = "";
string engineCap = "";
string partPallet = "";
DataTable dt_WWW;
dt_WWW = BaseDataSystemMES.BuildDataTables_WWW();
Hashtable valueList;
//valueList = ReadPLC_Sync_DataList_MesRead(opName);
ReadPLC_Sync_DataList_MesRead(opName, out valueList, out MIS_BASE.BasicDataTagValue, out MIS_BASE.BasicDataTagValueUpDown, out MIS_BASE.hashtable_EngineTypeID, out MIS_BASE.hashtable_tagTable_OpName_SaveData);
valueList = GetQualityData_GoodBad_Values(valueList);
int mes_MustTest = 0;
int onLineState = 0;
int partMoveDirection = 0;
int pressIsOK = 0;
int pressIsNoOK = 0;
BaseDataSystemMES.GetQualityDataTable_B5A(valueList, opName, MIS_BASE.BasicDataTagValue,
MIS_BASE.BasicDataTagValueUpDown,
out dt_WWW,//数据列表
out qualityMask,//工位合格标志
out engineTypeID,//发动机类型代码
out engineID,//发动机编号
out engineType, //发动机型号
out partPallet,//托盘编号
out engineTraceCode, //发动机条码
out engineCap,//缸盖号,
MIS_BASE.hashtable_EngineTypeID,//发动机类型转换表
out mes_MustTest, out onLineState, out partMoveDirection, out pressIsOK, out pressIsNoOK);
// 1:通过监控系统保存采集的质量数据;0:不通过监控系统保存采集的质量数据
if (Convert.ToInt32(MIS_BASE.hashtable_tagTable_OpName_SaveData[opName]) != 0)
{
DateTime lastupdatetime = DateTime.Now;
BaseData_tagTable_QualityData_B5A_IndexInsert(engineID, tagID, engineType, engineTypeID, opName, qualityMask, partPallet, out id_tagCF);
BaseData_tagTable_QualityData_B5A_Insert(id_tagCF, engineTypeID, engineID, opName, dt_WWW);
}
//启动线程保存过站信息
MIS_BASE.Write_TagTypeID(20, opName, true);
#region
//string orderForm = "";
//string operatorCode = "";
//int shiftCode = 1;
//DateTime arrivedTime;
//DateTime leavedTime;
//int TimeDiff;
//int targetTime = 0;
//string lineType = "";
//string isPass;
//int machineWorkOn = 0;
//int arrivedOrLeaved = 2;
//int cartColorOpName = 0;
//int cartColorConfirm = 0;
//// int partMoveDirection;
//int partGoOver = 0;
//if (qualityMask == 1)
//{
// isPass = "PASS";
//}
//else
//{
// isPass = "FAIL";
//}
////工位上下线类型
////0普通工位1正常上线2正常下线3返修上线4返修下线
//int OpNameUpDownType;
//OpNameUpDownType = Convert.ToInt32(hashtableOpName_OpType[opName]);
//arrivedTime = (DateTime)m_WorkStart_OpName_Time[opName];
//leavedTime = DateTime.Now;
//TimeDiff = Convert.ToInt32(leavedTime.Subtract(arrivedTime).TotalSeconds);
//lineType = hashtableOpName_LineType[opName].ToString();
//string isHaveComputer = hashtableOpName_IsHaveComputer[opName].ToString();
////isHaveComputer = MIS_BASE.hashtable_tagTable_OpName_SaveData[opName].ToString();
////有计算机的工位,通过工位计算机保存[测量数据发动机在线状态]。
//if (Convert.ToInt32(isHaveComputer) == 0)
//{
// //1->0 工件离开 工件刚刚离开
// if (Convert.ToInt32(m_WorkStart_OpName[opName]) == 1)
// {
// //[测量数据发动机在线状态]
// QualityDataSystem.WorkStartInsert
// (opName, orderForm, engineTypeID, engineType, engineID, partPallet.ToString(), operatorCode, shiftCode,
// arrivedTime, leavedTime, TimeDiff, targetTime, lineType, isPass, machineWorkOn,
// arrivedOrLeaved, cartColorOpName, cartColorConfirm, partMoveDirection, partGoOver, mes_MustTest, onLineState, OpNameUpDownType);
// }
//}
#endregion
}
catch (Exception err)
{
MIS_BASE.Write_TagTypeID(20, opName, true);
////ApplicationLog.WriteLog(err, err.Message);
}
}
public static bool BaseData_tagTable_QualityData_B5A_IndexInsert
(string EngineID, int tagID, string EngineType, int EngineTypeID, string opName,
int isGoodBad, string PartPalletCode, out int Id_tagCF)
{
string procedureName;
procedureName = "测量数据合格索引_增加";
Id_tagCF = 0;
SqlParameter[] thisParms = new SqlParameter[8];
thisParms[0] = new System.Data.SqlClient.SqlParameter("@EngineID", EngineID);
thisParms[1] = new System.Data.SqlClient.SqlParameter("@TagID_CF", tagID);
thisParms[2] = new System.Data.SqlClient.SqlParameter("@EngineType", EngineType);
thisParms[3] = new System.Data.SqlClient.SqlParameter("@EngineTypeID", EngineTypeID);
thisParms[4] = new System.Data.SqlClient.SqlParameter("@工位号", opName);
thisParms[5] = new System.Data.SqlClient.SqlParameter("@托盘编号", PartPalletCode);
thisParms[6] = new System.Data.SqlClient.SqlParameter("@合格标志", isGoodBad);
thisParms[7] = new System.Data.SqlClient.SqlParameter("@Id_tagCF", Id_tagCF);
thisParms[7].Direction = ParameterDirection.Output;
if (DataAccess.ExecuteStoredProcedure(procedureName, ref thisParms))
{
Id_tagCF = Convert.ToInt32(thisParms[7].Value.ToString());
return true;
}
return false;
}
public static bool BaseData_tagTable_QualityData_B5A_Insert
(int Id_tagCF, int engineTypeID, string engineID, string opName, DataTable dt)
{
string procedureName;
procedureName = "测量数据合格_增加";
SqlParameter[] thisParms = new SqlParameter[6];
thisParms[0] = new System.Data.SqlClient.SqlParameter("@Id_tagCF", Id_tagCF);
thisParms[1] = new System.Data.SqlClient.SqlParameter("@EngineTypeID", engineTypeID);
thisParms[2] = new System.Data.SqlClient.SqlParameter("@EngineID", engineID);
thisParms[3] = new System.Data.SqlClient.SqlParameter("@TagID", SqlDbType.Int, 4, "TagID");
thisParms[4] = new System.Data.SqlClient.SqlParameter("@TagValue", SqlDbType.NVarChar, 100, "TagValue");
thisParms[5] = new System.Data.SqlClient.SqlParameter("@IsGoodBad", SqlDbType.Int, 4, "IsGoodBad");
//thisParms[6] = new System.Data.SqlClient.SqlParameter("@测量位置", SqlDbType.NVarChar, 50, "测量位置");
//thisParms[7] = new System.Data.SqlClient.SqlParameter("@测量项目", SqlDbType.NVarChar, 50, "测量项目");
//thisParms[8] = new System.Data.SqlClient.SqlParameter("@工位号", opName);
//thisParms[9] = new System.Data.SqlClient.SqlParameter("@理论值", SqlDbType.NVarChar, 50, "理论值");
//thisParms[10] = new System.Data.SqlClient.SqlParameter("@上限值", SqlDbType.NVarChar, 50, "上限值");
//thisParms[11] = new System.Data.SqlClient.SqlParameter("@下限值", SqlDbType.NVarChar, 50, "下限值");
//thisParms[12] = new System.Data.SqlClient.SqlParameter("@测量单位", SqlDbType.NVarChar, 50, "测量单位");
//thisParms[13] = new System.Data.SqlClient.SqlParameter("@列位置", SqlDbType.Int, 4, "列位置");
//thisParms[14] = new System.Data.SqlClient.SqlParameter("@变量排序", SqlDbType.Int, 4, "变量排序");
//table.Columns.Add("TagID", typeof(System.Int32));
//table.Columns.Add("TagValue", typeof(System.String));
//table.Columns.Add("IsGoodBad", typeof(System.Int32));
//table.Columns.Add("测量位置", typeof(System.String));
//table.Columns.Add("测量项目", typeof(System.String));
//table.Columns.Add("工位号", typeof(System.String));
//table.Columns.Add("理论值", typeof(System.String));
//table.Columns.Add("上限值", typeof(System.String));
//table.Columns.Add("下限值", typeof(System.String));
//table.Columns.Add("测量单位", typeof(System.String));
//table.Columns.Add("列位置", typeof(System.Int32));
//table.Columns.Add("变量排序", typeof(System.Int32));
return DataAccess.ExecuteStoredProcedure(procedureName, ref thisParms, dt);
}
public static void ReadPLC_Sync_DataList_MesRead(string opName, out Hashtable valueList, out DataTable BasicDataTagValue, out DataTable BasicDataTagValueUpDown, out Hashtable hashtable_EngineTypeID, out Hashtable hashtable_tagTable_OpName_SaveData)
{
//QualityDataSaveList QualityDataType
valueList = new Hashtable();
var qualityDataSaveList = DtWebApi.SaveData.ReadPLC_Sync_DataList_MesRead(opName);
foreach (DictionaryEntry de in qualityDataSaveList.valuList)
{
valueList.Add(de.Key, JsonConvert.DeserializeObject<QualityDataType>(de.Value.ToString()));
}
BasicDataTagValue = qualityDataSaveList.BasicDataTagValue;
BasicDataTagValueUpDown = qualityDataSaveList.BasicDataTagValueUpDown;
hashtable_EngineTypeID = qualityDataSaveList.hashtable_EngineTypeID;
hashtable_tagTable_OpName_SaveData = qualityDataSaveList.hashtable_tagTable_OpName_SaveData;
}
/// <summary>
/// 确定合格标志
/// </summary>
/// <param name="valuList"></param>
/// <returns></returns>
static public Hashtable GetQualityData_GoodBad_Values(Hashtable valuList)
{
try
{
Hashtable valuList_Temp;
valuList_Temp = (Hashtable)valuList.Clone();
int[] value_GoodBad_New = new int[128];
int tagID;
QualityDataType value;
//1获得合格标志
foreach (DictionaryEntry de in valuList) //ht为一个Hashtable实例
{
tagID = Convert.ToInt32(de.Key);
value = (QualityDataType)de.Value;
//拧紧数据合格标志
if (value.tagProperty == 1)
{
if (value.tagTypeID == 8203)
{
value_GoodBad_New = (int[])value.tagValue;
break;
}
else
{
value_GoodBad_New[value.tagOrderBy - 1] = Convert.ToInt32(value.tagValue);
}
}
//拧紧数据合格标志
if (value.tagProperty == 8)
{
if (value.tagTypeID == 8203)
{
value_GoodBad_New = (int[])value.tagValue;
break;
}
else
{
value_GoodBad_New[value.tagOrderBy - 1] = Convert.ToInt32(value.tagValue);
}
}
//压装数据合格标志
if (value.tagProperty == 7)
{
value_GoodBad_New[value.tagOrderBy - 1] = Convert.ToInt32(value.tagValue);
}
}
//将合格标志赋予每个变量
foreach (DictionaryEntry de in valuList) //ht为一个Hashtable实例
{
tagID = Convert.ToInt32(de.Key);
value = (QualityDataType)de.Value;
//201706061720新加
if (value.tagTypeID == 11)
{
if (value.tagValue.ToString() == "False")
{
value.tagValue = "0";
}
else
{
value.tagValue = "1";
}
valuList_Temp[tagID] = value;
//value.tagValue = Convert.ToInt32(value.tagValue);
}
//测量变量
if (value.tagProperty == 2 || value.tagProperty == 6)
{
try
{
if (value_GoodBad_New != null)
{
value.isGoodBad = Convert.ToInt32(value_GoodBad_New[value.tagOrderBy - 1]);
valuList_Temp[tagID] = value;
}
else
{
value.isGoodBad = 0;
valuList_Temp[tagID] = value;
}
}
catch (Exception err)
{
////ApplicationLog.WriteLog(err, err.Message);
}
}
}
return valuList_Temp;
}
catch//转换出了故障时
{
return valuList;
}
}
}
}