using DoWhatPlc;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace MisDataFunDll
{
    public partial class MisDataFun
    {
        //public void MIS_Funtion(object e)
        //{
        //    try
        //    {
        //        string recData = e.ToString();
        //        string[] dataArray = recData.Split('|');
        //        if (dataArray.Length != 4)
        //            return;
        //        //消息来源
        //        string m_Source = dataArray[0].ToString();
        //        //消息类型
        //        string m_Command = dataArray[1].ToString();
        //        //工位号
        //        string m_OpName = dataArray[2].ToString();
        //        //消息参数
        //        string m_Value = dataArray[3].ToString();

        //        DoWhatPlc.ReturnValueString rv = Newtonsoft.Json.JsonConvert.DeserializeObject<DoWhatPlc.ReturnValueString>(m_Value);


        //        int tagType;
        //        string opName;
        //        string tagValue;
        //        int tagid;
        //        DoWhatPlc.ReturnValueString msgEvent = rv;
        //        if (msgEvent.TagValue == null) return;
        //        tagType = Convert.ToInt32(msgEvent.TagTypeID);
        //        opName = msgEvent.OpName.ToString();
        //        tagid = Convert.ToInt32(msgEvent.TagID);
        //        switch (Convert.ToInt32(msgEvent.TagTypeCodeID))
        //        {
        //            case 11:
        //                switch (msgEvent.TagValue.ToLower())
        //                {
        //                    case "1":
        //                    case "true":
        //                        tagValue = "1";
        //                        break;
        //                    default:
        //                        tagValue = "0";
        //                        break;
        //                }
        //                break;
        //            default:
        //                tagValue = msgEvent.TagValue.ToString();
        //                break;
        //        }
        //        ///根据信号处理逻辑
        //        switch (tagType)
        //        {
        //            case 19:
        //                //允许保存
        //                //MesRead(opName, tagValue, tagid);
        //                break;
        //            case 14:
        //                //心跳
        //                //Heartbeat(opName, tagValue);
        //                break;
        //            case 44://PLC传递机型过后  才允许保存过站信息，否则不允许保存
        //                //if (tagValue == "1")
        //                //{
        //                //    IsEngTypeGetOver_Write(opName, true);

        //                //    EngineData Enginedata = new EngineData(MesDataFunction.OpcOperation.ReadPLC(10, opName).ToString(), Convert.ToInt32(MesDataFunction.OpcOperation.ReadPLC(80, opName)));
        //                //    //保存产品编号、托盘号 保存过站信息用
        //                //    EngineData_Hash_Write(opName, Enginedata);
        //                //}
        //                break;
        //            case 2://工件到位
        //                //WorkStart(opName, tagValue);
        //                break;
        //            case 51:
        //                //if (hashtableOpName_IsHaveComputer[opName].ToString() == "1")
        //                //{
        //                //    SaveProductLeaveData(opName, 1);
        //                //}

        //                break;
        //            case 8:
        //                //if (hashtableOpName_IsHaveComputer[opName].ToString() == "1")
        //                //{
        //                //    SaveProductLeaveData(opName, 2);
        //                //}
        //                break;
        //        }

        //    }
        //    catch (Exception err)
        //    {
        //        ////ApplicationLog.WriteLog(err, err.Message);
        //    }
        //}


        ///// <summary>
        ///// 获取质量数据Hashtable
        ///// </summary>
        ///// <param name="opName"></param>
        ///// <returns></returns>
        //static public Hashtable ReadPLC_Sync_DataList_MesRead(string opName)
        //{
        //    return (Hashtable)MesDataFunction.OpcOperation.ReadPLC_Sync_DataList_MesRead(opName);
        //}

        /// <summary>
        /// 允许保存(针对半自动和手动压装工位)
        /// </summary>
        /// <param name="OpName"></param>
        /// <param name="tagValue"></param>
        //private void MesRead(string opName, string tagValue, int tagid)
        //{
        //    if (tagValue == "0")
        //    {
        //        MIS_BASE.Write_TagTypeID(20, opName, false);
        //    }
        //    else
        //    {
        //        SaveQualityData(opName, Convert.ToInt32(tagValue), tagid);
        //    }
        //}

        //private 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 = "";
        //        DataTable dt_WWW;
        //        dt_WWW = BaseDataSystemMES.BuildDataTables_WWW();
        //        Hashtable valueList;
        //        Hashtable hashtable_EngineTypeID;
        //        Hashtable hashtable_tagTable_OpName_SaveData;
        //        DataTable BasicDataTagValue;
        //        DataTable BasicDataTagValueUpDown;
        //        ReadPLC_Sync_DataList_MesRead(opName, out valueList ,out BasicDataTagValue,out BasicDataTagValueUpDown,out hashtable_EngineTypeID,out 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, BasicDataTagValue,
        //            BasicDataTagValueUpDown,
        //            out dt_WWW,//数据列表
        //            out qualityMask,//工位合格标志
        //            out engineTypeID,//发动机类型代码
        //            out engineID,//发动机编号
        //            out engineType, //发动机型号
        //            out partPallet,//托盘编号
        //            out engineTraceCode, //发动机条码
        //            out engineCap,//缸盖号,
        //            hashtable_EngineTypeID,//发动机类型转换表
        //           out mes_MustTest, out onLineState, out partMoveDirection, out pressIsOK, out pressIsNoOK);

        //        // 1:通过监控系统保存采集的质量数据;0:不通过监控系统保存采集的质量数据
        //        if (Convert.ToInt32(hashtable_tagTable_OpName_SaveData[opName]) != 0)
        //        {
        //            DateTime lastupdatetime = DateTime.Now;

        //            BaseDataSystemMES.BaseData_tagTable_QualityData_B5A_IndexInsert(engineID, tagID, engineType, engineTypeID, opName, qualityMask, partPallet, out id_tagCF);
        //            BaseDataSystemMES.BaseData_tagTable_QualityData_B5A_Insert(id_tagCF, engineTypeID, engineID, opName, dt_WWW);

        //        }
        //        MIS_BASE.Write_TagTypeID(20, opName, true);

        //    }
        //    catch (Exception err)
        //    {
        //        MIS_BASE.Write_TagTypeID(20, opName, true);
        //        ////ApplicationLog.WriteLog(err, err.Message);
        //    }

        //}

        /// <summary>
        /// 确定合格标志
        /// </summary>
        /// <param name="valuList"></param>
        /// <returns></returns>
        //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;
        //    }
        //}

    }
}
