protected override void AfterMyWorkStateChanged(object sender, EventArgs e)
 {
     if (myWorkState)
     {
         CaseSettings     = Ewatch_MySqlMethod.CaseLoad();
         AiSettings       = Ewatch_MySqlMethod.AiLoad();
         ElectricSettings = Ewatch_MySqlMethod.ElectricLoad();
         ConnectionThread = new Thread(Connection_Mysql);
         ConnectionThread.Start();
     }
     else
     {
         if (ConnectionThread != null)
         {
             ConnectionThread.Abort();
         }
     }
 }
        private void Connection_Mysql()
        {
            while (myWorkState)
            {
                TimeSpan timeSpan = DateTime.Now.Subtract(ConnectionTime);
                if (timeSpan.TotalMilliseconds > 5000) //每一秒查詢動作
                {
                    var NewCaseSettings     = Ewatch_MySqlMethod.CaseLoad();
                    var NewAiSettings       = Ewatch_MySqlMethod.AiLoad();
                    var NewElectricSettings = Ewatch_MySqlMethod.ElectricLoad();
                    var casevalue           = Ewatch_MySqlMethod.CaseLoad();
                    foreach (var caseitem in casevalue)
                    {
                        #region AI接收
                        var aivalue = Ewatch_MySqlMethod.AiLoad(caseitem);
                        foreach (var aiitem in aivalue)
                        {
                            if (aiitem.NotifyFlag)                                      //AI點位需要發報
                            {
                                if (Ewatch_MySqlMethod.AI64Load(aiitem))                //檢查即時數值是否超過時間
                                {
                                    var TimeValue = Ewatch_MySqlMethod.Ai_Time(aiitem); //檢查發報數值是否達到
                                    if (TimeValue == null || TimeValue >= aiitem.TimeoutSpan)
                                    {
                                        if (NewAiSettings.SingleOrDefault(g => g.PK == aiitem.PK) != null)
                                        {
                                            NewAiSettings.Single(g => g.PK == aiitem.PK).ConnectionFlag = "斷線";
                                            NotifyTypeEnum notifyTypeEnum = (NotifyTypeEnum)caseitem.NotifyTypeEnum;
                                            switch (notifyTypeEnum)
                                            {
                                            case NotifyTypeEnum.None:
                                                break;

                                            case NotifyTypeEnum.Line:
                                            {
                                                LineNotifyClass lineNotifyClass = new LineNotifyClass();
                                                lineNotifyClass.LineNotifyFunction(caseitem.NotifyToken, $"設備名稱:{aiitem.AiName} \r最後上傳時間 : {Ewatch_MySqlMethod.AI_LastTime(aiitem)}\r上傳逾時請檢查");
                                            }
                                            break;

                                            case NotifyTypeEnum.Telegram:
                                            {
                                                TelegramBotClass telegramBotClass = new TelegramBotClass(caseitem.NotifyApi)
                                                {
                                                    Chat_ID = caseitem.NotifyToken
                                                };
                                                telegramBotClass.Send_Message_Group($"設備名稱:{aiitem.AiName} \r最後上傳時間 : {Ewatch_MySqlMethod.AI_LastTime(aiitem)}\r上傳逾時請檢查");
                                            }
                                            break;
                                            }
                                            Ewatch_MySqlMethod.UpdataAi_Time(aiitem, true);
                                        }
                                    }
                                    else
                                    {
                                        NewAiSettings.Single(g => g.PK == aiitem.PK).ConnectionFlag = "斷線";
                                    }
                                }
                                else
                                {
                                    if (NewAiSettings.SingleOrDefault(g => g.PK == aiitem.PK) != null)
                                    {
                                        NewAiSettings.Single(g => g.PK == aiitem.PK).ConnectionFlag = "連線";
                                        Ewatch_MySqlMethod.UpdataAi_Time(aiitem, false);
                                    }
                                }
                            }
                            else
                            {
                                //AiSettings.Single(g => g.PK == aiitem.PK).ConnectionFlag = "不使用";
                                if (Ewatch_MySqlMethod.AI64Load(aiitem))//檢查即時數值是否超過時間
                                {
                                    if (NewAiSettings.SingleOrDefault(g => g.PK == aiitem.PK) != null)
                                    {
                                        NewAiSettings.Single(g => g.PK == aiitem.PK).ConnectionFlag = "斷線";
                                        //Ewatch_MySqlMethod.UpdataAi_Time(aiitem, true);
                                    }
                                }
                                else
                                {
                                    if (NewAiSettings.SingleOrDefault(g => g.PK == aiitem.PK) != null)
                                    {
                                        NewAiSettings.Single(g => g.PK == aiitem.PK).ConnectionFlag = "連線";
                                        Ewatch_MySqlMethod.UpdataAi_Time(aiitem, false);
                                    }
                                }
                            }
                        }
                        #endregion

                        #region 電表接收
                        var electricvalue = Ewatch_MySqlMethod.ElectricLoad(caseitem);
                        foreach (var electricitem in electricvalue)
                        {
                            if (electricitem.NotifyFlag)//電表點位需要發報
                            {
                                if (Ewatch_MySqlMethod.ElectricMeterLoad(electricitem))
                                {
                                    var TimeValue = Ewatch_MySqlMethod.ElectricMeter_Time(electricitem);
                                    if (TimeValue == null || TimeValue >= electricitem.TimeoutSpan)
                                    {
                                        if (NewElectricSettings.SingleOrDefault(g => g.PK == electricitem.PK) != null)
                                        {
                                            NewElectricSettings.Single(g => g.PK == electricitem.PK).ConnectionFlag = "斷線";
                                            NotifyTypeEnum notifyTypeEnum = (NotifyTypeEnum)caseitem.NotifyTypeEnum;
                                            switch (notifyTypeEnum)
                                            {
                                            case NotifyTypeEnum.None:
                                                break;

                                            case NotifyTypeEnum.Line:
                                            {
                                                LineNotifyClass lineNotifyClass = new LineNotifyClass();
                                                lineNotifyClass.LineNotifyFunction(caseitem.NotifyToken, $"設備名稱:{electricitem.ElectricName} \r最後上傳時間 : {Ewatch_MySqlMethod.ElectricMeter_LastTime(electricitem)}\r上傳逾時請檢查");
                                            }
                                            break;

                                            case NotifyTypeEnum.Telegram:
                                            {
                                                TelegramBotClass telegramBotClass = new TelegramBotClass(caseitem.NotifyApi)
                                                {
                                                    Chat_ID = caseitem.NotifyToken
                                                };
                                                telegramBotClass.Send_Message_Group($"設備名稱:{electricitem.ElectricName} \r最後上傳時間 : {Ewatch_MySqlMethod.ElectricMeter_LastTime(electricitem)}\r上傳逾時請檢查");
                                            }
                                            break;
                                            }
                                            Ewatch_MySqlMethod.UpdataElectricMeter_Time(electricitem, true);
                                        }
                                    }
                                    else
                                    {
                                        NewElectricSettings.Single(g => g.PK == electricitem.PK).ConnectionFlag = "斷線";
                                    }
                                }
                                else
                                {
                                    if (NewElectricSettings.SingleOrDefault(g => g.PK == electricitem.PK) != null)
                                    {
                                        NewElectricSettings.Single(g => g.PK == electricitem.PK).ConnectionFlag = "連線";
                                        Ewatch_MySqlMethod.UpdataElectricMeter_Time(electricitem, false);
                                    }
                                }
                            }
                            else
                            {
                                //ElectricSettings.Single(g => g.PK == electricitem.PK).ConnectionFlag = "不使用";
                                var TimeValue = Ewatch_MySqlMethod.ElectricMeter_Time(electricitem);
                                if (TimeValue == null || TimeValue >= electricitem.TimeoutSpan)
                                {
                                    if (NewElectricSettings.SingleOrDefault(g => g.PK == electricitem.PK) != null)
                                    {
                                        NewElectricSettings.Single(g => g.PK == electricitem.PK).ConnectionFlag = "斷線";
                                    }
                                }
                                else
                                {
                                    if (NewElectricSettings.SingleOrDefault(g => g.PK == electricitem.PK) != null)
                                    {
                                        NewElectricSettings.Single(g => g.PK == electricitem.PK).ConnectionFlag = "連線";
                                        Ewatch_MySqlMethod.UpdataElectricMeter_Time(electricitem, false);
                                    }
                                }
                            }
                        }
                        #endregion
                    }
                    CaseSettings     = NewCaseSettings;
                    AiSettings       = NewAiSettings;
                    ElectricSettings = NewElectricSettings;
                    ConnectionTime   = DateTime.Now;
                }
                else
                {
                    Thread.Sleep(80);
                }
            }
        }
        public override void Search_Setting()
        {
            var AiSetting = Ewatch_MySqlMethod.AiLoad();

            gridControl1.DataSource = AiSetting;
            if (!Flag)
            {
                gridView1.OptionsBehavior.Editable = false;
                gridView1.OptionsSelection.EnableAppearanceFocusedCell = false;
                for (int i = 0; i < gridView1.Columns.Count; i++)
                {
                    gridView1.Columns[i].BestFit();
                }
                RepositoryItemToggleSwitch toggleSwitch = new RepositoryItemToggleSwitch();
                gridControl1.RepositoryItems.Add(toggleSwitch);
                gridView1.Columns["PK"].Visible             = false;
                gridView1.Columns["NotifyFlag"].ColumnEdit  = toggleSwitch;
                gridView1.Columns["CaseNo"].Caption         = "案場編號";
                gridView1.Columns["AiNo"].Caption           = "Ai編號";
                gridView1.Columns["AiName"].Caption         = "Ai名稱";
                gridView1.Columns["NotifyFlag"].Caption     = "推播功能";
                gridView1.Columns["TimeoutSpan"].Caption    = "延遲推播(h)";
                gridView1.Columns["MTimeoutSpan"].Caption   = "延遲推播(m)";
                gridView1.Columns["SendTime"].Visible       = false;
                gridView1.Columns["ConnectionFlag"].Visible = false;
                #region 報表行聚焦
                gridView1.FocusedRowChanged += (s, ex) =>
                {
                    ColumnView view = (ColumnView)s;
                    if ((view.FindFilterText == "" || view.ActiveFilterString != "") & !SortGlyphFlag)
                    {
                        if (ex.FocusedRowHandle > -1)
                        {
                            CaseNotextEdit.Text         = view.GetListSourceRowCellValue(ex.FocusedRowHandle, "CaseNo").ToString();
                            AiNotextEdit.Text           = view.GetListSourceRowCellValue(ex.FocusedRowHandle, "AiNo").ToString();
                            AiNametextEdit.Text         = view.GetListSourceRowCellValue(ex.FocusedRowHandle, "AiName").ToString();
                            NotifyFlagtoggleSwitch.IsOn = Convert.ToBoolean(view.GetListSourceRowCellValue(ex.FocusedRowHandle, "NotifyFlag"));
                            TimeoutSpantextEdit.Text    = view.GetListSourceRowCellValue(ex.FocusedRowHandle, "TimeoutSpan").ToString();
                            MTimeoutSpantextEdit.Text   = view.GetListSourceRowCellValue(ex.FocusedRowHandle, "MTimeoutSpan").ToString();
                        }
                    }
                    else
                    {
                        if (ex.FocusedRowHandle > -1)
                        {
                            if (FilterAiSetting.Count > 0 && FilterAiSetting.Count > ex.FocusedRowHandle)
                            {
                                CaseNotextEdit.Text         = FilterAiSetting[ex.FocusedRowHandle].CaseNo;
                                AiNotextEdit.Text           = FilterAiSetting[ex.FocusedRowHandle].AiNo.ToString();
                                AiNametextEdit.Text         = FilterAiSetting[ex.FocusedRowHandle].AiName;
                                NotifyFlagtoggleSwitch.IsOn = FilterAiSetting[ex.FocusedRowHandle].NotifyFlag;
                                TimeoutSpantextEdit.Text    = FilterAiSetting[ex.FocusedRowHandle].TimeoutSpan.ToString();
                                MTimeoutSpantextEdit.Text   = FilterAiSetting[ex.FocusedRowHandle].MTimeoutSpan.ToString();
                            }
                        }
                    }
                };
                #endregion
                #region 報表行刪除
                gridView1.RowDeleting += (s, ex) =>
                {
                    ColumnView view   = (ColumnView)s;
                    string     CaseNo = CaseNotextEdit.Text;
                    int        AiNo   = Convert.ToInt32(AiNotextEdit.Text);
                    Ewatch_MySqlMethod.Delete_AiSetting(CaseNo, AiNo);
                };
                #endregion
                #region 關鍵字搜尋
                gridView1.ColumnFilterChanged += (s, e) =>
                {
                    GridView view = s as GridView;
                    if (view.FindFilterText != "")
                    {
                        FilterAiSetting = new List <AiSetting>();
                        for (int i = 0; i < view.RowCount; i++)
                        {
                            if (view.IsGroupRow(i))
                            {
                                continue;
                            }
                            var entity = view.GetRow(i) as AiSetting;
                            if (entity == null)
                            {
                                continue;
                            }
                            FilterAiSetting.Add(entity);
                        }
                    }
                    if (FilterAiSetting.Count > 0)
                    {
                        CaseNotextEdit.Text         = FilterAiSetting[0].CaseNo;
                        AiNotextEdit.Text           = FilterAiSetting[0].AiNo.ToString();
                        AiNametextEdit.Text         = FilterAiSetting[0].AiName;
                        NotifyFlagtoggleSwitch.IsOn = FilterAiSetting[0].NotifyFlag;
                        TimeoutSpantextEdit.Text    = FilterAiSetting[0].TimeoutSpan.ToString();
                        MTimeoutSpantextEdit.Text   = FilterAiSetting[0].MTimeoutSpan.ToString();
                    }
                };
                #endregion
                #region 表頭篩選
                gridView1.EndSorting += (s, e) =>
                {
                    GridView view = s as GridView;
                    FilterAiSetting = new List <AiSetting>();
                    for (int i = 0; i < view.RowCount; i++)
                    {
                        if (view.IsGroupRow(i))
                        {
                            continue;
                        }
                        var entity = view.GetRow(i) as AiSetting;
                        if (entity == null)
                        {
                            continue;
                        }
                        FilterAiSetting.Add(entity);
                    }
                    SortGlyphFlag = true;
                    gridView1.FocusedRowHandle = 0;
                };
                #endregion
                gridView1.FocusedRowHandle = 1;
                Flag = true;
            }
            else
            {
                gridControl1.Refresh();
            }
        }