using DoWhatPlc;
using MesServerWork;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using bizFacade;
using System.Data;
using MesServerFunctions;

namespace MisDataSaveDateMesRead
{
    public partial class Funtion
    {
        /// <summary>
        /// 发动机类型转换表
        /// SELECT  ID,发动机机型代码  FROM MES_计划BOM_发动机型号代码 
        /// </summary>
        public static Hashtable hashtable_EngineTypeID = new Hashtable();
        /// <summary>
        /// 记录工件到位的发动机机型代码
        /// </summary>
        public static Hashtable hashtable_EngineGetOver_EngineTypeID = new Hashtable();
        /// <summary>
        /// 记录工件到位的发动机机型
        /// </summary>
        public static Hashtable hashtable_EngineGetOver_EngineType = new Hashtable();
        /// <summary>
        /// 记录工件到位的发动机号
        /// </summary>
        public static Hashtable hashtable_EngineGetOver_EngineID = new Hashtable();
        /// <summary>
        /// 记录工件到位的订单号
        /// </summary>
        public static Hashtable hashtable_EngineGetOver_OrderForm = new Hashtable();

        public static Hashtable hashtable_EngineGetOver = new Hashtable();

        public static Hashtable hashtable_PartPalletCode = new Hashtable();
        /// <summary>
        /// 保存质量数据和过站信息
        /// </summary>
        /// <param name="e"></param>
        public static void MIS_Funtion(object e)
        {
            try
            {

                string recData = e.ToString();
                List<string> dataArray = DoWhatPlc.MessageText.GetCmdStringList(recData);

                //string[] dataArray = recData.Split('|');
                //if (dataArray.Count != 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.CustomeEvetnArgs msgEvent = Newtonsoft.Json.JsonConvert.DeserializeObject<DoWhatPlc.CustomeEvetnArgs>(m_Value);
                //DoWhatPlc.ReturnValueString rv = Newtonsoft.Json.JsonConvert.DeserializeObject<DoWhatPlc.ReturnValueString>(m_Value);
                //Console.WriteLine($"【【{rv.TagID}【【【【{ rv.TagKeepTime}");
                if (msgEvent == null) return;
                int tagType;
                int tagTypeCodeID;
                string opName;
                string tagValue;
                string tagid;
                //DoWhatPlc.ReturnValueString msgEvent = rv;
                if (msgEvent.TagValue == null) return;
                tagType = Convert.ToInt32(msgEvent.TagTypeID);
                opName = msgEvent.OpName.ToString();
                tagid = msgEvent.TagID.ToString();
                tagTypeCodeID = Convert.ToInt32(msgEvent.TagTypeCodeID);


                switch (tagType)
                {
                    case 11:
                        switch (msgEvent.TagValue.ToString().ToLower())
                        {
                            case "1":
                            case "true":
                                tagValue = "1";
                                break;
                            default:
                                tagValue = "0";
                                break;
                        }
                        break;
                    default:
                        tagValue = msgEvent.TagValue.ToString();
                        break;
                }
                ///根据信号处理逻辑
                switch (tagTypeCodeID)
                {
                    case 19:
                        //允许保存
                        MesRead(opName, tagValue, tagid);
                        break;
                    case 14:
                        //心跳
                        //Heartbeat(opName, tagValue);
                        break;
                    case 44://PLC传递机型过后  才允许保存过站信息，否则不允许保存
                        //EngTypeGetOver(opName, tagValue);
                        break;
                    case 2://工件到位  离开信息

                        if (tagValue == "0")
                        {
                            bool S_EngineGetOver;
                            MIS_BASE.Read_EngineGetOver_PLC(opName, out S_EngineGetOver);
                            //传递机型
                            //if (S_EngineGetOver)
                            {
                                //if (hashtable_EngineGetOver[opName].ToString() == "1")
                                {
                                    WorkStart(msgEvent);
                                }
                            }
                        }
                        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;
                    case 103:

                        //Alarm_Insert(msgEvent);

                        break;
                }

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



        //public static 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);
        //            //Console.WriteLine($"【【{rv.TagID}【【【【{ rv.TagKeepTime}");
        //            if (rv == null) return;
        //            int tagType;
        //            int tagTypeCodeID;
        //            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);
        //            tagTypeCodeID = Convert.ToInt32(msgEvent.TagTypeCodeID);


        //            switch (tagType)
        //            {
        //                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 (tagTypeCodeID)
        //            {
        //                case 19:
        //                    //允许保存
        //                    MesRead(opName, tagValue, tagid);
        //                    break;
        //                case 14:
        //                    //心跳
        //                    //Heartbeat(opName, tagValue);
        //                    break;
        //                case 44://PLC传递机型过后  才允许保存过站信息，否则不允许保存
        //                    EngTypeGetOver(opName, tagValue);
        //                    break;
        //                case 2://工件到位  离开信息

        //                    if (tagValue == "0")
        //                    {
        //                        //传递机型
        //                        //if (hashtable_EngineGetOver.Contains(opName))
        //                        {
        //                            //if (hashtable_EngineGetOver[opName].ToString() == "1")
        //                            {
        //                                WorkStart(e);
        //                            }
        //                        }
        //                    }
        //                    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;
        //                case 103:

        //                    Alarm_Insert(e);

        //                    break;
        //            }

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


    }
}