using System.Text; namespace IStation.Win.Schedule { public partial class frmMain : DevExpress.XtraBars.Ribbon.RibbonForm { public frmMain() { InitializeComponent(); this.gridViewS1.SetNormalView(); this.gridViewS2.SetNormalView(); this.Load += FrmMain_Load; this.FormClosing += FrmMain_FormClosing; this.colStation.Visible = false; this.colStation1.Visible = false; this.colTargetFrequency.Visible = true; this.colTargetFrequency1.Visible = true; this.colBeforeFlow.Visible = false; this.colBeforeWL.Visible = false; this.colBeforeWL1.Visible = false; } private static readonly string _get_last_url = "http://localhost:9010/Standard/Dispatch/Solution/GetLast"; private static readonly IStation.Service.AnalysisParameter _service_analysis_parameter = new(); private static readonly IStation.Service.Station _service_station = new(); private static readonly IStation.Service.ScheduleConfig _service_schedule_config = new(); private static readonly IStation.Service.ScheduleRequest _service_schedule_request = new(); private static readonly IStation.Service.ScheduleConclusion _service_schedule_conclusion = new(); private static readonly IStation.Service.ScheduleScada _service_schedule_scada = new(); private static readonly IStation.Service.SchedulePump _service_schedule_pump = new(); private static readonly IStation.Service.MonitorRecord _service_monitor_record = new(); private long _last_request_id = 0; private bool _use_debug_scada = true; private List _station_schedule_vm_list = null; private List _pump_schedule_vm_list1 = null; private List _pump_schedule_vm_list2 = null; private List _pump_list1 = new List(); private List _pump_list2 = new List(); private System.Timers.Timer _timer = null; private void FrmMain_Load(object sender, EventArgs e) { IStation.Settings.ParasHelper.DataBase.SQLite.AnalysisConnectString = "DataSource=" + IStation.Settings.ParasHelper.LocalFile.DataFolderDirectory + "\\analysis.db"; IStation.Settings.ParasHelper.DataBase.SQLite.ScheduleConnectString = "DataSource=" + IStation.Settings.ParasHelper.LocalFile.DataFolderDirectory + "\\schedule.db"; IStation.Settings.ParasHelper.DataBase.SQLite.HydraulicConnectString = "DataSource=" + IStation.Settings.ParasHelper.LocalFile.DataFolderDirectory + "\\hydraulic.db"; IStation.Settings.ParasHelper.DataBase.SQLite.MonitorConnectString = "DataSource=" + IStation.Settings.ParasHelper.LocalFile.DataFolderDirectory + "\\monitor.db"; IStation.Settings.ParasHelper.Save(); _pump_list1 = new IStation.Service.Station().Get().Station1; _pump_list2 = new IStation.Service.Station().Get().Station2; IStation.Service.AnalysisParameter.GetDictCache(); Start(); } private void Start() { var spin_edit_value = this.barSpinStep.EditValue; if (spin_edit_value is null) { Stop(); Reset(); return; } if (!int.TryParse(spin_edit_value.ToString(), out int step)) { Stop(); Reset(); return; } AlertTool.ShowInfo(this, "提示", "启动"); _timer = new System.Timers.Timer(); _timer.Interval = step * 1000; _timer.Elapsed += (s, e) => { SpinWait.SpinUntil(() => this.IsHandleCreated); this.Invoke(new Action(() => { var is_save = this.barCekSave.Checked; var response_text = Yw.Untity.HttpRequestHelper.Get(_get_last_url); var last_request = Yw.JsonHelper.Json2Object(response_text); if (last_request != null) { if (_last_request_id != last_request.ID) { ScheduleRequest(last_request); _last_request_id = last_request.ID; } var dt_now = DateTime.Now; var get_msg = GlobalHelper.GetMonitorRecordList(DateTime.Now,out List monitor_record_list, _use_debug_scada); if (!string.IsNullOrEmpty(get_msg) && !_use_debug_scada) { AlertTool.ShowInfo(this, "获取实时数据", get_msg); } ScheduleVerify(dt_now, _station_schedule_vm_list, _pump_schedule_vm_list1, _pump_schedule_vm_list2, monitor_record_list, is_save); } else { Reset(); } })); }; _timer.AutoReset = true; _timer.Start(); } private void Stop() { if (_timer == null) return; AlertTool.ShowInfo(this, "提示", "关闭"); _timer.Stop(); _timer.Dispose(); } private void FrmMain_FormClosing(object sender, FormClosingEventArgs e) { Stop(); } private void ScheduleRequest(Dto.OptScheduleOutput request) { if (request == null) { AlertTool.ShowInfo(this, "提示", "request == null"); Reset(); return; } try { var request_id = request.ID; var conclusion_list = request.Conclusions; var pump_list = request.Pumps; var monitor_record_list = request.Scadas; if (conclusion_list == null || !conclusion_list.Any()) { Reset(); return; } if (pump_list == null || !pump_list.Any()) { Reset(); return; } if (monitor_record_list == null || !monitor_record_list.Any()) { Reset(); return; } var station_scada_dict = GetStationScadaDict(monitor_record_list); var pump_scada_dict = GetPumpScadaDict(monitor_record_list); _station_schedule_vm_list = new List(); _pump_schedule_vm_list1 = new List(); _pump_schedule_vm_list2 = new List(); foreach (var cl in conclusion_list) { double target_flow = 0, target_pressure = 0; var before_flow = station_scada_dict[(eDockingStation)cl.Station][0].Item1; var before_head = station_scada_dict[(eDockingStation)cl.Station][0].Item2; if (cl.Station == (int)eDockingStation.Ch1s) { target_flow = request.TargetFlow1; target_pressure = request.TargetPressure1; } else { target_flow = request.TargetFlow2; target_pressure = request.TargetPressure2; } target_pressure.Mpa2M(); target_pressure.Round(3); var vm = new StationScheduleVm(); vm.Name = GetStationName(cl.Station); vm.Flag = (eDockingStation)cl.Station; vm.BeforeFlow = before_flow; vm.BeforePressure = before_head; vm.TargetFlow = target_flow; vm.TargetPressure = target_pressure; _station_schedule_vm_list.Add(vm); } foreach (var flag in GlobalHelper.Station1FlagList) { var pump = pump_list.Find(x => x.Flag == flag); var vm = new PumpScheduleVm(); vm.Station = GetStationName((int)IStation.eDockingStation.Ch1s); vm.Flag = flag; if (pump != null) { vm.BeforeWL = pump_scada_dict[flag].Item1; vm.BeforeRpm = pump_scada_dict[flag].Item2; vm.TargetRpm = pump.Rpm; vm.BeforeFlow = pump_scada_dict[flag].Item3; vm.TargetFlow = pump.Flow; vm.BeforePressure = pump_scada_dict[flag].Item4; vm.TargetPressure = pump.PressureDiff + vm.BeforeWL; vm.TargetHead = pump.Head; vm.TargetFrequency = pump.Hz; vm.TargetPressureDiff = pump.PressureDiff; } _pump_schedule_vm_list1.Add(vm); } foreach (var flag in GlobalHelper.Station2FlagList) { var pump = pump_list.Find(x => x.Flag == flag); var vm = new PumpScheduleVm(); vm.Station = GetStationName((int)IStation.eDockingStation.Ch2s); vm.Flag = flag; if (pump != null) { vm.BeforeWL = pump_scada_dict[flag].Item1; vm.BeforeRpm = pump_scada_dict[flag].Item2; vm.TargetRpm = pump.Rpm; vm.BeforeFlow = pump_scada_dict[flag].Item3; vm.TargetFlow = pump.Flow; vm.BeforePressure = pump_scada_dict[flag].Item4; vm.TargetPressure = pump.PressureDiff + vm.BeforeWL; vm.TargetHead = pump.Head; vm.TargetFrequency = pump.Hz; vm.TargetPressureDiff = pump.PressureDiff; } _pump_schedule_vm_list2.Add(vm); } } catch (Exception ex) { Yw.LogHelper.Error(ex.Message); AlertTool.ShowInfo(this, "错误", ex.Message); } this.pumpScheduleVmBindingSource.DataSource = _pump_schedule_vm_list1; this.pumpScheduleVmBindingSource.ResetBindings(false); this.pumpScheduleVmBindingSource1.DataSource = _pump_schedule_vm_list2; this.pumpScheduleVmBindingSource1.ResetBindings(false); } private void ScheduleVerify( DateTime dt_now, List station_schedule_vm_list, List pump_schedule_vm_list1, List pump_schedule_vm_list2, List monitor_record_list, bool is_save) { this.memoEditInfo.Text = string.Empty; if (station_schedule_vm_list == null || !station_schedule_vm_list.Any()) { AlertTool.ShowInfo(this, "提示", "station_schedule_vm_list"); return; } if (pump_schedule_vm_list1 == null || !pump_schedule_vm_list1.Any()) { AlertTool.ShowInfo(this, "提示", "pump_schedule_vm_list1"); return; } if (pump_schedule_vm_list2 == null || !pump_schedule_vm_list2.Any()) { AlertTool.ShowInfo(this, "提示", "pump_schedule_vm_list2"); return; } station_schedule_vm_list.ForEach(x => x.Clear()); pump_schedule_vm_list1.ForEach(x => x.Clear()); pump_schedule_vm_list2.ForEach(x => x.Clear()); if (monitor_record_list == null || !monitor_record_list.Any()) { AlertTool.ShowInfo(this, "提示", "monitor_record_list"); return; } monitor_record_list.ForEach(x => x.DataTime = dt_now); try { var station_scada_dict = GetStationScadaDict(monitor_record_list); var pump_scada_dict = GetPumpScadaDict(monitor_record_list); double total_target_flow = 0, total_real_flow = 0; double total_flow1 = 0, total_curve_flow1 = 0; var str_build = new StringBuilder(); str_build.AppendLine(DateTime.Now.ToString("G")); foreach (var vm in station_schedule_vm_list) { var flag = vm.Flag; vm.RealTimeFlow = station_scada_dict[flag][0].Item1; vm.FlowDeviation = vm.RealTimeFlow - vm.TargetFlow; vm.RealTimePressure = station_scada_dict[flag][0].Item2; vm.PressureDeviation = vm.RealTimePressure - vm.TargetPressure; vm.Round(); if (flag == eDockingStation.Ch1s) { total_flow1 = vm.RealTimeFlow ?? 0; } total_target_flow += vm.TargetFlow ?? 0; total_real_flow += vm.RealTimeFlow ?? 0; str_build.AppendLine($"{vm.Name} 目标流量:{vm.TargetFlow} 实际流量:{vm.RealTimeFlow} 流量偏差:{vm.FlowDeviation} 目标压力:{vm.TargetPressure} 实际压力:{vm.RealTimePressure} 压力偏差:{vm.PressureDeviation}"); } str_build.AppendLine($"总目标流量:{total_target_flow:N1} 总实时流量:{total_real_flow:N1} 流量偏差:{total_target_flow-total_real_flow:N1}"); foreach (var vm in pump_schedule_vm_list1) { var flag = vm.Flag; var pump = _pump_list1?.Find(x => x.Flag == flag); if (vm.RealTimeRpm > 0 || pump_scada_dict[flag].Item2 > 0) { vm.RealTimeWL = pump_scada_dict[flag].Item1; vm.RealTimeRpm = pump_scada_dict[flag].Item2; vm.RpmDeviation = vm.RealTimeRpm - vm.TargetRpm; vm.RealTimePressure = pump_scada_dict[flag].Item4; vm.PressureDeviation = vm.RealTimePressure - vm.TargetPressure; vm.RealTimePressureDiff=vm.RealTimePressure - vm.RealTimeWL; if (vm.RealTimeRpm.HasValue) { var hz = vm.RealTimeRpm.Value / pump.Nr * 50; hz = Math.Round(hz, 1); if (hz > 50) hz = 50; vm.RealTimeFrequency = hz; var pressure_diff = vm.RealTimePressureDiff; pressure_diff = Math.Round(pressure_diff ?? 0, 1); var run_flag = RunFlagHelper.Get(flag, pump.IsBp); var list = _service_analysis_parameter.GetList(run_flag, pressure_diff ?? 0); if (list != null && list.Any()) { var hz_item = list.Find(x => x.Hz == hz); if (hz_item != null) { total_curve_flow1 += hz_item.Flow; vm.RealTimeFlow = hz_item.Flow; vm.FlowDeviation = vm.RealTimeFlow - vm.TargetFlow; vm.RealTimeHead=hz_item.Head; } else { AlertTool.ShowInfo(this, "提示", $"{flag} 无法获取压差:{pressure_diff}"); } } } vm.Round(); } } str_build.AppendLine($"陈行1输 曲线总流量:{total_curve_flow1:N1} 实际差值(实-曲):{total_flow1 - total_curve_flow1:N1}"); foreach (var vm in pump_schedule_vm_list2) { var flag = vm.Flag; var pump = _pump_list2?.Find(x => x.Flag == flag); if (vm.RealTimeRpm > 0 || pump_scada_dict[flag].Item2 > 0) { vm.RealTimeWL = pump_scada_dict[flag].Item1; vm.RealTimeRpm = pump_scada_dict[flag].Item2; vm.RpmDeviation = vm.RealTimeRpm - vm.TargetRpm; vm.RealTimeFlow = pump_scada_dict[flag].Item3; vm.FlowDeviation = vm.RealTimeFlow - vm.TargetFlow; vm.RealTimePressure = pump_scada_dict[flag].Item4; vm.PressureDeviation = vm.RealTimePressure - vm.TargetPressure; vm.RealTimePressureDiff = vm.RealTimePressure - vm.RealTimeWL; if (vm.RealTimeRpm.HasValue) { var hz = vm.RealTimeRpm.Value / pump.Nr * 50; hz = Math.Round(hz, 1); if (hz > 50) hz = 50; vm.RealTimeFrequency = hz; var pressure_diff = vm.RealTimePressureDiff; pressure_diff = Math.Round(pressure_diff ?? 0, 1); var run_flag = RunFlagHelper.Get(flag, pump.IsBp); var list = _service_analysis_parameter.GetList(run_flag, pressure_diff ?? 0); if (list != null && list.Any()) { var hz_item = list.Find(x => x.Hz == hz); if (hz_item != null) { vm.RealTimeHead = hz_item.Head; } } } } vm.Round(); } if (is_save) { _service_monitor_record.Inserts(monitor_record_list); } this.memoEditInfo.Text = str_build.ToString(); } catch (Exception ex) { Yw.LogHelper.Error(ex.Message); } this.pumpScheduleVmBindingSource.ResetBindings(false); this.pumpScheduleVmBindingSource1.ResetBindings(false); } private void Reset() { _station_schedule_vm_list = new List(); _pump_schedule_vm_list1 = new List(); this.pumpScheduleVmBindingSource.DataSource = _pump_schedule_vm_list1; this.pumpScheduleVmBindingSource.ResetBindings(false); _pump_schedule_vm_list2 = new List(); this.pumpScheduleVmBindingSource1.DataSource = _pump_schedule_vm_list2; this.pumpScheduleVmBindingSource1.ResetBindings(false); } private string GetStationName(int station) { if (station == (int)eDockingStation.Ch1s) { return "一输水"; } else { return "二输水"; } } private Dictionary>> GetStationScadaDict(List monitor_record_list) { if (monitor_record_list == null || !monitor_record_list.Any()) { return default; } var zy_monitor_record_list = monitor_record_list.Select(x => new Model.MonitorRecord() { DataTime = x.DataTime, DataCode = x.DataCode, DataValue = x.DataValue }).ToList(); return GetStationScadaDict(zy_monitor_record_list); } private Dictionary> GetPumpScadaDict(List monitor_record_list) { if (monitor_record_list == null || !monitor_record_list.Any()) { return default; } var zy_monitor_record_list = monitor_record_list.Select(x => new Model.MonitorRecord() { DataTime = x.DataTime, DataCode = x.DataCode, DataValue = x.DataValue }).ToList(); return GetPumpScadaDict(zy_monitor_record_list); } private Dictionary>> GetStationScadaDict(List monitor_record_list) { if (monitor_record_list == null || !monitor_record_list.Any()) { return default; } var scada_dict = monitor_record_list.ToDictionary(x => x.DataCode, x => x.DataValue); var jd1_flow = scada_dict[GlobalHelper.嘉定1线_瞬时流量_长江管网图]; var jd1_pressure = scada_dict[GlobalHelper.嘉定1线_压力_长江管网图] / 1000; var jd2_flow = scada_dict[GlobalHelper.嘉定2线_瞬时流量_长江管网图]; var jd2_pressure = scada_dict[GlobalHelper.嘉定2线_压力_长江管网图] / 1000; var jd3_flow = scada_dict[GlobalHelper.嘉定3线_瞬时流量_长江管网图]; var jd3_pressure = scada_dict[GlobalHelper.嘉定3线_压力_长江管网图] / 1000; var dn2400_flow = scada_dict[IStation.GlobalHelper.DN2400总管_瞬时流量_长江管网图]; var dn2400_pressure = scada_dict[IStation.GlobalHelper.DN2400_出厂压力_长江管网图]; var dn2700_flow = scada_dict[IStation.GlobalHelper.DN2700总管_瞬时流量_长江管网图]; var dn2700_pressure = scada_dict[IStation.GlobalHelper.DN2700_出厂压力_长江管网图]; jd1_pressure.Mpa2M(); jd1_pressure.Round(3); jd2_pressure.Mpa2M(); jd2_pressure.Round(3); jd3_pressure.Mpa2M(); jd3_pressure.Round(3); dn2400_pressure.Mpa2M(); dn2400_pressure.Round(3); dn2700_pressure.Mpa2M(); dn2700_pressure.Round(3); var total_flow1 = jd1_flow + jd2_flow + jd3_flow ?? 0; var total_pressure1 = (jd1_pressure + jd2_pressure + jd3_pressure ?? 0) / 3; var total_flow2 = dn2400_flow + dn2700_flow ?? 0; var total_pressure2 = (dn2400_pressure + dn2700_pressure ?? 0) / 2; total_pressure1.Round(3); total_pressure2.Round(3); var station_scada_dict = new Dictionary>>(); station_scada_dict.Add(IStation.eDockingStation.Ch1s, new Dictionary>() { {0,new (total_flow1, total_pressure1) }, {1,new (jd1_flow, jd1_pressure) }, {2,new (jd2_flow, jd2_pressure) }, {3,new (jd3_flow, jd3_pressure) }, }); station_scada_dict.Add(IStation.eDockingStation.Ch2s, new Dictionary>() { {0,new (total_flow2, total_pressure2) }, {1,new (dn2400_flow, dn2400_pressure) }, {2,new (dn2700_flow, dn2700_pressure) }, }); return station_scada_dict; } private Dictionary> GetPumpScadaDict(List monitor_record_list) { if (monitor_record_list == null || !monitor_record_list.Any()) { return default; } var scada_dict = monitor_record_list.ToDictionary(x => x.DataCode, x => x.DataValue); #region 1 var pump11_run_status = scada_dict[GlobalHelper.一输11泵_运行状态]; var pump12_run_status = scada_dict[GlobalHelper.一输12泵_运行状态]; var pump13_run_status = scada_dict[GlobalHelper.一输13泵_运行状态]; var pump14_run_status = scada_dict[GlobalHelper.一输14泵_运行状态]; var pump15_run_status = scada_dict[GlobalHelper.一输15泵_运行状态]; var pump16_run_status = scada_dict[GlobalHelper.一输16泵_运行状态]; var pump17_run_status = scada_dict[GlobalHelper.一输17泵_运行状态]; var pump18_run_status = scada_dict[GlobalHelper.一输18泵_运行状态]; var pump11_wl = scada_dict[GlobalHelper.一输_老前池南侧液位]; var pump12_wl = scada_dict[GlobalHelper.一输_老前池南侧液位]; var pump13_wl = scada_dict[GlobalHelper.一输_老前池南侧液位]; var pump14_wl = scada_dict[GlobalHelper.一输_老前池北侧液位]; var pump15_wl = scada_dict[GlobalHelper.一输_老前池北侧液位]; var pump16_wl = scada_dict[GlobalHelper.一输_新前池液位]; var pump17_wl = scada_dict[GlobalHelper.一输_新前池液位]; var pump18_wl = scada_dict[GlobalHelper.一输_新前池液位]; var pump11_pressure = scada_dict[GlobalHelper.一输11泵_出口压力] / 1000; var pump12_pressure = scada_dict[GlobalHelper.一输12泵_出口压力] / 1000; var pump13_pressure = scada_dict[GlobalHelper.一输13泵_出口压力] / 1000; var pump14_pressure = scada_dict[GlobalHelper.一输14泵_出口压力] / 1000; var pump15_pressure = scada_dict[GlobalHelper.一输15泵_出口压力] / 1000; var pump16_pressure = scada_dict[GlobalHelper.一输16泵_出口压力] / 1000; var pump17_pressure = scada_dict[GlobalHelper.一输17泵_出口压力] / 1000; var pump18_pressure = scada_dict[GlobalHelper.一输18泵_出口压力] / 1000; var pump11_rpm = scada_dict[GlobalHelper.一输11泵_转速]; var pump12_rpm = scada_dict[GlobalHelper.一输12泵_转速]; var pump13_rpm = scada_dict[GlobalHelper.一输13泵_转速]; var pump14_rpm = scada_dict[GlobalHelper.一输14泵_转速]; var pump15_rpm = pump15_run_status == 1 ? 590 : 0; var pump16_rpm = pump16_run_status == 1 ? 590 : 0; var pump17_rpm = scada_dict[GlobalHelper.一输17泵_转速]; var pump18_rpm = scada_dict[GlobalHelper.一输18泵_转速]; var pump11_power = scada_dict[GlobalHelper.一输11泵_有功功率]; var pump12_power = scada_dict[GlobalHelper.一输12泵_有功功率]; var pump13_power = scada_dict[GlobalHelper.一输13泵_有功功率]; var pump14_power = scada_dict[GlobalHelper.一输14泵_有功功率]; var pump15_power = scada_dict[GlobalHelper.一输15泵_有功功率]; var pump16_power = scada_dict[GlobalHelper.一输16泵_有功功率]; var pump17_power = scada_dict[GlobalHelper.一输17泵_有功功率]; var pump18_power = scada_dict[GlobalHelper.一输18泵_有功功率]; pump11_pressure.Mpa2M(); pump12_pressure.Mpa2M(); pump13_pressure.Mpa2M(); pump14_pressure.Mpa2M(); pump15_pressure.Mpa2M(); pump16_pressure.Mpa2M(); pump17_pressure.Mpa2M(); pump18_pressure.Mpa2M(); #endregion #region 2 var pump21_run_status = scada_dict[GlobalHelper.二输21泵_运行状态]; var pump22_run_status = scada_dict[GlobalHelper.二输22泵_运行状态]; var pump23_run_status = scada_dict[GlobalHelper.二输23泵_运行状态]; var pump24_run_status = scada_dict[GlobalHelper.二输24泵_运行状态]; var pump25_run_status = scada_dict[GlobalHelper.二输25泵_运行状态]; var pump26_run_status = scada_dict[GlobalHelper.二输26泵_运行状态]; var pump27_run_status = scada_dict[GlobalHelper.二输27泵_运行状态]; var pump21_wl = scada_dict[GlobalHelper.二输21泵_泵井液位]; var pump22_wl = scada_dict[GlobalHelper.二输22泵_泵井液位]; var pump23_wl = scada_dict[GlobalHelper.二输23泵_泵井液位]; var pump24_wl = scada_dict[GlobalHelper.二输24泵_泵井液位]; var pump25_wl = scada_dict[GlobalHelper.二输25泵_泵井液位]; var pump26_wl = scada_dict[GlobalHelper.二输26泵_泵井液位]; var pump27_wl = scada_dict[GlobalHelper.二输27泵_泵井液位]; var pump21_pressure = scada_dict[GlobalHelper.二输21泵_出水压力]; var pump22_pressure = scada_dict[GlobalHelper.二输22泵_出水压力]; var pump23_pressure = scada_dict[GlobalHelper.二输23泵_出水压力]; var pump24_pressure = scada_dict[GlobalHelper.二输24泵_出水压力]; var pump25_pressure = scada_dict[GlobalHelper.二输25泵_出水压力]; var pump26_pressure = scada_dict[GlobalHelper.二输26泵_出水压力]; var pump27_pressure = scada_dict[GlobalHelper.二输27泵_出水压力]; var pump21_rpm = scada_dict[GlobalHelper.二输21泵_转速]; var pump22_rpm = scada_dict[GlobalHelper.二输22泵_转速]; var pump23_rpm = scada_dict[GlobalHelper.二输23泵_转速]; var pump24_rpm = scada_dict[GlobalHelper.二输24泵_转速]; var pump25_rpm = scada_dict[GlobalHelper.二输25泵_转速]; var pump26_rpm = scada_dict[GlobalHelper.二输26泵_转速]; var pump27_rpm = scada_dict[GlobalHelper.二输27泵_转速]; var pump21_flow = scada_dict[GlobalHelper.二输21泵_瞬时流量]; var pump22_flow = scada_dict[GlobalHelper.二输22泵_瞬时流量]; var pump23_flow = scada_dict[GlobalHelper.二输23泵_瞬时流量]; var pump24_flow = scada_dict[GlobalHelper.二输24泵_瞬时流量]; var pump25_flow = scada_dict[GlobalHelper.二输25泵_瞬时流量]; var pump26_flow = scada_dict[GlobalHelper.二输26泵_瞬时流量]; var pump27_flow = scada_dict[GlobalHelper.二输27泵_瞬时流量]; var pump21_power = scada_dict[GlobalHelper.二输21泵_有功功率]; var pump22_power = scada_dict[GlobalHelper.二输22泵_有功功率]; var pump23_power = scada_dict[GlobalHelper.二输23泵_有功功率]; var pump24_power = scada_dict[GlobalHelper.二输24泵_有功功率]; var pump25_power = scada_dict[GlobalHelper.二输25泵_有功功率]; var pump26_power = scada_dict[GlobalHelper.二输26泵_有功功率]; var pump27_power = scada_dict[GlobalHelper.二输27泵_有功功率]; var pump21_maintenance_status = scada_dict[GlobalHelper.二输21泵_状态]; var pump22_maintenance_status = scada_dict[GlobalHelper.二输22泵_状态]; var pump23_maintenance_status = scada_dict[GlobalHelper.二输23泵_状态]; var pump24_maintenance_status = scada_dict[GlobalHelper.二输24泵_状态]; var pump25_maintenance_status = scada_dict[GlobalHelper.二输25泵_状态]; var pump26_maintenance_status = scada_dict[GlobalHelper.二输26泵_状态]; var pump27_maintenance_status = scada_dict[GlobalHelper.二输27泵_状态]; pump21_pressure.Mpa2M(); pump22_pressure.Mpa2M(); pump23_pressure.Mpa2M(); pump24_pressure.Mpa2M(); pump25_pressure.Mpa2M(); pump26_pressure.Mpa2M(); pump27_pressure.Mpa2M(); #endregion var pump_scada_dict = new Dictionary>(); pump_scada_dict.Add(IStation.GlobalHelper.Flag11, new(pump11_wl, pump11_rpm, null, pump11_pressure, pump11_power)); pump_scada_dict.Add(IStation.GlobalHelper.Flag12, new(pump12_wl, pump12_rpm, null, pump12_pressure, pump12_power)); pump_scada_dict.Add(IStation.GlobalHelper.Flag13, new(pump13_wl, pump13_rpm, null, pump13_pressure, pump13_power)); pump_scada_dict.Add(IStation.GlobalHelper.Flag14, new(pump14_wl, pump14_rpm, null, pump14_pressure, pump14_power)); pump_scada_dict.Add(IStation.GlobalHelper.Flag15, new(pump15_wl, pump15_rpm, null, pump15_pressure, pump15_power)); pump_scada_dict.Add(IStation.GlobalHelper.Flag16, new(pump16_wl, pump16_rpm, null, pump16_pressure, pump16_power)); pump_scada_dict.Add(IStation.GlobalHelper.Flag17, new(pump17_wl, pump17_rpm, null, pump17_pressure, pump17_power)); pump_scada_dict.Add(IStation.GlobalHelper.Flag18, new(pump18_wl, pump18_rpm, null, pump18_pressure, pump18_power)); pump_scada_dict.Add(IStation.GlobalHelper.Flag21, new(pump21_wl, pump21_rpm, pump21_flow, pump21_pressure, pump21_power)); pump_scada_dict.Add(IStation.GlobalHelper.Flag22, new(pump22_wl, pump22_rpm, pump22_flow, pump22_pressure, pump22_power)); pump_scada_dict.Add(IStation.GlobalHelper.Flag23, new(pump23_wl, pump23_rpm, pump23_flow, pump23_pressure, pump23_power)); pump_scada_dict.Add(IStation.GlobalHelper.Flag24, new(pump24_wl, pump24_rpm, pump24_flow, pump24_pressure, pump24_power)); pump_scada_dict.Add(IStation.GlobalHelper.Flag25, new(pump25_wl, pump25_rpm, pump25_flow, pump25_pressure, pump25_power)); pump_scada_dict.Add(IStation.GlobalHelper.Flag26, new(pump26_wl, pump26_rpm, pump26_flow, pump26_pressure, pump26_power)); pump_scada_dict.Add(IStation.GlobalHelper.Flag27, new(pump27_wl, pump27_rpm, pump27_flow, pump27_pressure, pump27_power)); return pump_scada_dict; } private void gridViewS1_CustomDrawCell(object sender, DevExpress.XtraGrid.Views.Base.RowCellCustomDrawEventArgs e) { if (e.CellValue == null) { e.DisplayText = string.Empty; return; } if (e.Column == this.colRpmDeviation) { var cell_value = e.CellValue.ToString() ?? string.Empty; if (double.TryParse(cell_value, out double value)) { if (value > 0) { e.Appearance.ForeColor = Color.Red; e.DisplayText = $"↓{value}"; } else { e.Appearance.ForeColor = Color.Green; e.DisplayText = $"↑{value}"; } } } else if (e.Column == this.colFlowDeviation) { var cell_value = e.CellValue.ToString() ?? string.Empty; if (double.TryParse(cell_value, out double value)) { if (value > 0) { e.Appearance.ForeColor = Color.Red; e.DisplayText = $"↓{value}"; } else { e.Appearance.ForeColor = Color.Green; e.DisplayText = $"↑{value}"; } } } else if (e.Column == this.colPressureDeviation) { var cell_value = e.CellValue.ToString() ?? string.Empty; if (double.TryParse(cell_value, out double value)) { if (value > 0) { e.Appearance.ForeColor = Color.Red; e.DisplayText = $"↓{value}"; } else { e.Appearance.ForeColor = Color.Green; e.DisplayText = $"↑{value}"; } } } } private void gridViewS2_CustomDrawCell(object sender, DevExpress.XtraGrid.Views.Base.RowCellCustomDrawEventArgs e) { if (e.CellValue == null) { e.DisplayText = string.Empty; return; } if (e.Column == this.colRpmDeviation1) { var cell_value = e.CellValue.ToString() ?? string.Empty; if (double.TryParse(cell_value, out double value)) { if (value > 0) { e.Appearance.ForeColor = Color.Red; e.DisplayText = $"↓{value}"; } else { e.Appearance.ForeColor = Color.Green; e.DisplayText = $"↑{value}"; } } } else if (e.Column == this.colFlowDeviation1) { var cell_value = e.CellValue.ToString() ?? string.Empty; if (double.TryParse(cell_value, out double value)) { if (value > 0) { e.Appearance.ForeColor = Color.Red; e.DisplayText = $"↓{value}"; } else { e.Appearance.ForeColor = Color.Green; e.DisplayText = $"↑{value}"; } } } else if (e.Column == this.colPressureDeviation1) { var cell_value = e.CellValue.ToString() ?? string.Empty; if (double.TryParse(cell_value, out double value)) { if (value > 0) { e.Appearance.ForeColor = Color.Red; e.DisplayText = $"↓{value}"; } else { e.Appearance.ForeColor = Color.Green; e.DisplayText = $"↑{value}"; } } } } private void barSpinStep_EditValueChanged(object sender, EventArgs e) { Stop(); Start(); } } }