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(); } } }
public override void Search_Setting() { var ElectricSetting = Ewatch_MySqlMethod.ElectricLoad(); gridControl1.DataSource = ElectricSetting; 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["ElectricNo"].Caption = "電表編號"; gridView1.Columns["ElectricName"].Caption = "電表名稱"; gridView1.Columns["PhaseTypeEnum"].Caption = "相位類型"; 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(); ElectricNotextEdit.Text = view.GetListSourceRowCellValue(ex.FocusedRowHandle, "ElectricNo").ToString(); ElectricNametextEdit.Text = view.GetListSourceRowCellValue(ex.FocusedRowHandle, "ElectricName").ToString(); PhaseTypeEnumcomboBoxEdit.SelectedIndex = Convert.ToInt32(view.GetListSourceRowCellValue(ex.FocusedRowHandle, "PhaseTypeEnum")); 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 (FilterElectricSetting.Count > 0 && FilterElectricSetting.Count > ex.FocusedRowHandle) { CaseNotextEdit.Text = FilterElectricSetting[ex.FocusedRowHandle].CaseNo; ElectricNotextEdit.Text = FilterElectricSetting[ex.FocusedRowHandle].ElectricNo.ToString(); ElectricNametextEdit.Text = FilterElectricSetting[ex.FocusedRowHandle].ElectricName; PhaseTypeEnumcomboBoxEdit.SelectedIndex = FilterElectricSetting[ex.FocusedRowHandle].PhaseTypeEnum; NotifyFlagtoggleSwitch.IsOn = FilterElectricSetting[ex.FocusedRowHandle].NotifyFlag; TimeoutSpantextEdit.Text = FilterElectricSetting[ex.FocusedRowHandle].TimeoutSpan.ToString(); MTimeoutSpantextEdit.Text = FilterElectricSetting[ex.FocusedRowHandle].MTimeoutSpan.ToString(); } } } }; #endregion #region 報表行刪除 gridView1.RowDeleting += (s, ex) => { ColumnView view = (ColumnView)s; string CaseNo = CaseNotextEdit.Text; int ElectricNo = Convert.ToInt32(ElectricNotextEdit.Text); Ewatch_MySqlMethod.Delete_ElectricSetting(CaseNo, ElectricNo); }; #endregion #region 關鍵字搜尋 gridView1.ColumnFilterChanged += (s, e) => { GridView view = s as GridView; if (view.FindFilterText != "" || view.ActiveFilterString != "") { FilterElectricSetting = new List <ElectricSetting>(); for (int i = 0; i < view.RowCount; i++) { if (view.IsGroupRow(i)) { continue; } var entity = view.GetRow(i) as ElectricSetting; if (entity == null) { continue; } FilterElectricSetting.Add(entity); } } if (FilterElectricSetting.Count > 0) { CaseNotextEdit.Text = FilterElectricSetting[0].CaseNo; ElectricNotextEdit.Text = FilterElectricSetting[0].ElectricNo.ToString(); ElectricNametextEdit.Text = FilterElectricSetting[0].ElectricName; PhaseTypeEnumcomboBoxEdit.SelectedIndex = FilterElectricSetting[0].PhaseTypeEnum; NotifyFlagtoggleSwitch.IsOn = FilterElectricSetting[0].NotifyFlag; TimeoutSpantextEdit.Text = FilterElectricSetting[0].TimeoutSpan.ToString(); MTimeoutSpantextEdit.Text = FilterElectricSetting[0].MTimeoutSpan.ToString(); } }; #endregion #region 表頭篩選 gridView1.EndSorting += (s, e) => { GridView view = s as GridView; FilterElectricSetting = new List <ElectricSetting>(); for (int i = 0; i < view.RowCount; i++) { if (view.IsGroupRow(i)) { continue; } var entity = view.GetRow(i) as ElectricSetting; if (entity == null) { continue; } FilterElectricSetting.Add(entity); } SortGlyphFlag = true; gridView1.FocusedRowHandle = 0; }; #endregion gridView1.FocusedRowHandle = 1; Flag = true; } else { gridControl1.Refresh(); } }
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); } } }