// See https://aka.ms/new-console-template for more information
|
|
|
using IStation;
|
using IStation.Application;
|
using IStation.Epanet.Network.Structures;
|
using Microsoft.IdentityModel.Logging;
|
using Yw;
|
|
IStation.Service.Station _service_station = new();
|
IStation.Service.ScheduleConfig _service_schedule_config = new();
|
|
|
|
|
var receipt_time = DateTime.Now;
|
var log_title = string.Empty;
|
|
Console.WriteLine("初始化基础信息文件");
|
var station_info = _service_station.Get();
|
var is_monitor_record_debug = true;
|
Console.WriteLine("实时ZyScada请求");
|
var get_msg = GlobalHelper.GetMonitorRecordList(receipt_time, out List<IStation.Model.MonitorRecord> monitor_record_list, is_monitor_record_debug);
|
|
|
|
var station1 = station_info.Station1;
|
var station2 = station_info.Station2;
|
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;
|
|
GlobalHelper.GetStationOpenFlagList(monitor_record_list, out List<int> station1_open_flag_list, out List<int> station2_open_flag_list);
|
GlobalHelper.GetStationFlagStateList(monitor_record_list, out List<int> station1_flag_maintenance_list, out List<int> station2_maintenance_flag_list, out List<int> station1_priority_flag_list, out List<int> station2_priority_flag_list);
|
GlobalHelper.GetFlagInletWaterLevelDict(monitor_record_list, out Dictionary<int, double> station1_flag_inlet_water_level_dict, out Dictionary<int, double> station2_flag_inlet_water_level_dict);
|
|
Console.WriteLine("机泵检修");
|
if (station1_flag_maintenance_list != null && station1_flag_maintenance_list.Any())
|
{
|
Console.WriteLine($"1输水:{Yw.Untity.IntListHelper.ToString(station1_flag_maintenance_list)}");
|
station1_schedule_config.MustCloseFlagList.AddRange(station1_flag_maintenance_list);
|
}
|
if (station2_maintenance_flag_list != null && station2_maintenance_flag_list.Any())
|
{
|
Console.WriteLine($"2输水:{Yw.Untity.IntListHelper.ToString(station2_maintenance_flag_list)}");
|
station2_schedule_config.MustCloseFlagList.AddRange(station2_maintenance_flag_list);
|
}
|
|
Console.WriteLine("机泵优先");
|
if (station1_priority_flag_list != null && station1_priority_flag_list.Any())
|
{
|
Console.WriteLine($"1输水:{Yw.Untity.IntListHelper.ToString(station1_priority_flag_list)}");
|
station1_schedule_config.PriorityOpenFlagList.AddRange(station1_priority_flag_list);
|
}
|
if (station2_priority_flag_list != null && station2_priority_flag_list.Any())
|
{
|
Console.WriteLine($"2输水:{Yw.Untity.IntListHelper.ToString(station2_priority_flag_list)}");
|
station2_schedule_config.PriorityOpenFlagList.AddRange(station2_priority_flag_list);
|
|
}
|
var analysis_deviation_list = new IStation.Service.AnalysisDeviation().GetList();
|
|
log_title = "调度返回";
|
var helper = new IStation.Service.ScheduleHelper();
|
|
var target_flow1 = 20722.197;
|
var target_mpa_pressure1 = 0.2556;
|
var target_flow2 = 34628.6;
|
var target_mpa_pressure2 = 0.1595;
|
var target_pressure1 = IStation.Curve.PumpCalculateHelper.Mpa2M(target_mpa_pressure1);
|
var target_pressure2 = IStation.Curve.PumpCalculateHelper.Mpa2M(target_mpa_pressure2);
|
|
|
helper.Initial(station1_open_flag_list, station1_schedule_config, analysis_deviation_list);
|
var optimal_combine1 = helper.GetOptAnaCombine(station1, station1_flag_inlet_water_level_dict, target_flow1, target_pressure1);
|
|
|
helper.Initial(station2_open_flag_list, station2_schedule_config, analysis_deviation_list);
|
var optimal_combine2 = helper.GetOptAnaCombine(station2, station2_flag_inlet_water_level_dict, target_flow2, target_pressure2);
|
|
|
Console.ReadKey();
|