From fd681339c81201ed6fb3303647ecab89e3e6c0c1 Mon Sep 17 00:00:00 2001
From: Shuxia Ning <NingShuxia0927@outlook.com>
Date: 星期三, 17 七月 2024 09:50:11 +0800
Subject: [PATCH] 调度逻辑修改,新增笛卡尔积过滤循环

---
 IStation.Application/01-ch/02-schedule/Schedule_Controller.cs |  548 +++++++++++++++++++++++++-----------------------------
 1 files changed, 250 insertions(+), 298 deletions(-)

diff --git a/IStation.Application/01-ch/02-schedule/Schedule_Controller.cs b/IStation.Application/01-ch/02-schedule/Schedule_Controller.cs
index d2649b1..d9ebf1d 100644
--- a/IStation.Application/01-ch/02-schedule/Schedule_Controller.cs
+++ b/IStation.Application/01-ch/02-schedule/Schedule_Controller.cs
@@ -15,8 +15,8 @@
         private readonly Service.SchedulePump _service_schedule_pump = new();
 
         private readonly Service.Station _service_station = new();
-        private readonly Service.Scada _service_scada = new();
         private readonly Service.ScheduleConfig _service_schedule_config = new();
+
 
         /// <summary>
         /// 璁$畻
@@ -33,154 +33,81 @@
 
             log_title = "鍒濆鍖栧熀纭�淇℃伅鏂囦欢";
             var station_info = _service_station.Get();
-            var scada_info = _service_scada.Get();
-            var schedule_config1 = _service_schedule_config.GetStation1();
-            var schedule_config2 = _service_schedule_config.GetStation2();
-            if (station_info == null || scada_info == null)
+            if (station_info == null)
             {
                 Log.Info(request_id, log_title, "鏂囦欢缂哄け!");
                 return new StationScheduleOutput() { flag = 0, message = "鏂囦欢缂哄け" };
             }
 
-            var output = new StationScheduleOutput();
-            output.InitObjects(station_info.S1Flags, station_info.S2Flags);
+            log_title = "闇�姘磋姹�";
+            Log.Debug(request_id, log_title, JsonHelper.Object2Json(input));
 
             var target_flow1 = input.objects["TotalFlow1"];
             var target_pressure1 = input.objects["TotalPressure1"];
 
             var target_flow2 = input.objects["TotalFlow2"];
             var target_pressure2 = input.objects["TotalPressure2"];
-
-            var water_level1 = 0.0;
-            var water_level2 = 0.0;
-            var current_open_pump_flags1 = new List<int>();
-            var current_open_pump_flags2 = new List<int>();
-            var scada_list = new List<Model.ScheduleScada>();
-
-            log_title = "闇�姘磋姹�";
             Log.Info(request_id, log_title, $"target_flow1:{target_flow1},target_pressure1:{target_pressure1},target_flow2:{target_flow2},target_pressure2:{target_pressure2}");
-            Log.Debug(request_id, log_title, JsonHelper.Object2Json(input));
-            if (Settings.ParasHelper.ZyDocking.Enable)
+
+            var target_head1 = Curve.PumpCalculateHelper.Mpa2M(target_pressure1);
+            var target_head2 = Curve.PumpCalculateHelper.Mpa2M(target_pressure2);
+
+            var is_zy_scada_debug = false;
+#if DEBUG
+            is_zy_scada_debug = true;
+#endif
+
+            log_title = "瀹炴椂ZyScada璇锋眰";
+            var get_msg = GlobalHelper.GetRealTimeZyScadaList(out List<Model.ZyScada> zy_scada_list, is_zy_scada_debug);
+            if (!string.IsNullOrEmpty(get_msg))
             {
-                var url = Settings.ParasHelper.ZyDocking.ScadaHttpUrl;
-                try
-                {
-                    log_title = "Scada璇锋眰";
-                    Log.Info(request_id, log_title, $"{url}");
-                    var response_text = Yw.Untity.HttpRequestHelper.Get(url);
-                    Log.Debug(request_id, log_title, $"url:{url},responseText:{response_text}");
-                    var scada_output = JsonHelper.Json2Object<ScadaScheduleInput>(response_text);
-                    if (scada_output.data != null && scada_output.data.Any())
-                    {
-                        foreach (var scada_dict in scada_output.data)
-                        {
-                            var vals = scada_dict.Value.ElementAt(0).Value;
-                            var time = scada_dict.Value.ElementAt(1).Value;
-                            var key = scada_dict.Value.ElementAt(2).Value;
-
-                            var scada = new Model.ScheduleScada();
-                            scada.RequestID = request_id;
-                            scada.Tag = key;
-                            if (DateTime.TryParse(time, out DateTime t))
-                                scada.Time = t;
-                            if (double.TryParse(vals, out double v))
-                                scada.Value = v;
-                            scada_list.Add(scada);
-                        }
-
-                    }
-                    else
-                    {
-                        Log.Info(request_id, log_title, "scada鏁版嵁涓虹┖");
-                    }
-                }
-                catch (System.Exception ex)
-                {
-                    Log.Error(request_id, log_title, "http璇锋眰寮傚父", ex);
-                }
-
-                if (scada_list.Any())
-                {
-                    var water_level_tag_list_1 = scada_info.GetS1WaterLevelTagList();
-                    var water_level_tag_list_2 = scada_info.GetS2WaterLevelTagList();
-                    var water_level_valid_value_list1 = new List<double>();
-                    var water_level_valid_value_list2 = new List<double>();
-
-                    var run_status_tag_dict_1 = scada_info.GetS1RunStatusTagDict();
-                    var run_status_tag_dict_2 = scada_info.GetS2RunStatusTagDict();
-
-                    foreach (var scada in scada_list)
-                    {
-                        if (!scada.Value.HasValue)
-                            continue;
-
-                        var tag = scada.Tag;
-                        var value = scada.Value.Value;
-                        if (water_level_tag_list_1.Contains(tag))
-                        {
-                            water_level_valid_value_list1.Add(value);
-                            continue;
-                        }
-                        else if (water_level_tag_list_2.Contains(tag))
-                        {
-                            water_level_valid_value_list2.Add(value);
-                            continue;
-                        }
-
-                        if (value != 1)
-                            continue;
-                        if (run_status_tag_dict_1.ContainsKey(tag))
-                        {
-                            current_open_pump_flags1.Add(run_status_tag_dict_1[tag]);
-                            continue;
-                        }
-                        else if (run_status_tag_dict_2.ContainsKey(tag))
-                        {
-                            current_open_pump_flags2.Add(run_status_tag_dict_2[tag]);
-                            continue;
-                        }
-                    }
-
-                    if (water_level_valid_value_list1.Any())
-                        water_level1 = water_level_valid_value_list1.Average(x => x);
-                    if (water_level_valid_value_list2.Any())
-                        water_level2 = water_level_valid_value_list2.Average(x => x);
-                }
+                Log.Info(request_id, log_title, get_msg);
             }
+            Log.Debug(request_id, log_title, JsonHelper.Object2Json(zy_scada_list));
 
-            log_title = "褰撳墠姘翠綅";
-            var target_head1 = Curve.PumpCalculateHelper.Mpa2M(target_pressure1) - water_level1;
-            var target_head2 = Curve.PumpCalculateHelper.Mpa2M(target_pressure2) - water_level2;
-            Log.Info(request_id, log_title, $"water_level1:{water_level1},target_head1:{target_head1},water_level2:{water_level2},target_head2:{target_head2}");
+            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;
+
+            GlobalHelper.GetStationOpenFlagList(zy_scada_list, out List<int> station1_open_flag_list, out List<int> station2_open_flag_list);
+            GlobalHelper.GetFlagInletWaterLevelDict(zy_scada_list, out Dictionary<int, double> station1_flag_inlet_water_level_dict, out Dictionary<int, double> station2_flag_inlet_water_level_dict);
 
             var helper = new Algorithm.ScheduleHelper();
-            helper.Initial(current_open_pump_flags1, schedule_config1);
-            var optimal_combine1 = helper.Calc(station_info.S1, station_info.S1FlagsPart1, station_info.S1FlagsPart2, target_flow1, target_head1);
+            helper.Initial(station1_open_flag_list, station1_schedule_config);
+            var optimal_combine1 = helper.GetOptAnaCombine(station1, station1_same_type_flag_group_first, station1_flag_inlet_water_level_dict, target_flow1, target_head1);
 
-            helper.Initial(current_open_pump_flags2, schedule_config2);
-            var optimal_combine2 = helper.Calc(station_info.S2, station_info.S2FlagsPart1, station_info.S2FlagsPart2, target_flow2, target_head2);
 
-            Model.ScheduleRequest schedule_request = new Model.ScheduleRequest();
-            schedule_request = new Model.ScheduleRequest();
-            schedule_request.ID = request_id;
-            schedule_request.TargetFlow1 = target_flow1;
-            schedule_request.TargetPressure1 = target_pressure1;
-            schedule_request.TargetFlow2 = target_flow2;
-            schedule_request.TargetPressure2 = target_pressure2;
-            schedule_request.WaterLevel1 = water_level1;
-            schedule_request.WaterLevel2 = water_level2;
-            schedule_request.ScheduleStatus1 = optimal_combine1 != null;
-            schedule_request.ScheduleStatus2 = optimal_combine2 != null;
-            schedule_request.TotalTimeSpent = (DateTime.Now - receipt_time).TotalSeconds;
-            schedule_request.ReceptionTime = receipt_time;
+            helper.Initial(station2_open_flag_list, station2_schedule_config);
+            var optimal_combine2 = helper.GetOptAnaCombine(station2, station2_same_type_flag_group_first, station2_flag_inlet_water_level_dict, target_flow2, target_head2);
+
+            var schedule_request = new Model.ScheduleRequest
+            {
+                ID = request_id,
+                TargetFlow1 = target_flow1,
+                TargetPressure1 = target_pressure1,
+                TargetFlow2 = target_flow2,
+                TargetPressure2 = target_pressure2,
+                ScheduleStatus1 = optimal_combine1 != null,
+                ScheduleStatus2 = optimal_combine2 != null,
+                TotalTimeSpent = (DateTime.Now - receipt_time).TotalSeconds,
+                ReceptionTime = receipt_time
+            };
 
             Model.ScheduleConclusion schedule_conclusion1 = null;
             Model.ScheduleConclusion schedule_conclusion2 = null;
             List<Model.SchedulePump> schedule_pump_list1 = null;
             List<Model.SchedulePump> schedule_pump_list2 = null;
 
-            var msg = "璁$畻鎴愬姛";
             log_title = "璋冨害杩斿洖";
+            var msg = "璁$畻缁撴潫!";
+
+            var output = new StationScheduleOutput();
+            output.InitObjects(station1_flag_list, station2_flag_list);
             if (optimal_combine1 == null && optimal_combine2 == null)
             {
                 output.flag = 0;
@@ -191,200 +118,207 @@
             {
                 if (optimal_combine1 != null)
                 {
-                    schedule_conclusion1 = new Model.ScheduleConclusion();
-                    schedule_conclusion1.ID = Yw.YitIdHelper.NextId();
-                    schedule_conclusion1.RequestID = request_id;
-                    schedule_conclusion1.Station = IStation.eDockingStation.Ch1s;
-                    schedule_conclusion1.TotalFlow = optimal_combine1.Flow;
-                    schedule_conclusion1.TotalHead = optimal_combine1.Head;
-                    schedule_conclusion1.TotalPower = optimal_combine1.Power;
-                    schedule_conclusion1.TotalEfficiency = optimal_combine1.Efficiency;
-                    schedule_conclusion1.WP = optimal_combine1.WP;
-                    schedule_conclusion1.UWP = optimal_combine1.UWP;
-                    schedule_conclusion1.Flags = IntListHelper.ToString(optimal_combine1.Flags);
-                    schedule_conclusion1.MeritRatio = optimal_combine1.MeritRatio;
+                    optimal_combine1.Round();
+                    schedule_conclusion1 = new Model.ScheduleConclusion
+                    {
+                        ID = Yw.YitIdHelper.NextId(),
+                        RequestID = request_id,
+                        Station = IStation.eDockingStation.Ch1s,
+                        TotalFlow = optimal_combine1.TotalFlow,
+                        TotalHead = optimal_combine1.TotalHead,
+                        TotalPower = optimal_combine1.TotalPower,
+                        TotalEfficiency = optimal_combine1.TotalEfficiency,
+                        WP = optimal_combine1.WP,
+                        UWP = optimal_combine1.UWP,
+                        Flags = IntListHelper.ToString(optimal_combine1.Flags),
+                        MeritRatio = optimal_combine1.MeritRatio
+                    };
                     schedule_pump_list1 = new List<Model.SchedulePump>();
 
-                    output.objects["1杈撴按鎬绘祦閲�"] = optimal_combine1.Flow;
-                    output.objects["1杈撴按鎬诲帇鍔�"] = Math.Round(Curve.PumpCalculateHelper.M2Mpa(optimal_combine1.Head), 4);
-                    output.objects["1杈撴按鎬诲姛鐜�"] = optimal_combine1.Power;
-                    output.objects["1杈撴按鎬绘晥鐜�"] = optimal_combine1.Efficiency;
+                    output.objects["1杈撴按鎬绘祦閲�"] = optimal_combine1.TotalFlow;
+                    output.objects["1杈撴按鎬诲帇鍔�"] = Math.Round(Curve.PumpCalculateHelper.M2Mpa(optimal_combine1.TotalHead), 4);
+                    output.objects["1杈撴按鎬诲姛鐜�"] = optimal_combine1.TotalPower;
+                    output.objects["1杈撴按鎬绘晥鐜�"] = optimal_combine1.TotalEfficiency;
                     output.objects["1杈撴按鎬诲崈鍚ㄨ兘鑰�"] = optimal_combine1.WP;
                     output.objects["1杈撴按鎬诲崟浣嶈兘鑰�"] = optimal_combine1.UWP;
-                    foreach (var combine in optimal_combine1.Combines)
+                    foreach (var fre_pump in optimal_combine1.AnaFrePumps)
                     {
-                        foreach (var fre_pump in combine.FrePumps)
+                        var flag = fre_pump.Flag;
+                        output.objects[$"1杈撴按{flag}#娴侀噺"] = fre_pump.Flow;
+                        output.objects[$"1杈撴按{flag}#鎵▼"] = fre_pump.Head;
+                        output.objects[$"1杈撴按{flag}#鍔熺巼"] = fre_pump.Power;
+                        output.objects[$"1杈撴按{flag}#鏁堢巼"] = fre_pump.Efficiency;
+                        output.objects[$"1杈撴按{flag}#棰戠巼"] = fre_pump.Frequency;
+                        output.objects[$"1杈撴按{flag}#杞��"] = fre_pump.Speed;
+
+                        switch (flag)
                         {
-                            var flag = fre_pump.Flag;
-                            output.objects[$"1杈撴按{flag}#娴侀噺"] = fre_pump.Flow;
-                            output.objects[$"1杈撴按{flag}#鎵▼"] = fre_pump.Head;
-                            output.objects[$"1杈撴按{flag}#鍔熺巼"] = fre_pump.Power;
-                            output.objects[$"1杈撴按{flag}#鏁堢巼"] = fre_pump.Efficiency;
-                            output.objects[$"1杈撴按{flag}#棰戠巼"] = fre_pump.Frequency;
-                            output.objects[$"1杈撴按{flag}#杞��"] = fre_pump.Speed;
-
-                            switch (flag)
-                            {
-                                case 11:
-                                    {
-                                        output.objects["涓�杈撴按娉�11鍙峰彉棰戝崟娉�.鍙橀鍣ㄨ繍琛�"] = 1;
-                                    }
-                                    break;
-                                case 12:
-                                    {
-                                        output.objects["涓�杈撴按娉�12鍙峰彉棰戝崟娉�.鍙橀鍣ㄨ繍琛�"] = 1;
-                                    }
-                                    break;
-                                case 13:
-                                    {
-                                        output.objects["涓�杈撴按娉�13鍙峰彉棰戝崟娉�.鍙橀鍣ㄨ繍琛�"] = 1;
-                                    }
-                                    break;
-                                case 14:
-                                    {
-                                        output.objects["涓�杈撴按娉�14鍙峰彉棰戝崟娉�.鍙橀鍣ㄨ繍琛�"] = 1;
-                                    }
-                                    break;
-                                case 15:
-                                    {
-                                        output.objects["HF闀挎睙鍘熸按鍘侫BPLC.6KV閰嶇數涓�杈撴按.0402010201011501003涓�杈撴按15鍙锋车杩愯"] = 1;
-                                    }
-                                    break;
-                                case 16:
-                                    {
-                                        output.objects["HF涓�杈撴按16鍙峰伐棰戞帶鍒跺浘.16#姘存车杩愯"] = 1;
-                                    }
-                                    break;
-                                case 17:
-                                    {
-                                        output.objects["涓�杈撴按娉�17鍙峰彉棰戝崟娉�.鍙橀鍣ㄨ繍琛�"] = 1;
-                                    }
-                                    break;
-                                case 18:
-                                    {
-                                        output.objects["涓�杈撴按娉�18鍙峰彉棰戝崟娉�.鍙橀鍣ㄨ繍琛�"] = 1;
-                                    }
-                                    break;
-                                default:
-                                    break;
-                            }
-
-                            var schedule_pump = new Model.SchedulePump();
-                            schedule_pump.RequestID = request_id;
-                            schedule_pump.Station = IStation.eDockingStation.Ch1s;
-                            schedule_pump.Flag = flag;
-                            schedule_pump.Flow = fre_pump.Flow;
-                            schedule_pump.Head = fre_pump.Head;
-                            schedule_pump.Power = fre_pump.Power;
-                            schedule_pump.Efficiency = fre_pump.Efficiency;
-                            schedule_pump.Frequency = fre_pump.Frequency;
-                            schedule_pump.Speed = fre_pump.Speed;
-                            schedule_pump_list1.Add(schedule_pump);
+                            case 11:
+                                {
+                                    output.objects["涓�杈撴按娉�11鍙峰彉棰戝崟娉�.鍙橀鍣ㄨ繍琛�"] = 1;
+                                }
+                                break;
+                            case 12:
+                                {
+                                    output.objects["涓�杈撴按娉�12鍙峰彉棰戝崟娉�.鍙橀鍣ㄨ繍琛�"] = 1;
+                                }
+                                break;
+                            case 13:
+                                {
+                                    output.objects["涓�杈撴按娉�13鍙峰彉棰戝崟娉�.鍙橀鍣ㄨ繍琛�"] = 1;
+                                }
+                                break;
+                            case 14:
+                                {
+                                    output.objects["涓�杈撴按娉�14鍙峰彉棰戝崟娉�.鍙橀鍣ㄨ繍琛�"] = 1;
+                                }
+                                break;
+                            case 15:
+                                {
+                                    output.objects["HF闀挎睙鍘熸按鍘侫BPLC.6KV閰嶇數涓�杈撴按.0402010201011501003涓�杈撴按15鍙锋车杩愯"] = 1;
+                                }
+                                break;
+                            case 16:
+                                {
+                                    output.objects["HF涓�杈撴按16鍙峰伐棰戞帶鍒跺浘.16#姘存车杩愯"] = 1;
+                                }
+                                break;
+                            case 17:
+                                {
+                                    output.objects["涓�杈撴按娉�17鍙峰彉棰戝崟娉�.鍙橀鍣ㄨ繍琛�"] = 1;
+                                }
+                                break;
+                            case 18:
+                                {
+                                    output.objects["涓�杈撴按娉�18鍙峰彉棰戝崟娉�.鍙橀鍣ㄨ繍琛�"] = 1;
+                                }
+                                break;
+                            default:
+                                break;
                         }
+
+                        var schedule_pump = new Model.SchedulePump
+                        {
+                            RequestID = request_id,
+                            Station = IStation.eDockingStation.Ch1s,
+                            Flag = flag,
+                            Flow = fre_pump.Flow,
+                            Head = fre_pump.Head,
+                            Power = fre_pump.Power,
+                            Efficiency = fre_pump.Efficiency,
+                            Frequency = fre_pump.Frequency,
+                            Speed = fre_pump.Speed
+                        };
+                        schedule_pump_list1.Add(schedule_pump);
+
                     }
 
                 }
                 else
                 {
-                    msg += $"\r\n1杈撴按璋冨害璁$畻澶辫触锛屾棤娉曟弧瓒崇洰鏍囨祦閲�:{target_flow1},鐩爣鍘嬪姏:{target_pressure1}!";
+                    msg += $"  1杈撴按璋冨害璁$畻澶辫触锛屾棤娉曟弧瓒崇洰鏍囨祦閲�:{target_flow1},鐩爣鍘嬪姏:{target_pressure1}!";
                 }
 
                 if (optimal_combine2 != null)
                 {
-                    schedule_conclusion2 = new Model.ScheduleConclusion();
-                    schedule_conclusion2.ID = Yw.YitIdHelper.NextId();
-                    schedule_conclusion2.RequestID = request_id;
-                    schedule_conclusion2.Station = IStation.eDockingStation.Ch2s;
-                    schedule_conclusion2.TotalFlow = optimal_combine2.Flow;
-                    schedule_conclusion2.TotalHead = optimal_combine2.Head;
-                    schedule_conclusion2.TotalPower = optimal_combine2.Power;
-                    schedule_conclusion2.TotalEfficiency = optimal_combine2.Efficiency;
-                    schedule_conclusion2.WP = optimal_combine2.WP;
-                    schedule_conclusion2.UWP = optimal_combine2.UWP;
-                    schedule_conclusion2.Flags = IntListHelper.ToString(optimal_combine2.Flags);
-                    schedule_conclusion2.MeritRatio = optimal_combine2.MeritRatio;
+                    optimal_combine2.Round();
+                    schedule_conclusion2 = new Model.ScheduleConclusion
+                    {
+                        ID = Yw.YitIdHelper.NextId(),
+                        RequestID = request_id,
+                        Station = IStation.eDockingStation.Ch2s,
+                        TotalFlow = optimal_combine2.TotalFlow,
+                        TotalHead = optimal_combine2.TotalHead,
+                        TotalPower = optimal_combine2.TotalPower,
+                        TotalEfficiency = optimal_combine2.TotalEfficiency,
+                        WP = optimal_combine2.WP,
+                        UWP = optimal_combine2.UWP,
+                        Flags = IntListHelper.ToString(optimal_combine2.Flags),
+                        MeritRatio = optimal_combine2.MeritRatio
+                    };
                     schedule_pump_list2 = new List<Model.SchedulePump>();
 
-                    output.objects["2杈撴按鎬绘祦閲�"] = optimal_combine2.Flow;
-                    output.objects["2杈撴按鎬诲帇鍔�"] = Math.Round(Curve.PumpCalculateHelper.M2Mpa(optimal_combine2.Head), 4);
-                    output.objects["2杈撴按鎬诲姛鐜�"] = optimal_combine2.Power;
-                    output.objects["2杈撴按鎬绘晥鐜�"] = optimal_combine2.Efficiency;
+                    output.objects["2杈撴按鎬绘祦閲�"] = optimal_combine2.TotalFlow;
+                    output.objects["2杈撴按鎬诲帇鍔�"] = Math.Round(Curve.PumpCalculateHelper.M2Mpa(optimal_combine2.TotalHead), 4);
+                    output.objects["2杈撴按鎬诲姛鐜�"] = optimal_combine2.TotalPower;
+                    output.objects["2杈撴按鎬绘晥鐜�"] = optimal_combine2.TotalEfficiency;
                     output.objects["2杈撴按鎬诲崈鍚ㄨ兘鑰�"] = optimal_combine2.WP;
                     output.objects["2杈撴按鎬诲崟浣嶈兘鑰�"] = optimal_combine2.UWP;
-                    foreach (var combine in optimal_combine2.Combines)
+                    foreach (var fre_pump in optimal_combine2.AnaFrePumps)
                     {
-                        foreach (var fre_pump in combine.FrePumps)
+
+                        var flag = fre_pump.Flag;
+                        output.objects[$"2杈撴按{flag}#娴侀噺"] = fre_pump.Flow;
+                        output.objects[$"2杈撴按{flag}#鎵▼"] = fre_pump.Head;
+                        output.objects[$"2杈撴按{flag}#鍔熺巼"] = fre_pump.Power;
+                        output.objects[$"2杈撴按{flag}#鏁堢巼"] = fre_pump.Efficiency;
+                        output.objects[$"2杈撴按{flag}#棰戠巼"] = fre_pump.Frequency;
+                        output.objects[$"2杈撴按{flag}#杞��"] = fre_pump.Speed;
+
+                        switch (flag)
                         {
-                            var flag = fre_pump.Flag;
-                            output.objects[$"2杈撴按{flag}#娴侀噺"] = fre_pump.Flow;
-                            output.objects[$"2杈撴按{flag}#鎵▼"] = fre_pump.Head;
-                            output.objects[$"2杈撴按{flag}#鍔熺巼"] = fre_pump.Power;
-                            output.objects[$"2杈撴按{flag}#鏁堢巼"] = fre_pump.Efficiency;
-                            output.objects[$"2杈撴按{flag}#棰戠巼"] = fre_pump.Frequency;
-                            output.objects[$"2杈撴按{flag}#杞��"] = fre_pump.Speed;
-
-                            switch (flag)
-                            {
-                                case 21:
-                                    {
-                                        output.objects["浜岃緭姘�21鍙锋按娉佃鍥�.娉佃繍琛�"] = 1;
-                                    }
-                                    break;
-                                case 22:
-                                    {
-                                        output.objects["浜岃緭姘�22鍙锋按娉佃鍥�.娉佃繍琛�"] = 1;
-                                    }
-                                    break;
-                                case 23:
-                                    {
-                                        output.objects["浜岃緭姘�23鍙锋按娉佃蒋鍚姩.杩愯"] = 1;
-                                    }
-                                    break;
-                                case 24:
-                                    {
-                                        output.objects["浜岃緭姘�24鍙锋按娉佃蒋鍚姩.杩愯"] = 1;
-                                    }
-                                    break;
-                                case 25:
-                                    {
-                                        output.objects["浜岃緭姘�25鍙锋按娉佃蒋鍚姩.杩愯"] = 1;
-                                    }
-                                    break;
-                                case 26:
-                                    {
-                                        output.objects["浜岃緭姘�26鍙锋按娉佃蒋鍚姩.杩愯"] = 1;
-                                    }
-                                    break;
-                                case 27:
-                                    {
-                                        output.objects["浜岃緭姘�27鍙锋按娉靛彉棰戝櫒.杩愯鐘舵��"] = 1;
-                                    }
-                                    break;
-                                default:
-                                    break;
-                            }
-
-                            var schedule_pump = new Model.SchedulePump();
-                            schedule_pump.RequestID = request_id;
-                            schedule_pump.Station = IStation.eDockingStation.Ch2s;
-                            schedule_pump.Flag = flag;
-                            schedule_pump.Flow = fre_pump.Flow;
-                            schedule_pump.Head = fre_pump.Head;
-                            schedule_pump.Power = fre_pump.Power;
-                            schedule_pump.Efficiency = fre_pump.Efficiency;
-                            schedule_pump.Frequency = fre_pump.Frequency;
-                            schedule_pump.Speed = fre_pump.Speed;
-                            schedule_pump_list2.Add(schedule_pump);
+                            case 21:
+                                {
+                                    output.objects["浜岃緭姘�21鍙锋按娉佃鍥�.娉佃繍琛�"] = 1;
+                                }
+                                break;
+                            case 22:
+                                {
+                                    output.objects["浜岃緭姘�22鍙锋按娉佃鍥�.娉佃繍琛�"] = 1;
+                                }
+                                break;
+                            case 23:
+                                {
+                                    output.objects["浜岃緭姘�23鍙锋按娉佃蒋鍚姩.杩愯"] = 1;
+                                }
+                                break;
+                            case 24:
+                                {
+                                    output.objects["浜岃緭姘�24鍙锋按娉佃蒋鍚姩.杩愯"] = 1;
+                                }
+                                break;
+                            case 25:
+                                {
+                                    output.objects["浜岃緭姘�25鍙锋按娉佃蒋鍚姩.杩愯"] = 1;
+                                }
+                                break;
+                            case 26:
+                                {
+                                    output.objects["浜岃緭姘�26鍙锋按娉佃蒋鍚姩.杩愯"] = 1;
+                                }
+                                break;
+                            case 27:
+                                {
+                                    output.objects["浜岃緭姘�27鍙锋按娉靛彉棰戝櫒.杩愯鐘舵��"] = 1;
+                                }
+                                break;
+                            default:
+                                break;
                         }
+
+                        var schedule_pump = new Model.SchedulePump
+                        {
+                            RequestID = request_id,
+                            Station = IStation.eDockingStation.Ch2s,
+                            Flag = flag,
+                            Flow = fre_pump.Flow,
+                            Head = fre_pump.Head,
+                            Power = fre_pump.Power,
+                            Efficiency = fre_pump.Efficiency,
+                            Frequency = fre_pump.Frequency,
+                            Speed = fre_pump.Speed
+                        };
+                        schedule_pump_list2.Add(schedule_pump);
                     }
+
                 }
                 else
                 {
-                    msg += $"\r\n2杈撴按璋冨害璁$畻澶辫触锛屾棤娉曟弧瓒崇洰鏍囨祦閲�:{target_flow2},鐩爣鍘嬪姏:{target_pressure2}!";
+                    msg += $"  2杈撴按璋冨害璁$畻澶辫触锛屾棤娉曟弧瓒崇洰鏍囨祦閲�:{target_flow2},鐩爣鍘嬪姏:{target_pressure2}!";
                 }
-                output.flag = 1;
             }
 
+            output.flag = optimal_combine1 != null && optimal_combine2 != null ? 1 : 0;
             output.ReceiptTime = receipt_time;
             output.ReturnTime = DateTime.Now;
             output.message = msg;
@@ -401,12 +335,14 @@
                     Log.Debug(request_id, log_title, JsonHelper.Object2Json(schedule_request));
                 }
 
-                if (schedule_config1 != null)
+                if (station1_schedule_config != null)
                 {
-                    var schedule_rule1 = new Model.ScheduleRule();
-                    schedule_rule1.RequestID = request_id;
-                    schedule_rule1.Station = eDockingStation.Ch1s;
-                    schedule_rule1.Config = JsonHelper.Object2Json(schedule_config1);
+                    var schedule_rule1 = new Model.ScheduleRule
+                    {
+                        RequestID = request_id,
+                        Station = eDockingStation.Ch1s,
+                        Config = JsonHelper.Object2Json(station1_schedule_config)
+                    };
                     bol = _service_schedule_rule.Insert(schedule_rule1) > 0;
                     if (!bol)
                     {
@@ -415,12 +351,14 @@
                     }
                 }
 
-                if (schedule_config2 != null)
+                if (station2_schedule_config != null)
                 {
-                    var schedule_rule2 = new Model.ScheduleRule();
-                    schedule_rule2.RequestID = request_id;
-                    schedule_rule2.Station = eDockingStation.Ch2s;
-                    schedule_rule2.Config = JsonHelper.Object2Json(schedule_config2);
+                    var schedule_rule2 = new Model.ScheduleRule
+                    {
+                        RequestID = request_id,
+                        Station = eDockingStation.Ch2s,
+                        Config = JsonHelper.Object2Json(station2_schedule_config)
+                    };
                     bol = _service_schedule_rule.Insert(schedule_rule2) > 0;
                     if (!bol)
                     {
@@ -429,8 +367,19 @@
                     }
                 }
 
-                if (scada_list.Any())
+                if (zy_scada_list != null && zy_scada_list.Any())
                 {
+                    var scada_list = zy_scada_list
+                        .OrderBy(x => x.Code)
+                        .Select(x => new Model.ScheduleScada()
+                        {
+                            RequestID = request_id,
+                            Time = x.Time,
+                            Code = x.Code,
+                            Tag = x.Tag,
+                            Value = x.Value,
+
+                        }).ToList();
                     bol = _service_schedule_scada.Inserts(scada_list);
                     if (!bol)
                     {
@@ -481,8 +430,11 @@
             {
                 Log.Error(request_id, log_title, "鏁版嵁搴撳紓甯�!", ex);
             }
+
             return output;
+
         }
 
+
     }
 }

--
Gitblit v1.9.3