using System; using MesServerWork; //using BasicData; using System.Collections; using bizFacade; //using SystemFramework; using System.Data; using DoWhatPlc; namespace MesServerFunctions { partial class Functions_BASE_04 { /// /// 根据组号获得拧紧数据 /// /// private int GetTagValue(string opName, int engineTypeID, string engineType, string engineID, int ProcessCode, int PartPallet_Code) { //合格标志 int groupValueIsOK; //组号 int workGroup_Index; //序号 int sn_ShaftStep; //工作顺序(拧紧顺序) int sn_WorkingStep; DataTable dt_ShaftPosition_WorkingStep; groupValueIsOK = 2; ShaftPosition.ShaftPosition_Select_WorkingStep(opName, engineTypeID, out dt_ShaftPosition_WorkingStep); if (dt_ShaftPosition_WorkingStep != null) { //如果是workGroup=1,则第一次需要禁用索引 if (ProcessCode <= 1) { //不能delete 必须用update BaseDataSystemMES.BaseData_tagTable_QualityData_B5A_SubTable_Delete(engineID, opName); } for (int i = 0; i < dt_ShaftPosition_WorkingStep.Rows.Count; i++) { workGroup_Index = Convert.ToInt32(dt_ShaftPosition_WorkingStep.Rows[i]["组号"]); if (workGroup_Index == ProcessCode) { sn_ShaftStep = Convert.ToInt32(dt_ShaftPosition_WorkingStep.Rows[i]["序号"]); sn_WorkingStep = Convert.ToInt32(dt_ShaftPosition_WorkingStep.Rows[i]["工作顺序"]); //没有其他使用 //保存拧紧数据 if (GetTagValue_DCT(opName, engineTypeID, engineType, engineID, sn_ShaftStep, PartPallet_Code) == 1) { groupValueIsOK = 1; //显示红色拧紧轴 } else { groupValueIsOK = 2; //显示绿色拧紧轴 } } } } return groupValueIsOK; } /// /// 根据序号,工作顺序获得测量值;将数据保存到数据库的临时表中。 /// /// 工位号 /// 发动机机型代码 /// 发动机机型 /// 当前发动机号 /// 拧紧序号 private int GetTagValue_DCT(string opName, int engineTypeID, string engineType, string engineID, int sn_ShaftStep,int PartPallet_Code) { int groupValueIsOK; string tagValue1; string tagValue2; int isOK; //合格标志的TagID int tagID_isOK; //TagID int tagID; int tagID1; int tagID2; //根据工位号获取哈西表 Hashtable valueList; MIS_BASE.ReadPLC_Sync_ValueList(opName, out valueList); GetTagIDBytagOrder(valueList, sn_ShaftStep, out tagID, out tagID1, out tagID2, out tagValue1, out tagValue2, out tagID_isOK); if (tagID == -1 || tagID1 == -1 || tagID2 == -1) { return 0; } GetPressData_Save(opName, engineTypeID, engineType, engineID, sn_ShaftStep, tagID, tagID1, tagID2, tagValue1, tagValue2, tagID_isOK, PartPallet_Code); isOK = tagID_isOK; if (isOK == -1) { isOK = 0; } groupValueIsOK = isOK; return groupValueIsOK; } /// /// 根据列位置获取三个TagID(合格标志,扭矩,转角),以及对应的值 /// /// /// /// /// /// /// /// /// private void GetTagIDBytagOrder(Hashtable valueList, int sn_ShaftStep, out int tagID, out int tagID1, out int tagID2, out string tavIDValue1, out string tavIDValue2, out int isGoodBad) { int[] boolTemp = new int[32];//int数组存储轴类合格标志 bool IsGetgoodOrBad = false;//是否根据8203或者8209获取到合格标志 //初始化赋值 tagID = -1; tagID1 = -1; tagID2 = -1; tavIDValue1 = ""; tavIDValue2 = ""; //合格标志的TagID isGoodBad = 0; QualityDataType qualityData; int tagid;//TagID int tagOrderBy;//列位置 int tagItemOrderBy;//变量排序 int tagTypeID;//TagID特点 int tagProperty;//变量特点(6,7) object tagValue;//值 string tagValue_1 = "0";//值 //根据当前组号获取对应的质量数据 foreach (DictionaryEntry valueItem in valueList) //ht为一个Hashtable实例 { try { qualityData = (QualityDataType)valueItem.Value; tagProperty = Convert.ToInt32(qualityData.tagProperty); tagid = Convert.ToInt32(qualityData.tagID); tagTypeID = Convert.ToInt32(qualityData.tagTypeID); tagValue = qualityData.tagValue; tagOrderBy = Convert.ToInt32(qualityData.tagOrderBy); tagItemOrderBy = Convert.ToInt32(qualityData.tagItemOrderBy); //若为空,则转变为0 if (tagValue == null) { tagValue = 0; } //读取数据 switch (tagTypeID) { //轴合格标志 case 8209: break; //轴合格标志 case 8203: IsGetgoodOrBad = true; try { boolTemp = (int[])tagValue; tagID = tagid; isGoodBad = Convert.ToInt32(boolTemp[sn_ShaftStep - 1]); //转换一下 if (isGoodBad == -1) { isGoodBad = 0; } } catch { tagID = -1; isGoodBad = 0; } break; //非标准REAL case 8210: tagValue_1 = GetNoNormalReal(tagValue); break; default: tagValue_1 = Convert.ToString(tagValue); break; } //单个数据进行读取 if (tagOrderBy == sn_ShaftStep) { //获取到了当前的列位置(1,2,3,4) //依次再获取合格标志,扭矩,转角 switch (tagItemOrderBy) { case 0://合格标志 if (!IsGetgoodOrBad) { tagID = tagid; try { isGoodBad = Convert.ToInt32(tagValue_1); //转换一下 if (isGoodBad == -1) { isGoodBad = 0; } } catch { isGoodBad = 0; } } break; case 1: tagID1 = tagid; tavIDValue1 = tagValue_1; break;//扭矩值 case 2://转角值 tagID2 = tagid; tavIDValue2 = tagValue_1; break; } } } catch { tagID = -1; tagID1 = -1; tagID2 = -1; tavIDValue1 = ""; tavIDValue2 = ""; //合格标志的TagID isGoodBad = 0; } } } /// /// 列位置(序号)对应的数据 /// 保存数据到数据库 /// /// /// /// /// /// /// /// /// /// /// /// private void GetPressData_Save(string opName, int engineTypeID, string engineType, string engineID, int tagOrderBy, int tagID, int tagID1, int tagID2, string tavIDValue1, string tavIDValue2, int isGoodBad, int PartPallet_Code) { //保存数据到数据库 //测量数据合格_手动拧紧_增加 BaseDataSystemMES.BaseData_tagTable_QualityData_B5A_Insert (engineTypeID, engineType, engineID, tavIDValue1, isGoodBad, opName, PartPallet_Code.ToString(), tagID1, tagID); //保存数据到数据库 //测量数据合格_手动拧紧_增加 BaseDataSystemMES.BaseData_tagTable_QualityData_B5A_Insert (engineTypeID, engineType, engineID, tavIDValue2, isGoodBad, opName, PartPallet_Code.ToString(), tagID2, tagID); } /// /// 返回非标准real /// /// /// static private string GetNoNormalReal(object vDataValue) { try { string real_a; string real_b; string groupValueString; int length; //int real_b_Int; length = ((System.Array)(vDataValue)).Length; groupValueString = ""; if (length != 2) return "0.0"; real_a = Convert.ToUInt16((((System.Array)(vDataValue)).GetValue(0))).ToString(); real_b = Convert.ToUInt16((((System.Array)(vDataValue)).GetValue(1))).ToString("00"); groupValueString = real_a + "." + real_b; return groupValueString; } catch { return "0.0"; } } } }