From 2be5d90e96f163c67101571f6865b17effcb0f3f Mon Sep 17 00:00:00 2001
From: lixiaojun <1287241240@qq.com>
Date: 星期三, 12 四月 2023 13:26:55 +0800
Subject: [PATCH] Merge branch 'master' of http://47.103.154.90:83/r/IStation/Service.V4.1

---
 Application/IStation.Application.OpenApi/shys/dispatch/dto/DispatchAnaSchemeOutput - 副本.cs     |  113 +++++++++
 Application/IStation.Application.OpenApi/shys/dispatch/DispatchAna_ShysController - 副本.cs      |  504 ++++++++++++++++++++++++++++++++++++++++++
 Application/IStation.Application.OpenApi/shys/dispatch/dto/DispatchAnaSchemeItemOutput - 副本.cs |   83 ++++++
 3 files changed, 700 insertions(+), 0 deletions(-)

diff --git "a/Application/IStation.Application.OpenApi/shys/dispatch/DispatchAna_ShysController - \345\211\257\346\234\254.cs" "b/Application/IStation.Application.OpenApi/shys/dispatch/DispatchAna_ShysController - \345\211\257\346\234\254.cs"
new file mode 100644
index 0000000..daf4a3d
--- /dev/null
+++ "b/Application/IStation.Application.OpenApi/shys/dispatch/DispatchAna_ShysController - \345\211\257\346\234\254.cs"
@@ -0,0 +1,504 @@
+锘縰sing Microsoft.AspNetCore.Mvc;
+using System.Net;
+using System.Net.Http.Headers;
+using Microsoft.Extensions.Hosting.Internal;
+using Microsoft.AspNetCore.Http.Extensions;
+using IStation.Untity;
+using Furion.DynamicApiController;
+using System.ComponentModel.DataAnnotations;
+using Mapster;
+using Microsoft.AspNetCore.Authorization;
+using SqlSugar;
+
+namespace IStation.Application
+{
+    /// <summary>
+    /// ShysDispatchAna
+    /// </summary>
+    [Route("OpenApi/DispatchAna/SHYS")]
+    [ApiDescriptionSettings("OpenApi", Name = "涓婃捣鍘熸按璋冨害鍒嗘瀽", Order = 1000)]
+    public class DispatchAna_ShysController : IDynamicApiController 
+    {
+        /// <summary>
+        /// 璁$畻淇濇寔鐨勬柟妗�
+        /// </summary> 
+        [AllowAnonymous]
+        [NonUnify]
+        [Route("CalcuKeepDispatch")]
+        [HttpPost]
+        public IStation.Application.DispatchAnaSchemeOutput CalcuKeepDispatch([Required] StationDispatchExInput input)
+        {
+            if (input == null)
+                return default;
+            LogHelper.Debug(JsonHelper.Object2Json(input));
+            var url_sg = Settings.WebApi.OpenApi.SanGaoDispatchUrl;
+            var responseText = HttpRequestHelper.Post(url_sg,JsonHelper.Object2Json(input));
+            LogHelper.Debug(responseText);
+            var result_sg = JsonHelper.Json2Object<DispatchFactoryDto>(responseText);
+            if (result_sg == null)
+                return default;
+            string error_info = null;
+            switch (input.type)
+            {
+                case 1://闀垮叴娉电珯
+                    {
+                        var result= shys_cxd(input, result_sg,out error_info);
+                        //LogHelper.Debug(JsonHelper.Object2Json(result));
+                        return result;
+                    }
+                default:return default;
+            }
+        }
+
+        /// <summary>
+        /// 璁$畻淇濇寔鐨勬柟妗�
+        /// </summary> 
+        [AllowAnonymous]
+        [NonUnify]
+        [Route("CalcuKeepDispatch@Debug")]
+        [HttpPost]
+        public DispatchAnaSchemeOutput CalcuKeepDispatchDebug([Required] StationDispatchExInput input)
+        {
+            if (input == null)
+                return default;
+
+            var responseText = System.IO.File.ReadAllText(@"D:\result.txt");//(娴嬭瘯鐢ㄧ殑)
+            var result_sg = JsonHelper.Json2Object<DispatchFactoryDto>(responseText);
+            if (result_sg == null)
+                return default;
+
+            string error_info = null;
+            switch (input.type)
+            {
+                case 1://闀垮叴娉电珯
+                    {
+                        return shys_cxd(input, result_sg, out error_info);
+                    }
+                default: return default;
+            }
+        }
+
+        /// <summary>
+        /// 璁$畻闀垮叴淇濇寔鐨勬柟妗�
+        /// </summary> 
+        [AllowAnonymous]
+        [NonUnify]
+        [Route("CalcuCxKeepDispatch@Debug")]
+        [HttpGet]
+        public DispatchAnaSchemeOutput CalcuCxKeepDispatchDebug
+            (
+                double waterLevel,//姘翠綅
+                double flow1,//绠¢亾1娴侀噺
+                double press1,//绠¢亾1鍘嬪姏
+                double valveStatus1,//绠¢亾1闃�闂ㄧ姸鎬�
+                double flow2,//绠¢亾2娴侀噺
+                double press2,//绠¢亾2鍘嬪姏
+                double valveStatus2,//绠¢亾2闃�闂ㄧ姸鎬�
+                int middleValveStatus,//涓棿闃�闂ㄧ姸鎬�
+                int runStatus1,//1#鏈烘车杩愯鐘舵��
+                int runStatus2,//2#鏈烘车杩愯鐘舵��
+                int runStatus3,//3#鏈烘车杩愯鐘舵��
+                int runStatus4//4#鏈烘车杩愯鐘舵��
+            )
+        {
+            waterLevel = 2.558;
+            flow1 = 2573;
+            flow2 = 0;
+            press1 = 9.5527 / 102;
+            press2 = 9.5527 / 102;
+            valveStatus1 = 1;
+            valveStatus2 = 0;
+            middleValveStatus = 1;
+            runStatus1 = 1;
+            runStatus2 = 0;
+            runStatus3 = 0;
+            runStatus4 = 1;
+
+            var input = new StationDispatchExInput();
+            input.flowId = "娴嬭瘯";
+            input.type = 1;
+            input.factory = new List<FactoryDispatchInput>() { new FactoryDispatchInput() { id=1,value=200} };
+
+            var result_sg = new DispatchFactoryDto();
+            result_sg.result = new List<DispatchBranchDto>();
+            result_sg.result.Add(new DispatchBranchDto() { key= "stationCX_1#_flow",value= flow1 });
+            result_sg.result.Add(new DispatchBranchDto() { key = "stationCX_1#_pressure", value = press1 });
+            result_sg.result.Add(new DispatchBranchDto() { key = "stationCX_2#_flow", value = flow2 });
+            result_sg.result.Add(new DispatchBranchDto() { key = "stationCX_2#_pressure", value = press2 });
+            result_sg.scada = new List<DispatchScadaDto>();
+            result_sg.scada.Add(new DispatchScadaDto() {tagname= "_0402010404030103001",value=waterLevel });
+            result_sg.scada.Add(new DispatchScadaDto() { tagname = "_0402010403150103003", value = middleValveStatus });
+            result_sg.scada.Add(new DispatchScadaDto() { tagname = "_0402010403010101003", value = runStatus1 });
+            result_sg.scada.Add(new DispatchScadaDto() { tagname = "_0402010403010201003", value = runStatus2 });
+            result_sg.scada.Add(new DispatchScadaDto() { tagname = "_0402010403010301003", value = runStatus3 });
+            result_sg.scada.Add(new DispatchScadaDto() { tagname = "_0402010403010401003", value = runStatus4 });
+            result_sg.scada.Add(new DispatchScadaDto() { tagname = "_0402010403150101003", value = valveStatus1 });
+            result_sg.scada.Add(new DispatchScadaDto() { tagname = "_0402010403150102003", value = valveStatus2 });
+
+            string error_info = null;
+            switch (input.type)
+            {
+                case 1://闀垮叴娉电珯
+                    {
+                        return shys_cxd(input, result_sg, out error_info);
+                    }
+                default: return default;
+            }
+        }
+
+        /// <summary>
+        /// 闀垮叴宀�
+        /// </summary>
+        /// <param name="input"></param>
+        /// <param name="result_sg"></param> 
+        /// <param name="error_info"></param> 
+        /// <returns></returns>
+        private IStation.Application.DispatchAnaSchemeOutput shys_cxd(
+            StationDispatchExInput input,
+            DispatchFactoryDto result_sg,
+            out string error_info)
+        {
+            error_info = null;
+
+            var complex_request_paras = new IStation.Calculation.DispatchAna.Model.RequestParasComplex();
+            complex_request_paras.CorpID = 4;
+            complex_request_paras.StationID = 2;
+
+            //姘翠綅
+            var scada_water = result_sg.scada.Find(t => t.tagname == "_0402010404030103001");
+            double water_level = 0;
+            if (scada_water == null)
+            {
+                error_info = "姘翠綅鏃犳硶鑾峰彇";
+                return null;
+            }
+            else
+            {
+                water_level = scada_water.value;
+            }
+      
+            complex_request_paras.InletPipePara = new List<IStation.Calculation.DispatchAna.Model.InletPipePara>();
+            complex_request_paras.InletPipePara.Add(new IStation.Calculation.DispatchAna.Model.InletPipePara() {
+                Name = "鍚告按浜曟恫浣�", 
+                Value = water_level });
+
+
+
+            //1鍙风涓�2鍙风杩炴帴闃�鐘舵�� 0402010403150103003
+            int middleValveStatus = 1;
+            var scada_middle_vavle = result_sg.scada.Find(t => t.tagname == "_0402010403150103003");
+            if (scada_middle_vavle != null)
+                middleValveStatus = (int)scada_middle_vavle.value;
+            complex_request_paras.ValvePara = new List<IStation.Calculation.DispatchAna.Model.ValvePara>();
+            complex_request_paras.ValvePara.Add(new IStation.Calculation.DispatchAna.Model.ValvePara() { Name = "涓棿闃�闂�", OpenStatus = middleValveStatus });
+ 
+
+            //鏈烘车 寮�鍋滄満鐘舵��
+            List<long> machine_id_array = new List<long> { 19, 22, 25, 28 };
+            List<long> machine_run_status = new List<long>(4);
+            //1鍙锋车寮�鏈虹姸鎬�
+            var scada_runstatus1 = result_sg.scada.Find(t => t.tagname == "_0402010403010101003");
+            if (scada_runstatus1 != null && (int)scada_runstatus1.value == 1)
+                machine_run_status.Add(machine_id_array[0]);
+ 
+            //2鍙锋车寮�鏈虹姸鎬�
+            var scada_runstatus2 = result_sg.scada.Find(t => t.tagname == "_0402010403010201003");
+            if (scada_runstatus2 != null && (int)scada_runstatus2.value == 1)
+                machine_run_status.Add(machine_id_array[1]);
+
+            //3鍙锋车寮�鏈虹姸鎬�
+            var scada_runstatus3 = result_sg.scada.Find(t => t.tagname == "_0402010403010301003");
+            if (scada_runstatus3 != null && (int)scada_runstatus3.value == 1)
+                machine_run_status.Add(machine_id_array[2]);
+
+            //4鍙锋车寮�鏈虹姸鎬�
+            var scada_runstatus4 = result_sg.scada.Find(t => t.tagname == "_0402010403010401003");
+            if (scada_runstatus4 != null && (int)scada_runstatus4.value == 1)
+                machine_run_status.Add(machine_id_array[3]);
+
+            if (machine_run_status.Count == 0)
+            {
+                error_info = "娌℃湁浠讳綍娉靛紑鍚�.鏃犳硶璁$畻";
+                return null;
+            }
+
+            //1鍙风 
+            IStation.Calculation.DispatchAna.Model.OutletPipePara pipe1 = new Calculation.DispatchAna.Model.OutletPipePara();
+            pipe1.Name = "涓�鍙风";
+            var flow1 = result_sg.result.Find(x => x.key == "stationCX_1#_flow");
+            if(flow1 == null)
+            {
+                error_info = "涓�鍙风娴侀噺鏃犳硶鑾峰彇";
+                return null;
+            }
+            else
+            {
+                pipe1.TargetFlow = flow1.value;
+            } 
+            var press1 = result_sg.result.Find(x => x.key == "stationCX_1#_pressure");
+            if (press1 == null)
+            {
+                error_info = "涓�鍙风鍘嬪姏鏃犳硶鑾峰彇";
+                return null;
+            }
+            else
+            {
+                pipe1.TargetPress = press1.value;
+            }    
+            var pipe1_val = result_sg.scada.Find(t => t.tagname == "_0402010403150101003");
+            if (pipe1_val != null)
+            {
+                pipe1.ValveStatus =  (int)pipe1_val.value;
+            }
+             
+    
+
+            //2鍙风
+            IStation.Calculation.DispatchAna.Model.OutletPipePara pipe2 = new Calculation.DispatchAna.Model.OutletPipePara();
+            pipe2.Name = "浜屽彿绠�";
+            var flow2 = result_sg.result.Find(x => x.key == "stationCX_2#_flow");
+            if (flow2 == null)
+            {
+                error_info = "浜屽彿绠℃祦閲忔棤娉曡幏鍙�";
+                return null;
+            }
+            else
+            {
+                pipe2.TargetFlow = flow2.value;
+            }
+           
+            var press2 = result_sg.result.Find(x => x.key == "stationCX_2#_pressure");
+            if (press2 == null)
+            {
+                error_info = "浜屽彿绠″帇鍔涙棤娉曡幏鍙�";
+                return null;
+            }
+            else
+            {
+                pipe2.TargetPress = press2.value;
+            } 
+            var pipe2_val = result_sg.scada.Find(t => t.tagname == "_0402010403150102003");
+            if (pipe2_val != null)
+            {
+                pipe2.ValveStatus = (int)pipe2_val.value;
+            }
+    
+
+            complex_request_paras.OutletPipePara = new List<IStation.Calculation.DispatchAna.Model.OutletPipePara>(2);
+            complex_request_paras.OutletPipePara.Add(pipe1);
+            complex_request_paras.OutletPipePara.Add(pipe2);
+
+            complex_request_paras.SchemeSortType = Calculation.DispatchAna.Model.eAnaSchemeSortType.鍔熺巼;
+            complex_request_paras.SchemeNumber = 1;
+
+            //鏋勯�犺绠楀櫒
+            var calulator = IStation.Calculation.DispatchAnalyCalculatorFactory.CreateKeepStatusCalculator(4,
+                IStation.ObjectType.Station, 2,null);
+            calulator.IntialRequest(complex_request_paras,
+                    null,
+                    machine_run_status);
+
+            #region 瀹炴椂閲�
+            double real_total_flow_pipe1 = 0;
+            var pipe1_val_flow_real = result_sg.scada.Find(t => t.tagname == "_0402010403030002001");
+            if (pipe1_val_flow_real != null && pipe1_val_flow_real.value > 100)
+            {//瀹炴椂閲�,  stationCX_2#_flow" 涓夐珮缁欑殑鐩爣閲�
+                real_total_flow_pipe1 = pipe1_val_flow_real.value;
+            }
+            
+            double real_oulet_press_pipe1 = 0;
+            var pipe1_val_press_real = result_sg.scada.Find(t => t.tagname == "_0402010403030002005");
+            if (pipe1_val_press_real != null && pipe1_val_press_real.value > 100)
+            {//瀹炴椂閲�,  stationCX_2#_flow" 涓夐珮缁欑殑鐩爣閲�
+                real_oulet_press_pipe1 = pipe1_val_press_real.value;
+            }
+
+
+            double real_total_flow_pipe2 = 0;
+            var pipe2_val_flow_real = result_sg.scada.Find(t => t.tagname == "_0402010403030002002");
+            if (pipe2_val_flow_real != null && pipe2_val_flow_real.value > 100)
+            {
+                real_total_flow_pipe2 = pipe2_val_flow_real.value;
+            }
+
+            double real_oulet_press_pipe2 = 0;
+            var pipe2_val_press_real = result_sg.scada.Find(t => t.tagname == "_0402010403030002006");
+            if (pipe2_val_press_real != null && pipe2_val_press_real.value > 100)
+            {//瀹炴椂閲�,  stationCX_2#_flow" 涓夐珮缁欑殑鐩爣閲�
+                real_oulet_press_pipe2 = pipe2_val_press_real.value;
+            }
+
+            #endregion
+
+
+            //鍑烘柟妗� 
+            var scheme = calulator.Calc(out error_info);
+            if (scheme == null)
+                return default;
+            var result = new IStation.Application.DispatchAnaSchemeOutput();
+            result.flowId = input.flowId;
+            result.Q = scheme.TotalWrkQ;
+            result.H = scheme.TotalWrkH;
+            result.E = scheme.TotalWrkE;
+            result.P = scheme.TotalWrkP;
+            result.WP = scheme.WP;
+            result.UWP = scheme.UWP;
+            result.Scheme = new DispatchAnaCurrentOutput();
+            result.Scheme.MiddleValveStatus = middleValveStatus;
+            result.Scheme.Pipes = new List<DispatchAnaCurrentOutput.PipeParaOutput>();
+            result.Scheme.Pipes.Add(
+                new DispatchAnaCurrentOutput.PipeParaOutput()
+                {
+                    Name = "1#绠�",
+                    TargetFlow = pipe1.TargetFlow,
+                    TargetPressure = pipe1.TargetPress,
+                    CurrentFlow = real_total_flow_pipe1,
+                    CurrentPressure = real_oulet_press_pipe1
+                }
+                );
+            result.Scheme.Pipes.Add(
+                new DispatchAnaCurrentOutput.PipeParaOutput()
+                {
+                    Name = "2#绠�",
+                    TargetFlow = pipe2.TargetFlow,
+                    TargetPressure = pipe2.TargetPress,
+                    CurrentFlow = real_total_flow_pipe2,
+                    CurrentPressure = real_oulet_press_pipe2
+                }
+            );
+
+            List<string> machine_frq_hz_target_name = new List<string> {
+                        "_0402010403010112007",
+                        "_0402010403010212019",
+                        "_0402010403010312007",
+                        "_0402010403010412019" };
+
+            List<string> machine_speed_target_name = new List<string> {
+                        "_0402010403010112008",
+                        "_0402010403010212020",
+                        "_0402010403010312008",
+                        "_0402010403010412020" };
+
+            List<string> machine_names = new List<string> {
+                        "闀垮叴娉垫埧1鍙锋満娉�",
+                        "闀垮叴娉垫埧2鍙锋満娉�",
+                        "闀垮叴娉垫埧3鍙锋満娉�",
+                        "闀垮叴娉垫埧4鍙锋満娉�" };
+
+            result.Pumps = new List<IStation.Application.DispatchAnaSchemeItemOutput>();
+            foreach (IStation.Calculation.DispatchAna.Model.AnaSchemeItem item in scheme.Items)
+            {
+                var pump_item = new IStation.Application.DispatchAnaSchemeItemOutput();
+                pump_item.Id = item.MachineID.ToString();
+                pump_item.Index = machine_id_array.IndexOf(item.MachineID);
+                pump_item.Name = item.MachineName;
+                pump_item.IsFrequency = item.IsFrequency;
+                pump_item.IsCurveExtend = item.IsCurveExtend;
+                pump_item.Q = item.WorkPointQ;
+                pump_item.H = item.WorkPointH;
+                pump_item.E = item.WorkPointE;
+                pump_item.P = item.WorkPointP;
+                pump_item.Frequency = item.Frequence;
+                pump_item.Speed = item.Speed;
+
+                if (pump_item.Index >= 0 && pump_item.Index < 4)
+                {
+                    //鑾峰彇瀹炴椂棰戠巼
+                    var fr_hz_tag_name = machine_frq_hz_target_name[pump_item.Index];
+                    var current_val_fr_hz = result_sg.scada.Find(t => t.tagname == fr_hz_tag_name);
+                    if (current_val_fr_hz != null && current_val_fr_hz.value > 10)
+                    {
+                        pump_item.CurrentFrequency = current_val_fr_hz.value;
+                    }
+
+                    //鑾峰彇瀹炴椂杞��
+                    var speed_tag_name = machine_speed_target_name[pump_item.Index];
+                    var current_val_speed = result_sg.scada.Find(t => t.tagname == speed_tag_name);
+                    if (current_val_speed != null && current_val_speed.value > 10)
+                    {
+                        pump_item.CurrentSpeed = current_val_speed.value;
+                    }
+
+                    //鏈烘车鍚嶇О
+                    pump_item.Name = machine_names[pump_item.Index];
+                }
+
+
+                result.Pumps.Add(pump_item);
+                
+
+ 
+            }
+
+
+
+            
+            if (machine_run_status.Count == 1)
+            {//淇濊瘉寮�涓�鍙版车鏃�, 娴侀噺澶� 棰戠巼涔熷ぇ, 娴侀噺灏� , 棰戠巼涔熷皬
+                if(pipe1.TargetFlow + pipe2.TargetFlow > 100)
+                {
+                    double current_total_flow = 0;
+                    if (pipe1.TargetFlow > 100)
+                        current_total_flow = pipe1.TargetFlow;
+                    else
+                        current_total_flow = pipe2.TargetFlow;
+
+ 
+                    var open_pump = result.Pumps.First();
+                    var fr_hz_tag_name = machine_frq_hz_target_name[open_pump.Index];
+                    var current_val_fr_hz = result_sg.scada.Find(t => t.tagname == fr_hz_tag_name);
+                    if (current_val_fr_hz != null && current_val_fr_hz.value > 10)
+                    {
+                        if (current_total_flow < scheme.TotalWrkQ && current_val_fr_hz.value > open_pump.Frequency)
+                        {//淇濊瘉瓒嬪娍姝g‘
+                            open_pump.Frequency = Math.Round(current_val_fr_hz.value * scheme.TotalWrkQ / current_total_flow, 2);
+                        }
+                        else if (current_total_flow > scheme.TotalWrkQ && current_val_fr_hz.value < open_pump.Frequency)
+                        {//淇濊瘉瓒嬪娍姝g‘
+                            open_pump.Frequency = Math.Round(current_val_fr_hz.value * scheme.TotalWrkQ / current_total_flow, 2);
+                        }
+                        else
+                        {//鍘熸按鍙嶉 , 鐢ㄦ洸绾胯绠�, 棰戠巼鍋忎綆, 浜轰负澧炲姞0.5HZ
+                            if (open_pump.Frequency < 49.5)
+                            {
+                                open_pump.Speed = Math.Round
+                                    (open_pump.Speed * (open_pump.Frequency + 0.5) / (open_pump.Frequency),0);
+                                open_pump.Frequency = open_pump.Frequency + 0.5;
+                            }
+
+                            if (open_pump.Frequency > 50)
+                            {
+                                open_pump.Frequency = 50;                           
+                            }
+                                
+                        }
+                    }
+                }
+            }
+            else
+            {
+                result.Pumps.ForEach(x =>
+                {//鍘熸按鍙嶉 , 鐢ㄦ洸绾胯绠�, 棰戠巼鍋忎綆, 浜轰负澧炲姞0.5HZ
+                    if (x.Frequency > 10)
+                    {
+                        if (x.Frequency < 49.5)
+                        {
+                            x.Speed = Math.Round
+                                (x.Speed * (x.Frequency + 0.5) / (x.Frequency), 0);
+                            x.Frequency = x.Frequency + 0.5;
+                        } 
+                    }
+                    if (x.Frequency > 50)
+                        x.Frequency = 50;
+                });
+            }
+
+            return result;
+        }
+
+
+
+
+
+    }
+}
\ No newline at end of file
diff --git "a/Application/IStation.Application.OpenApi/shys/dispatch/dto/DispatchAnaSchemeItemOutput - \345\211\257\346\234\254.cs" "b/Application/IStation.Application.OpenApi/shys/dispatch/dto/DispatchAnaSchemeItemOutput - \345\211\257\346\234\254.cs"
new file mode 100644
index 0000000..3ccd1f0
--- /dev/null
+++ "b/Application/IStation.Application.OpenApi/shys/dispatch/dto/DispatchAnaSchemeItemOutput - \345\211\257\346\234\254.cs"
@@ -0,0 +1,83 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace IStation.Application
+{
+    /// <summary>
+    /// 鏈烘车淇℃伅
+    /// </summary>
+    public class DispatchAnaSchemeItemOutput
+    {
+        /// <summary>
+        /// 鏈烘车鏍囪瘑
+        /// </summary>
+        public string Id { get; set; }
+
+        /// <summary>
+        /// 鏈烘车绱㈠紩 浠�0寮�濮�
+        /// </summary>
+        public int Index { get; set; }
+
+        /// <summary>
+        /// 鏈烘车鍚嶇О
+        /// </summary>
+        public string Name { get; set; }
+
+        /// <summary>
+        /// 鏄惁鍙橀
+        /// </summary>
+        public bool IsFrequency { get; set; }
+
+        /// <summary>
+        /// 鏄惁鍦ㄦ洸绾垮欢闀跨嚎涓�
+        /// </summary>
+        public bool IsCurveExtend { get; set; }
+
+        /// <summary>
+        /// 娴侀噺 m鲁/h
+        /// </summary>
+        public double Q { get; set; }
+
+        /// <summary>
+        /// 鎵▼ m
+        /// </summary>
+        public double H { get; set; }
+
+        /// <summary>
+        /// 鏁堢巼 鏁堢巼 %
+        /// </summary>
+        public double E { get; set; }
+
+        /// <summary>
+        /// 鍔熺巼 kw
+        /// </summary>
+        public double P { get; set; }
+
+        /// <summary>
+        /// 棰戠巼 hz
+        /// </summary>
+        public double Frequency { get; set; }
+
+        /// <summary>
+        /// 杞�� r/min
+        /// </summary>
+        public double Speed { get; set; }
+
+
+        /// <summary>
+        /// 棰戠巼 hz
+        /// </summary>
+        public double CurrentFrequency { get; set; }
+
+        /// <summary>
+        /// 杞�� r/min
+        /// </summary>
+        public double CurrentSpeed { get; set; }
+ 
+    }
+
+
+}
diff --git "a/Application/IStation.Application.OpenApi/shys/dispatch/dto/DispatchAnaSchemeOutput - \345\211\257\346\234\254.cs" "b/Application/IStation.Application.OpenApi/shys/dispatch/dto/DispatchAnaSchemeOutput - \345\211\257\346\234\254.cs"
new file mode 100644
index 0000000..87f21eb
--- /dev/null
+++ "b/Application/IStation.Application.OpenApi/shys/dispatch/dto/DispatchAnaSchemeOutput - \345\211\257\346\234\254.cs"
@@ -0,0 +1,113 @@
+锘縰sing Microsoft.AspNetCore.Components.Forms;
+using Org.BouncyCastle.Bcpg.OpenPgp;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace IStation.Application
+{
+    /// <summary>
+    /// 璋冨害娉电珯缁撴灉
+    /// </summary>
+    public class DispatchAnaSchemeOutput
+    {
+        /// <summary>
+        /// 
+        /// </summary>
+        public string flowId { get; set; }
+
+        /// <summary>
+        /// 娴侀噺 m鲁/h
+        /// </summary>
+        public double Q { get; set; }
+
+        /// <summary>
+        /// 鎵▼ m
+        /// </summary>
+        public double H { get; set; }
+
+        /// <summary>
+        /// 鏁堢巼 %
+        /// </summary>
+        public double E { get; set; }
+
+        /// <summary>
+        /// 鍔熺巼 kw
+        /// </summary>
+        public double P { get; set; }
+
+        /// <summary>
+        /// 鍗冨惃姘磋兘鑰�  kw/m.m3/h
+        /// </summary>
+        public double WP { get; set; }
+
+        /// <summary>
+        /// 鍗曚綅鑳借�� kw/m3/h
+        /// </summary>
+        public double UWP { get; set; }
+
+        /// <summary>
+        /// 寮�娉典俊鎭�
+        /// </summary>
+        public List<DispatchAnaSchemeItemOutput> Pumps { get; set; }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public DispatchAnaCurrentOutput Scheme { get; set; }
+
+
+
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class DispatchAnaCurrentOutput 
+    {
+        /// <summary>
+        /// 
+        /// </summary> 
+        public List<PipeParaOutput> Pipes { get; set; }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public int  MiddleValveStatus { get; set; }
+        /// <summary>
+        /// 
+        /// </summary>
+        public class PipeParaOutput
+        {
+            /// <summary>
+            /// 
+            /// </summary>
+            public string Name { get; set; }
+
+            /// <summary>
+            /// 娴侀噺 m鲁/h (涓夐珮缁欑殑鏁版嵁)
+            /// </summary>
+            public double TargetFlow { get; set; }
+
+            /// <summary>
+            /// 鍘嬪姏 MPa (涓夐珮缁欑殑鏁版嵁)
+            /// </summary>
+            public double TargetPressure { get; set; }
+
+            /// <summary>
+            /// 娴侀噺 m鲁/h (瀹炴椂)
+            /// </summary>
+            public double CurrentFlow { get; set; }
+
+            /// <summary>
+            /// 鍘嬪姏 MPa(瀹炴椂)
+            /// </summary>
+            public double CurrentPressure { get; set; }
+        }
+
+
+    }
+    
+}

--
Gitblit v1.9.3