| | |
| | | using DevExpress.XtraEditors; |
| | | using IStation.Epanet; |
| | | using IStation.Epanet.Enums; |
| | | using System.Data; |
| | | using System.Text; |
| | | using IStation.Test.Init; |
| | | |
| | | namespace IStation.Win |
| | | { |
| | |
| | | this.layoutControl1.SetupLayoutControl(); |
| | | this.bandedGridView1.SetNormalView(); |
| | | this.bandedGridView1.OptionsView.ColumnAutoWidth = false; |
| | | this.gridView2.SetNormalView(); |
| | | this.bandedGridView2.SetNormalView(); |
| | | this.bandedGridView2.OptionsView.ColumnAutoWidth = false; |
| | | |
| | | this.dtDay.SetOnlyShowDate(); |
| | | |
| | | this.dtDay.DateTime = new DateTime(2024, 6, 5); |
| | | this.dtDay.DateTime = new DateTime(2024, 3, 2); |
| | | |
| | | |
| | | this.colTime.Visible = true; |
| | | this.colTotalFlow1.Visible = false; |
| | | this.colTotalHead1.Visible = false; |
| | | this.colRunFlags1.Visible = false; |
| | | |
| | | this.colTotalFlow2.Visible = true; |
| | | this.colTotalHead2.Visible = true; |
| | | this.colRunFlags2.Visible = true; |
| | | this.gbSum.Fixed = DevExpress.XtraGrid.Columns.FixedStyle.Left; |
| | | this.gbSum1.Fixed = DevExpress.XtraGrid.Columns.FixedStyle.Left; |
| | | |
| | | ShowWL(false); |
| | | ShowFlow(false); |
| | |
| | | ShowFlow(false); |
| | | ShowPump(true); |
| | | ShowPressure(true); |
| | | ShowScada(false); |
| | | ShowModel(false); |
| | | |
| | | this.cekStation1.Checked = true; |
| | | this.cekStation2.Checked = false; |
| | | |
| | | } |
| | | |
| | | #region Show |
| | | |
| | | private void ShowScada(bool v) |
| | | { |
| | | this.gbScada.Visible = v; |
| | | this.gbScada1.Visible = v; |
| | | } |
| | | private void ShowModel(bool v) |
| | | { |
| | | this.gbModel.Visible = v; |
| | | this.gbModel1.Visible = v; |
| | | } |
| | | private void ShowWL(bool v) |
| | | { |
| | | this.colR1.Visible = v; |
| | | this.colR2.Visible = v; |
| | | this.colR3.Visible = v; |
| | | this.colRPump21.Visible = v; |
| | | this.colRPump22.Visible = v; |
| | | this.colRPump23.Visible = v; |
| | |
| | | this.colRPump25.Visible = v; |
| | | this.colRPump26.Visible = v; |
| | | this.colRPump27.Visible = v; |
| | | |
| | | this.colR1.Visible = v; |
| | | this.colR2.Visible = v; |
| | | this.colR3.Visible = v; |
| | | } |
| | | |
| | | private void ShowFlow(bool v) |
| | | { |
| | | this.colDN2400F.Visible = v; |
| | |
| | | this.colPump26FDiff.Visible = v; |
| | | this.colPump27FDiff.Visible = v; |
| | | |
| | | if (v) |
| | | { |
| | | return; |
| | | } |
| | | this.colJD1FDiff.Visible = v; |
| | | this.colJD2FDiff.Visible = v; |
| | | this.colJD3FDiff.Visible = v; |
| | | |
| | | |
| | | this.colJD1FM.Visible = v; |
| | | this.colJD2FM.Visible = v; |
| | |
| | | { |
| | | this.colDN2400P.Visible = v; |
| | | this.colDN2700P.Visible = v; |
| | | this.colPump21P.Visible = v; |
| | | this.colPump22P.Visible = v; |
| | | this.colPump23P.Visible = v; |
| | | this.colPump24P.Visible = v; |
| | | this.colPump25P.Visible = v; |
| | | this.colPump26P.Visible = v; |
| | | this.colPump27P.Visible = v; |
| | | this.colPump21P.Visible = false; |
| | | this.colPump22P.Visible = false; |
| | | this.colPump23P.Visible = false; |
| | | this.colPump24P.Visible = false; |
| | | this.colPump25P.Visible = false; |
| | | this.colPump26P.Visible = false; |
| | | this.colPump27P.Visible = false; |
| | | |
| | | |
| | | this.colDN2400PM.Visible = v; |
| | | this.colDN2700PM.Visible = v; |
| | | this.colPump21PM.Visible = v; |
| | | this.colPump22PM.Visible = v; |
| | | this.colPump23PM.Visible = v; |
| | | this.colPump24PM.Visible = v; |
| | | this.colPump25PM.Visible = v; |
| | | this.colPump26PM.Visible = v; |
| | | this.colPump27PM.Visible = v; |
| | | this.colPump21PM.Visible = false; |
| | | this.colPump22PM.Visible = false; |
| | | this.colPump23PM.Visible = false; |
| | | this.colPump24PM.Visible = false; |
| | | this.colPump25PM.Visible = false; |
| | | this.colPump26PM.Visible = false; |
| | | this.colPump27PM.Visible = false; |
| | | |
| | | |
| | | this.colDN2400PDiff.Visible = v; |
| | | this.colDN2700PDiff.Visible = v; |
| | | this.colPump21PDiff.Visible = v; |
| | | this.colPump22PDiff.Visible = v; |
| | | this.colPump23PDiff.Visible = v; |
| | | this.colPump24PDiff.Visible = v; |
| | | this.colPump25PDiff.Visible = v; |
| | | this.colPump26PDiff.Visible = v; |
| | | this.colPump27PDiff.Visible = v; |
| | | this.colPump21PDiff.Visible = false; |
| | | this.colPump22PDiff.Visible = false; |
| | | this.colPump23PDiff.Visible = false; |
| | | this.colPump24PDiff.Visible = false; |
| | | this.colPump25PDiff.Visible = false; |
| | | this.colPump26PDiff.Visible = false; |
| | | this.colPump27PDiff.Visible = false; |
| | | |
| | | if (v) |
| | | { |
| | | return; |
| | | } |
| | | |
| | | this.colJD1P.Visible = v; |
| | | this.colJD2P.Visible = v; |
| | | this.colJD3P.Visible = v; |
| | | this.colPump11P.Visible = v; |
| | | this.colPump12P.Visible = v; |
| | | this.colPump13P.Visible = v; |
| | | this.colPump14P.Visible = v; |
| | | this.colPump15P.Visible = v; |
| | | this.colPump16P.Visible = v; |
| | | this.colPump17P.Visible = v; |
| | | this.colPump18P.Visible = v; |
| | | this.colPump11P.Visible = false; |
| | | this.colPump12P.Visible = false; |
| | | this.colPump13P.Visible = false; |
| | | this.colPump14P.Visible = false; |
| | | this.colPump15P.Visible = false; |
| | | this.colPump16P.Visible = false; |
| | | this.colPump17P.Visible = false; |
| | | this.colPump18P.Visible = false; |
| | | |
| | | |
| | | this.colJD1PM.Visible = v; |
| | | this.colJD2PM.Visible = v; |
| | | this.colJD3PM.Visible = v; |
| | | this.colPump11PM.Visible = v; |
| | | this.colPump12PM.Visible = v; |
| | | this.colPump13PM.Visible = v; |
| | | this.colPump14PM.Visible = v; |
| | | this.colPump15PM.Visible = v; |
| | | this.colPump16PM.Visible = v; |
| | | this.colPump17PM.Visible = v; |
| | | this.colPump18PM.Visible = v; |
| | | |
| | | |
| | | this.colPump11PM.Visible = false; |
| | | this.colPump12PM.Visible = false; |
| | | this.colPump13PM.Visible = false; |
| | | this.colPump14PM.Visible = false; |
| | | this.colPump15PM.Visible = false; |
| | | this.colPump16PM.Visible = false; |
| | | this.colPump17PM.Visible = false; |
| | | this.colPump18PM.Visible = false; |
| | | |
| | | this.colJD1PDiff.Visible = v; |
| | | this.colJD2PDiff.Visible = v; |
| | | this.colJD3PDiff.Visible = v; |
| | | this.colPump11PDiff.Visible = v; |
| | | this.colPump12PDiff.Visible = v; |
| | | this.colPump13PDiff.Visible = v; |
| | | this.colPump14PDiff.Visible = v; |
| | | this.colPump15PDiff.Visible = v; |
| | | this.colPump16PDiff.Visible = v; |
| | | this.colPump17PDiff.Visible = v; |
| | | this.colPump18PDiff.Visible = v; |
| | | this.colPump11PDiff.Visible = false; |
| | | this.colPump12PDiff.Visible = false; |
| | | this.colPump13PDiff.Visible = false; |
| | | this.colPump14PDiff.Visible = false; |
| | | this.colPump15PDiff.Visible = false; |
| | | this.colPump16PDiff.Visible = false; |
| | | this.colPump17PDiff.Visible = false; |
| | | this.colPump18PDiff.Visible = false; |
| | | |
| | | } |
| | | private void ShowPump(bool v) |
| | |
| | | this.colPump25.Visible = v; |
| | | this.colPump26.Visible = v; |
| | | this.colPump27.Visible = v; |
| | | |
| | | |
| | | this.colPump21M.Visible = v; |
| | | this.colPump22M.Visible = v; |
| | |
| | | this.colPump26Diff.Visible = v; |
| | | this.colPump27Diff.Visible = v; |
| | | |
| | | |
| | | if (v) |
| | | { |
| | | return; |
| | | } |
| | | |
| | | this.colPump11.Visible = v; |
| | | this.colPump12.Visible = v; |
| | |
| | | this.colPump18Diff.Visible = v; |
| | | } |
| | | |
| | | private List<ScadaScheduleViewModel> _scada_vm_list = null; |
| | | private List<CorrectionFactorViewModel> _correction_factor_vm_list = null; |
| | | #endregion |
| | | |
| | | |
| | | //调度 |
| | | private void btnSchedule_Click(object sender, EventArgs e) |
| | | #region dict |
| | | |
| | | private Dictionary<string, string> _flow_id_mapping_dict1 = new Dictionary<string, string>() |
| | | { |
| | | var service_station = new Service.Station(); |
| | | var service_schedule_config = new Service.ScheduleConfig(); |
| | | var hydraulic_model_file = System.IO.Path.Combine( |
| | | Settings.ParasHelper.LocalFile.DataFolderDirectory, |
| | | Settings.ParasHelper.LocalFile.HydraulicModelFile); |
| | | |
| | | _scada_vm_list = new List<ScadaScheduleViewModel>(); |
| | | _correction_factor_vm_list = new List<CorrectionFactorViewModel>(); |
| | | |
| | | var day = this.dtDay.DateTime; |
| | | var day_value = IStation.DayValueHelper.GetDayValue(day); |
| | | if (day_value == null) |
| | | { |
| | | XtraMessageBox.Show("无法加载日期数据!"); |
| | | return; |
| | | } |
| | | var bol = CorrectionFactorHelper.Analysis(day_value, out Dictionary<string, List<Tuple<int, double, double[]>>> correction_factor_dict); |
| | | if (!bol) |
| | | { |
| | | XtraMessageBox.Show("无法加载修正系数!"); |
| | | return; |
| | | } |
| | | if (correction_factor_dict == null || !correction_factor_dict.Any()) |
| | | { |
| | | XtraMessageBox.Show("无法加载修正系数!"); |
| | | return; |
| | | } |
| | | |
| | | WaitHelper.ShowWaitForm(); |
| | | var time_value_list = day_value.TimeValueList; |
| | | foreach (var time_value in time_value_list) |
| | | { |
| | | var time = time_value.Time; |
| | | var scada_value_dict = time_value.Value; |
| | | |
| | | var vm = new ScadaScheduleViewModel(); |
| | | vm.Time = time; |
| | | vm.R1 = scada_value_dict["R1"]; |
| | | vm.R2 = scada_value_dict["R2"]; |
| | | vm.R3 = scada_value_dict["R3"]; |
| | | vm.RPump21 = scada_value_dict["RPump21"]; |
| | | vm.RPump22 = scada_value_dict["RPump22"]; |
| | | vm.RPump23 = scada_value_dict["RPump23"]; |
| | | vm.RPump24 = scada_value_dict["RPump24"]; |
| | | vm.RPump25 = scada_value_dict["RPump25"]; |
| | | vm.RPump26 = scada_value_dict["RPump26"]; |
| | | vm.RPump27 = scada_value_dict["RPump27"]; |
| | | |
| | | |
| | | vm.JD1P = scada_value_dict["SPJD1"]; |
| | | vm.JD2P = scada_value_dict["SPJD2"]; |
| | | vm.JD3P = scada_value_dict["SPJD3"]; |
| | | vm.Pump11P = scada_value_dict["SPPump11"]; |
| | | vm.Pump12P = scada_value_dict["SPPump12"]; |
| | | vm.Pump13P = scada_value_dict["SPPump13"]; |
| | | vm.Pump14P = scada_value_dict["SPPump14"]; |
| | | vm.Pump15P = scada_value_dict["SPPump15"]; |
| | | vm.Pump16P = scada_value_dict["SPPump16"]; |
| | | vm.Pump17P = scada_value_dict["SPPump17"]; |
| | | vm.Pump18P = scada_value_dict["SPPump18"]; |
| | | |
| | | vm.DN2400P = scada_value_dict["SPDN2400"]; |
| | | vm.DN2700P = scada_value_dict["SPDN2700"]; |
| | | vm.Pump21P = scada_value_dict["SPPump21"]; |
| | | vm.Pump22P = scada_value_dict["SPPump22"]; |
| | | vm.Pump23P = scada_value_dict["SPPump23"]; |
| | | vm.Pump24P = scada_value_dict["SPPump24"]; |
| | | vm.Pump25P = scada_value_dict["SPPump25"]; |
| | | vm.Pump26P = scada_value_dict["SPPump26"]; |
| | | vm.Pump27P = scada_value_dict["SPPump27"]; |
| | | |
| | | |
| | | vm.JD1F = scada_value_dict["SFJD1"]; |
| | | vm.JD2F = scada_value_dict["SFJD2"]; |
| | | vm.JD3F = scada_value_dict["SFJD3"]; |
| | | vm.DN2700F = scada_value_dict["SFDN2700"]; |
| | | vm.DN2400F = scada_value_dict["SFDN2400"]; |
| | | vm.Pump21F = scada_value_dict["SFPump21"]; |
| | | vm.Pump22F = scada_value_dict["SFPump22"]; |
| | | vm.Pump23F = scada_value_dict["SFPump23"]; |
| | | vm.Pump24F = scada_value_dict["SFPump24"]; |
| | | vm.Pump25F = scada_value_dict["SFPump25"]; |
| | | vm.Pump26F = scada_value_dict["SFPump26"]; |
| | | vm.Pump27F = scada_value_dict["SFPump27"]; |
| | | |
| | | vm.Pump11 = scada_value_dict["Pump11"]; |
| | | vm.Pump12 = scada_value_dict["Pump12"]; |
| | | vm.Pump13 = scada_value_dict["Pump13"]; |
| | | vm.Pump14 = scada_value_dict["Pump14"]; |
| | | vm.Pump15 = scada_value_dict["Pump15"]; |
| | | vm.Pump16 = scada_value_dict["Pump16"]; |
| | | vm.Pump17 = scada_value_dict["Pump17"]; |
| | | vm.Pump18 = scada_value_dict["Pump18"]; |
| | | |
| | | vm.Pump21 = scada_value_dict["Pump21"]; |
| | | vm.Pump22 = scada_value_dict["Pump22"]; |
| | | vm.Pump23 = scada_value_dict["Pump23"]; |
| | | vm.Pump24 = scada_value_dict["Pump24"]; |
| | | vm.Pump25 = scada_value_dict["Pump25"]; |
| | | vm.Pump26 = scada_value_dict["Pump26"]; |
| | | vm.Pump27 = scada_value_dict["Pump27"]; |
| | | |
| | | vm.Sum(); |
| | | _scada_vm_list.Add(vm); |
| | | } |
| | | |
| | | foreach (var correction_factor_group_item in correction_factor_dict) |
| | | { |
| | | var flags = correction_factor_group_item.Key; |
| | | foreach (var item in correction_factor_group_item.Value) |
| | | { |
| | | var vm = new CorrectionFactorViewModel |
| | | { |
| | | RunFlags = flags, |
| | | Flag = item.Item1, |
| | | Avg = item.Item2, |
| | | Mode = item.Item3, |
| | | ModeDisplay = Yw.Untity.DoubleListHelper.ToString(item.Item3) |
| | | {"Pjd1","SFJD1"}, |
| | | {"Pjd2","SFJD2"}, |
| | | {"Pjd3","SFJD3"}, |
| | | }; |
| | | _correction_factor_vm_list.Add(vm); |
| | | } |
| | | } |
| | | |
| | | this.correctionFactorViewModelBindingSource.DataSource=_correction_factor_vm_list; |
| | | this.correctionFactorViewModelBindingSource.ResetBindings(false); |
| | | |
| | | #region init_dict |
| | | |
| | | var pressure_id_mapping_dict = new Dictionary<string, string>() |
| | | private Dictionary<string, string> _pressure_id_mapping_dict1 = new Dictionary<string, string>() |
| | | { |
| | | {"Jjd1","SPJD1"}, |
| | | {"Jjd2","SPJD2"}, |
| | |
| | | {"Jpump15","SPPump15" }, |
| | | {"Jpump16","SPPump16" }, |
| | | {"Jpump17","SPPump17" }, |
| | | {"Jpump18","SPPump18" }, |
| | | {"Jdn2400","SPDN2400"}, |
| | | {"Jdn2700","SPDN2700"}, |
| | | {"Jpump21","SPPump21"}, |
| | | {"Jpump22","SPPump22"}, |
| | | {"Jpump23","SPPump23"}, |
| | | {"Jpump24","SPPump24"}, |
| | | {"Jpump25","SPPump25"}, |
| | | {"Jpump26","SPPump26"}, |
| | | {"Jpump27","SPPump27"} |
| | | {"Jpump18","SPPump18" } |
| | | }; |
| | | var flow_id_mapping_dict = new Dictionary<string, string>() |
| | | |
| | | private Dictionary<string, string> _pump_id_mapping_dict1 = new Dictionary<string, string>(){ |
| | | { "Pump11" , "Pump11"}, |
| | | { "Pump12" , "Pump12"}, |
| | | { "Pump13" , "Pump13"}, |
| | | { "Pump14" , "Pump14"}, |
| | | { "Pump15" , "Pump15"}, |
| | | { "Pump16" , "Pump16"}, |
| | | { "Pump17" , "Pump17"}, |
| | | { "Pump18" , "Pump18"}, |
| | | |
| | | }; |
| | | |
| | | private Dictionary<int, string> _flag_pattern_dict1 = new(){ |
| | | { GlobalHelper.Flag11 , "Pump11"}, |
| | | { GlobalHelper.Flag12 , "Pump12"}, |
| | | { GlobalHelper.Flag13 , "Pump13"}, |
| | | { GlobalHelper.Flag14 , "Pump14"}, |
| | | { GlobalHelper.Flag15 , "Pump15"}, |
| | | { GlobalHelper.Flag16 , "Pump16"}, |
| | | { GlobalHelper.Flag17 , "Pump17"}, |
| | | { GlobalHelper.Flag18 , "Pump18"}, |
| | | }; |
| | | |
| | | private Dictionary<string, string> _flow_id_mapping_dict2 = new Dictionary<string, string>() |
| | | { |
| | | {"Pjd1","SFJD1"}, |
| | | {"Pjd2","SFJD2"}, |
| | | {"Pjd3","SFJD3"}, |
| | | {"Pdn2400","SFDN2400"}, |
| | | {"Pdn2700","SFDN2700"}, |
| | | {"Ppump21","SFPump21"}, |
| | |
| | | {"Ppump26","SFPump26"}, |
| | | {"Ppump27","SFPump27"} |
| | | }; |
| | | var pattern_id_mapping_dict = new Dictionary<string, string>() |
| | | |
| | | private Dictionary<string, string> _pressure_id_mapping_dict2 = new Dictionary<string, string>() |
| | | { |
| | | {"R3", "R3"}, |
| | | {"R2", "R2"}, |
| | | {"R1", "R1"}, |
| | | {"SFJD1", "SFJD1"}, |
| | | {"SFJD2", "SFJD2"}, |
| | | {"SFJD3", "SFJD3"}, |
| | | {"RPump21", "RPump21"}, |
| | | {"RPump22", "RPump22"}, |
| | | {"RPump23", "RPump23"}, |
| | | {"RPump24", "RPump24"}, |
| | | {"RPump25", "RPump25"}, |
| | | {"RPump26", "RPump26"}, |
| | | {"RPump27", "RPump27"}, |
| | | {"SFPump21", "SFPump21"}, |
| | | {"SFPump22", "SFPump22"}, |
| | | {"SFPump23", "SFPump23"}, |
| | | {"SFPump24", "SFPump24"}, |
| | | {"SFPump25", "SFPump25"}, |
| | | {"SFPump26", "SFPump26"}, |
| | | {"SFPump27", "SFPump27"}, |
| | | {"SFDN2400", "SFDN2400"}, |
| | | {"SFDN2700", "SFDN2700"}, |
| | | }; |
| | | var pump_id_mapping_dict_int = new Dictionary<string, int>(){ |
| | | { "Pump11",GlobalHelper.Flag11}, |
| | | { "Pump12",GlobalHelper.Flag12}, |
| | | { "Pump13",GlobalHelper.Flag13}, |
| | | { "Pump14",GlobalHelper.Flag14}, |
| | | { "Pump15",GlobalHelper.Flag15}, |
| | | { "Pump16",GlobalHelper.Flag16}, |
| | | { "Pump17",GlobalHelper.Flag17}, |
| | | { "Pump18",GlobalHelper.Flag18}, |
| | | { "Pump21",GlobalHelper.Flag21}, |
| | | { "Pump22",GlobalHelper.Flag22}, |
| | | { "Pump23",GlobalHelper.Flag23}, |
| | | { "Pump24",GlobalHelper.Flag24}, |
| | | { "Pump25",GlobalHelper.Flag25}, |
| | | { "Pump26",GlobalHelper.Flag26}, |
| | | { "Pump27",GlobalHelper.Flag27} |
| | | {"Jdn2400","SPDN2400"}, |
| | | {"Jdn2700","SPDN2700"}, |
| | | {"Jpump21","SPPump21"}, |
| | | {"Jpump22","SPPump22"}, |
| | | {"Jpump23","SPPump23"}, |
| | | {"Jpump24","SPPump24"}, |
| | | {"Jpump25","SPPump25"}, |
| | | {"Jpump26","SPPump26"}, |
| | | {"Jpump27","SPPump27"} |
| | | }; |
| | | |
| | | var pump_pressure_mapping_dict_int = new Dictionary<string, string>(){ |
| | | { "Pump11","Jpump11"}, |
| | | { "Pump12","Jpump12"}, |
| | | { "Pump13","Jpump13"}, |
| | | { "Pump14","Jpump14"}, |
| | | { "Pump15","Jpump15"}, |
| | | { "Pump16","Jpump16"}, |
| | | { "Pump17","Jpump17"}, |
| | | { "Pump18","Jpump18" }, |
| | | { "Pump21","Jpump21"}, |
| | | { "Pump22","Jpump22"}, |
| | | { "Pump23","Jpump23"}, |
| | | { "Pump24","Jpump24"}, |
| | | { "Pump25","Jpump25"}, |
| | | { "Pump26","Jpump26"}, |
| | | { "Pump27","Jpump27"} |
| | | private Dictionary<string, string> _pump_id_mapping_dict2 = new Dictionary<string, string>(){ |
| | | { "Pump21" , "Pump21"}, |
| | | { "Pump22" , "Pump22"}, |
| | | { "Pump23" , "Pump23"}, |
| | | { "Pump24" , "Pump24"}, |
| | | { "Pump25" , "Pump25"}, |
| | | { "Pump26" , "Pump26"}, |
| | | { "Pump27" , "Pump27"} |
| | | }; |
| | | |
| | | private Dictionary<int, string> _flag_pattern_dict2 = new(){ |
| | | { GlobalHelper.Flag21 ,"Pump21" }, |
| | | { GlobalHelper.Flag22 ,"Pump22" }, |
| | | { GlobalHelper.Flag23 ,"Pump23" }, |
| | | { GlobalHelper.Flag24 ,"Pump24" }, |
| | | { GlobalHelper.Flag25 ,"Pump25" }, |
| | | { GlobalHelper.Flag26 ,"Pump26" }, |
| | | { GlobalHelper.Flag27 ,"Pump27" } |
| | | }; |
| | | |
| | | #endregion |
| | | |
| | | #region init_config |
| | | |
| | | var station_info = service_station.Get(); |
| | | var station1 = station_info.Station1; |
| | | var station2 = station_info.Station2; |
| | | var station1_same_type_flag_group_first = GlobalHelper.Station1SameTypeFlagGroupFirst; |
| | | var station2_same_type_flag_group_first = GlobalHelper.Station2SameTypeFlagGroupFirst; |
| | | var station1_schedule_config = service_schedule_config.GetStation1(); |
| | | var station2_schedule_config = service_schedule_config.GetStation2(); |
| | | var station1_flag_list = GlobalHelper.Station1FlagList; |
| | | var station2_flag_list = GlobalHelper.Station2FlagList; |
| | | |
| | | var pump_id_mapping_dict = GlobalHelper.ModelPumpIdMappingDict; |
| | | var flag_nr_mapping_dict = GlobalHelper.GetFlagNrMappingDict(); |
| | | |
| | | var pump_pattern_custom_dict = new Dictionary<string, double>(); |
| | | var pattern_dict = new Dictionary<string, float[]>(); |
| | | var scada_dict = new Dictionary<string, double>(); |
| | | var pattern_dict_temp = new Dictionary<string, float[]>(); |
| | | |
| | | #endregion |
| | | |
| | | var helper = new IStation.Algorithm.ScheduleHelper(); |
| | | foreach (var time_value in time_value_list) |
| | | //调度 |
| | | private void btnSchedule_Click(object sender, EventArgs e) |
| | | { |
| | | var time = time_value.Time; |
| | | var scada_value_dict = time_value.Value; |
| | | var vm = _scada_vm_list.Find(x => x.Time == time); |
| | | //var day = this.dtDay.DateTime; |
| | | //var day_value = DayValueHelper.GetDayValue(day); |
| | | //if (day_value == null) |
| | | //{ |
| | | // XtraMessageBox.Show("无法加载日期数据!"); |
| | | // return; |
| | | //} |
| | | //this.memoInfo.Text = string.Empty; |
| | | |
| | | pump_pattern_custom_dict.Clear(); |
| | | pattern_dict.Clear(); |
| | | scada_dict.Clear(); |
| | | //var day_value_list = new List<DayValue>() { day_value }; |
| | | WaitHelper.ShowWaitForm(); |
| | | |
| | | foreach (var item in pump_id_mapping_dict_int) |
| | | { |
| | | pump_pattern_custom_dict[item.Key] = 0; |
| | | var msg = ScadaScheduleHelper.Schedule( |
| | | //day_value_list, |
| | | //this.cekStation1.Checked, |
| | | //this.cekStation2.Checked, |
| | | out List<Station1ScadaSchedule> all_station1_scada_schedule_list, |
| | | out List<Station2ScadaSchedule> all_station2_scada_schedule_list); |
| | | |
| | | this.station1ScadaScheduleBindingSource.DataSource = all_station1_scada_schedule_list; |
| | | this.station1ScadaScheduleBindingSource.ResetBindings(false); |
| | | this.bandedGridView2.BestFitColumns(); |
| | | |
| | | this.station2ScadaScheduleBindingSource.DataSource = all_station2_scada_schedule_list; |
| | | this.station2ScadaScheduleBindingSource.ResetBindings(false); |
| | | this.bandedGridView1.BestFitColumns(); |
| | | |
| | | this.memoInfo.Text = msg; |
| | | WaitHelper.HideWaitForm(); |
| | | } |
| | | |
| | | foreach (var zy_scada in scada_value_dict) |
| | | #region event |
| | | |
| | | private void cekShowScada_CheckedChanged(object sender, EventArgs e) |
| | | { |
| | | var tag = zy_scada.Key; |
| | | var value = zy_scada.Value; |
| | | foreach (var item in pattern_id_mapping_dict) |
| | | ShowScada(this.cekShowScada.Checked); |
| | | } |
| | | |
| | | private void cekShowModel_CheckedChanged(object sender, EventArgs e) |
| | | { |
| | | if (item.Key == tag) |
| | | ShowModel(this.cekShowModel.Checked); |
| | | |
| | | } |
| | | |
| | | private void bandedGridView1_CustomDrawCell(object sender, DevExpress.XtraGrid.Views.Base.RowCellCustomDrawEventArgs e) |
| | | { |
| | | var pattern_id = item.Key; |
| | | var factor = value; |
| | | pattern_dict.Add(pattern_id, new float[] { (float)factor }); |
| | | break; |
| | | if (e.CellValue != null) |
| | | { |
| | | if (e.Column == this.colDN2400PDiff || e.Column == this.colDN2700PDiff) |
| | | { |
| | | |
| | | var cell_value = e.CellValue.ToString() ?? string.Empty; |
| | | if (double.TryParse(cell_value, out double value)) |
| | | { |
| | | if (Math.Abs(value) > 0.5) |
| | | { |
| | | e.Appearance.ForeColor = Color.Red; |
| | | } |
| | | } |
| | | |
| | | foreach (var item in flow_id_mapping_dict) |
| | | { |
| | | if (item.Value != tag) |
| | | continue; |
| | | scada_dict.Add(tag, value); |
| | | } |
| | | |
| | | foreach (var item in pressure_id_mapping_dict) |
| | | else if |
| | | ( |
| | | e.Column == this.colPump21Diff || |
| | | e.Column == this.colPump22Diff || |
| | | e.Column == this.colPump23Diff || |
| | | e.Column == this.colPump24Diff || |
| | | e.Column == this.colPump25Diff || |
| | | e.Column == this.colPump26Diff || |
| | | e.Column == this.colPump27Diff |
| | | ) |
| | | { |
| | | if (item.Value != tag) |
| | | continue; |
| | | var pressure_value = value; |
| | | scada_dict.Add(tag, pressure_value); |
| | | } |
| | | } |
| | | |
| | | var pump_model_scada_diff_dict = new Dictionary<string, double?>(){ |
| | | { "Pump11",vm.Pump11}, |
| | | { "Pump12",vm.Pump12}, |
| | | { "Pump13",vm.Pump13}, |
| | | { "Pump14",vm.Pump14}, |
| | | { "Pump15",vm.Pump15}, |
| | | { "Pump16",vm.Pump16}, |
| | | { "Pump17",vm.Pump17}, |
| | | { "Pump18",vm.Pump18}, |
| | | { "Pump21",vm.Pump21}, |
| | | { "Pump22",vm.Pump22}, |
| | | { "Pump23",vm.Pump23}, |
| | | { "Pump24",vm.Pump24}, |
| | | { "Pump25",vm.Pump25}, |
| | | { "Pump26",vm.Pump26}, |
| | | { "Pump27",vm.Pump27} |
| | | }; |
| | | |
| | | var target_flow1 = vm.TotalFlow1; |
| | | var target_head1 = vm.TotalHead1; |
| | | |
| | | var target_flow2 = vm.TotalFlow2; |
| | | var target_head2 = vm.TotalHead2; |
| | | |
| | | CorrectionFactorHelper.OutOpenFlagList(scada_value_dict, out List<int> station1_open_flag_list, out List<int> station2_open_flag_list); |
| | | CorrectionFactorHelper.OutWaterLevel(scada_value_dict, out Dictionary<int, double> station1_flag_inlet_water_level_dict, out Dictionary<int, double> station2_flag_inlet_water_level_dict); |
| | | |
| | | helper.Initial(station2_open_flag_list, station2_schedule_config); |
| | | |
| | | |
| | | if (_correction_factor_vm_list != null && _correction_factor_vm_list.Any()) |
| | | var cell_value = e.CellValue.ToString() ?? string.Empty; |
| | | if (double.TryParse(cell_value, out double value)) |
| | | { |
| | | var station2_open_flag_list_str = Yw.Untity.IntListHelper.ToString(station2_open_flag_list); |
| | | var correction_factor_vm_list = _correction_factor_vm_list.Where(x => x.RunFlags.Equals(station2_open_flag_list_str)).ToList(); |
| | | if (correction_factor_vm_list != null && correction_factor_vm_list.Any()) |
| | | if (value > 0) |
| | | { |
| | | if (this.cekUseMode.Checked) |
| | | { |
| | | var correction_factor_dict_diff2 = correction_factor_vm_list.ToDictionary(x => x.Flag, y => y.Mode.FirstOrDefault()); |
| | | helper.InitCorrectionFactorDict(correction_factor_dict_diff2); |
| | | e.Appearance.ForeColor = Color.Red; |
| | | } |
| | | else |
| | | { |
| | | var correction_factor_dict_diff2 = correction_factor_vm_list.ToDictionary(x => x.Flag, y => y.Avg); |
| | | helper.InitCorrectionFactorDict(correction_factor_dict_diff2); |
| | | e.Appearance.ForeColor = Color.Green; |
| | | } |
| | | } |
| | | } |
| | | var optimal_combine2 = helper.GetOptAnaCombine(station2, station2_same_type_flag_group_first, station2_flag_inlet_water_level_dict, null, target_flow2, target_head2); |
| | | |
| | | var station2_open_flag_list_bak = station2_open_flag_list.Select(x => x).ToList(); |
| | | if (optimal_combine2 != null) |
| | | else if |
| | | ( |
| | | e.Column == this.colTotalPowerDiff |
| | | ) |
| | | { |
| | | station2_open_flag_list = new List<int>(); |
| | | foreach (var fre_pump in optimal_combine2.AnaFrePumps) |
| | | |
| | | var cell_value = e.CellValue.ToString() ?? string.Empty; |
| | | if (double.TryParse(cell_value, out double value)) |
| | | { |
| | | var flag = fre_pump.Flag; |
| | | var modelId = pump_id_mapping_dict[flag]; |
| | | pump_pattern_custom_dict[modelId] = fre_pump.Frequency / 50; |
| | | if (fre_pump.Frequency > 0) |
| | | if (value > 0) |
| | | { |
| | | station2_open_flag_list.Add(flag); |
| | | e.Appearance.ForeColor = Color.Red; |
| | | } |
| | | } |
| | | } |
| | | |
| | | pattern_dict_temp.Clear(); |
| | | foreach (var item in pattern_dict) |
| | | pattern_dict_temp.Add(item.Key, item.Value); |
| | | foreach (var item in pump_pattern_custom_dict) |
| | | pattern_dict_temp.Add(item.Key, new float[] { (float)item.Value }); |
| | | |
| | | var record_list = Verify(999, time, hydraulic_model_file, flow_id_mapping_dict, pressure_id_mapping_dict, pattern_dict_temp, scada_value_dict); |
| | | var model_value_dict = record_list.ToDictionary(x => x.ScadaId, y => y.ModelValue); |
| | | |
| | | vm.JD1PM = model_value_dict["SPJD1"]; |
| | | vm.JD2PM = model_value_dict["SPJD2"]; |
| | | vm.JD3PM = model_value_dict["SPJD3"]; |
| | | vm.Pump11PM = model_value_dict["SPPump11"]; |
| | | vm.Pump12PM = model_value_dict["SPPump12"]; |
| | | vm.Pump13PM = model_value_dict["SPPump13"]; |
| | | vm.Pump14PM = model_value_dict["SPPump14"]; |
| | | vm.Pump15PM = model_value_dict["SPPump15"]; |
| | | vm.Pump16PM = model_value_dict["SPPump16"]; |
| | | vm.Pump17PM = model_value_dict["SPPump17"]; |
| | | vm.Pump18PM = model_value_dict["SPPump18"]; |
| | | |
| | | vm.DN2400PM = model_value_dict["SPDN2400"]; |
| | | vm.DN2700PM = model_value_dict["SPDN2700"]; |
| | | vm.Pump21PM = model_value_dict["SPPump21"]; |
| | | vm.Pump22PM = model_value_dict["SPPump22"]; |
| | | vm.Pump23PM = model_value_dict["SPPump23"]; |
| | | vm.Pump24PM = model_value_dict["SPPump24"]; |
| | | vm.Pump25PM = model_value_dict["SPPump25"]; |
| | | vm.Pump26PM = model_value_dict["SPPump26"]; |
| | | vm.Pump27PM = model_value_dict["SPPump27"]; |
| | | |
| | | |
| | | vm.JD1FM = model_value_dict["SFJD1"]; |
| | | vm.JD2FM = model_value_dict["SFJD2"]; |
| | | vm.JD3FM = model_value_dict["SFJD3"]; |
| | | |
| | | vm.DN2400FM = model_value_dict["SFDN2400"]; |
| | | vm.DN2700FM = model_value_dict["SFDN2700"]; |
| | | vm.Pump21FM = model_value_dict["SFPump21"]; |
| | | vm.Pump22FM = model_value_dict["SFPump22"]; |
| | | vm.Pump23FM = model_value_dict["SFPump23"]; |
| | | vm.Pump24FM = model_value_dict["SFPump24"]; |
| | | vm.Pump25FM = model_value_dict["SFPump25"]; |
| | | vm.Pump26FM = model_value_dict["SFPump26"]; |
| | | vm.Pump27FM = model_value_dict["SFPump27"]; |
| | | |
| | | vm.Pump11M = pump_pattern_custom_dict["Pump11"]; |
| | | vm.Pump12M = pump_pattern_custom_dict["Pump12"]; |
| | | vm.Pump13M = pump_pattern_custom_dict["Pump13"]; |
| | | vm.Pump14M = pump_pattern_custom_dict["Pump14"]; |
| | | vm.Pump15M = pump_pattern_custom_dict["Pump15"]; |
| | | vm.Pump16M = pump_pattern_custom_dict["Pump16"]; |
| | | vm.Pump17M = pump_pattern_custom_dict["Pump17"]; |
| | | vm.Pump18M = pump_pattern_custom_dict["Pump18"]; |
| | | |
| | | vm.Pump21M = pump_pattern_custom_dict["Pump21"]; |
| | | vm.Pump22M = pump_pattern_custom_dict["Pump22"]; |
| | | vm.Pump23M = pump_pattern_custom_dict["Pump23"]; |
| | | vm.Pump24M = pump_pattern_custom_dict["Pump24"]; |
| | | vm.Pump25M = pump_pattern_custom_dict["Pump25"]; |
| | | vm.Pump26M = pump_pattern_custom_dict["Pump26"]; |
| | | vm.Pump27M = pump_pattern_custom_dict["Pump27"]; |
| | | |
| | | vm.Set(); |
| | | } |
| | | |
| | | this.scadaScheduleViewModelBindingSource.DataSource = _scada_vm_list; |
| | | this.scadaScheduleViewModelBindingSource.ResetBindings(false); |
| | | this.bandedGridView1.BestFitColumns(); |
| | | WaitHelper.HideWaitForm(); |
| | | |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 模型验证 |
| | | /// </summary> |
| | | public static List<Model.HydraulicModelRecord> Verify( |
| | | long verify_id, |
| | | DateTime verify_time, |
| | | string verify_file_path, |
| | | Dictionary<string, string> flow_id_mapping_dict, |
| | | Dictionary<string, string> pressure_id_mapping_dict, |
| | | Dictionary<string, float[]> pattern_dict, |
| | | Dictionary<string, double> scada_dict) |
| | | else |
| | | { |
| | | var hydraulic_record_list = new List<Model.HydraulicModelRecord>(); |
| | | var err = EpanetMethods.ENopen(verify_file_path, "", ""); |
| | | if (err != 0) |
| | | { |
| | | return default; |
| | | e.Appearance.ForeColor = Color.Green; |
| | | } |
| | | err = EpanetMethods.ENopenH(); |
| | | if (err != 0) |
| | | { |
| | | return default; |
| | | } |
| | | |
| | | var model_id_build = new StringBuilder(31); |
| | | var pattern_init = true; |
| | | foreach (var pattern in pattern_dict) |
| | | { |
| | | var pattern_id = pattern.Key; |
| | | var pattern_factor_array = pattern.Value; |
| | | var pattern_factor_array_count = pattern_factor_array.Length == 0 ? 1 : pattern_factor_array.Length; |
| | | err = EpanetMethods.ENgetpatternindex(pattern_id, out int pattern_index); |
| | | |
| | | if (err != ErrorCode.Ok) |
| | | { |
| | | pattern_init = false; |
| | | continue; |
| | | } |
| | | err = EpanetMethods.ENsetpattern(pattern_index, pattern_factor_array, pattern_factor_array_count); |
| | | if (err != ErrorCode.Ok) |
| | | { |
| | | pattern_init = false; |
| | | continue; |
| | | } |
| | | } |
| | | |
| | | if (!pattern_init) |
| | | { |
| | | return default; |
| | | } |
| | | |
| | | EpanetMethods.ENinitH(0); |
| | | EpanetMethods.ENrunH(out _); |
| | | EpanetMethods.ENgetcount(CountType.Link, out int link_count); |
| | | EpanetMethods.ENgetcount(CountType.Node, out int node_count); |
| | | |
| | | for (int link_index = 1; link_index <= link_count; link_index++) |
| | | { |
| | | if (EpanetMethods.ENgetlinkid(link_index, model_id_build) != ErrorCode.Ok) |
| | | continue; |
| | | var model_id = model_id_build.ToString(); |
| | | |
| | | if (flow_id_mapping_dict.ContainsKey(model_id)) |
| | | { |
| | | var scada_id = flow_id_mapping_dict[model_id]; |
| | | var scada_value = scada_dict[scada_id]; |
| | | EpanetMethods.ENgetlinkvalue(link_index, LinkValue.Flow, out float model_value); |
| | | model_value = Math.Abs(model_value); |
| | | |
| | | var record = new IStation.Model.HydraulicModelRecord |
| | | { |
| | | VerificationID = verify_id, |
| | | Time = verify_time, |
| | | ModelId = model_id, |
| | | ScadaId = scada_id, |
| | | ValueType = IStation.eValueType.Flow, |
| | | ModelValue = (double)model_value, |
| | | ScadaValue = scada_value |
| | | }; |
| | | record.DifferenceValue = record.ModelValue - record.ScadaValue; |
| | | hydraulic_record_list.Add(record); |
| | | } |
| | | |
| | | EpanetMethods.ENgetlinktype(link_index, out LinkType linkType); |
| | | if (linkType == LinkType.Pump) |
| | | { |
| | | EpanetMethods.ENgetlinkvalue(link_index, LinkValue.HeadLoss, out float val); |
| | | } |
| | | } |
| | | |
| | | for (int node_index = 1; node_index <= node_count; node_index++) |
| | | { |
| | | if (EpanetMethods.ENgetnodeid(node_index, model_id_build) != ErrorCode.Ok) |
| | | continue; |
| | | var model_id = model_id_build.ToString(); |
| | | |
| | | if (pressure_id_mapping_dict.ContainsKey(model_id)) |
| | | { |
| | | var scada_id = pressure_id_mapping_dict[model_id]; |
| | | var scada_value = scada_dict[scada_id]; |
| | | |
| | | EpanetMethods.ENgetnodevalue(node_index, NodeValue.Head, out float model_value); |
| | | |
| | | var record = new IStation.Model.HydraulicModelRecord |
| | | { |
| | | VerificationID = verify_id, |
| | | Time = verify_time, |
| | | ModelId = model_id, |
| | | ScadaId = scada_id, |
| | | ValueType = IStation.eValueType.Head, |
| | | ModelValue = (double)model_value, |
| | | ScadaValue = scada_value |
| | | }; |
| | | record.DifferenceValue = record.ModelValue - record.ScadaValue; |
| | | hydraulic_record_list.Add(record); |
| | | } |
| | | } |
| | | |
| | | EpanetMethods.ENcloseH(); |
| | | return hydraulic_record_list; |
| | | } |
| | | |
| | | |
| | | } |
| | | |
| | | private void bandedGridView2_CustomDrawCell(object sender, DevExpress.XtraGrid.Views.Base.RowCellCustomDrawEventArgs e) |
| | | { |
| | | if (e.CellValue != null) |
| | | { |
| | | |
| | | if (e.Column == this.colJD1PDiff || e.Column == this.colJD2PDiff || e.Column == this.colJD3PDiff) |
| | | { |
| | | |
| | | var cell_value = e.CellValue.ToString() ?? string.Empty; |
| | | if (double.TryParse(cell_value, out double value)) |
| | | { |
| | | if (Math.Abs(value) > 0.5) |
| | | { |
| | | e.Appearance.ForeColor = Color.Red; |
| | | } |
| | | } |
| | | |
| | | } |
| | | else if |
| | | ( |
| | | e.Column == this.colPump11Diff || |
| | | e.Column == this.colPump12Diff || |
| | | e.Column == this.colPump13Diff || |
| | | e.Column == this.colPump14Diff || |
| | | e.Column == this.colPump15Diff || |
| | | e.Column == this.colPump16Diff || |
| | | e.Column == this.colPump17Diff || |
| | | e.Column == this.colPump18Diff |
| | | ) |
| | | { |
| | | |
| | | var cell_value = e.CellValue.ToString() ?? string.Empty; |
| | | if (double.TryParse(cell_value, out double value)) |
| | | { |
| | | if (value > 0) |
| | | { |
| | | e.Appearance.ForeColor = Color.Red; |
| | | } |
| | | else |
| | | { |
| | | e.Appearance.ForeColor = Color.Green; |
| | | } |
| | | } |
| | | } |
| | | else if |
| | | ( |
| | | e.Column == this.colTotalPowerDiff1 |
| | | ) |
| | | { |
| | | |
| | | var cell_value = e.CellValue.ToString() ?? string.Empty; |
| | | if (double.TryParse(cell_value, out double value)) |
| | | { |
| | | if (value > 0) |
| | | { |
| | | e.Appearance.ForeColor = Color.Red; |
| | | } |
| | | else |
| | | { |
| | | e.Appearance.ForeColor = Color.Green; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | #endregion |
| | | |
| | | } |
| | | } |