From 0171d347fec140d31db39ab5d76d51eebac472c2 Mon Sep 17 00:00:00 2001 From: ningshuxia <ningshuxia0927@outlook.com> Date: 星期一, 31 十月 2022 14:28:48 +0800 Subject: [PATCH] Merge branch 'master' of http://47.103.154.90:83/r/IStation/Service.V4.1 --- Calculation/IStation.Calculation.Dispatch/general/OptAna.cs | 16 Calculation/IStation.Calculation.Dispatch/custom/shys/station/金海泵站/KeepStatus.cs | 231 ++ Calculation/IStation.Calculation.Dispatch/custom/shys/station/长兴岛/OptAna.cs | 59 Calculation/IStation.Calculation.Dispatch/custom/shys/station/陈行一输/Current.cs | 96 Application/IStation.Application.OpenApi/shys/plan/shys/shys长兴泵站.cs | 4 Calculation/IStation.Calculation.Dispatch/custom/shys/station/五号沟金海方向/Current.cs | 19 Calculation/IStation.Calculation.Dispatch/custom/shys/station/陈行二输/Base.cs | 62 Calculation/IStation.Calculation.Dispatch/input/RequestParasComplex.cs | 10 Application/IStation.Application.OpenApi/IStation.Application.OpenApi.csproj | 4 Application/IStation.Application.OpenApi/shys/plan/shys/shys陈行一输.cs | 146 + Application/IStation.Application.OpenApi/shys/plan/shys/shys泰和泵站.cs | 97 Application/IStation.Application.OpenApi/shys/plan/shys/shys金泽泵站.cs | 2 Application/IStation.Application.OpenApi/shys/plan/shys/shys徐泾泵站.cs | 4 Application/IStation.Application.OpenApi/shys/plan/shys/shys大桥泵站.cs | 33 Calculation/IStation.Calculation.Dispatch/Model/CurrentRecordBundle.cs | 16 Application/IStation.Application.OpenApi/shys/plan/shys/shys五号沟金海方向.cs | 14 Application/IStation.Application.OpenApi/shys/plan/shys/shys临江2号泵房.cs | 87 Application/IStation.Application.OpenApi/shys/plan/shys/shys南汇北泵站.cs | 100 Calculation/IStation.Calculation.Dispatch/input/InletPipePara.cs | 12 Calculation/IStation.Calculation.Dispatch/input/OutletPipePara.cs | 7 Application/IStation.Application.Eta/dispatch_analy/dto/Dto.cs | 10 Application/IStation.Application.OpenApi/shys/dispatch/DispatchAna_ShysController.cs | 4 Calculation/IStation.Calculation.Dispatch/custom/shys/station/金海泵站/Current.cs | 81 Calculation/IStation.Calculation.Dispatch/custom/shys/station/泰和泵站/Base.cs | 64 Application/IStation.Application.Eta/IStation.Application.Eta.csproj | 1 Calculation/IStation.Calculation.Dispatch/custom/shys/station/五号沟金海方向/OptAna.cs | 419 +-- Calculation/IStation.Calculation.Dispatch/custom/shys/station/陈行一输/KeepStatus.cs | 233 ++ Calculation/IStation.Calculation.Dispatch/helper/DispatchAnaGeneralHelper压力.cs | 131 Calculation/IStation.Calculation.Dispatch/custom/shys/station/陈行二输/OptAna.cs | 366 +++ Calculation/IStation.Calculation.Dispatch/custom/shys/station/南汇北/OptAna.cs | 244 ++ Calculation/IStation.Calculation.Dispatch/custom/shys/station/陈行一输/OptAna.cs | 447 ++++ Calculation/IStation.Calculation.Dispatch/custom/shys/station/长兴岛/Base.cs | 37 Application/IStation.Application.OpenApi/shys/plan/shys/shys五号沟严桥方向1.cs | 4 Application/IStation.Application.OpenApi/shys/plan/shys/shys临江1号泵房.cs | 13 Application/IStation.Application.OpenApi/shys/plan/shys/shys五号沟凌桥方向.cs | 4 Calculation/IStation.Calculation.Dispatch/custom/shys/station/陈行一输/Base.cs | 87 Application/IStation.Application.OpenApi/shys/plan/helper/PlanAnaBaseCalculator.cs | 4 Calculation/IStation.Calculation.Dispatch/custom/shys/station/长兴岛/KeepStatus.cs | 27 Calculation/IStation.Calculation.Dispatch/custom/shys/station/南汇北/KeepStatus.cs | 165 + Calculation/IStation.Calculation.Dispatch/custom/shys/station/泰和泵站/OptAna.cs | 483 ++++ Calculation/IStation.Calculation.Dispatch/custom/shys/station/五号沟金海方向/Base.cs | 49 Application/IStation.Application.OpenApi/shys/plan/shys/shys松江泵站.cs | 14 Calculation/IStation.Calculation.Dispatch/custom/shys/station/南汇北/Base.cs | 71 Calculation/IStation.Calculation.Dispatch/custom/shys/station/南汇北/Current.cs | 72 Application/IStation.Application.OpenApi/shys/plan/PlanAna_ShysController.cs | 4 Calculation/IStation.Calculation.Dispatch/custom/shys/station/陈行二输/KeepStatus.cs | 193 + Calculation/IStation.Calculation.Dispatch/custom/shys/station/泰和泵站/Current.cs | 68 Calculation/IStation.Calculation.Dispatch/custom/shys/station/泰和泵站/KeepStatus.cs | 378 +++ Calculation/IStation.Calculation.Dispatch/custom/shys/station/金海泵站/OptAna.cs | 519 +++++ Calculation/IStation.Calculation.Dispatch/general/KeepStatus.cs | 8 Calculation/IStation.Calculation.Dispatch/custom/shys/station/陈行二输/Current.cs | 64 Application/IStation.Application.OpenApi/shys/plan/shys/shys五号沟严桥方向2.cs | 4 Application/IStation.Application.OpenApi/shys/plan/shys/shys陈行二输.cs | 104 Calculation/IStation.Calculation.Dispatch/custom/shys/station/五号沟金海方向/KeepStatus.cs | 195 + Calculation/IStation.Calculation.Dispatch/custom/shys/station/金海泵站/Base.cs | 90 Application/IStation.Application.OpenApi/shys/plan/shys/shys金海泵站.cs | 135 Application/IStation.Application.OpenApi/shys/plan/shys/ShysHelper.cs | 83 Calculation/IStation.Calculation.Dispatch/custom/shys/station/长兴岛/Current.cs | 15 Calculation/IStation.Calculation.Dispatch/base/CalculatorOptAnaBase.cs | 19 59 files changed, 5,160 insertions(+), 768 deletions(-) diff --git a/Application/IStation.Application.Eta/IStation.Application.Eta.csproj b/Application/IStation.Application.Eta/IStation.Application.Eta.csproj index b1924f7..6d7d6df 100644 --- a/Application/IStation.Application.Eta/IStation.Application.Eta.csproj +++ b/Application/IStation.Application.Eta/IStation.Application.Eta.csproj @@ -23,7 +23,6 @@ <ProjectReference Include="..\..\Service\IStation.Service.Main\IStation.Service.Main.csproj" /> <ProjectReference Include="..\..\Service\IStation.Service.Product\IStation.Service.Product.csproj" /> <ProjectReference Include="..\IStation.Application.Core\IStation.Application.Core.csproj" /> - <ProjectReference Include="..\IStation.Application.Epanet\IStation.Application.Epanet.csproj" /> </ItemGroup> </Project> diff --git a/Application/IStation.Application.Eta/dispatch_analy/dto/Dto.cs b/Application/IStation.Application.Eta/dispatch_analy/dto/Dto.cs index 99c6f5e..fc1303c 100644 --- a/Application/IStation.Application.Eta/dispatch_analy/dto/Dto.cs +++ b/Application/IStation.Application.Eta/dispatch_analy/dto/Dto.cs @@ -117,7 +117,7 @@ { error_info = null; var complex_request_paras = new Calculation.DispatchAna.Model.RequestParasComplex(); - complex_request_paras.WaterLevelPara = new List<Calculation.DispatchAna.Model.WaterLevelPara>(); + complex_request_paras.InletPipePara = new List<Calculation.DispatchAna.Model.InletPipePara>(); complex_request_paras.CorpID = this.CorpID; complex_request_paras.StationID = this.StationID; @@ -125,8 +125,8 @@ {//1:琛ㄧず鎵▼ complex_request_paras.PressValueType = Calculation.DispatchAna.Model.RequestParasComplex.ePressValueType.鎵▼; - complex_request_paras.WaterLevelPara = new List<Calculation.DispatchAna.Model.WaterLevelPara>(); - complex_request_paras.WaterLevelPara.Add(new Calculation.DispatchAna.Model.WaterLevelPara(0)); + complex_request_paras.InletPipePara = new List<Calculation.DispatchAna.Model.InletPipePara>(); + complex_request_paras.InletPipePara.Add(new Calculation.DispatchAna.Model.InletPipePara(0)); } else {//鍘嬪姏 @@ -134,10 +134,10 @@ if (WaterLevelList != null && WaterLevelList.Count > 0) { - complex_request_paras.WaterLevelPara = new List<Calculation.DispatchAna.Model.WaterLevelPara>(); + complex_request_paras.InletPipePara = new List<Calculation.DispatchAna.Model.InletPipePara>(); foreach (var wl in WaterLevelList) { - complex_request_paras.WaterLevelPara.Add(new Calculation.DispatchAna.Model.WaterLevelPara(wl)); + complex_request_paras.InletPipePara.Add(new Calculation.DispatchAna.Model.InletPipePara(wl)); } } } diff --git a/Application/IStation.Application.OpenApi/IStation.Application.OpenApi.csproj b/Application/IStation.Application.OpenApi/IStation.Application.OpenApi.csproj index 7b8e887..301c963 100644 --- a/Application/IStation.Application.OpenApi/IStation.Application.OpenApi.csproj +++ b/Application/IStation.Application.OpenApi/IStation.Application.OpenApi.csproj @@ -10,6 +10,10 @@ </PropertyGroup> <ItemGroup> + <Compile Remove="shys\plan\helper\PlanAnaCalculatorFactory.cs" /> + </ItemGroup> + + <ItemGroup> <ProjectReference Include="..\..\Calculation\IStation.Calculation.Dispatch\IStation.Calculation.Dispatch.csproj" /> <ProjectReference Include="..\IStation.Application.Core\IStation.Application.Core.csproj" /> </ItemGroup> diff --git a/Application/IStation.Application.OpenApi/shys/dispatch/DispatchAna_ShysController.cs b/Application/IStation.Application.OpenApi/shys/dispatch/DispatchAna_ShysController.cs index f7571b2..c31e9cb 100644 --- a/Application/IStation.Application.OpenApi/shys/dispatch/DispatchAna_ShysController.cs +++ b/Application/IStation.Application.OpenApi/shys/dispatch/DispatchAna_ShysController.cs @@ -176,8 +176,8 @@ water_level = scada_water.value; } - complex_request_paras.WaterLevelPara = new List<IStation.Calculation.DispatchAna.Model.WaterLevelPara>(); - complex_request_paras.WaterLevelPara.Add(new IStation.Calculation.DispatchAna.Model.WaterLevelPara() { + 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 }); diff --git a/Application/IStation.Application.OpenApi/shys/plan/PlanAna_ShysController.cs b/Application/IStation.Application.OpenApi/shys/plan/PlanAna_ShysController.cs index ae87f0d..96a3c70 100644 --- a/Application/IStation.Application.OpenApi/shys/plan/PlanAna_ShysController.cs +++ b/Application/IStation.Application.OpenApi/shys/plan/PlanAna_ShysController.cs @@ -186,8 +186,8 @@ var resultList = calculator.Calc(station, sg_factoryId, sumRecordList, out ana_error_info); if (resultList == null || resultList.Count() < 1) { - error_info = $"factoryId:{sg_factoryId},娉电珯鍚嶇О:{station.Name} 娉电珯id:{stationId},鍒嗘瀽閿欒,鍘熷洜鏄�:{ana_error_info}"; - LogHelper.Error("涓婃捣鍘熸按鑳借�楄鍒掑垎鏋愯绠椾腑锛�"+error_info); + error_info = $"娉电珯鍚嶇О:{station.Name} 娉电珯id:{stationId},鍘熷洜鏄�:{ana_error_info}"; + LogHelper.Error("涓婃捣鍘熸按鑳借�楄鍒掑垎鏋愯绠椾腑 factoryId:{sg_factoryId},锛�" + error_info); return null; } diff --git a/Application/IStation.Application.OpenApi/shys/plan/helper/PlanAnaBaseCalculator.cs b/Application/IStation.Application.OpenApi/shys/plan/helper/PlanAnaBaseCalculator.cs index 4004cd1..e9eff1d 100644 --- a/Application/IStation.Application.OpenApi/shys/plan/helper/PlanAnaBaseCalculator.cs +++ b/Application/IStation.Application.OpenApi/shys/plan/helper/PlanAnaBaseCalculator.cs @@ -99,10 +99,10 @@ //涓�涓湀鐨勫ぉ鏁� var dayNumber = DateTime.DaysInMonth(year, monthRecord.Month); //姣忓ぉ鐨勬眹鎬� - var daySum = this._dispatchAnaCalc.CalcSumData(allHourRequests,true, out error_info); + var daySum = this._dispatchAnaCalc.CalcSumData(allHourRequests, true, out error_info); if (daySum == null || daySum.Qt <= 0) { - error_info = "璋冨害鍒嗘瀽澶辫触,鍘熷洜:" + error_info; + error_info = String.Format( "{0}鏈�,璋冨害鍒嗘瀽澶辫触,鍘熷洜:{1}" ,monthRecord.Month, error_info); return null; } //璁$畻姣忔湀鐨勬眹鎬� diff --git a/Application/IStation.Application.OpenApi/shys/plan/shys/ShysHelper.cs b/Application/IStation.Application.OpenApi/shys/plan/shys/ShysHelper.cs index 8d046c3..65c9363 100644 --- a/Application/IStation.Application.OpenApi/shys/plan/shys/ShysHelper.cs +++ b/Application/IStation.Application.OpenApi/shys/plan/shys/ShysHelper.cs @@ -27,59 +27,58 @@ return _dict[SgFactoryId]; } - + // {1,2},//闀垮叴娉电珯 + // {2,12},//浜斿彿娌熷噷妗ユ柟鍚� + // {3,9},//浜斿彿娌熼噾娴锋柟鍚� + // {4,3},//浜斿彿娌熶弗妗ユ柟鍚�1 + // {5,5},//浜斿彿娌熶弗妗ユ柟鍚�2 + // {6,4},//涓ユˉ娉电珯 + // {7,6},//涓存睙1#娉电珯 + // {8,7},//涓存睙2#娉电珯 + // {9,8},//寰愭尘娉电珯 + // {10,10},//閲戞捣娉电珯 + // {11,11},//鍗楁眹鍖楁车绔� + // {12,15},//闄堣涓�杈� + // {13,16},//闄堣浜岃緭 + // {14,17},//娉板拰娉电珯 + // {15,19},//閲戞辰娉电珯 + // {16,20},//鏉炬睙娉电珯 + // {17,21},//澶фˉ娉电珯 static Dictionary<int, StationInfo> _dict; private static void Inital() { _dict = new Dictionary<int, StationInfo>(); + // 鍑烘按鎬荤鍘嬪姏, 娌℃湁鏁版嵁 //_dict.Add(15, new StationInfo(19, new IStation.Calculation.shys閲戞辰娉电珯()));//NG 鍑烘按鎬荤鍘嬪姏,鐬椂娴侀噺娌℃湁鏁版嵁 涓夐珮鏁版嵁涓嶅叏 //_dict.Add(9, new StationInfo(8, new IStation.Calculation.shys寰愭尘娉电珯()));//NG 娌℃湁姘存睜姘翠綅,杩涙按鍘嬪姏楂樹簬鍑烘按鍘嬪姏 //_dict.Add(6, new StationInfo(4, new IStation.Calculation.shys涓ユˉ娉电珯()));//NG 娌℃湁娴侀噺鏁版嵁, 娌℃湁鍑哄彛娑蹭綅鏁版嵁 + //_dict.Add(3, new StationInfo(9, new IStation.Calculation.shys浜斿彿娌熼噾娴锋柟鍚�()));//NG 鍑哄彛鍘嬪姏鏈夌殑鏄�1MPa 鏈夌殑3MPa 娉电珯鏍规湰杈句笉鍒拌繖涓帇鍔� + //_dict.Add(10, new StationInfo(10, new IStation.Calculation.shys閲戞捣娉电珯()));//NG 绠¤矾涓� 杩涘彛鍘嬪姏:0.1259MPa,鍑哄彛鍘嬪姏:0.2135MPa,绾�8.8m鎵▼,娴侀噺瑕佹眰:11596, 娉甸瀹氭壃绋嬩负47m,鍙橀涔熸棤娉曞緱鍒板姝や綆鐨勬壃绋� + //_dict.Add(12, new StationInfo(15, new IStation.Calculation.shys闄堣涓�杈�()));//NG 娌℃湁鎻愪緵 _0402010503030202003 涓夊彿绠″嚭鍙f祦閲忓�� + //_dict.Add(7, new StationInfo(6, new IStation.Calculation.shys涓存睙1鍙锋车鎴�())); //NG 娌℃湁鎻愪緵 娴侀噺 ,鏃犳硶璁$畻 + //_dict.Add(11, new StationInfo(11, new IStation.Calculation.shys鍗楁眹鍖楁车绔�()));//NG 绠¤矾涓� 杩涘彛鍘嬪姏: 6MPa , 涓嶅彲鑳借揪鍒拌繖涔堥珮鍘嬪姏 + //_dict.Add(16, new StationInfo(20, new IStation.Calculation.shys鏉炬睙娉电珯()));//NG 娌℃湁鎻愪緵 鍑烘按鎬荤鍘嬪姏 鍜屾祦閲� ,鏃犳硶璁$畻 + //_dict.Add(17, new StationInfo(21, new IStation.Calculation.shys澶фˉ娉电珯())); // NG 娌℃湁鎻愪緵 娴侀噺 ,鏃犳硶璁$畻 - _dict.Add(3, new StationInfo(9, new IStation.Calculation.shys浜斿彿娌熼噾娴锋柟鍚�())); + // _dict.Add(14, new StationInfo(17, new IStation.Calculation.shys娉板拰娉电珯()));//NG 绠¤矾浜岃皟搴︽柟妗堟棤娉曡绠�,璇风‘璁ゆ暟鎹槸鍚﹀悎鐞�,杩涘彛鍘嬪姏:0.12395039999999999MPa,鍑哄彛鍘嬪姏:0.14949020652770995MPa,娴侀噺瑕佹眰:4180.51220703125" - - //_dict.Add(1, new StationInfo(2, new IStation.Calculation.shys闀垮叴娉电珯()));//OK - //_dict.Add(2, new StationInfo(12, new IStation.Calculation.shys浜斿彿娌熷噷妗ユ柟鍚�()));//ok - //_dict.Add(4, new StationInfo(3, new IStation.Calculation.shys浜斿彿娌熶弗妗ユ柟鍚�1()));//OK - //_dict.Add(5, new StationInfo(5, new IStation.Calculation.shys浜斿彿娌熶弗妗ユ柟鍚�2()));//OK - - - // - // - //_dict.Add(7, new StationInfo(6, new IStation.Calculation.shys涓存睙1鍙锋车鎴�())); - //_dict.Add(8, new StationInfo(7, new IStation.Calculation.shys涓存睙2鍙锋车鎴�())); - // - //_dict.Add(10, new StationInfo(10, new IStation.Calculation.shys閲戞捣娉电珯())); - //_dict.Add(11, new StationInfo(11, new IStation.Calculation.shys鍗楁眹鍖楁车绔�())); - //_dict.Add(12, new StationInfo(15, new IStation.Calculation.shys闄堣涓�杈�())); - //_dict.Add(13, new StationInfo(16, new IStation.Calculation.shys闄堣浜岃緭())); - //_dict.Add(14, new StationInfo(17, new IStation.Calculation.shys娉板拰娉电珯())); - // - //_dict.Add(16, new StationInfo(20, new IStation.Calculation.shys鏉炬睙娉电珯())); - //_dict.Add(17, new StationInfo(21, new IStation.Calculation.shys澶фˉ娉电珯())); - - - // {1,2},//闀垮叴娉电珯 - // {2,12},//浜斿彿娌熷噷妗ユ柟鍚� - // {3,9},//浜斿彿娌熼噾娴锋柟鍚� - // {4,3},//浜斿彿娌熶弗妗ユ柟鍚�1 - // {5,5},//浜斿彿娌熶弗妗ユ柟鍚�2 - // {6,4},//涓ユˉ娉电珯 - // {7,6},//涓存睙1#娉电珯 - // {8,7},//涓存睙2#娉电珯 - // {9,8},//寰愭尘娉电珯 - // {10,10},//閲戞捣娉电珯 - // {11,11},//鍗楁眹鍖楁车绔� - // {12,15},//闄堣涓�杈� - // {13,16},//闄堣浜岃緭 - // {14,17},//娉板拰娉电珯 - // {15,19},//閲戞辰娉电珯 - // {16,20},//鏉炬睙娉电珯 - // {17,21},//澶фˉ娉电珯 - +#if (DEBUG) + _dict.Add(1, new StationInfo(2, new IStation.Calculation.shys闀垮叴娉电珯()));//OK + _dict.Add(2, new StationInfo(12, new IStation.Calculation.shys浜斿彿娌熷噷妗ユ柟鍚�()));//ok + _dict.Add(4, new StationInfo(3, new IStation.Calculation.shys浜斿彿娌熶弗妗ユ柟鍚�1()));//OK + _dict.Add(5, new StationInfo(5, new IStation.Calculation.shys浜斿彿娌熶弗妗ユ柟鍚�2()));//OK + _dict.Add(13, new StationInfo(16, new IStation.Calculation.shys闄堣浜岃緭()));//ok + _dict.Add(8, new StationInfo(7, new IStation.Calculation.shys涓存睙2鍙锋车鎴�()));//ok +#else + _dict.Add(1, new StationInfo(2, new IStation.Calculation.shys闀垮叴娉电珯()));//OK + _dict.Add(2, new StationInfo(12, new IStation.Calculation.shys浜斿彿娌熷噷妗ユ柟鍚�()));//ok + _dict.Add(4, new StationInfo(3, new IStation.Calculation.shys浜斿彿娌熶弗妗ユ柟鍚�1()));//OK + _dict.Add(5, new StationInfo(5, new IStation.Calculation.shys浜斿彿娌熶弗妗ユ柟鍚�2()));//OK + _dict.Add(13, new StationInfo(16, new IStation.Calculation.shys闄堣浜岃緭()));//ok + _dict.Add(8, new StationInfo(7, new IStation.Calculation.shys涓存睙2鍙锋车鎴�()));//ok +#endif } /// <summary> diff --git "a/Application/IStation.Application.OpenApi/shys/plan/shys/shys\344\270\264\346\261\2371\345\217\267\346\263\265\346\210\277.cs" "b/Application/IStation.Application.OpenApi/shys/plan/shys/shys\344\270\264\346\261\2371\345\217\267\346\263\265\346\210\277.cs" index d7472cc..f2b961b 100644 --- "a/Application/IStation.Application.OpenApi/shys/plan/shys/shys\344\270\264\346\261\2371\345\217\267\346\263\265\346\210\277.cs" +++ "b/Application/IStation.Application.OpenApi/shys/plan/shys/shys\344\270\264\346\261\2371\345\217\267\346\263\265\346\210\277.cs" @@ -21,8 +21,6 @@ private Tuple<string, long> monitor鍑烘按鍓嶆睜娑蹭綅 = new Tuple<string, long>("_0402010102089903002", 458); - - /// <summary> /// /// </summary> @@ -32,10 +30,11 @@ { if (tagname == monitor杩涙按鍓嶆睜娑蹭綅.Item1) return true; - if (tagname == monitor鍑烘按鍓嶆睜娑蹭綅.Item1) - return true; - return false; + else + return false; } + + /// <summary> /// 鏍规嵁涓夐珮鎻愪緵鐨勫弬鏁�,鏋勫缓璋冨害鍒嗘瀽鎵�闇�鐨勫弬鏁�, (杩欎釜姣忎釜娉电珯閮戒笉涓�鏍�) @@ -82,9 +81,9 @@ complex_dispatch_request.StationID = this._stationID; complex_dispatch_request.SchemeNumber = 1; complex_dispatch_request.PressValueType = DispatchAna.Model.RequestParasComplex.ePressValueType.鍘嬪姏; - complex_dispatch_request.WaterLevelPara = new List<DispatchAna.Model.WaterLevelPara>() + complex_dispatch_request.InletPipePara = new List<DispatchAna.Model.InletPipePara>() { - new DispatchAna.Model.WaterLevelPara(){ Name="姘存睜", Value = water_level.RecordValue} + new DispatchAna.Model.InletPipePara(){ Name="姘存睜", Value = water_level.RecordValue} }; complex_dispatch_request.OutletPipePara = new List<DispatchAna.Model.OutletPipePara>(); complex_dispatch_request.OutletPipePara.Add(new DispatchAna.Model.OutletPipePara() diff --git "a/Application/IStation.Application.OpenApi/shys/plan/shys/shys\344\270\264\346\261\2372\345\217\267\346\263\265\346\210\277.cs" "b/Application/IStation.Application.OpenApi/shys/plan/shys/shys\344\270\264\346\261\2372\345\217\267\346\263\265\346\210\277.cs" index 565dee5..cf80101 100644 --- "a/Application/IStation.Application.OpenApi/shys/plan/shys/shys\344\270\264\346\261\2372\345\217\267\346\263\265\346\210\277.cs" +++ "b/Application/IStation.Application.OpenApi/shys/plan/shys/shys\344\270\264\346\261\2372\345\217\267\346\263\265\346\210\277.cs" @@ -17,10 +17,7 @@ /// <summary> /// 娴嬬偣瀛楀吀(杩欎釜姣忎釜娉电珯閮戒笉涓�鏍�) /// </summary> - - private Tuple<string, long> monitor鍑烘按鎬荤1鍘嬪姏 = new Tuple<string, long>("_0402010601040104001", 510); - private Tuple<string, long> monitor鍑烘按鎬荤1鐬椂娴侀噺= new Tuple<string, long>("_0402010601040105001", 511); private Tuple<string, long> monitor鍑烘按鎬荤2鍘嬪姏 = new Tuple<string, long>("_0402010601040204001", 513); private Tuple<string, long> monitor鍑烘按鎬荤2鐬椂娴侀噺 = new Tuple<string, long>("_0402010601040205001", 514); @@ -54,6 +51,8 @@ return "鍑烘按鎬荤3鍘嬪姏"; if (monitor鍑烘按鎬荤3鐬椂娴侀噺.Item1 == tagname) return "鍑烘按鎬荤3鐬椂娴侀噺"; + if (monitor璋冭妭姹犳恫浣�.Item1 == tagname) + return "璋冭妭姹犳恫浣�"; return "鏈煡娴嬬偣"; } /// <summary> @@ -68,7 +67,7 @@ { if (allRecords_hour == null || allRecords_hour.Count == 0) { - error_info = "浜斿彿娌熷噷妗ユ柟鍚戞祴鐐规暟鎹负绌�"; + error_info = "涓存睙2鍙锋车鎴挎祴鐐规暟鎹负绌�"; return null; } var complex_dispatch_request = new DispatchAna.Model.RequestParasComplex(); @@ -78,39 +77,85 @@ water_level = allRecords_hour.Find(x => x.MonitorTag == monitor璋冭妭姹犳恫浣�.Item1); if (water_level == null) { - error_info = "浜斿彿娌熷噷妗ユ柟鍚戞按搴撴恫浣嶆祴鐐规湭鎵惧埌"; + error_info = "涓存睙2鍙锋车鎴挎按搴撴恫浣嶆祴鐐规湭鎵惧埌"; return null; } } - //var pipe1_flow = allRecords_hour.Find(x => x.MonitorTag == monitor鍑烘按鎬荤鐬椂娴侀噺.Item1); - //if (pipe1_flow == null) - //{ - // error_info = "浜斿彿娌熷噷妗ユ柟鍚戞按绠¢亾1娴侀噺娴嬬偣鏈壘鍒�"; - // return null; - //} + var pipe1_flow = allRecords_hour.Find(x => x.MonitorTag == monitor鍑烘按鎬荤1鐬椂娴侀噺.Item1); + if (pipe1_flow == null) + { + error_info = "涓存睙2鍙锋车鎴挎按绠¢亾1娴侀噺娴嬬偣鏈壘鍒�"; + return null; + } - //var pipe1_press = allRecords_hour.Find(x => x.MonitorTag == monitor鍑烘按鎬荤鍘嬪姏.Item1); - //if (pipe1_press == null) - //{ - // error_info = "浜斿彿娌熷噷妗ユ柟鍚戞按绠¢亾1鍘嬪姏娴嬬偣鏈壘鍒�"; - // return null; - //} + var pipe1_press = allRecords_hour.Find(x => x.MonitorTag == monitor鍑烘按鎬荤1鍘嬪姏.Item1); + if (pipe1_press == null) + { + error_info = "涓存睙2鍙锋车鎴挎按绠¢亾1鍘嬪姏娴嬬偣鏈壘鍒�"; + return null; + } + var pipe2_flow = allRecords_hour.Find(x => x.MonitorTag == monitor鍑烘按鎬荤2鐬椂娴侀噺.Item1); + if (pipe2_flow == null) + { + error_info = "涓存睙2鍙锋车鎴挎按绠¢亾2娴侀噺娴嬬偣鏈壘鍒�"; + return null; + } + + var pipe2_press = allRecords_hour.Find(x => x.MonitorTag == monitor鍑烘按鎬荤2鍘嬪姏.Item1); + if (pipe2_press == null) + { + error_info = "涓存睙2鍙锋车鎴挎按绠¢亾2鍘嬪姏娴嬬偣鏈壘鍒�"; + return null; + } + + var pipe3_flow = allRecords_hour.Find(x => x.MonitorTag == monitor鍑烘按鎬荤3鐬椂娴侀噺.Item1); + if (pipe3_flow == null) + { + error_info = "涓存睙2鍙锋车鎴挎按绠¢亾3娴侀噺娴嬬偣鏈壘鍒�"; + return null; + } + + var pipe3_press = allRecords_hour.Find(x => x.MonitorTag == monitor鍑烘按鎬荤3鍘嬪姏.Item1); + if (pipe3_press == null) + { + error_info = "涓存睙2鍙锋车鎴挎按绠¢亾1鍘嬪姏娴嬬偣鏈壘鍒�"; + return null; + } + + double pipe_count = 0; + double avery_press = 0; + if (pipe1_press.RecordValue > 0.01) + { + avery_press += pipe1_press.RecordValue; + pipe_count++; + } + if (pipe2_press.RecordValue > 0.01) + { + avery_press += pipe2_press.RecordValue; + pipe_count++; + } + if (pipe3_press.RecordValue > 0.01) + { + avery_press += pipe3_press.RecordValue; + pipe_count++; + } + avery_press = Math.Round(avery_press / pipe_count, 5); complex_dispatch_request.CorpID = this._corpID; complex_dispatch_request.StationID = this._stationID; complex_dispatch_request.SchemeNumber = 1; complex_dispatch_request.PressValueType = DispatchAna.Model.RequestParasComplex.ePressValueType.鍘嬪姏; - complex_dispatch_request.WaterLevelPara = new List<DispatchAna.Model.WaterLevelPara>() + complex_dispatch_request.InletPipePara = new List<DispatchAna.Model.InletPipePara>() { - new DispatchAna.Model.WaterLevelPara(){ Name="姘存睜", Value = water_level.RecordValue} + new DispatchAna.Model.InletPipePara(){ Name="姘存睜", Value = water_level.RecordValue} }; complex_dispatch_request.OutletPipePara = new List<DispatchAna.Model.OutletPipePara>(); complex_dispatch_request.OutletPipePara.Add(new DispatchAna.Model.OutletPipePara() { Name = "鎬荤璺�", - //TargetFlow = pipe1_flow.RecordValue, - //TargetPress = pipe1_press.RecordValue, + TargetFlow = pipe1_flow.RecordValue+ pipe2_flow.RecordValue+ pipe3_flow.RecordValue, + TargetPress = avery_press, }); diff --git "a/Application/IStation.Application.OpenApi/shys/plan/shys/shys\344\272\224\345\217\267\346\262\237\344\270\245\346\241\245\346\226\271\345\220\2211.cs" "b/Application/IStation.Application.OpenApi/shys/plan/shys/shys\344\272\224\345\217\267\346\262\237\344\270\245\346\241\245\346\226\271\345\220\2211.cs" index eca0469..4dbbac7 100644 --- "a/Application/IStation.Application.OpenApi/shys/plan/shys/shys\344\272\224\345\217\267\346\262\237\344\270\245\346\241\245\346\226\271\345\220\2211.cs" +++ "b/Application/IStation.Application.OpenApi/shys/plan/shys/shys\344\272\224\345\217\267\346\262\237\344\270\245\346\241\245\346\226\271\345\220\2211.cs" @@ -78,9 +78,9 @@ complex_dispatch_request.StationID = this._stationID; complex_dispatch_request.SchemeNumber = 1; complex_dispatch_request.PressValueType = DispatchAna.Model.RequestParasComplex.ePressValueType.鍘嬪姏; - complex_dispatch_request.WaterLevelPara = new List<DispatchAna.Model.WaterLevelPara>() + complex_dispatch_request.InletPipePara = new List<DispatchAna.Model.InletPipePara>() { - new DispatchAna.Model.WaterLevelPara(){ Name="姘存睜", Value = water_level.RecordValue} + new DispatchAna.Model.InletPipePara(){ Name="姘存睜", Value = water_level.RecordValue} }; complex_dispatch_request.OutletPipePara = new List<DispatchAna.Model.OutletPipePara>(); complex_dispatch_request.OutletPipePara.Add(new DispatchAna.Model.OutletPipePara() diff --git "a/Application/IStation.Application.OpenApi/shys/plan/shys/shys\344\272\224\345\217\267\346\262\237\344\270\245\346\241\245\346\226\271\345\220\2212.cs" "b/Application/IStation.Application.OpenApi/shys/plan/shys/shys\344\272\224\345\217\267\346\262\237\344\270\245\346\241\245\346\226\271\345\220\2212.cs" index 582a225..b4b5554 100644 --- "a/Application/IStation.Application.OpenApi/shys/plan/shys/shys\344\272\224\345\217\267\346\262\237\344\270\245\346\241\245\346\226\271\345\220\2212.cs" +++ "b/Application/IStation.Application.OpenApi/shys/plan/shys/shys\344\272\224\345\217\267\346\262\237\344\270\245\346\241\245\346\226\271\345\220\2212.cs" @@ -84,9 +84,9 @@ complex_dispatch_request.StationID = this._stationID; complex_dispatch_request.SchemeNumber = 1; complex_dispatch_request.PressValueType = DispatchAna.Model.RequestParasComplex.ePressValueType.鍘嬪姏; - complex_dispatch_request.WaterLevelPara = new List<DispatchAna.Model.WaterLevelPara>() + complex_dispatch_request.InletPipePara = new List<DispatchAna.Model.InletPipePara>() { - new DispatchAna.Model.WaterLevelPara(){ Name="姘存睜", Value = water_level.RecordValue} + new DispatchAna.Model.InletPipePara(){ Name="姘存睜", Value = water_level.RecordValue} }; complex_dispatch_request.OutletPipePara = new List<DispatchAna.Model.OutletPipePara>(); complex_dispatch_request.OutletPipePara.Add(new DispatchAna.Model.OutletPipePara() diff --git "a/Application/IStation.Application.OpenApi/shys/plan/shys/shys\344\272\224\345\217\267\346\262\237\345\207\214\346\241\245\346\226\271\345\220\221.cs" "b/Application/IStation.Application.OpenApi/shys/plan/shys/shys\344\272\224\345\217\267\346\262\237\345\207\214\346\241\245\346\226\271\345\220\221.cs" index b990803..2441538 100644 --- "a/Application/IStation.Application.OpenApi/shys/plan/shys/shys\344\272\224\345\217\267\346\262\237\345\207\214\346\241\245\346\226\271\345\220\221.cs" +++ "b/Application/IStation.Application.OpenApi/shys/plan/shys/shys\344\272\224\345\217\267\346\262\237\345\207\214\346\241\245\346\226\271\345\220\221.cs" @@ -82,9 +82,9 @@ complex_dispatch_request.StationID = this._stationID; complex_dispatch_request.SchemeNumber = 1; complex_dispatch_request.PressValueType = DispatchAna.Model.RequestParasComplex.ePressValueType.鍘嬪姏; - complex_dispatch_request.WaterLevelPara = new List<DispatchAna.Model.WaterLevelPara>() + complex_dispatch_request.InletPipePara = new List<DispatchAna.Model.InletPipePara>() { - new DispatchAna.Model.WaterLevelPara(){ Name="姘存睜", Value = water_level.RecordValue} + new DispatchAna.Model.InletPipePara(){ Name="姘存睜", Value = water_level.RecordValue} }; complex_dispatch_request.OutletPipePara = new List<DispatchAna.Model.OutletPipePara>(); complex_dispatch_request.OutletPipePara.Add(new DispatchAna.Model.OutletPipePara() diff --git "a/Application/IStation.Application.OpenApi/shys/plan/shys/shys\344\272\224\345\217\267\346\262\237\351\207\221\346\265\267\346\226\271\345\220\221.cs" "b/Application/IStation.Application.OpenApi/shys/plan/shys/shys\344\272\224\345\217\267\346\262\237\351\207\221\346\265\267\346\226\271\345\220\221.cs" index 2c06038..eda42ef 100644 --- "a/Application/IStation.Application.OpenApi/shys/plan/shys/shys\344\272\224\345\217\267\346\262\237\351\207\221\346\265\267\346\226\271\345\220\221.cs" +++ "b/Application/IStation.Application.OpenApi/shys/plan/shys/shys\344\272\224\345\217\267\346\262\237\351\207\221\346\265\267\346\226\271\345\220\221.cs" @@ -23,6 +23,7 @@ private Tuple<string, long> monitor鍑烘按鎬荤2鐬椂娴侀噺 = new Tuple<string, long>("_0402010501080102005", 269); private Tuple<string, long> monitor鍓嶆睜娑蹭綅4 = new Tuple<string, long>("_0402010501080103001", 263); private Tuple<string, long> monitor鍓嶆睜娑蹭綅5 = new Tuple<string, long>("_0402010501080103002", 264); + /// <summary> /// /// </summary> @@ -68,13 +69,19 @@ return null; } var complex_dispatch_request = new DispatchAna.Model.RequestParasComplex(); + var water_level5 = allRecords_hour.Find(x => x.MonitorTag == monitor鍓嶆睜娑蹭綅5.Item1); if (water_level5 == null) { error_info = "浜斿彿娌熼噾娴锋柟鍚戝墠姹犳恫浣�5 娴嬬偣鏈壘鍒�"; return null; } - + var water_level4 = allRecords_hour.Find(x => x.MonitorTag == monitor鍓嶆睜娑蹭綅4.Item1); + if (water_level4 == null) + { + error_info = "浜斿彿娌熼噾娴锋柟鍚戝墠姹犳恫浣�4 娴嬬偣鏈壘鍒�"; + return null; + } var pipe1_flow = allRecords_hour.Find(x => x.MonitorTag == monitor鍑烘按鎬荤1鐬椂娴侀噺.Item1); if (pipe1_flow == null) { @@ -107,9 +114,10 @@ complex_dispatch_request.StationID = this._stationID; complex_dispatch_request.SchemeNumber = 1; complex_dispatch_request.PressValueType = DispatchAna.Model.RequestParasComplex.ePressValueType.鍘嬪姏; - complex_dispatch_request.WaterLevelPara = new List<DispatchAna.Model.WaterLevelPara>() + complex_dispatch_request.InletPipePara = new List<DispatchAna.Model.InletPipePara>() { - new DispatchAna.Model.WaterLevelPara(){ Name="鍓嶆睜娑蹭綅5", Value = water_level5.RecordValue} + new DispatchAna.Model.InletPipePara(){ Name="鍓嶆睜娑蹭綅4", Value = water_level4.RecordValue}, + new DispatchAna.Model.InletPipePara(){ Name="鍓嶆睜娑蹭綅5", Value = water_level5.RecordValue} }; complex_dispatch_request.OutletPipePara = new List<DispatchAna.Model.OutletPipePara>(); complex_dispatch_request.OutletPipePara.Add(new DispatchAna.Model.OutletPipePara() diff --git "a/Application/IStation.Application.OpenApi/shys/plan/shys/shys\345\215\227\346\261\207\345\214\227\346\263\265\347\253\231.cs" "b/Application/IStation.Application.OpenApi/shys/plan/shys/shys\345\215\227\346\261\207\345\214\227\346\263\265\347\253\231.cs" index 3c74b03..aeefec5 100644 --- "a/Application/IStation.Application.OpenApi/shys/plan/shys/shys\345\215\227\346\261\207\345\214\227\346\263\265\347\253\231.cs" +++ "b/Application/IStation.Application.OpenApi/shys/plan/shys/shys\345\215\227\346\261\207\345\214\227\346\263\265\347\253\231.cs" @@ -17,14 +17,26 @@ /// <summary> /// 娴嬬偣瀛楀吀(杩欎釜姣忎釜娉电珯閮戒笉涓�鏍�) /// </summary> - - private Tuple<string, long> monitor鍑烘按鎬荤1鍘嬪姏 = new Tuple<string, long>("_0402010503030107003", 739); private Tuple<string, long> monitor鍑烘按鎬荤1鐬椂娴侀噺 = new Tuple<string, long>("_0402010503030102003", 740); private Tuple<string, long> monitor鍑烘按鎬荤2鍘嬪姏 = new Tuple<string, long>("_0402010503030207004", 742); private Tuple<string, long> monitor鍑烘按鎬荤2鐬椂娴侀噺 = new Tuple<string, long>("_0402010503030202003", 743); private Tuple<string, long> monitor杩涙按鎬荤1鍘嬪姏 = new Tuple<string, long>("_0402010503030107001", 733); private Tuple<string, long> monitor杩涙按鎬荤2鍘嬪姏 = new Tuple<string, long>("_0402010503030207002", 736); + /// <summary> + /// + /// </summary> + /// <param name="tagname"></param> + /// <returns></returns> + public override bool Is娑蹭綅Monitor(string tagname) + { + return false; + } + /// <summary> + /// + /// </summary> + /// <param name="tagname"></param> + /// <returns></returns> public override string GetMonitorNameByTag(string tagname) { if (monitor鍑烘按鎬荤1鍘嬪姏.Item1 == tagname) @@ -53,54 +65,76 @@ { if (allRecords_hour == null || allRecords_hour.Count == 0) { - error_info = "浜斿彿娌熷噷妗ユ柟鍚戞祴鐐规暟鎹负绌�"; + error_info = "鍗楁眹鍖楁车绔欐祴鐐规暟鎹负绌�"; return null; } var complex_dispatch_request = new DispatchAna.Model.RequestParasComplex(); - //var water_level = allRecords_hour.Find(x => x.MonitorTag == monitor璋冭妭姹犳恫浣�.Item1); - //if (water_level == null) - //{ - // water_level = allRecords_hour.Find(x => x.MonitorTag == monitor璋冭妭姹犳恫浣�.Item1); - // if (water_level == null) - // { - // error_info = "浜斿彿娌熷噷妗ユ柟鍚戞按搴撴恫浣嶆祴鐐规湭鎵惧埌"; - // return null; - // } - //} - //var pipe1_flow = allRecords_hour.Find(x => x.MonitorTag == monitor鍑烘按鎬荤鐬椂娴侀噺.Item1); - //if (pipe1_flow == null) - //{ - // error_info = "浜斿彿娌熷噷妗ユ柟鍚戞按绠¢亾1娴侀噺娴嬬偣鏈壘鍒�"; - // return null; - //} + var inlet_press1 = allRecords_hour.Find(x => x.MonitorTag == monitor杩涙按鎬荤1鍘嬪姏.Item1); + if (inlet_press1 == null) + { + error_info = "鍗楁眹鍖楁车绔欒繘姘存�荤1鍘嬪姏娴嬬偣鏈壘鍒�"; + return null; + } + var inlet_press2 = allRecords_hour.Find(x => x.MonitorTag == monitor杩涙按鎬荤2鍘嬪姏.Item1); + if (inlet_press2 == null) + { + error_info = "鍗楁眹鍖楁车绔欒繘姘存�荤2鍘嬪姏娴嬬偣鏈壘鍒�"; + return null; + } - //var pipe1_press = allRecords_hour.Find(x => x.MonitorTag == monitor鍑烘按鎬荤鍘嬪姏.Item1); - //if (pipe1_press == null) - //{ - // error_info = "浜斿彿娌熷噷妗ユ柟鍚戞按绠¢亾1鍘嬪姏娴嬬偣鏈壘鍒�"; - // return null; - //} + + var pipe1_flow = allRecords_hour.Find(x => x.MonitorTag == monitor鍑烘按鎬荤1鐬椂娴侀噺.Item1); + if (pipe1_flow == null) + { + error_info = "鍗楁眹鍖楁车绔欐按绠¢亾1娴侀噺娴嬬偣鏈壘鍒�"; + return null; + } + + var pipe1_press = allRecords_hour.Find(x => x.MonitorTag == monitor鍑烘按鎬荤1鍘嬪姏.Item1); + if (pipe1_press == null) + { + error_info = "鍗楁眹鍖楁车绔欐按绠¢亾1鍘嬪姏娴嬬偣鏈壘鍒�"; + return null; + } + + + var pipe2_flow = allRecords_hour.Find(x => x.MonitorTag == monitor鍑烘按鎬荤2鐬椂娴侀噺.Item1); + if (pipe2_flow == null) + { + error_info = "鍗楁眹鍖楁车绔欐按绠¢亾2娴侀噺娴嬬偣鏈壘鍒�"; + return null; + } + + var pipe2_press = allRecords_hour.Find(x => x.MonitorTag == monitor鍑烘按鎬荤2鍘嬪姏.Item1); + if (pipe2_press == null) + { + error_info = "鍗楁眹鍖楁车绔欐按绠¢亾2鍘嬪姏娴嬬偣鏈壘鍒�"; + return null; + } complex_dispatch_request.CorpID = this._corpID; complex_dispatch_request.StationID = this._stationID; complex_dispatch_request.SchemeNumber = 1; complex_dispatch_request.PressValueType = DispatchAna.Model.RequestParasComplex.ePressValueType.鍘嬪姏; - complex_dispatch_request.WaterLevelPara = new List<DispatchAna.Model.WaterLevelPara>() + complex_dispatch_request.InletPipePara = new List<DispatchAna.Model.InletPipePara>() { - //new DispatchAna.Model.WaterLevelPara(){ Name="姘存睜", Value = water_level.RecordValue} + new DispatchAna.Model.InletPipePara() + { + Name="杩涘彛鍘嬪姏", + IsWaterLevel=false, + Value = (inlet_press1.RecordValue+inlet_press2.RecordValue)/2 + } }; complex_dispatch_request.OutletPipePara = new List<DispatchAna.Model.OutletPipePara>(); complex_dispatch_request.OutletPipePara.Add(new DispatchAna.Model.OutletPipePara() { Name = "鎬荤璺�", - //TargetFlow = pipe1_flow.RecordValue, - //TargetPress = pipe1_press.RecordValue, + IsWaterLevel = false, + TargetFlow = (pipe1_flow.RecordValue + pipe2_flow.RecordValue), + TargetPress = (pipe1_press.RecordValue + pipe2_press.RecordValue) / 2 }); - - - - + error_info = null; return complex_dispatch_request; diff --git "a/Application/IStation.Application.OpenApi/shys/plan/shys/shys\345\244\247\346\241\245\346\263\265\347\253\231.cs" "b/Application/IStation.Application.OpenApi/shys/plan/shys/shys\345\244\247\346\241\245\346\263\265\347\253\231.cs" index e887472..cbdcb81 100644 --- "a/Application/IStation.Application.OpenApi/shys/plan/shys/shys\345\244\247\346\241\245\346\263\265\347\253\231.cs" +++ "b/Application/IStation.Application.OpenApi/shys/plan/shys/shys\345\244\247\346\241\245\346\263\265\347\253\231.cs" @@ -17,8 +17,6 @@ /// <summary> /// 娴嬬偣瀛楀吀(杩欎釜姣忎釜娉电珯閮戒笉涓�鏍�) /// </summary> - - private Tuple<string, long> monitor鍑烘按鎬荤涓滆皟鍘嬫睜 = new Tuple<string, long>("_0402010301080103002", 1049); private Tuple<string, long> monitor鍑烘按鎬荤瑗胯皟鍘嬫睜 = new Tuple<string, long>("_0402010301080103001", 1050); private Tuple<string, long> monitor鍑烘按鎬荤鐬椂娴侀噺 = new Tuple<string, long>("_0402010301090103004", 1051); @@ -28,7 +26,11 @@ private Tuple<string, long> monitor杩涙按鍓嶆恫浣�4 = new Tuple<string, long>("_0402010301034403001", 1047); - + /// <summary> + /// + /// </summary> + /// <param name="tagname"></param> + /// <returns></returns> public override bool Is娑蹭綅Monitor(string tagname) { if (monitor杩涙按鍓嶆恫浣�1.Item1 == tagname) @@ -39,17 +41,30 @@ return true; if (monitor杩涙按鍓嶆恫浣�4.Item1 == tagname) return true; - if (monitor鍑烘按鎬荤涓滆皟鍘嬫睜.Item1 == tagname) - return true; - if (monitor鍑烘按鎬荤瑗胯皟鍘嬫睜.Item1 == tagname) - return true; + return false; } - + /// <summary> + /// + /// </summary> + /// <param name="tagname"></param> + /// <returns></returns> public override string GetMonitorNameByTag(string tagname) { if (monitor鍑烘按鎬荤鐬椂娴侀噺.Item1 == tagname) return "鍑烘按鎬荤鐬椂娴侀噺"; + if (monitor杩涙按鍓嶆恫浣�1.Item1 == tagname) + return "杩涙按鍓嶆恫浣�1"; + if (monitor杩涙按鍓嶆恫浣�2.Item1 == tagname) + return "杩涙按鍓嶆恫浣�2"; + if (monitor杩涙按鍓嶆恫浣�3.Item1 == tagname) + return "杩涙按鍓嶆恫浣�3"; + if (monitor杩涙按鍓嶆恫浣�4.Item1 == tagname) + return "杩涙按鍓嶆恫浣�4"; + if (monitor鍑烘按鎬荤涓滆皟鍘嬫睜.Item1 == tagname) + return "鍑烘按鎬荤涓滆皟鍘嬫睜"; + if (monitor鍑烘按鎬荤瑗胯皟鍘嬫睜.Item1 == tagname) + return "鍑烘按鎬荤瑗胯皟鍘嬫睜"; return "鏈煡娴嬬偣"; } /// <summary> @@ -97,7 +112,7 @@ complex_dispatch_request.StationID = this._stationID; complex_dispatch_request.SchemeNumber = 1; complex_dispatch_request.PressValueType = DispatchAna.Model.RequestParasComplex.ePressValueType.鍘嬪姏; - complex_dispatch_request.WaterLevelPara = new List<DispatchAna.Model.WaterLevelPara>() + complex_dispatch_request.InletPipePara = new List<DispatchAna.Model.InletPipePara>() { //new DispatchAna.Model.WaterLevelPara(){ Name="姘存睜", Value = water_level.RecordValue} }; diff --git "a/Application/IStation.Application.OpenApi/shys/plan/shys/shys\345\276\220\346\263\276\346\263\265\347\253\231.cs" "b/Application/IStation.Application.OpenApi/shys/plan/shys/shys\345\276\220\346\263\276\346\263\265\347\253\231.cs" index 4f3ed44..6438d8d 100644 --- "a/Application/IStation.Application.OpenApi/shys/plan/shys/shys\345\276\220\346\263\276\346\263\265\347\253\231.cs" +++ "b/Application/IStation.Application.OpenApi/shys/plan/shys/shys\345\276\220\346\263\276\346\263\265\347\253\231.cs" @@ -79,9 +79,9 @@ complex_dispatch_request.StationID = this._stationID; complex_dispatch_request.SchemeNumber = 1; complex_dispatch_request.PressValueType = DispatchAna.Model.RequestParasComplex.ePressValueType.鍘嬪姏; - complex_dispatch_request.WaterLevelPara = new List<DispatchAna.Model.WaterLevelPara>() + complex_dispatch_request.InletPipePara = new List<DispatchAna.Model.InletPipePara>() { - new DispatchAna.Model.WaterLevelPara(){ Name="姘存睜", Value = water_level_value} + new DispatchAna.Model.InletPipePara(){ Name="姘存睜", Value = water_level_value} }; complex_dispatch_request.OutletPipePara = new List<DispatchAna.Model.OutletPipePara>(); complex_dispatch_request.OutletPipePara.Add(new DispatchAna.Model.OutletPipePara() diff --git "a/Application/IStation.Application.OpenApi/shys/plan/shys/shys\346\235\276\346\261\237\346\263\265\347\253\231.cs" "b/Application/IStation.Application.OpenApi/shys/plan/shys/shys\346\235\276\346\261\237\346\263\265\347\253\231.cs" index 0caa6a8..31b85e1 100644 --- "a/Application/IStation.Application.OpenApi/shys/plan/shys/shys\346\235\276\346\261\237\346\263\265\347\253\231.cs" +++ "b/Application/IStation.Application.OpenApi/shys/plan/shys/shys\346\235\276\346\261\237\346\263\265\347\253\231.cs" @@ -17,12 +17,16 @@ /// <summary> /// 娴嬬偣瀛楀吀(杩欎釜姣忎釜娉电珯閮戒笉涓�鏍�) /// </summary> - - private Tuple<string, long> monitor鍑烘按鎬荤鍘嬪姏 = new Tuple<string, long>("_0402010791000000004", 1134); private Tuple<string, long> monitor鍑烘按鎬荤鐬椂娴侀噺 = new Tuple<string, long>("_0402010791000000005", 1135); private Tuple<string, long> monitor鍖椾晶鍓嶆睜娑蹭綅 = new Tuple<string, long>("_0402010791000000101", 1129); private Tuple<string, long> monitor鍗椾晶鍓嶆睜娑蹭綅 = new Tuple<string, long>("_0402010791000000100", 1130); + + /// <summary> + /// + /// </summary> + /// <param name="tagname"></param> + /// <returns></returns> public override bool Is娑蹭綅Monitor(string tagname) { if (tagname == monitor鍖椾晶鍓嶆睜娑蹭綅.Item1) @@ -37,6 +41,10 @@ return "鍑烘按鎬荤鍘嬪姏"; if (monitor鍑烘按鎬荤鐬椂娴侀噺.Item1 == tagname) return "鍑烘按鎬荤鐬椂娴侀噺"; + if (monitor鍖椾晶鍓嶆睜娑蹭綅.Item1 == tagname) + return "鍖椾晶鍓嶆睜娑蹭綅"; + if (monitor鍗椾晶鍓嶆睜娑蹭綅.Item1 == tagname) + return "鍗椾晶鍓嶆睜娑蹭綅"; return "鏈煡娴嬬偣"; } /// <summary> @@ -84,7 +92,7 @@ complex_dispatch_request.StationID = this._stationID; complex_dispatch_request.SchemeNumber = 1; complex_dispatch_request.PressValueType = DispatchAna.Model.RequestParasComplex.ePressValueType.鍘嬪姏; - complex_dispatch_request.WaterLevelPara = new List<DispatchAna.Model.WaterLevelPara>() + complex_dispatch_request.InletPipePara = new List<DispatchAna.Model.InletPipePara>() { //new DispatchAna.Model.WaterLevelPara(){ Name="姘存睜", Value = water_level.RecordValue} }; diff --git "a/Application/IStation.Application.OpenApi/shys/plan/shys/shys\346\263\260\345\222\214\346\263\265\347\253\231.cs" "b/Application/IStation.Application.OpenApi/shys/plan/shys/shys\346\263\260\345\222\214\346\263\265\347\253\231.cs" index ae6dec2..b2e59aa 100644 --- "a/Application/IStation.Application.OpenApi/shys/plan/shys/shys\346\263\260\345\222\214\346\263\265\347\253\231.cs" +++ "b/Application/IStation.Application.OpenApi/shys/plan/shys/shys\346\263\260\345\222\214\346\263\265\347\253\231.cs" @@ -11,19 +11,23 @@ public shys娉板拰娉电珯() { this._corpID = 4; - this._dispatchAnaCalc = new IStation.Calculation.DispatchAna.Calculator_OptAna_General(); + this._dispatchAnaCalc = new IStation.Calculation.DispatchAna.Calculator_OptAna_SHYS_娉板拰娉电珯(); } /// <summary> /// 娴嬬偣瀛楀吀(杩欎釜姣忎釜娉电珯閮戒笉涓�鏍�) /// </summary> + private Tuple<string, long> monitor鍑烘按鎬荤1鍘嬪姏 = new Tuple<string, long>("_0402010602081304001", + IStation.Calculation.DispatchAna.Calculator_OptAna_SHYS_娉板拰娉电珯._monitor_id_pipe_press1); + private Tuple<string, long> monitor鍑烘按鎬荤1鐬椂娴侀噺 = new Tuple<string, long>("_0402010602081302001", + IStation.Calculation.DispatchAna.Calculator_OptAna_SHYS_娉板拰娉电珯._monitor_id_pipe_flow1); + private Tuple<string, long> monitor鍑烘按鎬荤2鍘嬪姏 = new Tuple<string, long>("_0402010602081404001", + IStation.Calculation.DispatchAna.Calculator_OptAna_SHYS_娉板拰娉电珯._monitor_id_pipe_press2); + private Tuple<string, long> monitor鍑烘按鎬荤2鐬椂娴侀噺 = new Tuple<string, long>("_0402010602081402001", + IStation.Calculation.DispatchAna.Calculator_OptAna_SHYS_娉板拰娉电珯._monitor_id_pipe_flow2); + private Tuple<string, long> monitor杩涙按杩涘彛鍘嬪姏 = new Tuple<string, long>("_0402010202010505001", + IStation.Calculation.DispatchAna.Calculator_OptAna_SHYS_娉板拰娉电珯._montiro_id_inlet_press); - - private Tuple<string, long> monitor鍑烘按鎬荤1鍘嬪姏 = new Tuple<string, long>("_0402010602081304001", 989); - private Tuple<string, long> monitor鍑烘按鎬荤1鐬椂娴侀噺 = new Tuple<string, long>("_0402010602081302001", 990); - private Tuple<string, long> monitor鍑烘按鎬荤2鍘嬪姏 = new Tuple<string, long>("_0402010602081404001", 992); - private Tuple<string, long> monitor鍑烘按鎬荤2鐬椂娴侀噺 = new Tuple<string, long>("_0402010602081402001", 993); - private Tuple<string, long> monitor杩涙按杩涘彛鍘嬪姏 = new Tuple<string, long>("_0402010202010505001", 988); public override string GetMonitorNameByTag(string tagname) { if (monitor鍑烘按鎬荤1鍘嬪姏.Item1 == tagname) @@ -50,53 +54,66 @@ { if (allRecords_hour == null || allRecords_hour.Count == 0) { - error_info = "浜斿彿娌熷噷妗ユ柟鍚戞祴鐐规暟鎹负绌�"; + error_info = "娉板拰娉电珯鏂瑰悜娴嬬偣鏁版嵁涓虹┖"; return null; } var complex_dispatch_request = new DispatchAna.Model.RequestParasComplex(); - //var water_level = allRecords_hour.Find(x => x.MonitorTag == monitor璋冭妭姹犳恫浣�.Item1); - //if (water_level == null) - //{ - // water_level = allRecords_hour.Find(x => x.MonitorTag == monitor璋冭妭姹犳恫浣�.Item1); - // if (water_level == null) - // { - // error_info = "浜斿彿娌熷噷妗ユ柟鍚戞按搴撴恫浣嶆祴鐐规湭鎵惧埌"; - // return null; - // } - //} - //var pipe1_flow = allRecords_hour.Find(x => x.MonitorTag == monitor鍑烘按鎬荤鐬椂娴侀噺.Item1); - //if (pipe1_flow == null) - //{ - // error_info = "浜斿彿娌熷噷妗ユ柟鍚戞按绠¢亾1娴侀噺娴嬬偣鏈壘鍒�"; - // return null; - //} + var inlet_press = allRecords_hour.Find(x => x.MonitorTag == monitor杩涙按杩涘彛鍘嬪姏.Item1); + if (inlet_press == null) + { + error_info = "娉板拰娉电珯鏂瑰悜杩涘彛鍘嬪姏娴嬬偣鏈壘鍒�"; + return null; + } + var pipe1_flow = allRecords_hour.Find(x => x.MonitorTag == monitor鍑烘按鎬荤1鐬椂娴侀噺.Item1); + if (pipe1_flow == null) + { + error_info = "娉板拰娉电珯绠¢亾1娴侀噺娴嬬偣鏈壘鍒�"; + return null; + } - //var pipe1_press = allRecords_hour.Find(x => x.MonitorTag == monitor鍑烘按鎬荤鍘嬪姏.Item1); - //if (pipe1_press == null) - //{ - // error_info = "浜斿彿娌熷噷妗ユ柟鍚戞按绠¢亾1鍘嬪姏娴嬬偣鏈壘鍒�"; - // return null; - //} + var pipe1_press = allRecords_hour.Find(x => x.MonitorTag == monitor鍑烘按鎬荤1鍘嬪姏.Item1); + if (pipe1_press == null) + { + error_info = "娉板拰娉电珯绠¢亾1鍘嬪姏娴嬬偣鏈壘鍒�"; + return null; + } + + + var pipe2_flow = allRecords_hour.Find(x => x.MonitorTag == monitor鍑烘按鎬荤2鐬椂娴侀噺.Item1); + if (pipe2_flow == null) + { + error_info = "娉板拰娉电珯绠¢亾2娴侀噺娴嬬偣鏈壘鍒�"; + return null; + } + var pipe2_press = allRecords_hour.Find(x => x.MonitorTag == monitor鍑烘按鎬荤2鍘嬪姏.Item1); + if (pipe2_press == null) + { + error_info = "娉板拰娉电珯绠¢亾2鍘嬪姏娴嬬偣鏈壘鍒�"; + return null; + } complex_dispatch_request.CorpID = this._corpID; complex_dispatch_request.StationID = this._stationID; complex_dispatch_request.SchemeNumber = 1; complex_dispatch_request.PressValueType = DispatchAna.Model.RequestParasComplex.ePressValueType.鍘嬪姏; - complex_dispatch_request.WaterLevelPara = new List<DispatchAna.Model.WaterLevelPara>() - { - //new DispatchAna.Model.WaterLevelPara(){ Name="姘存睜", Value = water_level.RecordValue} - }; + complex_dispatch_request.InletPipePara = new List<DispatchAna.Model.InletPipePara>() + { + new DispatchAna.Model.InletPipePara(){ Name="杩涘彛鍘嬪姏", Value = inlet_press.RecordValue, IsWaterLevel=false} + }; complex_dispatch_request.OutletPipePara = new List<DispatchAna.Model.OutletPipePara>(); complex_dispatch_request.OutletPipePara.Add(new DispatchAna.Model.OutletPipePara() { - Name = "鎬荤璺�", - //TargetFlow = pipe1_flow.RecordValue, - //TargetPress = pipe1_press.RecordValue, + Name = "涓�鍙风璺�", + TargetFlow = pipe1_flow.RecordValue, + TargetPress = pipe1_press.RecordValue, }); - - - + complex_dispatch_request.OutletPipePara.Add(new DispatchAna.Model.OutletPipePara() + { + Name = "浜屽彿绠¤矾", + TargetFlow = pipe2_flow.RecordValue, + TargetPress = pipe2_press.RecordValue, + }); error_info = null; diff --git "a/Application/IStation.Application.OpenApi/shys/plan/shys/shys\351\207\221\346\263\275\346\263\265\347\253\231.cs" "b/Application/IStation.Application.OpenApi/shys/plan/shys/shys\351\207\221\346\263\275\346\263\265\347\253\231.cs" index 246dd54..b0d8253 100644 --- "a/Application/IStation.Application.OpenApi/shys/plan/shys/shys\351\207\221\346\263\275\346\263\265\347\253\231.cs" +++ "b/Application/IStation.Application.OpenApi/shys/plan/shys/shys\351\207\221\346\263\275\346\263\265\347\253\231.cs" @@ -89,7 +89,7 @@ complex_dispatch_request.StationID = this._stationID; complex_dispatch_request.SchemeNumber = 1; complex_dispatch_request.PressValueType = DispatchAna.Model.RequestParasComplex.ePressValueType.鍘嬪姏; - complex_dispatch_request.WaterLevelPara = new List<DispatchAna.Model.WaterLevelPara>() + complex_dispatch_request.InletPipePara = new List<DispatchAna.Model.InletPipePara>() { //new DispatchAna.Model.WaterLevelPara(){ Name="姘存睜", Value = water_level.RecordValue} }; diff --git "a/Application/IStation.Application.OpenApi/shys/plan/shys/shys\351\207\221\346\265\267\346\263\265\347\253\231.cs" "b/Application/IStation.Application.OpenApi/shys/plan/shys/shys\351\207\221\346\265\267\346\263\265\347\253\231.cs" index f109c7f..857f150 100644 --- "a/Application/IStation.Application.OpenApi/shys/plan/shys/shys\351\207\221\346\265\267\346\263\265\347\253\231.cs" +++ "b/Application/IStation.Application.OpenApi/shys/plan/shys/shys\351\207\221\346\265\267\346\263\265\347\253\231.cs" @@ -11,21 +11,23 @@ public shys閲戞捣娉电珯() { this._corpID = 4; - this._dispatchAnaCalc = new IStation.Calculation.DispatchAna.Calculator_OptAna_General(); + this._dispatchAnaCalc = new IStation.Calculation.DispatchAna.Calculator_OptAna_SHYS_閲戞捣娉电珯(); } /// <summary> /// 娴嬬偣瀛楀吀(杩欎釜姣忎釜娉电珯閮戒笉涓�鏍�) /// </summary> + private Tuple<string, long> monitor鍑烘按鍗楁眹1鍘嬪姏 = new Tuple<string, long>("_0402010502090105011", + IStation.Calculation.DispatchAna.Calculator_OptAna_SHYS_閲戞捣娉电珯._monitor_id_涓�鍙风鍘嬪姏_鍗楁眹1); + private Tuple<string, long> monitor鍑烘按鍗楁眹1娴侀噺 = new Tuple<string, long>("_0402010502090103013", 616); - - private Tuple<string, long> monitor鍑烘按鍗楁眹1鍘嬪姏 = new Tuple<string, long>("_0402010502090105011", 615); - private Tuple<string, long> monitor鍑烘按鍗楁眹1鐬椂娴侀噺 = new Tuple<string, long>("_0402010502090103013", 616); private Tuple<string, long> monitor鍑烘按鍗楁眹2鍘嬪姏 = new Tuple<string, long>("_0402010502090105012", 618); - private Tuple<string, long> monitor鍑烘按鍗楁眹2鐬椂娴侀噺 = new Tuple<string, long>("_0402010502090103014", 619); + private Tuple<string, long> monitor鍑烘按鍗楁眹2娴侀噺 = new Tuple<string, long>("_0402010502090103014", 619); + + private Tuple<string, long> monitor鍑烘按宸濇矙鍘嬪姏 = new Tuple<string, long>("_0402010502090105013", 621); + private Tuple<string, long> monitor鍑烘按宸濇矙娴侀噺 = new Tuple<string, long>("_0402010502090103015", 622); + //private Tuple<string, long> monitor鍑烘按宸濇矙鎬荤杩涙按鍘嬪姏 = new Tuple<string, long>("_0402010502090105013", 613); - private Tuple<string, long> monitor鍑烘按宸濇矙鎬荤鍘嬪姏 = new Tuple<string, long>("_0402010502090105013", 621); - private Tuple<string, long> monitor鍑烘按宸濇矙鐬椂娴侀噺 = new Tuple<string, long>("_0402010502090103015", 622); private Tuple<string, long> monitor杩涙按鎬荤鍘嬪姏1 = new Tuple<string, long>("_0402010502090105001", 611); private Tuple<string, long> monitor杩涙按鎬荤鍘嬪姏2 = new Tuple<string, long>("_0402010502090205001", 613); @@ -33,16 +35,16 @@ { if (monitor鍑烘按鍗楁眹1鍘嬪姏.Item1 == tagname) return "鍑烘按鍗楁眹1鍘嬪姏"; - if (monitor鍑烘按鍗楁眹1鐬椂娴侀噺.Item1 == tagname) - return "鍑烘按鍗楁眹1鐬椂娴侀噺"; + if (monitor鍑烘按鍗楁眹1娴侀噺.Item1 == tagname) + return "鍑烘按鍗楁眹1娴侀噺"; if (monitor鍑烘按鍗楁眹2鍘嬪姏.Item1 == tagname) return "鍑烘按鍗楁眹2鍘嬪姏"; - if (monitor鍑烘按鍗楁眹2鐬椂娴侀噺.Item1 == tagname) - return "鍑烘按鍗楁眹2鐬椂娴侀噺"; - if (monitor鍑烘按宸濇矙鎬荤鍘嬪姏.Item1 == tagname) - return "鍑烘按宸濇矙鎬荤鍘嬪姏"; - if (monitor鍑烘按宸濇矙鐬椂娴侀噺.Item1 == tagname) - return "鍑烘按宸濇矙鐬椂娴侀噺"; + if (monitor鍑烘按鍗楁眹2娴侀噺.Item1 == tagname) + return "鍑烘按鍗楁眹2娴侀噺"; + if (monitor鍑烘按宸濇矙鍘嬪姏.Item1 == tagname) + return "鍑烘按宸濇矙鍘嬪姏"; + if (monitor鍑烘按宸濇矙娴侀噺.Item1 == tagname) + return "鍑烘按宸濇矙娴侀噺"; if (monitor杩涙按鎬荤鍘嬪姏1.Item1 == tagname) return "杩涙按鎬荤鍘嬪姏1"; if (monitor杩涙按鎬荤鍘嬪姏2.Item1 == tagname) @@ -61,52 +63,99 @@ { if (allRecords_hour == null || allRecords_hour.Count == 0) { - error_info = "浜斿彿娌熷噷妗ユ柟鍚戞祴鐐规暟鎹负绌�"; + error_info = "閲戞捣娉电珯娴嬬偣鏁版嵁涓虹┖"; return null; } var complex_dispatch_request = new DispatchAna.Model.RequestParasComplex(); - //var water_level = allRecords_hour.Find(x => x.MonitorTag == monitor璋冭妭姹犳恫浣�.Item1); - //if (water_level == null) - //{ - // water_level = allRecords_hour.Find(x => x.MonitorTag == monitor璋冭妭姹犳恫浣�.Item1); - // if (water_level == null) - // { - // error_info = "浜斿彿娌熷噷妗ユ柟鍚戞按搴撴恫浣嶆祴鐐规湭鎵惧埌"; - // return null; - // } - //} - //var pipe1_flow = allRecords_hour.Find(x => x.MonitorTag == monitor鍑烘按鎬荤鐬椂娴侀噺.Item1); - //if (pipe1_flow == null) - //{ - // error_info = "浜斿彿娌熷噷妗ユ柟鍚戞按绠¢亾1娴侀噺娴嬬偣鏈壘鍒�"; - // return null; - //} + var inlet_press1 = allRecords_hour.Find(x => x.MonitorTag == monitor杩涙按鎬荤鍘嬪姏1.Item1); + if (inlet_press1 == null) + { + error_info = "杩涙按鎬荤鍘嬪姏1娴嬬偣鏈壘鍒�"; + return null; + } + var inlet_press2 = allRecords_hour.Find(x => x.MonitorTag == monitor杩涙按鎬荤鍘嬪姏2.Item1); + if (inlet_press2 == null) + { + error_info = "杩涙按鎬荤鍘嬪姏2娴嬬偣鏈壘鍒�"; + return null; + } - //var pipe1_press = allRecords_hour.Find(x => x.MonitorTag == monitor鍑烘按鎬荤鍘嬪姏.Item1); - //if (pipe1_press == null) - //{ - // error_info = "浜斿彿娌熷噷妗ユ柟鍚戞按绠¢亾1鍘嬪姏娴嬬偣鏈壘鍒�"; - // return null; - //} + + + var pipe1_flow = allRecords_hour.Find(x => x.MonitorTag == monitor鍑烘按鍗楁眹1娴侀噺.Item1); + if (pipe1_flow == null) + { + error_info = "閲戞捣娉电珯姘寸閬撳崡姹�1娴侀噺娴嬬偣鏈壘鍒�"; + return null; + } + + var pipe1_press = allRecords_hour.Find(x => x.MonitorTag == monitor鍑烘按鍗楁眹1鍘嬪姏.Item1); + if (pipe1_press == null) + { + error_info = "閲戞捣娉电珯姘寸閬撳崡姹�1鍘嬪姏娴嬬偣鏈壘鍒�"; + return null; + } + + var pipe2_flow = allRecords_hour.Find(x => x.MonitorTag == monitor鍑烘按鍗楁眹2娴侀噺.Item1); + if (pipe2_flow == null) + { + error_info = "閲戞捣娉电珯姘寸閬撳崡姹�2娴侀噺娴嬬偣鏈壘鍒�"; + return null; + } + + var pipe2_press = allRecords_hour.Find(x => x.MonitorTag == monitor鍑烘按鍗楁眹2鍘嬪姏.Item1); + if (pipe2_press == null) + { + error_info = "閲戞捣娉电珯姘寸閬撳崡姹�2鍘嬪姏娴嬬偣鏈壘鍒�"; + return null; + } + + var pipe3_flow = allRecords_hour.Find(x => x.MonitorTag == monitor鍑烘按宸濇矙娴侀噺.Item1); + if (pipe3_flow == null) + { + error_info = "閲戞捣娉电珯姘寸閬撳窛娌欐祦閲忔祴鐐规湭鎵惧埌"; + return null; + } + + var pipe3_press = allRecords_hour.Find(x => x.MonitorTag == monitor鍑烘按宸濇矙鍘嬪姏.Item1); + if (pipe3_press == null) + { + error_info = "閲戞捣娉电珯姘寸閬撳窛娌欏帇鍔涙祴鐐规湭鎵惧埌"; + return null; + } + complex_dispatch_request.CorpID = this._corpID; complex_dispatch_request.StationID = this._stationID; complex_dispatch_request.SchemeNumber = 1; complex_dispatch_request.PressValueType = DispatchAna.Model.RequestParasComplex.ePressValueType.鍘嬪姏; - complex_dispatch_request.WaterLevelPara = new List<DispatchAna.Model.WaterLevelPara>() + complex_dispatch_request.InletPipePara = new List<DispatchAna.Model.InletPipePara>() { - //new DispatchAna.Model.WaterLevelPara(){ Name="姘存睜", Value = water_level.RecordValue} + new DispatchAna.Model.InletPipePara(){ Name="涓�鍙疯繘鍙g鍘嬪姏", Value = inlet_press1.RecordValue}, + new DispatchAna.Model.InletPipePara(){ Name="浜屽彿杩涘彛绠″帇鍔�", Value = inlet_press2.RecordValue} }; complex_dispatch_request.OutletPipePara = new List<DispatchAna.Model.OutletPipePara>(); complex_dispatch_request.OutletPipePara.Add(new DispatchAna.Model.OutletPipePara() { - Name = "鎬荤璺�", - //TargetFlow = pipe1_flow.RecordValue, - //TargetPress = pipe1_press.RecordValue, + Name = "绠¤矾1", + TargetFlow = pipe1_flow.RecordValue, + TargetPress = pipe1_press.RecordValue, }); + complex_dispatch_request.OutletPipePara.Add(new DispatchAna.Model.OutletPipePara() + { + Name = "绠¤矾2", + TargetFlow = pipe2_flow.RecordValue, + TargetPress = pipe2_press.RecordValue, + }); + complex_dispatch_request.OutletPipePara.Add(new DispatchAna.Model.OutletPipePara() + { + Name = "绠¤矾3", + TargetFlow = pipe3_flow.RecordValue, + TargetPress = pipe3_press.RecordValue, + }); diff --git "a/Application/IStation.Application.OpenApi/shys/plan/shys/shys\351\225\277\345\205\264\346\263\265\347\253\231.cs" "b/Application/IStation.Application.OpenApi/shys/plan/shys/shys\351\225\277\345\205\264\346\263\265\347\253\231.cs" index 48a3720..1cc3724 100644 --- "a/Application/IStation.Application.OpenApi/shys/plan/shys/shys\351\225\277\345\205\264\346\263\265\347\253\231.cs" +++ "b/Application/IStation.Application.OpenApi/shys/plan/shys/shys\351\225\277\345\205\264\346\263\265\347\253\231.cs" @@ -80,9 +80,9 @@ complex_dispatch_request.StationID = this._stationID; complex_dispatch_request.SchemeNumber = 1; complex_dispatch_request.PressValueType = DispatchAna.Model.RequestParasComplex.ePressValueType.鍘嬪姏; - complex_dispatch_request.WaterLevelPara = new List<DispatchAna.Model.WaterLevelPara>() + complex_dispatch_request.InletPipePara = new List<DispatchAna.Model.InletPipePara>() { - new DispatchAna.Model.WaterLevelPara(){ Name="姘存睜", Value = water_level.RecordValue} + new DispatchAna.Model.InletPipePara(){ Name="姘存睜", Value = water_level.RecordValue} }; complex_dispatch_request.OutletPipePara = new List<DispatchAna.Model.OutletPipePara>(); complex_dispatch_request.OutletPipePara.Add(new DispatchAna.Model.OutletPipePara() diff --git "a/Application/IStation.Application.OpenApi/shys/plan/shys/shys\351\231\210\350\241\214\344\270\200\350\276\223.cs" "b/Application/IStation.Application.OpenApi/shys/plan/shys/shys\351\231\210\350\241\214\344\270\200\350\276\223.cs" index 13ef656..168743a 100644 --- "a/Application/IStation.Application.OpenApi/shys/plan/shys/shys\351\231\210\350\241\214\344\270\200\350\276\223.cs" +++ "b/Application/IStation.Application.OpenApi/shys/plan/shys/shys\351\231\210\350\241\214\344\270\200\350\276\223.cs" @@ -11,21 +11,30 @@ public shys闄堣涓�杈�() { this._corpID = 4; - this._dispatchAnaCalc = new IStation.Calculation.DispatchAna.Calculator_OptAna_General(); + this._dispatchAnaCalc = new IStation.Calculation.DispatchAna.Calculator_OptAna_SHYS_闄堣涓�杈�(); } /// <summary> /// 娴嬬偣瀛楀吀(杩欎釜姣忎釜娉电珯閮戒笉涓�鏍�) /// </summary> - private Tuple<string, long> monitor鍑烘按鎬荤1鍘嬪姏 = new Tuple<string, long>("_0402010201090105001", 859); - private Tuple<string, long> monitor鍑烘按鎬荤1鐬椂娴侀噺 = new Tuple<string, long>("_0402060601010103000", 860); - private Tuple<string, long> monitor鍑烘按鎬荤2鍘嬪姏 = new Tuple<string, long>("_0402010201090105002", 862); - private Tuple<string, long> monitor鍑烘按鎬荤2鐬椂娴侀噺 = new Tuple<string, long>("_0402060601010203000", 863); - private Tuple<string, long> monitor鍑烘按鎬荤3鍘嬪姏 = new Tuple<string, long>("_0402060601010305000", 865); - private Tuple<string, long> monitor鍑烘按鎬荤3鐬椂娴侀噺 = new Tuple<string, long>("_0402010503030202003", 866); - private Tuple<string, long> monitor杩涙按鍓嶆睜娑蹭綅1 = new Tuple<string, long>("_0402010201090104011", 856); - private Tuple<string, long> monitor杩涙按鍓嶆睜娑蹭綅2 = new Tuple<string, long>("_0402010201091104123", 857); - private Tuple<string, long> monitor杩涙按鍓嶆睜娑蹭綅3 = new Tuple<string, long>("_0402010201091104122", 858); + private Tuple<string, long> monitor鍑烘按鎬荤1鍘嬪姏 = new Tuple<string, long>("_0402010201090105001", + IStation.Calculation.DispatchAna.Calculator_OptAna_SHYS_闄堣涓�杈�._monitor_id_涓�鍙风鍘嬪姏); + private Tuple<string, long> monitor鍑烘按鎬荤1鐬椂娴侀噺 = new Tuple<string, long>("_0402060601010103000", + IStation.Calculation.DispatchAna.Calculator_OptAna_SHYS_闄堣涓�杈�._monitor_id_涓�鍙风娴侀噺); + private Tuple<string, long> monitor鍑烘按鎬荤2鍘嬪姏 = new Tuple<string, long>("_0402010201090105002", + IStation.Calculation.DispatchAna.Calculator_OptAna_SHYS_闄堣涓�杈�._monitor_id_浜屽彿绠″帇鍔�); + private Tuple<string, long> monitor鍑烘按鎬荤2鐬椂娴侀噺 = new Tuple<string, long>("_0402060601010203000", + IStation.Calculation.DispatchAna.Calculator_OptAna_SHYS_闄堣涓�杈�._monitor_id_浜屽彿绠℃祦閲�); + private Tuple<string, long> monitor鍑烘按鎬荤3鍘嬪姏 = new Tuple<string, long>("_0402060601010305000", + IStation.Calculation.DispatchAna.Calculator_OptAna_SHYS_闄堣涓�杈�._monitor_id_涓夊彿绠″帇鍔�); + private Tuple<string, long> monitor鍑烘按鎬荤3鐬椂娴侀噺 = new Tuple<string, long>("_0402010503030202003", + IStation.Calculation.DispatchAna.Calculator_OptAna_SHYS_闄堣涓�杈�._monitor_id_涓夊彿绠℃祦閲�); + private Tuple<string, long> monitor杩涙按鍓嶆睜娑蹭綅1 = new Tuple<string, long>("_0402010201090104011", + IStation.Calculation.DispatchAna.Calculator_OptAna_SHYS_闄堣涓�杈�._monitor_id_娑蹭綅1); + private Tuple<string, long> monitor杩涙按鍓嶆睜娑蹭綅2 = new Tuple<string, long>("_0402010201091104123", + IStation.Calculation.DispatchAna.Calculator_OptAna_SHYS_闄堣涓�杈�._monitor_id_娑蹭綅2); + private Tuple<string, long> monitor杩涙按鍓嶆睜娑蹭綅3 = new Tuple<string, long>("_0402010201091104122", + IStation.Calculation.DispatchAna.Calculator_OptAna_SHYS_闄堣涓�杈�._monitor_id_娑蹭綅3); public override bool Is娑蹭綅Monitor(string tagname) @@ -53,6 +62,12 @@ return "鍑烘按鎬荤3鍘嬪姏"; if (monitor鍑烘按鎬荤3鐬椂娴侀噺.Item1 == tagname) return "鍑烘按鎬荤3鐬椂娴侀噺"; + if (monitor杩涙按鍓嶆睜娑蹭綅1.Item1 == tagname) + return "杩涙按鍓嶆睜娑蹭綅1"; + if (monitor杩涙按鍓嶆睜娑蹭綅2.Item1 == tagname) + return "杩涙按鍓嶆睜娑蹭綅2"; + if (monitor杩涙按鍓嶆睜娑蹭綅3.Item1 == tagname) + return "杩涙按鍓嶆睜娑蹭綅3"; return "鏈煡娴嬬偣"; } @@ -68,49 +83,104 @@ { if (allRecords_hour == null || allRecords_hour.Count == 0) { - error_info = "浜斿彿娌熷噷妗ユ柟鍚戞祴鐐规暟鎹负绌�"; + error_info = "闄堣涓�杈撴祴鐐规暟鎹负绌�"; return null; } var complex_dispatch_request = new DispatchAna.Model.RequestParasComplex(); - //var water_level = allRecords_hour.Find(x => x.MonitorTag == monitor璋冭妭姹犳恫浣�.Item1); - //if (water_level == null) - //{ - // water_level = allRecords_hour.Find(x => x.MonitorTag == monitor璋冭妭姹犳恫浣�.Item1); - // if (water_level == null) - // { - // error_info = "浜斿彿娌熷噷妗ユ柟鍚戞按搴撴恫浣嶆祴鐐规湭鎵惧埌"; - // return null; - // } - //} - //var pipe1_flow = allRecords_hour.Find(x => x.MonitorTag == monitor鍑烘按鎬荤鐬椂娴侀噺.Item1); - //if (pipe1_flow == null) - //{ - // error_info = "浜斿彿娌熷噷妗ユ柟鍚戞按绠¢亾1娴侀噺娴嬬偣鏈壘鍒�"; - // return null; - //} + var water_level1 = allRecords_hour.Find(x => x.MonitorTag == monitor杩涙按鍓嶆睜娑蹭綅1.Item1); + if (water_level1 == null) + { + error_info = "闄堣涓�杈撴按搴撴恫浣�1娴嬬偣鏈壘鍒�"; + return null; + } + var water_level2 = allRecords_hour.Find(x => x.MonitorTag == monitor杩涙按鍓嶆睜娑蹭綅2.Item1); + if (water_level2 == null) + { + error_info = "闄堣涓�杈撴按搴撴恫浣�2娴嬬偣鏈壘鍒�"; + return null; + } + var water_level3 = allRecords_hour.Find(x => x.MonitorTag == monitor杩涙按鍓嶆睜娑蹭綅3.Item1); + if (water_level3 == null) + { + error_info = "闄堣涓�杈撴按搴撴恫浣�3娴嬬偣鏈壘鍒�"; + return null; + } - //var pipe1_press = allRecords_hour.Find(x => x.MonitorTag == monitor鍑烘按鎬荤鍘嬪姏.Item1); - //if (pipe1_press == null) - //{ - // error_info = "浜斿彿娌熷噷妗ユ柟鍚戞按绠¢亾1鍘嬪姏娴嬬偣鏈壘鍒�"; - // return null; - //} + + var pipe1_flow = allRecords_hour.Find(x => x.MonitorTag == monitor鍑烘按鎬荤1鐬椂娴侀噺.Item1); + if (pipe1_flow == null) + { + error_info = "闄堣涓�杈撴按绠¢亾1娴侀噺娴嬬偣鏈壘鍒�"; + return null; + } + + var pipe1_press = allRecords_hour.Find(x => x.MonitorTag == monitor鍑烘按鎬荤1鍘嬪姏.Item1); + if (pipe1_press == null) + { + error_info = "闄堣涓�杈撴按绠¢亾1鍘嬪姏娴嬬偣鏈壘鍒�"; + return null; + } + + var pipe2_flow = allRecords_hour.Find(x => x.MonitorTag == monitor鍑烘按鎬荤2鐬椂娴侀噺.Item1); + if (pipe2_flow == null) + { + error_info = "闄堣涓�杈撴按绠¢亾2娴侀噺娴嬬偣鏈壘鍒�"; + return null; + } + + var pipe2_press = allRecords_hour.Find(x => x.MonitorTag == monitor鍑烘按鎬荤2鍘嬪姏.Item1); + if (pipe2_press == null) + { + error_info = "闄堣涓�杈撴按绠¢亾2鍘嬪姏娴嬬偣鏈壘鍒�"; + return null; + } + + + var pipe3_flow = allRecords_hour.Find(x => x.MonitorTag == monitor鍑烘按鎬荤3鐬椂娴侀噺.Item1); + if (pipe3_flow == null) + { + error_info = "闄堣涓�杈撴按绠¢亾3娴侀噺娴嬬偣鏈壘鍒�"; + return null; + } + + var pipe3_press = allRecords_hour.Find(x => x.MonitorTag == monitor鍑烘按鎬荤3鍘嬪姏.Item1); + if (pipe3_press == null) + { + error_info = "闄堣涓�杈撴按绠¢亾3鍘嬪姏娴嬬偣鏈壘鍒�"; + return null; + } complex_dispatch_request.CorpID = this._corpID; complex_dispatch_request.StationID = this._stationID; complex_dispatch_request.SchemeNumber = 1; complex_dispatch_request.PressValueType = DispatchAna.Model.RequestParasComplex.ePressValueType.鍘嬪姏; - complex_dispatch_request.WaterLevelPara = new List<DispatchAna.Model.WaterLevelPara>() + complex_dispatch_request.InletPipePara = new List<DispatchAna.Model.InletPipePara>() { - //new DispatchAna.Model.WaterLevelPara(){ Name="姘存睜", Value = water_level.RecordValue} + new DispatchAna.Model.InletPipePara(){ Name="娑蹭綅1", Value = water_level1.RecordValue}, + new DispatchAna.Model.InletPipePara(){ Name="娑蹭綅2", Value = water_level2.RecordValue}, + new DispatchAna.Model.InletPipePara(){ Name="娑蹭綅3", Value = water_level3.RecordValue} }; complex_dispatch_request.OutletPipePara = new List<DispatchAna.Model.OutletPipePara>(); complex_dispatch_request.OutletPipePara.Add(new DispatchAna.Model.OutletPipePara() { - Name = "鎬荤璺�", - //TargetFlow = pipe1_flow.RecordValue, - //TargetPress = pipe1_press.RecordValue, + Name = "绠¤矾1", + TargetFlow = pipe1_flow.RecordValue, + TargetPress = pipe1_press.RecordValue, + }); + + complex_dispatch_request.OutletPipePara.Add(new DispatchAna.Model.OutletPipePara() + { + Name = "绠¤矾2", + TargetFlow = pipe2_flow.RecordValue, + TargetPress = pipe2_press.RecordValue, + }); + + complex_dispatch_request.OutletPipePara.Add(new DispatchAna.Model.OutletPipePara() + { + Name = "绠¤矾3", + TargetFlow = pipe3_flow.RecordValue, + TargetPress = pipe3_press.RecordValue, }); diff --git "a/Application/IStation.Application.OpenApi/shys/plan/shys/shys\351\231\210\350\241\214\344\272\214\350\276\223.cs" "b/Application/IStation.Application.OpenApi/shys/plan/shys/shys\351\231\210\350\241\214\344\272\214\350\276\223.cs" index 535d947..acf3e2e 100644 --- "a/Application/IStation.Application.OpenApi/shys/plan/shys/shys\351\231\210\350\241\214\344\272\214\350\276\223.cs" +++ "b/Application/IStation.Application.OpenApi/shys/plan/shys/shys\351\231\210\350\241\214\344\272\214\350\276\223.cs" @@ -1,4 +1,5 @@ -锘縰sing System; +锘縰sing IStation.Calculation.DispatchAna; +using System; using System.Collections.Generic; using System.Linq; using System.Text; @@ -11,17 +12,24 @@ public shys闄堣浜岃緭() { this._corpID = 4; - this._dispatchAnaCalc = new IStation.Calculation.DispatchAna.Calculator_OptAna_General(); + this._dispatchAnaCalc = new IStation.Calculation.DispatchAna.Calculator_OptAna_SHYS_闄堣浜岃緭(); } /// <summary> /// 娴嬬偣瀛楀吀(杩欎釜姣忎釜娉电珯閮戒笉涓�鏍�) /// </summary> - private Tuple<string, long> monitor鍑烘按鎬荤1鍘嬪姏 = new Tuple<string, long>("_0402010201090105004", 917); - private Tuple<string, long> monitor鍑烘按鎬荤1鐬椂娴侀噺 = new Tuple<string, long>("_0402010201090103020", 918); - private Tuple<string, long> monitor鍑烘按鎬荤2鍘嬪姏 = new Tuple<string, long>("_0402010201090105003", 920); - private Tuple<string, long> monitor鍑烘按鎬荤2鐬椂娴侀噺 = new Tuple<string, long>("_0402010201090103017", 921); - private Tuple<string, long> monitor杩涙按鍓嶆睜娑蹭綅 = new Tuple<string, long>("_0402010201080204002", 916); + private Tuple<string, long> monitor鍑烘按鎬荤1鍘嬪姏 = new Tuple<string, long>("_0402010201090105004", + IStation.Calculation.DispatchAna.Calculator_OptAna_SHYS_闄堣浜岃緭._monitor_id_涓�鍙风鍘嬪姏); + private Tuple<string, long> monitor鍑烘按鎬荤1鐬椂娴侀噺 = new Tuple<string, long>("_0402010201090103020", + IStation.Calculation.DispatchAna.Calculator_OptAna_SHYS_闄堣浜岃緭._monitor_id_涓�鍙风娴侀噺); + + private Tuple<string, long> monitor鍑烘按鎬荤2鍘嬪姏 = new Tuple<string, long>("_0402010201090105003", + IStation.Calculation.DispatchAna.Calculator_OptAna_SHYS_闄堣浜岃緭._monitor_id_浜屽彿绠″帇鍔�); + private Tuple<string, long> monitor鍑烘按鎬荤2鐬椂娴侀噺 = new Tuple<string, long>("_0402010201090103017", + IStation.Calculation.DispatchAna.Calculator_OptAna_SHYS_闄堣浜岃緭._monitor_id_浜屽彿绠℃祦閲�); + + private Tuple<string, long> monitor杩涙按鍓嶆睜娑蹭綅 = new Tuple<string, long>("_0402010201080204002", + IStation.Calculation.DispatchAna.Calculator_OptAna_SHYS_闄堣浜岃緭._monitor_id_娑蹭綅); public override bool Is娑蹭綅Monitor(string tagname) { @@ -40,6 +48,8 @@ return "鍑烘按鎬荤2鍘嬪姏"; if (monitor鍑烘按鎬荤2鐬椂娴侀噺.Item1 == tagname) return "鍑烘按鎬荤2鐬椂娴侀噺"; + if (monitor杩涙按鍓嶆睜娑蹭綅.Item1 == tagname) + return "杩涙按鍓嶆睜娑蹭綅"; return "鏈煡娴嬬偣"; } @@ -55,50 +65,70 @@ { if (allRecords_hour == null || allRecords_hour.Count == 0) { - error_info = "浜斿彿娌熷噷妗ユ柟鍚戞祴鐐规暟鎹负绌�"; + error_info = "闄堣浜岃緭娴嬬偣鏁版嵁涓虹┖"; return null; } var complex_dispatch_request = new DispatchAna.Model.RequestParasComplex(); - //var water_level = allRecords_hour.Find(x => x.MonitorTag == monitor璋冭妭姹犳恫浣�.Item1); - //if (water_level == null) - //{ - // water_level = allRecords_hour.Find(x => x.MonitorTag == monitor璋冭妭姹犳恫浣�.Item1); - // if (water_level == null) - // { - // error_info = "浜斿彿娌熷噷妗ユ柟鍚戞按搴撴恫浣嶆祴鐐规湭鎵惧埌"; - // return null; - // } - //} - //var pipe1_flow = allRecords_hour.Find(x => x.MonitorTag == monitor鍑烘按鎬荤鐬椂娴侀噺.Item1); - //if (pipe1_flow == null) - //{ - // error_info = "浜斿彿娌熷噷妗ユ柟鍚戞按绠¢亾1娴侀噺娴嬬偣鏈壘鍒�"; - // return null; - //} - - //var pipe1_press = allRecords_hour.Find(x => x.MonitorTag == monitor鍑烘按鎬荤鍘嬪姏.Item1); - //if (pipe1_press == null) - //{ - // error_info = "浜斿彿娌熷噷妗ユ柟鍚戞按绠¢亾1鍘嬪姏娴嬬偣鏈壘鍒�"; - // return null; - //} - + var water_level = allRecords_hour.Find(x => x.MonitorTag == monitor杩涙按鍓嶆睜娑蹭綅.Item1); + if (water_level == null) + { + water_level = allRecords_hour.Find(x => x.MonitorTag == monitor杩涙按鍓嶆睜娑蹭綅.Item1); + if (water_level == null) + { + error_info = "闄堣浜岃緭姘村簱娑蹭綅娴嬬偣鏈壘鍒�"; + return null; + } + } + var pipe1_flow = allRecords_hour.Find(x => x.MonitorTag == monitor鍑烘按鎬荤1鐬椂娴侀噺.Item1); + if (pipe1_flow == null) + { + error_info = "闄堣浜岃緭姘寸閬�1娴侀噺娴嬬偣鏈壘鍒�"; + return null; + } + var pipe2_flow = allRecords_hour.Find(x => x.MonitorTag == monitor鍑烘按鎬荤2鐬椂娴侀噺.Item1); + if (pipe2_flow == null) + { + error_info = "闄堣浜岃緭姘寸閬�2娴侀噺娴嬬偣鏈壘鍒�"; + return null; + } + var pipe1_press = allRecords_hour.Find(x => x.MonitorTag == monitor鍑烘按鎬荤1鍘嬪姏.Item1); + if (pipe1_press == null) + { + error_info = "闄堣浜岃緭姘寸閬�1鍘嬪姏娴嬬偣鏈壘鍒�"; + return null; + } + var pipe2_press = allRecords_hour.Find(x => x.MonitorTag == monitor鍑烘按鎬荤2鍘嬪姏.Item1); + if (pipe2_press == null) + { + error_info = "闄堣浜岃緭姘寸閬�2鍘嬪姏娴嬬偣鏈壘鍒�"; + return null; + } complex_dispatch_request.CorpID = this._corpID; complex_dispatch_request.StationID = this._stationID; complex_dispatch_request.SchemeNumber = 1; complex_dispatch_request.PressValueType = DispatchAna.Model.RequestParasComplex.ePressValueType.鍘嬪姏; - complex_dispatch_request.WaterLevelPara = new List<DispatchAna.Model.WaterLevelPara>() + complex_dispatch_request.InletPipePara = new List<DispatchAna.Model.InletPipePara>() { - //new DispatchAna.Model.WaterLevelPara(){ Name="姘存睜", Value = water_level.RecordValue} + new DispatchAna.Model.InletPipePara(){ Name="姘存睜", Value = water_level.RecordValue} }; complex_dispatch_request.OutletPipePara = new List<DispatchAna.Model.OutletPipePara>(); complex_dispatch_request.OutletPipePara.Add(new DispatchAna.Model.OutletPipePara() { - Name = "鎬荤璺�", - //TargetFlow = pipe1_flow.RecordValue, - //TargetPress = pipe1_press.RecordValue, + Name = "涓�鍙风璺�", + TargetFlow = pipe1_flow.RecordValue, + TargetPress = pipe1_press.RecordValue, }); + complex_dispatch_request.OutletPipePara.Add(new DispatchAna.Model.OutletPipePara() + { + Name = "浜屽彿绠¤矾", + TargetFlow = pipe2_flow.RecordValue, + TargetPress = pipe2_press.RecordValue, + }); + + complex_dispatch_request.ValvePara = new List<DispatchAna.Model.ValvePara>(); + complex_dispatch_request.ValvePara.Add(new DispatchAna.Model.ValvePara() { Name = "涓棿闃�闂�", OpenStatus = 1 }); + diff --git a/Calculation/IStation.Calculation.Dispatch/Model/CurrentRecordBundle.cs b/Calculation/IStation.Calculation.Dispatch/Model/CurrentRecordBundle.cs index 70249bb..dd84a98 100644 --- a/Calculation/IStation.Calculation.Dispatch/Model/CurrentRecordBundle.cs +++ b/Calculation/IStation.Calculation.Dispatch/Model/CurrentRecordBundle.cs @@ -54,8 +54,20 @@ { this.Value = vvv; - } - + } + } + /// <summary> + /// + /// </summary> + /// <param name="name"></param> + /// <param name="v"></param> + public RecordValue(string name, double v) + { + this.Name = name; + + this.Value = v; + + } /// <summary> /// diff --git a/Calculation/IStation.Calculation.Dispatch/base/CalculatorOptAnaBase.cs b/Calculation/IStation.Calculation.Dispatch/base/CalculatorOptAnaBase.cs index 50c3be7..88abe46 100644 --- a/Calculation/IStation.Calculation.Dispatch/base/CalculatorOptAnaBase.cs +++ b/Calculation/IStation.Calculation.Dispatch/base/CalculatorOptAnaBase.cs @@ -49,7 +49,7 @@ #region 妫�鏌ユ暟鎹� if (complex_request_paras.OutletPipePara == null || complex_request_paras.OutletPipePara.Count < 1) { - error_info = string.Format("绗瑊0},鍒嗘瀽鍑洪敊,鍘熷洜鏄�:{1}", + error_info = string.Format("{0}鏃�,鍒嗘瀽鍑洪敊,鍘熷洜鏄�:{1}", hourRequest.Hour + 1, "鍑哄彛绠¤矾鍙傛暟鏈夎, 璇风‘璁ゆ槸鍚﹁祴鍊�, ERROR 35"); return null; } @@ -75,9 +75,9 @@ {//妫�鏌ュ帇鍔� continue; } - if (complex_request_paras.WaterLevelPara != null) + if (complex_request_paras.InletPipePara != null) { - foreach (var wl in complex_request_paras.WaterLevelPara) + foreach (var wl in complex_request_paras.InletPipePara) { cacheNameBuilder.AppendFormat("V{0}", Math.Round(wl.Value, 0)); } @@ -97,7 +97,18 @@ var result_anaSchemes = CalcSchemes鍘嬪姏(complex_request_paras, null, out error_info); if (result_anaSchemes == null || result_anaSchemes.Count == 0) { - error_info = string.Format("绗瑊0},鍒嗘瀽鍑洪敊,鍘熷洜鏄�:{1}", hourRequest.Hour + 1, error_info); + if (string.IsNullOrEmpty(error_info)) + { + error_info = string.Format("{0}鏃�,鍒嗘瀽鍑洪敊,鍙兘鏄叆鍙傛暟鎹笉鍚堢悊,璇锋鏌�", + hourRequest.Hour + 1 ); + } + else + { + error_info = string.Format("{0}鏃�,鍒嗘瀽鍑洪敊,鍘熷洜鏄�:{1}", + hourRequest.Hour + 1, + error_info); + } + return null; } opt_anaScheme = result_anaSchemes.First(); diff --git "a/Calculation/IStation.Calculation.Dispatch/custom/shys/station/\344\272\224\345\217\267\346\262\237\351\207\221\346\265\267\346\226\271\345\220\221/Base.cs" "b/Calculation/IStation.Calculation.Dispatch/custom/shys/station/\344\272\224\345\217\267\346\262\237\351\207\221\346\265\267\346\226\271\345\220\221/Base.cs" index b6fb895..4ad7a8c 100644 --- "a/Calculation/IStation.Calculation.Dispatch/custom/shys/station/\344\272\224\345\217\267\346\262\237\351\207\221\346\265\267\346\226\271\345\220\221/Base.cs" +++ "b/Calculation/IStation.Calculation.Dispatch/custom/shys/station/\344\272\224\345\217\267\346\262\237\351\207\221\346\265\267\346\226\271\345\220\221/Base.cs" @@ -7,13 +7,56 @@ namespace IStation.Calculation.DispatchAna { /// <summary> - /// 闀垮叴娉电珯璋冨害鏂规璁$畻鍣� + /// 浜斿彿娌熼噾娴锋柟鍚戣皟搴︽柟妗堣绠楀櫒 /// </summary> - internal class CalculatorBase_SHYS_浜斿彿娌熼噾娴锋柟鍚� : CalculatorBase + public class CalculatorBase_SHYS_浜斿彿娌熼噾娴锋柟鍚� : CalculatorOptAnaBase { - protected List<long> machine_ids = new List<long>() { 148, 151, 154, 157, 160, 163, 166 }; + /// <summary> + /// + /// </summary> + static protected List<long> machine_ids = new List<long>() { 148, 151, 154, 157, 160, 163, 166 }; + + /// <summary> + /// + /// </summary> + protected List<long> pipe1_machineIds = null;//1鍙锋车锛�2鍙锋车,3鍙锋车 + /// <summary> + /// + /// </summary> + protected List<long> pipe2_machineIds = null;//锛�4鍙锋车 锛�5鍙锋车 锛�6鍙锋车锛�7鍙锋车 + /// <summary> + /// + /// </summary> + static protected long _monitor_id_鍓嶆睜娑蹭綅4 = 263; + /// <summary> + /// + /// </summary> + static protected long _monitor_id_鍓嶆睜娑蹭綅5 = 264; + /// <summary> + /// + /// </summary> + static protected long _monitor_id_涓�鍙风鍘嬪姏 = 265; + /// <summary> + /// + /// </summary> + static protected long _monitor_id_浜屽彿绠″帇鍔� = 268; + /// <summary> + /// + /// </summary> + static protected long _monitor_id_涓�鍙风娴侀噺 = 266; + /// <summary> + /// + /// </summary> + static protected long _monitor_id_浜屽彿绠℃祦閲� = 269; + + /// <summary> + /// + /// </summary> public CalculatorBase_SHYS_浜斿彿娌熼噾娴锋柟鍚�() { + pipe1_machineIds = new List<long>() { machine_ids[0], machine_ids[1], machine_ids[2] };//1鍙锋车锛�2鍙锋车,3鍙锋车 + pipe2_machineIds = new List<long>() { machine_ids[3], machine_ids[4], machine_ids[5], machine_ids[6] };//锛�4鍙锋车 锛�5鍙锋车 锛�6鍙锋车锛�7鍙锋车 + _corpID = 4; _stationID = 9; } diff --git "a/Calculation/IStation.Calculation.Dispatch/custom/shys/station/\344\272\224\345\217\267\346\262\237\351\207\221\346\265\267\346\226\271\345\220\221/Current.cs" "b/Calculation/IStation.Calculation.Dispatch/custom/shys/station/\344\272\224\345\217\267\346\262\237\351\207\221\346\265\267\346\226\271\345\220\221/Current.cs" index 254383b..b54d8af 100644 --- "a/Calculation/IStation.Calculation.Dispatch/custom/shys/station/\344\272\224\345\217\267\346\262\237\351\207\221\346\265\267\346\226\271\345\220\221/Current.cs" +++ "b/Calculation/IStation.Calculation.Dispatch/custom/shys/station/\344\272\224\345\217\267\346\262\237\351\207\221\346\265\267\346\226\271\345\220\221/Current.cs" @@ -11,10 +11,6 @@ /// </summary> internal class Calculator_Current_SHYS_浜斿彿娌熼噾娴锋柟鍚�: CalculatorBase_SHYS_浜斿彿娌熼噾娴锋柟鍚�, IGetCurrentRecord { - public Calculator_Current_SHYS_浜斿彿娌熼噾娴锋柟鍚�() - { - - } /// <summary> /// 鑾峰彇褰撳墠璋冨害淇℃伅 /// </summary> @@ -25,26 +21,27 @@ public Model.CurrentRecordBundle GetCurrentRecord(long CorpID, long StationID, out string error_info) { error_info = null; - List<long> monitor_ids = new List<long>() { 263, 264, 265, 268, 266, 269 }; + List<long> monitor_ids = new List<long>() { _monitor_id_鍓嶆睜娑蹭綅4, _monitor_id_鍓嶆睜娑蹭綅5, _monitor_id_涓�鍙风鍘嬪姏, + _monitor_id_浜屽彿绠″帇鍔�, _monitor_id_涓�鍙风娴侀噺, _monitor_id_浜屽彿绠℃祦閲� }; var monitor_records = new Service.MonitorRecord().GetLastRecord(_corpID, monitor_ids); Model.CurrentRecordBundle bundle = new Model.CurrentRecordBundle(); bundle.WaterLevelList = new List<Model.CurrentRecordBundle.RecordValue>(); - var water_level4 = monitor_records.Find(x => x.MonitorPointID == 263); + var water_level4 = monitor_records.Find(x => x.MonitorPointID == _monitor_id_鍓嶆睜娑蹭綅4); if (water_level4 != null) { bundle.WaterLevelList.Add(new Model.CurrentRecordBundle.RecordValue("鍓嶆睜娑蹭綅4", water_level4, 2)); } - var water_level5 = monitor_records.Find(x => x.MonitorPointID == 264); + var water_level5 = monitor_records.Find(x => x.MonitorPointID == _monitor_id_鍓嶆睜娑蹭綅5); if (water_level5 != null) { bundle.WaterLevelList.Add(new Model.CurrentRecordBundle.RecordValue("鍓嶆睜娑蹭綅5", water_level4, 2)); } - var pipe_press1 = monitor_records.Find(x => x.MonitorPointID == 265); - var pipe_press2 = monitor_records.Find(x => x.MonitorPointID == 268); + var pipe_press1 = monitor_records.Find(x => x.MonitorPointID == _monitor_id_涓�鍙风鍘嬪姏); + var pipe_press2 = monitor_records.Find(x => x.MonitorPointID == _monitor_id_浜屽彿绠″帇鍔�); if (pipe_press1 != null && pipe_press2 != null) { bundle.PressList = new List<Model.CurrentRecordBundle.RecordValue>(); @@ -52,8 +49,8 @@ bundle.PressList.Add(new Model.CurrentRecordBundle.RecordValue("浜屽彿绠�", pipe_press2, 4)); } - var pipe_flow1 = monitor_records.Find(x => x.MonitorPointID == 266); - var pipe_flow2 = monitor_records.Find(x => x.MonitorPointID == 269); + var pipe_flow1 = monitor_records.Find(x => x.MonitorPointID == _monitor_id_涓�鍙风娴侀噺); + var pipe_flow2 = monitor_records.Find(x => x.MonitorPointID == _monitor_id_浜屽彿绠℃祦閲�); if (pipe_flow1 != null && pipe_flow2 != null) { bundle.FlowList = new List<Model.CurrentRecordBundle.RecordValue>(); diff --git "a/Calculation/IStation.Calculation.Dispatch/custom/shys/station/\344\272\224\345\217\267\346\262\237\351\207\221\346\265\267\346\226\271\345\220\221/KeepStatus.cs" "b/Calculation/IStation.Calculation.Dispatch/custom/shys/station/\344\272\224\345\217\267\346\262\237\351\207\221\346\265\267\346\226\271\345\220\221/KeepStatus.cs" index 2b06af5..23965dd 100644 --- "a/Calculation/IStation.Calculation.Dispatch/custom/shys/station/\344\272\224\345\217\267\346\262\237\351\207\221\346\265\267\346\226\271\345\220\221/KeepStatus.cs" +++ "b/Calculation/IStation.Calculation.Dispatch/custom/shys/station/\344\272\224\345\217\267\346\262\237\351\207\221\346\265\267\346\226\271\345\220\221/KeepStatus.cs" @@ -13,9 +13,12 @@ { public Calculator_KeepStatus_SHYS_浜斿彿娌熼噾娴锋柟鍚�() { + } Model.RequestParasComplex _request_paras; List<long> _open_machine_IdList ; + + List<Model.MachineDetail> _allMachineList = null; /// <summary> /// 鍒濆鍖栧弬鏁� /// </summary> @@ -67,117 +70,133 @@ double pipe1_TargetPess = _request_paras.OutletPipePara[0].TargetPress; double pipe2_TargetPess = _request_paras.OutletPipePara[1].TargetPress; - + if (pipe1_TargetFlow > 50) + { + if (pipe1_TargetPess < 0.01) + { + error_info = "ERROR 35,浜斿彿娌熼噾娴锋柟鍚戦渶瑕佷竴鍙风鍘嬪姏鏈祴鍊�"; + return default; + } + } + if (pipe2_TargetFlow > 50) + { + if (pipe2_TargetPess < 0.01) + { + error_info = "ERROR 35,浜斿彿娌熼噾娴锋柟鍚戦渶瑕佷簩鍙风鍘嬪姏鏈祴鍊�"; + return default; + } + } double water_level = 0;//姘翠綅 - if (_request_paras.WaterLevelPara != null && _request_paras.WaterLevelPara.Count > 0) + if (_request_paras.InletPipePara != null && _request_paras.InletPipePara.Count > 0) { - if (_request_paras.WaterLevelPara.Count == 1) + if (_request_paras.InletPipePara.Count == 1) { - water_level = _request_paras.WaterLevelPara[0].Value; + water_level = _request_paras.InletPipePara[0].Value; } else {//鐢ㄥ钩鍧囧�� - water_level = _request_paras.WaterLevelPara[0].Value+ - _request_paras.WaterLevelPara[1].Value; + water_level = _request_paras.InletPipePara[0].Value + + _request_paras.InletPipePara[1].Value; water_level = water_level / 2; - } - } - - - if (_request_paras.ValvePara == null || _request_paras.ValvePara.Count < 1) - { - error_info = "ERROR 57"; - return null; - } - - List<Model.MachineDetail> allMachineList = null; - if (!BuildMachineList( - out allMachineList, - out error_info)) - { - error_info = "鏈烘车缁勬棤娉曟瀯寤�,ERROR 70,閿欒淇℃伅:" + error_info; - return null; - } - - - { - var pipe1_machineIds = new List<long>() { 19, 22 };//1鍙锋车锛�2鍙锋车 - var pipe2_machineIds = new List<long>() { 25, 28 };//3鍙锋车锛�4鍙锋车 - - Common.DispatchAnaGeneralHelper鍘嬪姏 calc_pipe1_helper - = new Common.DispatchAnaGeneralHelper鍘嬪姏(); - - Common.DispatchAnaGeneralHelper鍘嬪姏 calc_pipe2_helper - = new Common.DispatchAnaGeneralHelper鍘嬪姏(); - - if (pipe2_TargetFlow < 30) - {//鍙紑涓�鍙锋车浜屽彿娉� - calc_pipe1_helper.InitialParas( - pipe1_TargetFlow, - water_level, - pipe1_TargetPess, - null, null, - (from x in allMachineList where pipe1_machineIds.Contains(x.MachineID) select x).ToList(), null); - - return calc_pipe1_helper.CalcKeepStatus(_open_machine_IdList); } - else if (pipe1_TargetFlow < 30) + } + + //鏈烘车淇℃伅 + if(_allMachineList == null) + { + if (!BuildMachineList( + out _allMachineList, + out error_info)) { - calc_pipe2_helper.InitialParas( - pipe2_TargetFlow, - water_level, - pipe2_TargetPess, - null, null, - (from x in allMachineList where pipe2_machineIds.Contains(x.MachineID) select x).ToList(), null); - - return calc_pipe2_helper.CalcKeepStatus(_open_machine_IdList); + error_info = "鏈烘车缁勬棤娉曟瀯寤�,ERROR 70,閿欒淇℃伅:" + error_info; + return null; } + } + + Common.DispatchAnaGeneralHelper鍘嬪姏 calc_pipe1_helper + = new Common.DispatchAnaGeneralHelper鍘嬪姏(); + + Common.DispatchAnaGeneralHelper鍘嬪姏 calc_pipe2_helper + = new Common.DispatchAnaGeneralHelper鍘嬪姏(); + + if (pipe2_TargetFlow < 30) + {//鍙紑涓�鍙锋车浜屽彿娉� calc_pipe1_helper.InitialParas( pipe1_TargetFlow, - water_level, - pipe1_TargetPess, - null, null, - (from x in allMachineList where pipe1_machineIds.Contains(x.MachineID) select x).ToList(), null); - var pipe1_result = calc_pipe1_helper.CalcKeepStatus(_open_machine_IdList); + water_level,true , + pipe1_TargetPess,false , + null, null, + (from x in _allMachineList where pipe1_machineIds.Contains(x.MachineID) select x).ToList(), null); - + return calc_pipe1_helper.CalcKeepStatus(_open_machine_IdList); + } + else if (pipe1_TargetFlow < 30) + { calc_pipe2_helper.InitialParas( pipe2_TargetFlow, - water_level, - pipe2_TargetPess, + water_level, true, + pipe2_TargetPess,false, null, null, - (from x in allMachineList where pipe2_machineIds.Contains(x.MachineID) select x).ToList(), null); + (from x in _allMachineList where pipe2_machineIds.Contains(x.MachineID) select x).ToList(), null); - var pipe2_result = calc_pipe2_helper.CalcKeepStatus(_open_machine_IdList); - - if (pipe1_result == null || pipe2_result == null) - return default; - - - - var connect_scheme = new Model.AnaScheme(); - connect_scheme.ID = 1; - connect_scheme.TotalWrkQ = pipe1_result.TotalWrkQ + pipe2_result.TotalWrkQ; - connect_scheme.TotalWrkH = (pipe1_result.TotalWrkH + pipe2_result.TotalWrkH) / 2; - connect_scheme.TotalWrkP = pipe1_result.TotalWrkP + pipe2_result.TotalWrkP; - connect_scheme.TotalWrkE = IStation.Common.PumpParaHelper.CalculateE(connect_scheme.TotalWrkQ, connect_scheme.TotalWrkH, connect_scheme.TotalWrkP); - connect_scheme.UWP = CalculateUWP(connect_scheme.TotalWrkP, connect_scheme.TotalWrkQ, connect_scheme.TotalWrkH); - connect_scheme.WP = CalculateWP(connect_scheme.TotalWrkP, connect_scheme.TotalWrkQ); - - connect_scheme.Items = new List<Model.AnaSchemeItem>(); - if (pipe1_result.Items != null && pipe1_result.Items.Count > 0) - connect_scheme.Items.AddRange(pipe1_result.Items); - if (pipe2_result.Items != null && pipe2_result.Items.Count > 0) - connect_scheme.Items.AddRange(pipe2_result.Items); - - - return connect_scheme; + return calc_pipe2_helper.CalcKeepStatus(_open_machine_IdList); } + + + + + calc_pipe1_helper.InitialParas( + pipe1_TargetFlow, + water_level,true, + pipe1_TargetPess,false , + null, null, + (from x in _allMachineList where pipe1_machineIds.Contains(x.MachineID) select x).ToList(), null); + var pipe1_result = calc_pipe1_helper.CalcKeepStatus(_open_machine_IdList); + if (pipe1_result == null) + { + error_info = "绠¤矾涓�璋冨害鏂规鏃犳硶璁$畻璇风‘璁ゆ暟鎹槸鍚﹀悎鐞�"; + return null; + } + + calc_pipe2_helper.InitialParas( + pipe2_TargetFlow, + water_level, true, + pipe2_TargetPess, false, + null, null, + (from x in _allMachineList where pipe2_machineIds.Contains(x.MachineID) select x).ToList(), null); + + var pipe2_result = calc_pipe2_helper.CalcKeepStatus(_open_machine_IdList); + if (pipe2_result == null) + { + error_info = "绠¤矾浜岃皟搴︽柟妗堟棤娉曡绠楄纭鏁版嵁鏄惁鍚堢悊"; + return null; + } + + + + var connect_scheme = new Model.AnaScheme(); + connect_scheme.ID = 1; + connect_scheme.TotalWrkQ = pipe1_result.TotalWrkQ + pipe2_result.TotalWrkQ; + connect_scheme.TotalWrkH = (pipe1_result.TotalWrkH + pipe2_result.TotalWrkH) / 2; + connect_scheme.TotalWrkP = pipe1_result.TotalWrkP + pipe2_result.TotalWrkP; + connect_scheme.TotalWrkE = IStation.Common.PumpParaHelper.CalculateE(connect_scheme.TotalWrkQ, connect_scheme.TotalWrkH, connect_scheme.TotalWrkP); + connect_scheme.UWP = CalculateUWP(connect_scheme.TotalWrkP, connect_scheme.TotalWrkQ, connect_scheme.TotalWrkH); + connect_scheme.WP = CalculateWP(connect_scheme.TotalWrkP, connect_scheme.TotalWrkQ); + + connect_scheme.Items = new List<Model.AnaSchemeItem>(); + if (pipe1_result.Items != null && pipe1_result.Items.Count > 0) + connect_scheme.Items.AddRange(pipe1_result.Items); + if (pipe2_result.Items != null && pipe2_result.Items.Count > 0) + connect_scheme.Items.AddRange(pipe2_result.Items); + + + return connect_scheme; + } } } diff --git "a/Calculation/IStation.Calculation.Dispatch/custom/shys/station/\344\272\224\345\217\267\346\262\237\351\207\221\346\265\267\346\226\271\345\220\221/OptAna.cs" "b/Calculation/IStation.Calculation.Dispatch/custom/shys/station/\344\272\224\345\217\267\346\262\237\351\207\221\346\265\267\346\226\271\345\220\221/OptAna.cs" index 7d7fd12..05e8191 100644 --- "a/Calculation/IStation.Calculation.Dispatch/custom/shys/station/\344\272\224\345\217\267\346\262\237\351\207\221\346\265\267\346\226\271\345\220\221/OptAna.cs" +++ "b/Calculation/IStation.Calculation.Dispatch/custom/shys/station/\344\272\224\345\217\267\346\262\237\351\207\221\346\265\267\346\226\271\345\220\221/OptAna.cs" @@ -9,19 +9,21 @@ namespace IStation.Calculation.DispatchAna { /// <summary> - /// 闀垮叴娉电珯璋冨害鏂规璁$畻鍣�(鏈�浼樻柟妗�) + /// 浜斿彿娌熼噾娴锋柟鍚戣皟搴︽柟妗堣绠楀櫒(鏈�浼樻柟妗�) /// </summary> - public class Calculator_OptAna_SHYS_浜斿彿娌熼噾娴锋柟鍚�: CalculatorOptAnaBase, IOptAnaCalc + public class Calculator_OptAna_SHYS_浜斿彿娌熼噾娴锋柟鍚�: CalculatorBase_SHYS_浜斿彿娌熼噾娴锋柟鍚�, IOptAnaCalc { + List<Model.MachineDetail> _allMachineList = null; + + /// <summary> /// / /// </summary> public Calculator_OptAna_SHYS_浜斿彿娌熼噾娴锋柟鍚�() { - _corpID = 4; - _stationID = 2; + } - List<Model.MachineDetail> _allMachineList = null; + #region 璁$畻 鏈�浼樻柟妗� /// <summary> @@ -41,46 +43,12 @@ this._corpID = complex_request_paras.CorpID; this._stationID = complex_request_paras.StationID; - if (complex_request_paras.ValvePara == null || complex_request_paras.ValvePara.Count() == 0) - {//榛樿涓棿闃�闂ㄦ槸鍏� - complex_request_paras.ValvePara = new List<Model.ValvePara>(); - complex_request_paras.ValvePara.Add(new Model.ValvePara() { Name = "涓棿闃�闂�", OpenStatus = 0 }); - } + var isUsePress = complex_request_paras.PressValueType == Model.RequestParasComplex.ePressValueType.鍘嬪姏 ? true : false; - if (eta_ana_records != null && eta_ana_records.Q.HasValue && eta_ana_records.H.HasValue) - { - if (complex_request_paras.OutletPipePara[0].TargetFlow < 50 || - complex_request_paras.OutletPipePara[1].TargetFlow < 50) - { - complex_request_paras.ValvePara[0].OpenStatus = 0;//鍏抽棴 - if (complex_request_paras.OutletPipePara[0].TargetFlow < 50) - { - complex_request_paras.OutletPipePara[0].TargetFlow = 0; - complex_request_paras.OutletPipePara[1].TargetFlow = eta_ana_records.Q.Value; - - complex_request_paras.OutletPipePara[0].TargetPress = eta_ana_records.H.Value; - complex_request_paras.OutletPipePara[1].TargetPress = eta_ana_records.H.Value; - } - else - { - complex_request_paras.OutletPipePara[1].TargetFlow = 0; - complex_request_paras.OutletPipePara[0].TargetFlow = eta_ana_records.Q.Value; - - complex_request_paras.OutletPipePara[0].TargetPress = eta_ana_records.H.Value; - complex_request_paras.OutletPipePara[1].TargetPress = eta_ana_records.H.Value; - } - } - else - { - complex_request_paras.OutletPipePara[0].TargetPress = eta_ana_records.H.Value; - complex_request_paras.OutletPipePara[1].TargetPress = eta_ana_records.H.Value; - } - isUsePress = false; - } - + if (isUsePress) return CalcSchemes鍘嬪姏(complex_request_paras, machine_run_status, out error_info); else @@ -107,7 +75,7 @@ if (complex_request_paras.OutletPipePara == null || complex_request_paras.OutletPipePara.Count < 2) { - error_info = "ERROR 35,闀垮叴娉电珯闇�瑕佷袱涓璺殑娴侀噺"; + error_info = "ERROR 35,浜斿彿娌熼噾娴锋柟鍚戦渶瑕佷袱涓璺殑娴侀噺"; return null; } @@ -115,7 +83,7 @@ double pipe2_TargetFlow = complex_request_paras.OutletPipePara[1].TargetFlow; if (pipe1_TargetFlow < 50 && pipe2_TargetFlow < 50) {//閮藉叧鏈� - error_info = "ERROR 35,闀垮叴娉电珯闇�瑕佷袱涓璺殑娴侀噺d閮戒负0"; + error_info = "ERROR 35,浜斿彿娌熼噾娴锋柟鍚戦渶瑕佷袱涓璺殑娴侀噺閮戒负0"; return null; } @@ -123,38 +91,38 @@ double pipe2_TargetPess = complex_request_paras.OutletPipePara[1].TargetPress; if (pipe1_TargetFlow > 50) { - if (pipe1_TargetPess < 0.01 ) + if (pipe1_TargetPess < 0.01) { - error_info = "ERROR 35,闀垮叴娉电珯闇�瑕佷竴鍙风鍘嬪姏鏈祴鍊�"; + error_info = "ERROR 35,浜斿彿娌熼噾娴锋柟鍚戦渶瑕佷竴鍙风鍘嬪姏鏈祴鍊�"; return default; } } if (pipe2_TargetFlow > 50) { - if ( pipe2_TargetPess < 0.01) + if (pipe2_TargetPess < 0.01) { - error_info = "ERROR 35,闀垮叴娉电珯闇�瑕佷簩鍙风鍘嬪姏鏈祴鍊�"; + error_info = "ERROR 35,浜斿彿娌熼噾娴锋柟鍚戦渶瑕佷簩鍙风鍘嬪姏鏈祴鍊�"; return default; } } double water_level = 0;//姘翠綅 - if (complex_request_paras.WaterLevelPara != null && complex_request_paras.WaterLevelPara.Count > 0) + if (complex_request_paras.InletPipePara != null && complex_request_paras.InletPipePara.Count > 0) { - //var inletLevel = paras.MonitorPointInfoList.Find(x => x.SignalType == IStation.SignalType.姘翠綅); - //Elevation = inletLevel?.Elevation != null ? inletLevel.Elevation.Value : 0;//鑾峰彇娴嬬偣鐨勬爣楂� - water_level = complex_request_paras.WaterLevelPara.First().Value; + if (complex_request_paras.InletPipePara.Count == 1) + { + water_level = complex_request_paras.InletPipePara[0].Value; + } + else + {//鐢ㄥ钩鍧囧�� + water_level = complex_request_paras.InletPipePara[0].Value + + complex_request_paras.InletPipePara[1].Value; + water_level = water_level / 2; + } } - //涓棿闃�闂ㄧ姸鎬� - if (complex_request_paras.ValvePara == null || complex_request_paras.ValvePara.Count < 1) - { - error_info = "ERROR 57"; - return null; - } - int isOpenMiddleValve = complex_request_paras.ValvePara.First().OpenStatus; //鏈烘车淇℃伅 - if(_allMachineList == null) + if (_allMachineList == null) { if (!BuildMachineList( out _allMachineList, @@ -165,109 +133,90 @@ } } + + - if (isOpenMiddleValve == 1)//闃�闂ㄥ紑鐨勭姸鎬佷笅 涓ょ鐩歌繛鏁版嵁鐩稿姞姹傚钩鍧囧�� - { - #region 闃�闂ㄥ紑鐨勭姸鎬佷笅 - if (pipe1_TargetPess < 0.01 || pipe2_TargetPess < 0.01) - { - error_info = "ERROR 135,闀垮叴娉电珯闃�闂ㄦ墦寮�鐨勭姸鎬佷笅, 鏈変竴涓璺帇鍔涙湭璧嬪��"; - return default; - } + Common.DispatchAnaGeneralHelper鍘嬪姏 calc_pipe1_helper = + new Common.DispatchAnaGeneralHelper鍘嬪姏(); - Common.DispatchAnaGeneralHelper鍘嬪姏 calc_pipe_helper = new Common.DispatchAnaGeneralHelper鍘嬪姏(); - calc_pipe_helper.InitialParas( - pipe1_TargetFlow + pipe2_TargetFlow, - water_level, - (pipe1_TargetPess + pipe2_TargetPess) / 2, - null, null, - _allMachineList, machine_run_status.MachineRunFilter); + Common.DispatchAnaGeneralHelper鍘嬪姏 calc_pipe2_helper = + new Common.DispatchAnaGeneralHelper鍘嬪姏(); - return calc_pipe_helper.CalcOptList(complex_request_paras.SchemeSortType, 3); - #endregion - } - else //闃�闂ㄥ叧鐨勭姸鎬佷笅 涓ょ鐩歌繛鏁版嵁鐩稿姞 - { - #region 涓棿闃�闂ㄥ叧鐨勭姸鎬佷笅 - var pipe1_machineIds = new List<long>() { 19, 22 };//1鍙锋车锛�2鍙锋车 - var pipe2_machineIds = new List<long>() { 25, 28 };//3鍙锋车锛�4鍙锋车 - - - Common.DispatchAnaGeneralHelper鍘嬪姏 calc_pipe1_helper = - new Common.DispatchAnaGeneralHelper鍘嬪姏(); - - Common.DispatchAnaGeneralHelper鍘嬪姏 calc_pipe2_helper = - new Common.DispatchAnaGeneralHelper鍘嬪姏(); - - if (pipe2_TargetFlow < 50) - {//鍙紑涓�鍙锋车浜屽彿娉� - calc_pipe1_helper.InitialParas( - pipe1_TargetFlow, - water_level, - pipe1_TargetPess, - null, null, - (from x in _allMachineList where pipe1_machineIds.Contains(x.MachineID) select x).ToList(), - machine_run_status ==null?null: machine_run_status.MachineRunFilter); - - return calc_pipe1_helper.CalcOptList(complex_request_paras.SchemeSortType, 3); - } - else if (pipe1_TargetFlow < 50) - { - calc_pipe2_helper.InitialParas( - pipe2_TargetFlow, - water_level, - pipe2_TargetPess, - null, null, - (from x in _allMachineList where pipe2_machineIds.Contains(x.MachineID) select x).ToList(), - machine_run_status == null ? null : machine_run_status.MachineRunFilter); - - return calc_pipe2_helper.CalcOptList(complex_request_paras.SchemeSortType, 3); - } + if (pipe2_TargetFlow < 50) + {//鍙紑涓�鍙锋车浜屽彿娉� calc_pipe1_helper.InitialParas( pipe1_TargetFlow, - water_level, - pipe1_TargetPess, - null, null, - (from x in _allMachineList where pipe1_machineIds.Contains(x.MachineID) select x).ToList(), - machine_run_status == null ? null : machine_run_status.MachineRunFilter); - var pipe1_result = calc_pipe1_helper.CalcOptList(complex_request_paras.SchemeSortType, 3); + water_level, true, + pipe1_TargetPess,false , + null, null, + (from x in _allMachineList where pipe1_machineIds.Contains(x.MachineID) select x).ToList(), + machine_run_status == null ? null : machine_run_status.MachineRunFilter); - - calc_pipe2_helper.InitialParas( - pipe2_TargetFlow, - water_level, - pipe2_TargetPess, - null, null, - (from x in _allMachineList where pipe2_machineIds.Contains(x.MachineID) select x).ToList(), - machine_run_status == null ? null : machine_run_status.MachineRunFilter); - - var pipe2_result = calc_pipe2_helper.CalcOptList(complex_request_paras.SchemeSortType, 3); - - if (pipe1_result == null || pipe2_result == null) - return default; - - var result_1 = pipe1_result.First(); - var result_2 = pipe2_result.First(); - - var plan = new Model.AnaScheme(); - plan.ID = 1; - plan.TotalWrkQ = result_1.TotalWrkQ + result_2.TotalWrkQ; - plan.TotalWrkH = result_1.TotalWrkH + result_2.TotalWrkH; - plan.TotalWrkP = result_1.TotalWrkP + result_2.TotalWrkP; - plan.TotalWrkE = IStation.Common.PumpParaHelper.CalculateE(plan.TotalWrkQ, plan.TotalWrkH, plan.TotalWrkP); - plan.UWP = CalculateUWP(plan.TotalWrkP, plan.TotalWrkQ, plan.TotalWrkH); - plan.WP = CalculateWP(plan.TotalWrkP, plan.TotalWrkQ); - - plan.Items = new List<Model.AnaSchemeItem>(); - if (result_1.Items != null && result_1.Items.Count > 0) - plan.Items.AddRange(result_1.Items); - if (result_2.Items != null && result_2.Items.Count > 0) - plan.Items.AddRange(result_2.Items); - - - return new List<Model.AnaScheme>() { plan }; - #endregion + return calc_pipe1_helper.CalcOptList(complex_request_paras.SchemeSortType, 3); } + else if (pipe1_TargetFlow < 50) + { + calc_pipe2_helper.InitialParas( + pipe2_TargetFlow, + water_level, true, + pipe2_TargetPess, false, + null, null, + (from x in _allMachineList where pipe2_machineIds.Contains(x.MachineID) select x).ToList(), + machine_run_status == null ? null : machine_run_status.MachineRunFilter); + + return calc_pipe2_helper.CalcOptList(complex_request_paras.SchemeSortType, 3); + } + calc_pipe1_helper.InitialParas( + pipe1_TargetFlow, + water_level,true, + pipe1_TargetPess,false, + null, null, + (from x in _allMachineList where pipe1_machineIds.Contains(x.MachineID) select x).ToList(), + machine_run_status == null ? null : machine_run_status.MachineRunFilter); + var pipe1_result = calc_pipe1_helper.CalcOptList(complex_request_paras.SchemeSortType, 3); + if (pipe1_result == null) + { + error_info = String.Format("绠¤矾涓�璋冨害鏂规鏃犳硶璁$畻,璇风‘璁ゆ暟鎹槸鍚﹀悎鐞�,娑蹭綅:{0}m,鍑哄彛鍘嬪姏:{1}MPa,娴侀噺瑕佹眰:{2}", + water_level, pipe1_TargetPess, pipe1_TargetFlow); + return null; + } + + calc_pipe2_helper.InitialParas( + pipe2_TargetFlow, + water_level,true, + pipe2_TargetPess,false, + null, null, + (from x in _allMachineList where pipe2_machineIds.Contains(x.MachineID) select x).ToList(), + machine_run_status == null ? null : machine_run_status.MachineRunFilter); + + var pipe2_result = calc_pipe2_helper.CalcOptList(complex_request_paras.SchemeSortType, 3); + if (pipe2_result == null) + { + error_info = String.Format("绠¤矾2璋冨害鏂规鏃犳硶璁$畻,璇风‘璁ゆ暟鎹槸鍚﹀悎鐞�,娑蹭綅:{0}m,鍑哄彛鍘嬪姏:{1}MPa,娴侀噺瑕佹眰:{2}", + water_level, pipe2_TargetPess, pipe2_TargetFlow); + return null; + } + + var result_1 = pipe1_result.First(); + var result_2 = pipe2_result.First(); + + var plan = new Model.AnaScheme(); + plan.ID = 1; + plan.TotalWrkQ = result_1.TotalWrkQ + result_2.TotalWrkQ; + plan.TotalWrkH = result_1.TotalWrkH + result_2.TotalWrkH; + plan.TotalWrkP = result_1.TotalWrkP + result_2.TotalWrkP; + plan.TotalWrkE = IStation.Common.PumpParaHelper.CalculateE(plan.TotalWrkQ, plan.TotalWrkH, plan.TotalWrkP); + plan.UWP = CalculateUWP(plan.TotalWrkP, plan.TotalWrkQ, plan.TotalWrkH); + plan.WP = CalculateWP(plan.TotalWrkP, plan.TotalWrkQ); + + plan.Items = new List<Model.AnaSchemeItem>(); + if (result_1.Items != null && result_1.Items.Count > 0) + plan.Items.AddRange(result_1.Items); + if (result_2.Items != null && result_2.Items.Count > 0) + plan.Items.AddRange(result_2.Items); + + + return new List<Model.AnaScheme>() { plan }; } @@ -285,7 +234,7 @@ if (complex_request_paras.OutletPipePara == null || complex_request_paras.OutletPipePara.Count < 2) { - error_info = "ERROR 35,闀垮叴娉电珯闇�瑕佷袱涓璺殑娴侀噺"; + error_info = "ERROR 35,浜斿彿娌熼噾娴锋柟鍚戦渶瑕佷袱涓璺殑娴侀噺"; return null; } @@ -293,7 +242,7 @@ double pipe2_TargetFlow = complex_request_paras.OutletPipePara[1].TargetFlow; if (pipe1_TargetFlow < 50 && pipe2_TargetFlow < 50) {//閮藉叧鏈� - error_info = "ERROR 35,闀垮叴娉电珯闇�瑕佷袱涓璺殑娴侀噺d閮戒负0"; + error_info = "ERROR 35,浜斿彿娌熼噾娴锋柟鍚戦渶瑕佷袱涓璺殑娴侀噺 閮戒负0"; return null; } @@ -304,7 +253,7 @@ { if (pipe1_TargetHead < 0.01) { - error_info = "ERROR 35,闀垮叴娉电珯闇�瑕佷竴鍙风鍘嬪姏鏈祴鍊�"; + error_info = "ERROR 35,浜斿彿娌熼噾娴锋柟鍚戦渶瑕佷竴鍙风鍘嬪姏鏈祴鍊�"; return default; } } @@ -312,20 +261,12 @@ { if (pipe2_TargetHead < 0.01) { - error_info = "ERROR 35,闀垮叴娉电珯闇�瑕佷簩鍙风鍘嬪姏鏈祴鍊�"; + error_info = "ERROR 35,浜斿彿娌熼噾娴锋柟鍚戦渶瑕佷簩鍙风鍘嬪姏鏈祴鍊�"; return default; } } - - //涓棿闃�闂ㄧ姸鎬� - if (complex_request_paras.ValvePara == null || complex_request_paras.ValvePara.Count < 1) - { - error_info = "ERROR 57"; - return null; - } - int isOpenMiddleValve = complex_request_paras.ValvePara.First().OpenStatus; //鏈烘车淇℃伅 if (_allMachineList == null) @@ -339,107 +280,93 @@ } } - if (isOpenMiddleValve == 1)//闃�闂ㄥ紑鐨勭姸鎬佷笅 涓ょ鐩歌繛鏁版嵁鐩稿姞姹傚钩鍧囧�� - { - #region 闃�闂ㄥ紑鐨勭姸鎬佷笅 - if (pipe1_TargetHead < 0.01 || pipe2_TargetHead < 0.01) - { - error_info = "ERROR 135,闀垮叴娉电珯闃�闂ㄦ墦寮�鐨勭姸鎬佷笅, 鏈変竴涓璺帇鍔涙湭璧嬪��"; - return default; - } - Common.DispatchAnaGeneralHelper鎵▼ calc_pipe_helper = new Common.DispatchAnaGeneralHelper鎵▼(); - calc_pipe_helper.InitialParas( - pipe1_TargetFlow + pipe2_TargetFlow, - (pipe1_TargetHead + pipe2_TargetHead) / 2, - null, null, - _allMachineList, machine_run_status == null ? null : machine_run_status.MachineRunFilter); - - return calc_pipe_helper.CalcOptList(complex_request_paras.SchemeSortType, 3); - #endregion - } - else //闃�闂ㄥ叧鐨勭姸鎬佷笅 涓ょ鐩歌繛鏁版嵁鐩稿姞 - { - #region 涓棿闃�闂ㄥ叧鐨勭姸鎬佷笅 - var pipe1_machineIds = new List<long>() { 19, 22 };//1鍙锋车锛�2鍙锋车 - var pipe2_machineIds = new List<long>() { 25, 28 };//3鍙锋车锛�4鍙锋车 - Common.DispatchAnaGeneralHelper鎵▼ calc_pipe1_helper = - new Common.DispatchAnaGeneralHelper鎵▼(); - Common.DispatchAnaGeneralHelper鎵▼ calc_pipe2_helper = - new Common.DispatchAnaGeneralHelper鎵▼(); - if (pipe2_TargetFlow < 50) - {//鍙紑涓�鍙锋车浜屽彿娉� - calc_pipe1_helper.InitialParas( - pipe1_TargetFlow, - pipe1_TargetHead, - null, null, - (from x in _allMachineList where pipe1_machineIds.Contains(x.MachineID) select x).ToList(), - machine_run_status == null ? null : machine_run_status.MachineRunFilter); - return calc_pipe1_helper.CalcOptList(complex_request_paras.SchemeSortType, 3); - } - else if (pipe1_TargetFlow < 50) - { - calc_pipe2_helper.InitialParas( - pipe2_TargetFlow, - pipe2_TargetHead, - null, null, - (from x in _allMachineList where pipe2_machineIds.Contains(x.MachineID) select x).ToList(), - machine_run_status == null ? null : machine_run_status.MachineRunFilter); + Common.DispatchAnaGeneralHelper鎵▼ calc_pipe1_helper = + new Common.DispatchAnaGeneralHelper鎵▼(); - return calc_pipe2_helper.CalcOptList(complex_request_paras.SchemeSortType, 3); - } + Common.DispatchAnaGeneralHelper鎵▼ calc_pipe2_helper = + new Common.DispatchAnaGeneralHelper鎵▼(); + + if (pipe2_TargetFlow < 50) + {//鍙紑涓�鍙锋车浜屽彿娉� calc_pipe1_helper.InitialParas( pipe1_TargetFlow, pipe1_TargetHead, - null, null, - (from x in _allMachineList where pipe1_machineIds.Contains(x.MachineID) select x).ToList(), - machine_run_status == null ? null : machine_run_status.MachineRunFilter); - var pipe1_result = calc_pipe1_helper.CalcOptList(complex_request_paras.SchemeSortType, 3); + null, null, + (from x in _allMachineList where pipe1_machineIds.Contains(x.MachineID) select x).ToList(), + machine_run_status == null ? null : machine_run_status.MachineRunFilter); - + return calc_pipe1_helper.CalcOptList(complex_request_paras.SchemeSortType, 3); + } + else if (pipe1_TargetFlow < 50) + { calc_pipe2_helper.InitialParas( + pipe2_TargetFlow, + pipe2_TargetHead, + null, null, + (from x in _allMachineList where pipe2_machineIds.Contains(x.MachineID) select x).ToList(), + machine_run_status == null ? null : machine_run_status.MachineRunFilter); + + return calc_pipe2_helper.CalcOptList(complex_request_paras.SchemeSortType, 3); + } + calc_pipe1_helper.InitialParas( + pipe1_TargetFlow, + pipe1_TargetHead, + null, null, + (from x in _allMachineList where pipe1_machineIds.Contains(x.MachineID) select x).ToList(), + machine_run_status == null ? null : machine_run_status.MachineRunFilter); + var pipe1_result = calc_pipe1_helper.CalcOptList(complex_request_paras.SchemeSortType, 3); + if (pipe1_result == null) + { + error_info = String.Format("绠¤矾涓�璋冨害鏂规鏃犳硶璁$畻,璇风‘璁ゆ暟鎹槸鍚﹀悎鐞�, 娴侀噺瑕佹眰:{1},鎵▼{0}m", + pipe1_TargetFlow, pipe1_TargetHead); + return null; + } + + calc_pipe2_helper.InitialParas( pipe2_TargetFlow, pipe2_TargetHead, null, null, (from x in _allMachineList where pipe2_machineIds.Contains(x.MachineID) select x).ToList(), machine_run_status == null ? null : machine_run_status.MachineRunFilter); - var pipe2_result = calc_pipe2_helper.CalcOptList(complex_request_paras.SchemeSortType, 3); - - if (pipe1_result == null || pipe2_result == null) - return default; - - var result_1 = pipe1_result.First(); - var result_2 = pipe2_result.First(); - - var plan = new Model.AnaScheme(); - plan.ID = 1; - plan.TotalWrkQ = result_1.TotalWrkQ + result_2.TotalWrkQ; - plan.TotalWrkH = result_1.TotalWrkH + result_2.TotalWrkH; - plan.TotalWrkP = result_1.TotalWrkP + result_2.TotalWrkP; - plan.TotalWrkE = IStation.Common.PumpParaHelper.CalculateE(plan.TotalWrkQ, plan.TotalWrkH, plan.TotalWrkP); - plan.UWP = CalculateUWP(plan.TotalWrkP, plan.TotalWrkQ, plan.TotalWrkH); - plan.WP = CalculateWP(plan.TotalWrkP, plan.TotalWrkQ); - - plan.Items = new List<Model.AnaSchemeItem>(); - if (result_1.Items != null && result_1.Items.Count > 0) - plan.Items.AddRange(result_1.Items); - if (result_2.Items != null && result_2.Items.Count > 0) - plan.Items.AddRange(result_2.Items); - - - return new List<Model.AnaScheme>() { plan }; - #endregion + var pipe2_result = calc_pipe2_helper.CalcOptList(complex_request_paras.SchemeSortType, 3); + if (pipe2_result == null) + { + error_info = String.Format("绠¤矾涓�璋冨害鏂规鏃犳硶璁$畻,璇风‘璁ゆ暟鎹槸鍚﹀悎鐞�, 娴侀噺瑕佹眰:{1},鎵▼{0}m", + pipe2_TargetFlow, pipe2_TargetHead); + return null; } + + var result_1 = pipe1_result.First(); + var result_2 = pipe2_result.First(); + + var plan = new Model.AnaScheme(); + plan.ID = 1; + plan.TotalWrkQ = result_1.TotalWrkQ + result_2.TotalWrkQ; + plan.TotalWrkH = (result_1.TotalWrkH + result_2.TotalWrkH)/2; + plan.TotalWrkP = result_1.TotalWrkP + result_2.TotalWrkP; + plan.TotalWrkE = IStation.Common.PumpParaHelper.CalculateE(plan.TotalWrkQ, plan.TotalWrkH, plan.TotalWrkP); + plan.UWP = CalculateUWP(plan.TotalWrkP, plan.TotalWrkQ, plan.TotalWrkH); + plan.WP = CalculateWP(plan.TotalWrkP, plan.TotalWrkQ); + + plan.Items = new List<Model.AnaSchemeItem>(); + if (result_1.Items != null && result_1.Items.Count > 0) + plan.Items.AddRange(result_1.Items); + if (result_2.Items != null && result_2.Items.Count > 0) + plan.Items.AddRange(result_2.Items); + + + return new List<Model.AnaScheme>() { plan }; } #endregion - + } diff --git "a/Calculation/IStation.Calculation.Dispatch/custom/shys/station/\345\215\227\346\261\207\345\214\227/Base.cs" "b/Calculation/IStation.Calculation.Dispatch/custom/shys/station/\345\215\227\346\261\207\345\214\227/Base.cs" new file mode 100644 index 0000000..367551e --- /dev/null +++ "b/Calculation/IStation.Calculation.Dispatch/custom/shys/station/\345\215\227\346\261\207\345\214\227/Base.cs" @@ -0,0 +1,71 @@ +锘縰sing System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace IStation.Calculation.DispatchAna +{ + /// <summary> + /// 鍗楁眹鍖楄皟搴︽柟妗堣绠楀櫒 + /// </summary> + public class CalculatorBase_SHYS_鍗楁眹鍖� : CalculatorOptAnaBase + { + /// <summary> + /// + /// </summary> + static protected List<long> machine_ids = new List<long>() { 169, 172, 175, 178, 181 }; + + + /// <summary> + /// + /// </summary> + static public long _monitor_id_涓�鍙疯繘姘寸鍘嬪姏 = 733; + /// <summary> + /// + /// </summary> + static public long _monitor_id_涓�鍙疯繘姘寸娴侀噺 = 734; + + /// <summary> + /// + /// </summary> + static public long _monitor_id_浜屽彿杩涙按绠″帇鍔� = 736; + + /// <summary> + /// + /// </summary> + static public long _monitor_id_浜屽彿杩涙按绠℃祦閲� = 737; + + + + /// <summary> + /// + /// </summary> + static public long _monitor_id_涓�鍙峰嚭姘寸鍘嬪姏 = 739; + /// <summary> + /// + /// </summary> + static public long _monitor_id_涓�鍙峰嚭姘寸娴侀噺 = 740; + + /// <summary> + /// + /// </summary> + static public long _monitor_id_浜屽彿鍑烘按绠″帇鍔� = 742; + + /// <summary> + /// + /// </summary> + static public long _monitor_id_浜屽彿鍑烘按绠℃祦閲� = 743; + + /// <summary> + /// + /// </summary> + public CalculatorBase_SHYS_鍗楁眹鍖�() + { + + _corpID = 4; + _stationID = 11; + } + + } +} diff --git "a/Calculation/IStation.Calculation.Dispatch/custom/shys/station/\345\215\227\346\261\207\345\214\227/Current.cs" "b/Calculation/IStation.Calculation.Dispatch/custom/shys/station/\345\215\227\346\261\207\345\214\227/Current.cs" new file mode 100644 index 0000000..c92240c --- /dev/null +++ "b/Calculation/IStation.Calculation.Dispatch/custom/shys/station/\345\215\227\346\261\207\345\214\227/Current.cs" @@ -0,0 +1,72 @@ +锘縰sing System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace IStation.Calculation.DispatchAna +{ + /// <summary> + /// 鍗楁眹鍖楁车绔欒皟搴︽柟妗堣绠楀櫒 + /// </summary> + internal class Calculator_Current_SHYS_鍗楁眹鍖�: CalculatorBase_SHYS_鍗楁眹鍖�, IGetCurrentRecord + { + /// <summary> + /// 鑾峰彇褰撳墠璋冨害淇℃伅 + /// </summary> + /// <param name="CorpID"></param> + /// <param name="StationID"></param> + /// <param name="error_info"></param> + /// <returns></returns> + public Model.CurrentRecordBundle GetCurrentRecord(long CorpID, long StationID, out string error_info) + { + error_info = null; + List<long> monitor_ids = new List<long>() { + _monitor_id_涓�鍙疯繘姘寸鍘嬪姏, _monitor_id_涓�鍙疯繘姘寸娴侀噺, + _monitor_id_浜屽彿杩涙按绠″帇鍔�, _monitor_id_浜屽彿杩涙按绠℃祦閲�, + _monitor_id_涓�鍙峰嚭姘寸鍘嬪姏, _monitor_id_涓�鍙峰嚭姘寸娴侀噺, + _monitor_id_浜屽彿鍑烘按绠″帇鍔�, _monitor_id_浜屽彿鍑烘按绠℃祦閲�, + }; + var monitor_records = new Service.MonitorRecord().GetLastRecord(_corpID, monitor_ids); + + Model.CurrentRecordBundle bundle = new Model.CurrentRecordBundle(); + + bundle.WaterLevelList = new List<Model.CurrentRecordBundle.RecordValue>(); + + var inlet_press1 = monitor_records.Find(x => x.MonitorPointID == _monitor_id_涓�鍙疯繘姘寸鍘嬪姏); + if (inlet_press1 != null) + { + bundle.WaterLevelList.Add(new Model.CurrentRecordBundle.RecordValue("涓�鍙疯繘姘寸鍘嬪姏", inlet_press1, 2)); + } + var inlet_press2 = monitor_records.Find(x => x.MonitorPointID == _monitor_id_浜屽彿杩涙按绠″帇鍔�); + if (inlet_press2 != null) + { + bundle.WaterLevelList.Add(new Model.CurrentRecordBundle.RecordValue("浜屽彿杩涙按绠″帇鍔�", inlet_press2, 2)); + } + + var pipe_press1 = monitor_records.Find(x => x.MonitorPointID == _monitor_id_涓�鍙峰嚭姘寸鍘嬪姏); + var pipe_press2 = monitor_records.Find(x => x.MonitorPointID == _monitor_id_浜屽彿鍑烘按绠″帇鍔�); + if (pipe_press1 != null && pipe_press2 != null) + { + bundle.PressList = new List<Model.CurrentRecordBundle.RecordValue>(); + bundle.PressList.Add(new Model.CurrentRecordBundle.RecordValue("涓�鍙风", pipe_press1, 4)); + bundle.PressList.Add(new Model.CurrentRecordBundle.RecordValue("浜屽彿绠�", pipe_press2, 4)); + } + + var pipe_flow1 = monitor_records.Find(x => x.MonitorPointID == _monitor_id_涓�鍙峰嚭姘寸娴侀噺); + var pipe_flow2 = monitor_records.Find(x => x.MonitorPointID == _monitor_id_浜屽彿鍑烘按绠℃祦閲�); + if (pipe_flow1 != null && pipe_flow2 != null) + { + bundle.FlowList = new List<Model.CurrentRecordBundle.RecordValue>(); + bundle.FlowList.Add(new Model.CurrentRecordBundle.RecordValue("涓�鍙风", pipe_flow1, 0)); + bundle.FlowList.Add(new Model.CurrentRecordBundle.RecordValue("浜屽彿绠�", pipe_flow2, 0)); + } + + + return bundle; + } + + + + } +} diff --git "a/Calculation/IStation.Calculation.Dispatch/custom/shys/station/\345\215\227\346\261\207\345\214\227/KeepStatus.cs" "b/Calculation/IStation.Calculation.Dispatch/custom/shys/station/\345\215\227\346\261\207\345\214\227/KeepStatus.cs" new file mode 100644 index 0000000..a7a4eed --- /dev/null +++ "b/Calculation/IStation.Calculation.Dispatch/custom/shys/station/\345\215\227\346\261\207\345\214\227/KeepStatus.cs" @@ -0,0 +1,165 @@ +锘縰sing System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace IStation.Calculation.DispatchAna +{ + /// <summary> + /// 鍗楁眹鍖楁车绔欒皟搴︽柟妗堣绠楀櫒 + /// </summary> + internal class Calculator_KeepStatus_SHYS_鍗楁眹鍖� : CalculatorBase_SHYS_鍗楁眹鍖�, IKeepStatusCalc + { + public Calculator_KeepStatus_SHYS_鍗楁眹鍖�() + { + + } + Model.RequestParasComplex _request_paras; + List<long> _open_machine_IdList ; + + List<Model.MachineDetail> _allMachineList = null; + /// <summary> + /// 鍒濆鍖栧弬鏁� + /// </summary> + /// <param name="complex_request_paras"></param> + /// <param name="eta_ana_records"></param> + /// <param name="open_machine_ids"></param> + public void IntialRequest( + IStation.Calculation.DispatchAna.Model.RequestParasComplex complex_request_paras, + IStation.Calculation.DispatchAna.Model.EtaAnaRecord4Station eta_ana_records, + List<long> open_machine_ids) + { + this._request_paras = complex_request_paras; + this._open_machine_IdList = open_machine_ids; + } + + + + + /// <summary> + /// 璁$畻淇濇寔褰撳墠寮�鏈虹姸鎬� + /// </summary> + /// <param name="error_info">閿欒淇℃伅</param> + /// <returns></returns> + public Model.AnaScheme Calc(out string error_info) + { + if (_open_machine_IdList == null || _open_machine_IdList.Count == 0) + { + error_info = "ERROR 25"; + return null; + } + error_info = null; + if (_request_paras == null) + { + error_info = "ERROR 30"; + return null; + } + + if (_request_paras.OutletPipePara == null || _request_paras.OutletPipePara.Count < 2) + { + error_info = "ERROR 35"; + return null; + } + double pipe1_TargetFlow = _request_paras.OutletPipePara[0].TargetFlow; + double pipe2_TargetFlow = _request_paras.OutletPipePara[1].TargetFlow; + if (pipe1_TargetFlow < 10 && pipe2_TargetFlow < 10) + { + return default; + } + + double pipe1_TargetPess = _request_paras.OutletPipePara[0].TargetPress; + double pipe2_TargetPess = _request_paras.OutletPipePara[1].TargetPress; + if (pipe1_TargetFlow > 50) + { + if (pipe1_TargetPess < 0.01) + { + error_info = "ERROR 35,鍗楁眹鍖楅渶瑕佷竴鍙风鍘嬪姏鏈祴鍊�"; + return default; + } + } + if (pipe2_TargetFlow > 50) + { + if (pipe2_TargetPess < 0.01) + { + error_info = "ERROR 35,鍗楁眹鍖楅渶瑕佷簩鍙风鍘嬪姏鏈祴鍊�"; + return default; + } + } + + double inlet_press = 0;//姘翠綅 + if (_request_paras.InletPipePara != null && _request_paras.InletPipePara.Count > 0) + { + + if (_request_paras.InletPipePara.Count > 1) + { + inlet_press = (_request_paras.InletPipePara[0].Value + _request_paras.InletPipePara[1].Value)/2; + } + else + { + inlet_press = _request_paras.InletPipePara[0].Value; + } + } + double water_level = inlet_press * 102; + + //鏈烘车淇℃伅 + if (_allMachineList == null) + { + if (!BuildMachineList( + out _allMachineList, + out error_info)) + { + error_info = "鏈烘车缁勬棤娉曟瀯寤�,ERROR 70,閿欒淇℃伅:" + error_info; + return null; + } + } + + + + + + Common.DispatchAnaGeneralHelper鍘嬪姏 calc_pipe1_helper + = new Common.DispatchAnaGeneralHelper鍘嬪姏(); + + + + + + + calc_pipe1_helper.InitialParas( + pipe1_TargetFlow+ pipe2_TargetFlow, + water_level, true, + (pipe1_TargetPess+ pipe2_TargetPess)/2,false , + null, null, + _allMachineList , null); + var pipe1_result = calc_pipe1_helper.CalcKeepStatus(_open_machine_IdList); + if (pipe1_result == null) + { + error_info = "绠¤矾涓�璋冨害鏂规鏃犳硶璁$畻璇风‘璁ゆ暟鎹槸鍚﹀悎鐞�"; + return null; + } + + + + + + var connect_scheme = new Model.AnaScheme(); + connect_scheme.ID = 1; + connect_scheme.TotalWrkQ = pipe1_result.TotalWrkQ ; + connect_scheme.TotalWrkH = (pipe1_result.TotalWrkH ) ; + connect_scheme.TotalWrkP = pipe1_result.TotalWrkP ; + connect_scheme.TotalWrkE = IStation.Common.PumpParaHelper.CalculateE(connect_scheme.TotalWrkQ, connect_scheme.TotalWrkH, connect_scheme.TotalWrkP); + connect_scheme.UWP = CalculateUWP(connect_scheme.TotalWrkP, connect_scheme.TotalWrkQ, connect_scheme.TotalWrkH); + connect_scheme.WP = CalculateWP(connect_scheme.TotalWrkP, connect_scheme.TotalWrkQ); + + connect_scheme.Items = new List<Model.AnaSchemeItem>(); + if (pipe1_result.Items != null && pipe1_result.Items.Count > 0) + connect_scheme.Items.AddRange(pipe1_result.Items); + + + + return connect_scheme; + + } + } +} diff --git "a/Calculation/IStation.Calculation.Dispatch/custom/shys/station/\345\215\227\346\261\207\345\214\227/OptAna.cs" "b/Calculation/IStation.Calculation.Dispatch/custom/shys/station/\345\215\227\346\261\207\345\214\227/OptAna.cs" new file mode 100644 index 0000000..a38c577 --- /dev/null +++ "b/Calculation/IStation.Calculation.Dispatch/custom/shys/station/\345\215\227\346\261\207\345\214\227/OptAna.cs" @@ -0,0 +1,244 @@ +锘縰sing System; +using System.Collections.Generic; +using System.Linq; +using System.Numerics; +using System.Text; +using System.Threading.Tasks; +using IStation.Calculation.DispatchAna.Model; + +namespace IStation.Calculation.DispatchAna +{ + /// <summary> + /// 鍗楁眹鍖楄皟搴︽柟妗堣绠楀櫒(鏈�浼樻柟妗�) + /// </summary> + public class Calculator_OptAna_SHYS_鍗楁眹鍖�: CalculatorBase_SHYS_鍗楁眹鍖�, IOptAnaCalc + { + List<Model.MachineDetail> _allMachineList = null; + + + /// <summary> + /// / + /// </summary> + public Calculator_OptAna_SHYS_鍗楁眹鍖�() + { + + } + + + #region 璁$畻 鏈�浼樻柟妗� + /// <summary> + /// 璁$畻 鏈�浼樻柟妗� + /// </summary> + /// <param name="complex_request_paras"></param> + /// <param name="eta_ana_records"></param> + /// <param name="machine_run_status"></param> + /// <param name="error_info"></param> + /// <returns></returns> + public List<IStation.Calculation.DispatchAna.Model.AnaScheme> CalcSchemes( + IStation.Calculation.DispatchAna.Model.RequestParasComplex complex_request_paras, + IStation.Calculation.DispatchAna.Model.EtaAnaRecord4Station eta_ana_records, + IStation.Calculation.DispatchAna.Model.MachineRunPara machine_run_status, + out string error_info) + { + this._corpID = complex_request_paras.CorpID; + this._stationID = complex_request_paras.StationID; + + + + + var isUsePress = complex_request_paras.PressValueType == Model.RequestParasComplex.ePressValueType.鍘嬪姏 ? true : false; + + + if (isUsePress) + return CalcSchemes鍘嬪姏(complex_request_paras, machine_run_status, out error_info); + else + return CalcSchemes鎵▼(complex_request_paras, machine_run_status, out error_info); + } + /// <summary> + /// + /// </summary> + /// <param name="complex_request_paras"></param> + /// <param name="machine_run_status"></param> + /// <param name="error_info"></param> + /// <returns></returns> + protected override List<IStation.Calculation.DispatchAna.Model.AnaScheme> CalcSchemes鍘嬪姏( + IStation.Calculation.DispatchAna.Model.RequestParasComplex complex_request_paras, + IStation.Calculation.DispatchAna.Model.MachineRunPara machine_run_status, + out string error_info) + { + error_info = ""; + if (complex_request_paras == null) + { + error_info = "ERROR 30"; + return null; + } + if (complex_request_paras.OutletPipePara == null || + complex_request_paras.OutletPipePara.Count < 2) + { + error_info = "ERROR 35,鍗楁眹鍖楅渶瑕佷袱涓璺殑娴侀噺"; + return null; + } + + double pipe1_TargetFlow = complex_request_paras.OutletPipePara[0].TargetFlow; + double pipe2_TargetFlow = complex_request_paras.OutletPipePara[1].TargetFlow; + if (pipe1_TargetFlow < 50 && pipe2_TargetFlow < 50) + {//閮藉叧鏈� + error_info = "ERROR 35,鍗楁眹鍖楅渶瑕佷袱涓璺殑娴侀噺閮戒负0"; + return null; + } + + double pipe1_TargetPess = complex_request_paras.OutletPipePara[0].TargetPress; + double pipe2_TargetPess = complex_request_paras.OutletPipePara[1].TargetPress; + if (pipe1_TargetFlow > 50) + { + if (pipe1_TargetPess < 0.01) + { + error_info = "ERROR 35,鍗楁眹鍖楅渶瑕佷竴鍙风鍘嬪姏鏈祴鍊�"; + return default; + } + } + if (pipe2_TargetFlow > 50) + { + if (pipe2_TargetPess < 0.01) + { + error_info = "ERROR 35,鍗楁眹鍖楅渶瑕佷簩鍙风鍘嬪姏鏈祴鍊�"; + return default; + } + } + double inlet_press = 0;//姘翠綅 + if (complex_request_paras.InletPipePara != null && complex_request_paras.InletPipePara.Count > 0) + { + if (complex_request_paras.InletPipePara.Count > 1) + { + inlet_press = (complex_request_paras.InletPipePara[0].Value + complex_request_paras.InletPipePara[1].Value) / 2; + } + else + { + inlet_press = complex_request_paras.InletPipePara[0].Value; + } + } + double water_level = inlet_press * 102; + + + //鏈烘车淇℃伅 + if (_allMachineList == null) + { + if (!BuildMachineList( + out _allMachineList, + out error_info)) + { + error_info = "鏈烘车缁勬棤娉曟瀯寤�,ERROR 70,閿欒淇℃伅:" + error_info; + return null; + } + } + + + + + Common.DispatchAnaGeneralHelper鍘嬪姏 calc_pipe1_helper = + new Common.DispatchAnaGeneralHelper鍘嬪姏(); + + + + + calc_pipe1_helper.InitialParas( + pipe1_TargetFlow + pipe2_TargetFlow, + water_level,true , + (pipe1_TargetPess + pipe2_TargetPess) / 2,false , + null, null, + _allMachineList, + machine_run_status == null ? null : machine_run_status.MachineRunFilter); + + return calc_pipe1_helper.CalcOptList(complex_request_paras.SchemeSortType, 3); + + + } + + + private List<IStation.Calculation.DispatchAna.Model.AnaScheme> CalcSchemes鎵▼( + IStation.Calculation.DispatchAna.Model.RequestParasComplex complex_request_paras, + IStation.Calculation.DispatchAna.Model.MachineRunPara machine_run_status, + out string error_info) + { + error_info = ""; + if (complex_request_paras == null) + { + error_info = "ERROR 30"; + return null; + } + if (complex_request_paras.OutletPipePara == null || + complex_request_paras.OutletPipePara.Count < 2) + { + error_info = "ERROR 35,鍗楁眹鍖楅渶瑕佷袱涓璺殑娴侀噺"; + return null; + } + + double pipe1_TargetFlow = complex_request_paras.OutletPipePara[0].TargetFlow; + double pipe2_TargetFlow = complex_request_paras.OutletPipePara[1].TargetFlow; + if (pipe1_TargetFlow < 50 && pipe2_TargetFlow < 50) + {//閮藉叧鏈� + error_info = "ERROR 35,鍗楁眹鍖楅渶瑕佷袱涓璺殑娴侀噺 閮戒负0"; + return null; + } + + double pipe1_TargetHead = complex_request_paras.OutletPipePara[0].TargetPress; + double pipe2_TargetHead = complex_request_paras.OutletPipePara[1].TargetPress; + + if (pipe1_TargetFlow > 50) + { + if (pipe1_TargetHead < 0.01) + { + error_info = "ERROR 35,鍗楁眹鍖楅渶瑕佷竴鍙风鍘嬪姏鏈祴鍊�"; + return default; + } + } + if (pipe2_TargetFlow > 50) + { + if (pipe2_TargetHead < 0.01) + { + error_info = "ERROR 35,鍗楁眹鍖楅渶瑕佷簩鍙风鍘嬪姏鏈祴鍊�"; + return default; + } + } + + + + //鏈烘车淇℃伅 + if (_allMachineList == null) + { + if (!BuildMachineList( + out _allMachineList, + out error_info)) + { + error_info = "鏈烘车缁勬棤娉曟瀯寤�,ERROR 70,閿欒淇℃伅:" + error_info; + return null; + } + } + + + + + + + Common.DispatchAnaGeneralHelper鎵▼ calc_pipe1_helper = + new Common.DispatchAnaGeneralHelper鎵▼(); + + + calc_pipe1_helper.InitialParas( + pipe1_TargetFlow+ pipe2_TargetFlow, + (pipe1_TargetHead + pipe1_TargetHead)/2, + null, null, + _allMachineList, + machine_run_status == null ? null : machine_run_status.MachineRunFilter); + + return calc_pipe1_helper.CalcOptList(complex_request_paras.SchemeSortType, 3); + + } + + #endregion + + + + + } +} diff --git "a/Calculation/IStation.Calculation.Dispatch/custom/shys/station/\346\263\260\345\222\214\346\263\265\347\253\231/Base.cs" "b/Calculation/IStation.Calculation.Dispatch/custom/shys/station/\346\263\260\345\222\214\346\263\265\347\253\231/Base.cs" new file mode 100644 index 0000000..a0b557c --- /dev/null +++ "b/Calculation/IStation.Calculation.Dispatch/custom/shys/station/\346\263\260\345\222\214\346\263\265\347\253\231/Base.cs" @@ -0,0 +1,64 @@ +锘縰sing System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace IStation.Calculation.DispatchAna +{ + /// <summary> + /// 娉板拰娉电珯璋冨害鏂规璁$畻鍣� + /// </summary> + public class CalculatorBase_SHYS_娉板拰娉电珯 : CalculatorOptAnaBase + { + /// <summary> + /// 娌℃湁5鍙锋车: 1234 67 + /// </summary> + static protected List<long> machine_ids = new List<long>() { 304,307,310,313,0,316,319 }; + + /// <summary> + /// 杩涘彛绠¤矾鍘嬪姏 + /// </summary> + public static long _montiro_id_inlet_press = 988; + + /// <summary> + /// 鍑烘按绠$璺�1鐨勫帇鍔� + /// </summary> + public static long _monitor_id_pipe_press1 = 989; + + /// <summary> + /// 鍑烘按绠$璺�1鐨勬祦閲� + /// </summary> + public static long _monitor_id_pipe_flow1 = 990; + + /// <summary> + /// 鍑烘按绠$璺�2鐨勫帇鍔� + /// </summary> + public static long _monitor_id_pipe_press2 = 992; + + /// <summary> + /// 鍑烘按绠$璺�2鐨勬祦閲� + /// </summary> + public static long _monitor_id_pipe_flow2 = 993; + + /// <summary> + /// 4鍜�6涔嬮棿闃�闂ㄧ姸鎬�, 娌℃湁鑾峰彇鍒� + /// </summary> + public static long _monitor_id_涓棿闃�闂ㄧ姸鎬乢46 = 0; + + /// <summary> + /// 6鍜�7涔嬮棿闃�闂ㄧ姸鎬�, 娌℃湁鑾峰彇鍒� + /// </summary> + public static long _monitor_id_涓棿闃�闂ㄧ姸鎬乢67 = 0; + + /// <summary> + /// + /// </summary> + public CalculatorBase_SHYS_娉板拰娉电珯() + { + _corpID = 4; + _stationID = 17; + } + + } +} diff --git "a/Calculation/IStation.Calculation.Dispatch/custom/shys/station/\346\263\260\345\222\214\346\263\265\347\253\231/Current.cs" "b/Calculation/IStation.Calculation.Dispatch/custom/shys/station/\346\263\260\345\222\214\346\263\265\347\253\231/Current.cs" new file mode 100644 index 0000000..1964dc6 --- /dev/null +++ "b/Calculation/IStation.Calculation.Dispatch/custom/shys/station/\346\263\260\345\222\214\346\263\265\347\253\231/Current.cs" @@ -0,0 +1,68 @@ +锘縰sing System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace IStation.Calculation.DispatchAna +{ + /// <summary> + /// 娉板拰娉电珯璋冨害鏂规璁$畻鍣� + /// </summary> + internal class Calculator_Current_SHYS_娉板拰娉电珯: CalculatorBase_SHYS_娉板拰娉电珯, IGetCurrentRecord + { + public Calculator_Current_SHYS_娉板拰娉电珯() + { + + } + /// <summary> + /// 鑾峰彇褰撳墠璋冨害淇℃伅 + /// </summary> + /// <param name="CorpID"></param> + /// <param name="StationID"></param> + /// <param name="error_info"></param> + /// <returns></returns> + public Model.CurrentRecordBundle GetCurrentRecord(long CorpID, long StationID, out string error_info) + { + error_info = null; + var monitor_ids = new List<long>() { + _montiro_id_inlet_press, + _monitor_id_pipe_press1, _monitor_id_pipe_flow1, + _monitor_id_pipe_press2, _monitor_id_pipe_flow2 }; + var monitor_records = new Service.MonitorRecord().GetLastRecord(_corpID, monitor_ids); + + Model.CurrentRecordBundle bundle = new Model.CurrentRecordBundle(); + + var inlet_press = monitor_records.Find(x => x.MonitorPointID == _montiro_id_inlet_press); + if (inlet_press != null) + { + bundle.WaterLevelList = new List<Model.CurrentRecordBundle.RecordValue>(); + bundle.WaterLevelList.Add(new Model.CurrentRecordBundle.RecordValue("杩涙按绠¤矾鍘嬪姏", inlet_press, 4)); + } + + var pipe_press1 = monitor_records.Find(x => x.MonitorPointID == _monitor_id_pipe_press1); + var pipe_press2 = monitor_records.Find(x => x.MonitorPointID == _monitor_id_pipe_press2); + if (pipe_press1 != null && pipe_press2 != null) + { + bundle.PressList = new List<Model.CurrentRecordBundle.RecordValue>(); + bundle.PressList.Add(new Model.CurrentRecordBundle.RecordValue("涓�鍙风", pipe_press1, 4)); + bundle.PressList.Add(new Model.CurrentRecordBundle.RecordValue("浜屽彿绠�", pipe_press2, 4)); + } + + var pipe_flow1 = monitor_records.Find(x => x.MonitorPointID == _monitor_id_pipe_flow1); + var pipe_flow2 = monitor_records.Find(x => x.MonitorPointID == _monitor_id_pipe_flow2); + if (pipe_flow1 != null && pipe_flow2 != null) + { + bundle.FlowList = new List<Model.CurrentRecordBundle.RecordValue>(); + bundle.FlowList.Add(new Model.CurrentRecordBundle.RecordValue("涓�鍙风", pipe_flow1, 0)); + bundle.FlowList.Add(new Model.CurrentRecordBundle.RecordValue("浜屽彿绠�", pipe_flow2, 0)); + } + + + return bundle; + } + + + + } +} diff --git "a/Calculation/IStation.Calculation.Dispatch/custom/shys/station/\346\263\260\345\222\214\346\263\265\347\253\231/KeepStatus.cs" "b/Calculation/IStation.Calculation.Dispatch/custom/shys/station/\346\263\260\345\222\214\346\263\265\347\253\231/KeepStatus.cs" new file mode 100644 index 0000000..ad7b6aa --- /dev/null +++ "b/Calculation/IStation.Calculation.Dispatch/custom/shys/station/\346\263\260\345\222\214\346\263\265\347\253\231/KeepStatus.cs" @@ -0,0 +1,378 @@ +锘縰sing System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace IStation.Calculation.DispatchAna +{ + /// <summary> + /// 娉板拰娉电珯璋冨害鏂规璁$畻鍣� + /// </summary> + internal class Calculator_KeepStatus_SHYS_娉板拰娉电珯 : CalculatorBase_SHYS_娉板拰娉电珯, IKeepStatusCalc + { + public Calculator_KeepStatus_SHYS_娉板拰娉电珯() + { + } + Model.RequestParasComplex _request_paras; + List<long> _open_machine_IdList ; + /// <summary> + /// 鍒濆鍖栧弬鏁� + /// </summary> + /// <param name="complex_request_paras"></param> + /// <param name="eta_ana_records"></param> + /// <param name="open_machine_ids"></param> + public void IntialRequest( + IStation.Calculation.DispatchAna.Model.RequestParasComplex complex_request_paras, + IStation.Calculation.DispatchAna.Model.EtaAnaRecord4Station eta_ana_records, + List<long> open_machine_ids) + { + this._request_paras = complex_request_paras; + this._open_machine_IdList = open_machine_ids; + } + + + + + /// <summary> + /// 璁$畻淇濇寔褰撳墠寮�鏈虹姸鎬� + /// </summary> + /// <param name="error_info">閿欒淇℃伅</param> + /// <returns></returns> + public Model.AnaScheme Calc(out string error_info) + { + if (_open_machine_IdList == null || _open_machine_IdList.Count == 0) + { + error_info = "ERROR 25"; + return null; + } + error_info = null; + if (_request_paras == null) + { + error_info = "ERROR 30"; + return null; + } + + if (_request_paras.OutletPipePara == null || _request_paras.OutletPipePara.Count < 2) + { + error_info = "ERROR 35"; + return null; + } + double pipe1_TargetFlow = _request_paras.OutletPipePara[0].TargetFlow; + double pipe2_TargetFlow = _request_paras.OutletPipePara[1].TargetFlow; + if (pipe1_TargetFlow < 10 && pipe2_TargetFlow < 10) + { + return default; + } + + double pipe1_TargetPess = _request_paras.OutletPipePara[0].TargetPress; + double pipe2_TargetPess = _request_paras.OutletPipePara[1].TargetPress; + + + double inlet_press = 0;//鍘嬪姏 + if (_request_paras.InletPipePara != null && _request_paras.InletPipePara.Count > 0) + { + inlet_press = _request_paras.InletPipePara.First().Value; + } + double water_level = inlet_press * 102; + + bool isOpenMiddleValve46 = false; + bool isOpenMiddleValve67 = true; + if (pipe2_TargetFlow > 18000) + { + isOpenMiddleValve46 = true; + isOpenMiddleValve67 = true; + } + else if (pipe2_TargetFlow > 9000) + { + isOpenMiddleValve46 = false; + isOpenMiddleValve67 = true; + } + else + { + isOpenMiddleValve46 = true; + isOpenMiddleValve67 = false; + } + + + List<Model.MachineDetail> allMachineList = null; + if (!BuildMachineList( + out allMachineList, + out error_info)) + { + error_info = "鏈烘车缁勬棤娉曟瀯寤�,ERROR 70,閿欒淇℃伅:" + error_info; + return null; + } + + if (isOpenMiddleValve46 && isOpenMiddleValve67)//闃�闂ㄥ紑鐨勭姸鎬佷笅 涓ょ鐩歌繛鏁版嵁鐩稿姞姹傚钩鍧囧�� + { + double outlet_press = 0; + if (pipe1_TargetPess > 0.1 && pipe2_TargetPess > 0.1) + { + outlet_press = (pipe1_TargetPess + pipe2_TargetPess) / 2; + } + else + { + if (pipe1_TargetPess > 0.01) + outlet_press = pipe1_TargetPess; + else if (pipe2_TargetPess > 0.01) + outlet_press = pipe2_TargetPess; + else + return null; + } + Common.DispatchAnaGeneralHelper鍘嬪姏 calc_pipe_helper = + new Common.DispatchAnaGeneralHelper鍘嬪姏(); + calc_pipe_helper.InitialParas( + pipe1_TargetFlow + pipe2_TargetFlow, + water_level,true , + outlet_press,false , + null, null, + allMachineList, null); + + return calc_pipe_helper.CalcKeepStatus(_open_machine_IdList); + } + else if (isOpenMiddleValve46 && !isOpenMiddleValve67) + {//7 骞惰仈 12346骞惰仈 + Common.DispatchAnaGeneralHelper鍘嬪姏 calc_pipe1_helper + = new Common.DispatchAnaGeneralHelper鍘嬪姏(); + + Common.DispatchAnaGeneralHelper鍘嬪姏 calc_pipe2_helper + = new Common.DispatchAnaGeneralHelper鍘嬪姏(); + + List<long> pipe1_machineIds = new List<long>() { machine_ids[0], machine_ids[1], machine_ids[2], machine_ids[3], machine_ids[5] }; + List<long> pipe2_machineIds = new List<long>() { machine_ids[6] }; + + if (pipe2_TargetFlow < 30) + {//鍙紑涓�鍙锋车浜屽彿娉� + calc_pipe1_helper.InitialParas( + pipe1_TargetFlow, + water_level,true , + pipe1_TargetPess,false , + null, null, + (from x in allMachineList where pipe1_machineIds.Contains(x.MachineID) select x).ToList(), null); + + return calc_pipe1_helper.CalcKeepStatus(_open_machine_IdList); + } + else if (pipe1_TargetFlow < 30) + { + calc_pipe2_helper.InitialParas( + pipe2_TargetFlow, + water_level, true, + pipe2_TargetPess, false, + null, null, + (from x in allMachineList where pipe2_machineIds.Contains(x.MachineID) select x).ToList(), null); + + return calc_pipe2_helper.CalcKeepStatus(_open_machine_IdList); + } + + + + + calc_pipe1_helper.InitialParas( + pipe1_TargetFlow, + water_level, true, + pipe1_TargetPess, false, + null, null, + (from x in allMachineList where pipe1_machineIds.Contains(x.MachineID) select x).ToList(), null); + var pipe1_result = calc_pipe1_helper.CalcKeepStatus(_open_machine_IdList); + + + calc_pipe2_helper.InitialParas( + pipe2_TargetFlow, + water_level,true , + pipe2_TargetPess,false , + null, null, + (from x in allMachineList where pipe2_machineIds.Contains(x.MachineID) select x).ToList(), null); + + var pipe2_result = calc_pipe2_helper.CalcKeepStatus(_open_machine_IdList); + + if (pipe1_result == null || pipe2_result == null) + return default; + + + + var connect_scheme = new Model.AnaScheme(); + connect_scheme.ID = 1; + connect_scheme.TotalWrkQ = pipe1_result.TotalWrkQ + pipe2_result.TotalWrkQ; + connect_scheme.TotalWrkH = (pipe1_result.TotalWrkH + pipe2_result.TotalWrkH) / 2; + connect_scheme.TotalWrkP = pipe1_result.TotalWrkP + pipe2_result.TotalWrkP; + connect_scheme.TotalWrkE = IStation.Common.PumpParaHelper.CalculateE(connect_scheme.TotalWrkQ, connect_scheme.TotalWrkH, connect_scheme.TotalWrkP); + connect_scheme.UWP = CalculateUWP(connect_scheme.TotalWrkP, connect_scheme.TotalWrkQ, connect_scheme.TotalWrkH); + connect_scheme.WP = CalculateWP(connect_scheme.TotalWrkP, connect_scheme.TotalWrkQ); + + connect_scheme.Items = new List<Model.AnaSchemeItem>(); + if (pipe1_result.Items != null && pipe1_result.Items.Count > 0) + connect_scheme.Items.AddRange(pipe1_result.Items); + if (pipe2_result.Items != null && pipe2_result.Items.Count > 0) + connect_scheme.Items.AddRange(pipe2_result.Items); + + + return connect_scheme; + } + + else if (!isOpenMiddleValve46 && isOpenMiddleValve67) + {//67 骞惰仈 1234骞惰仈 + + List<long> pipe1_machineIds = new List<long>() { machine_ids[0], machine_ids[1], machine_ids[2], machine_ids[3] }; + List<long> pipe2_machineIds = new List<long>() { machine_ids[5], machine_ids[6] }; + + Common.DispatchAnaGeneralHelper鍘嬪姏 calc_pipe1_helper + = new Common.DispatchAnaGeneralHelper鍘嬪姏(); + + Common.DispatchAnaGeneralHelper鍘嬪姏 calc_pipe2_helper + = new Common.DispatchAnaGeneralHelper鍘嬪姏(); + + if (pipe2_TargetFlow < 30) + {//鍙紑涓�鍙锋车浜屽彿娉� + calc_pipe1_helper.InitialParas( + pipe1_TargetFlow, + water_level, true, + pipe1_TargetPess, false, + null, null, + (from x in allMachineList where pipe1_machineIds.Contains(x.MachineID) select x).ToList(), null); + + return calc_pipe1_helper.CalcKeepStatus(_open_machine_IdList); + } + else if (pipe1_TargetFlow < 30) + { + calc_pipe2_helper.InitialParas( + pipe2_TargetFlow, + water_level,true , + pipe2_TargetPess,false , + null, null, + (from x in allMachineList where pipe2_machineIds.Contains(x.MachineID) select x).ToList(), null); + + return calc_pipe2_helper.CalcKeepStatus(_open_machine_IdList); + } + + + + + calc_pipe1_helper.InitialParas( + pipe1_TargetFlow, + water_level, true, + pipe1_TargetPess, false, + null, null, + (from x in allMachineList where pipe1_machineIds.Contains(x.MachineID) select x).ToList(), null); + var pipe1_result = calc_pipe1_helper.CalcKeepStatus(_open_machine_IdList); + + + calc_pipe2_helper.InitialParas( + pipe2_TargetFlow, + water_level, true, + pipe2_TargetPess, false, + null, null, + (from x in allMachineList where pipe2_machineIds.Contains(x.MachineID) select x).ToList(), null); + + var pipe2_result = calc_pipe2_helper.CalcKeepStatus(_open_machine_IdList); + + if (pipe1_result == null || pipe2_result == null) + return default; + + + + var connect_scheme = new Model.AnaScheme(); + connect_scheme.ID = 1; + connect_scheme.TotalWrkQ = pipe1_result.TotalWrkQ + pipe2_result.TotalWrkQ; + connect_scheme.TotalWrkH = (pipe1_result.TotalWrkH + pipe2_result.TotalWrkH) / 2; + connect_scheme.TotalWrkP = pipe1_result.TotalWrkP + pipe2_result.TotalWrkP; + connect_scheme.TotalWrkE = IStation.Common.PumpParaHelper.CalculateE(connect_scheme.TotalWrkQ, connect_scheme.TotalWrkH, connect_scheme.TotalWrkP); + connect_scheme.UWP = CalculateUWP(connect_scheme.TotalWrkP, connect_scheme.TotalWrkQ, connect_scheme.TotalWrkH); + connect_scheme.WP = CalculateWP(connect_scheme.TotalWrkP, connect_scheme.TotalWrkQ); + + connect_scheme.Items = new List<Model.AnaSchemeItem>(); + if (pipe1_result.Items != null && pipe1_result.Items.Count > 0) + connect_scheme.Items.AddRange(pipe1_result.Items); + if (pipe2_result.Items != null && pipe2_result.Items.Count > 0) + connect_scheme.Items.AddRange(pipe2_result.Items); + + + return connect_scheme; + } + + else if (!isOpenMiddleValve46 && !isOpenMiddleValve67) + {//7 骞惰仈 1234骞惰仈 + + List<long> pipe1_machineIds = new List<long>() { machine_ids[0], machine_ids[1], machine_ids[2], machine_ids[3] }; + List<long> pipe2_machineIds = new List<long>() { machine_ids[6] }; + + Common.DispatchAnaGeneralHelper鍘嬪姏 calc_pipe1_helper + = new Common.DispatchAnaGeneralHelper鍘嬪姏(); + + Common.DispatchAnaGeneralHelper鍘嬪姏 calc_pipe2_helper + = new Common.DispatchAnaGeneralHelper鍘嬪姏(); + + if (pipe2_TargetFlow < 30) + {//鍙紑涓�鍙锋车浜屽彿娉� + calc_pipe1_helper.InitialParas( + pipe1_TargetFlow, + water_level, true, + pipe1_TargetPess,false , + null, null, + (from x in allMachineList where pipe1_machineIds.Contains(x.MachineID) select x).ToList(), null); + + return calc_pipe1_helper.CalcKeepStatus(_open_machine_IdList); + } + else if (pipe1_TargetFlow < 30) + { + calc_pipe2_helper.InitialParas( + pipe2_TargetFlow, + water_level, true, + pipe2_TargetPess, false, + null, null, + (from x in allMachineList where pipe2_machineIds.Contains(x.MachineID) select x).ToList(), null); + + return calc_pipe2_helper.CalcKeepStatus(_open_machine_IdList); + } + + + + + calc_pipe1_helper.InitialParas( + pipe1_TargetFlow, + water_level,true, + pipe1_TargetPess,false , + null, null, + (from x in allMachineList where pipe1_machineIds.Contains(x.MachineID) select x).ToList(), null); + var pipe1_result = calc_pipe1_helper.CalcKeepStatus(_open_machine_IdList); + + + calc_pipe2_helper.InitialParas( + pipe2_TargetFlow, + water_level,true , + pipe2_TargetPess,false , + null, null, + (from x in allMachineList where pipe2_machineIds.Contains(x.MachineID) select x).ToList(), null); + + var pipe2_result = calc_pipe2_helper.CalcKeepStatus(_open_machine_IdList); + + if (pipe1_result == null || pipe2_result == null) + return default; + + + + var connect_scheme = new Model.AnaScheme(); + connect_scheme.ID = 1; + connect_scheme.TotalWrkQ = pipe1_result.TotalWrkQ + pipe2_result.TotalWrkQ; + connect_scheme.TotalWrkH = (pipe1_result.TotalWrkH + pipe2_result.TotalWrkH) / 2; + connect_scheme.TotalWrkP = pipe1_result.TotalWrkP + pipe2_result.TotalWrkP; + connect_scheme.TotalWrkE = IStation.Common.PumpParaHelper.CalculateE(connect_scheme.TotalWrkQ, connect_scheme.TotalWrkH, connect_scheme.TotalWrkP); + connect_scheme.UWP = CalculateUWP(connect_scheme.TotalWrkP, connect_scheme.TotalWrkQ, connect_scheme.TotalWrkH); + connect_scheme.WP = CalculateWP(connect_scheme.TotalWrkP, connect_scheme.TotalWrkQ); + + connect_scheme.Items = new List<Model.AnaSchemeItem>(); + if (pipe1_result.Items != null && pipe1_result.Items.Count > 0) + connect_scheme.Items.AddRange(pipe1_result.Items); + if (pipe2_result.Items != null && pipe2_result.Items.Count > 0) + connect_scheme.Items.AddRange(pipe2_result.Items); + + + return connect_scheme; + } + else + { + return null; + } + } + } +} diff --git "a/Calculation/IStation.Calculation.Dispatch/custom/shys/station/\346\263\260\345\222\214\346\263\265\347\253\231/OptAna.cs" "b/Calculation/IStation.Calculation.Dispatch/custom/shys/station/\346\263\260\345\222\214\346\263\265\347\253\231/OptAna.cs" new file mode 100644 index 0000000..96a8635 --- /dev/null +++ "b/Calculation/IStation.Calculation.Dispatch/custom/shys/station/\346\263\260\345\222\214\346\263\265\347\253\231/OptAna.cs" @@ -0,0 +1,483 @@ +锘縰sing System; +using System.Collections.Generic; +using System.Linq; +using System.Numerics; +using System.Text; +using System.Threading.Tasks; +using IStation.Calculation.DispatchAna.Model; + +namespace IStation.Calculation.DispatchAna +{ + /// <summary> + /// 娉板拰娉电珯璋冨害鏂规璁$畻鍣�(鏈�浼樻柟妗�) + /// </summary> + public class Calculator_OptAna_SHYS_娉板拰娉电珯: CalculatorBase_SHYS_娉板拰娉电珯, IOptAnaCalc + { + /// <summary> + /// / + /// </summary> + public Calculator_OptAna_SHYS_娉板拰娉电珯() + { + + } + List<Model.MachineDetail> _allMachineList = null; + + #region 璁$畻 鏈�浼樻柟妗� + /// <summary> + /// 璁$畻 鏈�浼樻柟妗� + /// </summary> + /// <param name="complex_request_paras"></param> + /// <param name="eta_ana_records"></param> + /// <param name="machine_run_status"></param> + /// <param name="error_info"></param> + /// <returns></returns> + public List<IStation.Calculation.DispatchAna.Model.AnaScheme> CalcSchemes( + IStation.Calculation.DispatchAna.Model.RequestParasComplex complex_request_paras, + IStation.Calculation.DispatchAna.Model.EtaAnaRecord4Station eta_ana_records, + IStation.Calculation.DispatchAna.Model.MachineRunPara machine_run_status, + out string error_info) + { + this._corpID = complex_request_paras.CorpID; + this._stationID = complex_request_paras.StationID; + + var isUsePress = complex_request_paras.PressValueType == Model.RequestParasComplex.ePressValueType.鍘嬪姏 ? true : false; + + if (isUsePress) + return CalcSchemes鍘嬪姏(complex_request_paras, machine_run_status, out error_info); + else + return CalcSchemes鎵▼(complex_request_paras, machine_run_status, out error_info); + } + /// <summary> + /// + /// </summary> + /// <param name="complex_request_paras"></param> + /// <param name="machine_run_status"></param> + /// <param name="error_info"></param> + /// <returns></returns> + protected override List<IStation.Calculation.DispatchAna.Model.AnaScheme> CalcSchemes鍘嬪姏( + IStation.Calculation.DispatchAna.Model.RequestParasComplex complex_request_paras, + IStation.Calculation.DispatchAna.Model.MachineRunPara machine_run_status, + out string error_info) + { + error_info = ""; + if (complex_request_paras == null) + { + error_info = "ERROR 30"; + return null; + } + if (complex_request_paras.OutletPipePara == null || + complex_request_paras.OutletPipePara.Count < 2) + { + error_info = "ERROR 35,娉板拰娉电珯闇�瑕佷袱涓璺殑娴侀噺"; + return null; + } + + double pipe1_TargetFlow = complex_request_paras.OutletPipePara[0].TargetFlow; + double pipe2_TargetFlow = complex_request_paras.OutletPipePara[1].TargetFlow; + if (pipe1_TargetFlow < 50 && pipe2_TargetFlow < 50) + {//閮藉叧鏈� + error_info = "ERROR 35,娉板拰娉电珯闇�瑕佷袱涓璺殑娴侀噺d閮戒负0"; + return null; + } + + double pipe1_TargetPess = complex_request_paras.OutletPipePara[0].TargetPress; + double pipe2_TargetPess = complex_request_paras.OutletPipePara[1].TargetPress; + if (pipe1_TargetFlow > 50) + { + if (pipe1_TargetPess < 0.01 ) + { + error_info = "ERROR 35,娉板拰娉电珯闇�瑕佷竴鍙风鍘嬪姏鏈祴鍊�"; + return default; + } + } + if (pipe2_TargetFlow > 50) + { + if (pipe2_TargetPess < 0.01) + { + error_info = "ERROR 35,娉板拰娉电珯闇�瑕佷簩鍙风鍘嬪姏鏈祴鍊�"; + return default; + } + } + double inlet_press = 0;//鍘嬪姏 + if (complex_request_paras.InletPipePara != null && complex_request_paras.InletPipePara.Count > 0) + { + inlet_press = complex_request_paras.InletPipePara.First().Value; + } + + + bool isOpenMiddleValve46 = false; + bool isOpenMiddleValve67 = true; + if (pipe2_TargetFlow > 18000) + { + isOpenMiddleValve46 = true; + isOpenMiddleValve67 = true; + } + else if (pipe2_TargetFlow > 9000) + { + isOpenMiddleValve46 = false; + isOpenMiddleValve67 = true; + } + else + { + isOpenMiddleValve46 = true; + isOpenMiddleValve67 = false; + } + + + //鏈烘车淇℃伅 + if(_allMachineList == null) + { + if (!BuildMachineList( + out _allMachineList, + out error_info)) + { + error_info = "鏈烘车缁勬棤娉曟瀯寤�,ERROR 70,閿欒淇℃伅:" + error_info; + return null; + } + } + + + if (isOpenMiddleValve46 && isOpenMiddleValve67)//闃�闂ㄥ紑鐨勭姸鎬佷笅 涓ょ鐩歌繛鏁版嵁鐩稿姞姹傚钩鍧囧�� + { + #region 闃�闂ㄥ紑鐨勭姸鎬佷笅 + double outlet_press = 0; + if (pipe1_TargetPess > 0.1 && pipe2_TargetPess > 0.1) + { + outlet_press = (pipe1_TargetPess + pipe2_TargetPess) / 2; + } + else + { + if (pipe1_TargetPess > 0.01) + outlet_press = pipe1_TargetPess; + else if (pipe2_TargetPess > 0.01) + outlet_press = pipe2_TargetPess; + else + return null; + } + + if (pipe1_TargetPess < 0.01 || pipe2_TargetPess < 0.01) + { + error_info = "ERROR 135,娉板拰娉电珯闃�闂ㄦ墦寮�鐨勭姸鎬佷笅, 鏈変竴涓璺帇鍔涙湭璧嬪��"; + return default; + } + + Common.DispatchAnaGeneralHelper鍘嬪姏 calc_pipe_helper = new Common.DispatchAnaGeneralHelper鍘嬪姏(); + calc_pipe_helper.InitialParas( + pipe1_TargetFlow + pipe2_TargetFlow, + inlet_press, false , + outlet_press,false , + null, null, + _allMachineList, machine_run_status == null ? null : machine_run_status.MachineRunFilter); + + return calc_pipe_helper.CalcOptList(complex_request_paras.SchemeSortType, 3); + #endregion + } + else + { + List<long> pipe1_machineIds = new List<long>() { machine_ids[0], machine_ids[1], machine_ids[2], machine_ids[3], machine_ids[5] }; + List<long> pipe2_machineIds = new List<long>() { machine_ids[6] }; + + if (isOpenMiddleValve46 && !isOpenMiddleValve67) + {//7 骞惰仈 12346骞惰仈 + pipe1_machineIds = new List<long>() { machine_ids[0], machine_ids[1], machine_ids[2], machine_ids[3], machine_ids[5] }; + pipe2_machineIds = new List<long>() { machine_ids[6] }; + } + else if (!isOpenMiddleValve46 && isOpenMiddleValve67) + {//67 骞惰仈 1234骞惰仈 + pipe1_machineIds = new List<long>() { machine_ids[0], machine_ids[1], machine_ids[2], machine_ids[3] }; + pipe2_machineIds = new List<long>() { machine_ids[5], machine_ids[6] }; + } + else if (!isOpenMiddleValve46 && !isOpenMiddleValve67) + {//7 骞惰仈 1234骞惰仈 + pipe1_machineIds = new List<long>() { machine_ids[0], machine_ids[1], machine_ids[2], machine_ids[3] }; + pipe2_machineIds = new List<long>() { machine_ids[6] }; + } + #region + + + + Common.DispatchAnaGeneralHelper鍘嬪姏 calc_pipe1_helper = + new Common.DispatchAnaGeneralHelper鍘嬪姏(); + + Common.DispatchAnaGeneralHelper鍘嬪姏 calc_pipe2_helper = + new Common.DispatchAnaGeneralHelper鍘嬪姏(); + + if (pipe2_TargetFlow < 50) + {//鍙紑涓�鍙锋车浜屽彿娉� + calc_pipe1_helper.InitialParas( + pipe1_TargetFlow, + inlet_press, false , + pipe1_TargetPess,false , + null, null, + (from x in _allMachineList where pipe1_machineIds.Contains(x.MachineID) select x).ToList(), + machine_run_status == null ? null : machine_run_status.MachineRunFilter); + + return calc_pipe1_helper.CalcOptList(complex_request_paras.SchemeSortType, 3); + } + else if (pipe1_TargetFlow < 50) + { + calc_pipe2_helper.InitialParas( + pipe2_TargetFlow, + inlet_press, false , + pipe2_TargetPess,false , + null, null, + (from x in _allMachineList where pipe2_machineIds.Contains(x.MachineID) select x).ToList(), + machine_run_status == null ? null : machine_run_status.MachineRunFilter); + + return calc_pipe2_helper.CalcOptList(complex_request_paras.SchemeSortType, 3); + } + calc_pipe1_helper.InitialParas( + pipe1_TargetFlow, + inlet_press, false , + pipe1_TargetPess,false, + null, null, + (from x in _allMachineList where pipe1_machineIds.Contains(x.MachineID) select x).ToList(), + machine_run_status == null ? null : machine_run_status.MachineRunFilter); + var pipe1_result = calc_pipe1_helper.CalcOptList(complex_request_paras.SchemeSortType, 3); + if (pipe1_result == null || pipe1_result.Count() == 0) + { + error_info = String.Format("绠¤矾涓�璋冨害鏂规鏃犳硶璁$畻,璇风‘璁ゆ暟鎹槸鍚﹀悎鐞�,杩涘彛鍘嬪姏:{0}MPa,鍑哄彛鍘嬪姏:{1}MPa,娴侀噺瑕佹眰:{2}", + inlet_press, pipe1_TargetPess, pipe1_TargetFlow); + return null; + } + + calc_pipe2_helper.InitialParas( + pipe2_TargetFlow, + inlet_press, false , + pipe2_TargetPess,false , + null, null, + (from x in _allMachineList where pipe2_machineIds.Contains(x.MachineID) select x).ToList(), + machine_run_status == null ? null : machine_run_status.MachineRunFilter); + + var pipe2_result = calc_pipe2_helper.CalcOptList(complex_request_paras.SchemeSortType, 3); + if (pipe2_result == null || pipe2_result.Count() == 0) + { + error_info = String.Format("绠¤矾浜岃皟搴︽柟妗堟棤娉曡绠�,璇风‘璁ゆ暟鎹槸鍚﹀悎鐞�,杩涘彛鍘嬪姏:{0}MPa,鍑哄彛鍘嬪姏:{1}MPa,娴侀噺瑕佹眰:{2}", + inlet_press, pipe2_TargetPess, pipe2_TargetFlow); + return null; + } + + var result_1 = pipe1_result.First(); + var result_2 = pipe2_result.First(); + + var plan = new Model.AnaScheme(); + plan.ID = 1; + plan.TotalWrkQ = result_1.TotalWrkQ + result_2.TotalWrkQ; + plan.TotalWrkH = result_1.TotalWrkH + result_2.TotalWrkH; + plan.TotalWrkP = result_1.TotalWrkP + result_2.TotalWrkP; + plan.TotalWrkE = IStation.Common.PumpParaHelper.CalculateE(plan.TotalWrkQ, plan.TotalWrkH, plan.TotalWrkP); + plan.UWP = CalculateUWP(plan.TotalWrkP, plan.TotalWrkQ, plan.TotalWrkH); + plan.WP = CalculateWP(plan.TotalWrkP, plan.TotalWrkQ); + + plan.Items = new List<Model.AnaSchemeItem>(); + if (result_1.Items != null && result_1.Items.Count > 0) + plan.Items.AddRange(result_1.Items); + if (result_2.Items != null && result_2.Items.Count > 0) + plan.Items.AddRange(result_2.Items); + + + return new List<Model.AnaScheme>() { plan }; + #endregion + } + } + + + private List<IStation.Calculation.DispatchAna.Model.AnaScheme> CalcSchemes鎵▼( + IStation.Calculation.DispatchAna.Model.RequestParasComplex complex_request_paras, + IStation.Calculation.DispatchAna.Model.MachineRunPara machine_run_status, + out string error_info) + { + error_info = ""; + if (complex_request_paras == null) + { + error_info = "ERROR 30"; + return null; + } + if (complex_request_paras.OutletPipePara == null || + complex_request_paras.OutletPipePara.Count < 2) + { + error_info = "ERROR 35,娉板拰娉电珯闇�瑕佷袱涓璺殑娴侀噺"; + return null; + } + + double pipe1_TargetFlow = complex_request_paras.OutletPipePara[0].TargetFlow; + double pipe2_TargetFlow = complex_request_paras.OutletPipePara[1].TargetFlow; + if (pipe1_TargetFlow < 50 && pipe2_TargetFlow < 50) + {//閮藉叧鏈� + error_info = "ERROR 35,娉板拰娉电珯闇�瑕佷袱涓璺殑娴侀噺d閮戒负0"; + return null; + } + + double pipe1_TargetHead = complex_request_paras.OutletPipePara[0].TargetPress; + double pipe2_TargetHead = complex_request_paras.OutletPipePara[1].TargetPress; + + if (pipe1_TargetFlow > 50) + { + if (pipe1_TargetHead < 0.01) + { + error_info = "ERROR 35,娉板拰娉电珯闇�瑕佷竴鍙风鍘嬪姏鏈祴鍊�"; + return default; + } + } + if (pipe2_TargetFlow > 50) + { + if (pipe2_TargetHead < 0.01) + { + error_info = "ERROR 35,娉板拰娉电珯闇�瑕佷簩鍙风鍘嬪姏鏈祴鍊�"; + return default; + } + } + + bool isOpenMiddleValve46 = false; + bool isOpenMiddleValve67 = true; + if (pipe2_TargetFlow > 18000) + { + isOpenMiddleValve46 = true; + isOpenMiddleValve67 = true; + } + else if (pipe2_TargetFlow > 9000) + { + isOpenMiddleValve46 = false; + isOpenMiddleValve67 = true; + } + else + { + isOpenMiddleValve46 = true; + isOpenMiddleValve67 = false; + } + + //鏈烘车淇℃伅 + if (_allMachineList == null) + { + if (!BuildMachineList( + out _allMachineList, + out error_info)) + { + error_info = "鏈烘车缁勬棤娉曟瀯寤�,ERROR 70,閿欒淇℃伅:" + error_info; + return null; + } + } + + if (isOpenMiddleValve46 && isOpenMiddleValve67)//闃�闂ㄥ紑鐨勭姸鎬佷笅 涓ょ鐩歌繛鏁版嵁鐩稿姞姹傚钩鍧囧�� + { + #region 闃�闂ㄥ紑鐨勭姸鎬佷笅 + if (pipe1_TargetHead < 0.01 || pipe2_TargetHead < 0.01) + { + error_info = "ERROR 135,娉板拰娉电珯闃�闂ㄦ墦寮�鐨勭姸鎬佷笅, 鏈変竴涓璺帇鍔涙湭璧嬪��"; + return default; + } + Common.DispatchAnaGeneralHelper鎵▼ calc_pipe_helper = new Common.DispatchAnaGeneralHelper鎵▼(); + calc_pipe_helper.InitialParas( + pipe1_TargetFlow + pipe2_TargetFlow, + (pipe1_TargetHead + pipe2_TargetHead) / 2, + null, null, + _allMachineList, machine_run_status == null ? null : machine_run_status.MachineRunFilter); + + return calc_pipe_helper.CalcOptList(complex_request_paras.SchemeSortType, 3); + #endregion + } + else //闃�闂ㄥ叧鐨勭姸鎬佷笅 涓ょ鐩歌繛鏁版嵁鐩稿姞 + { + List<long> pipe1_machineIds = new List<long>() { machine_ids[0], machine_ids[1], machine_ids[2], machine_ids[3], machine_ids[5] }; + List<long> pipe2_machineIds = new List<long>() { machine_ids[6] }; + + if (isOpenMiddleValve46 && !isOpenMiddleValve67) + {//7 骞惰仈 12346骞惰仈 + pipe1_machineIds = new List<long>() { machine_ids[0], machine_ids[1], machine_ids[2], machine_ids[3], machine_ids[5] }; + pipe2_machineIds = new List<long>() { machine_ids[6] }; + } + else if (!isOpenMiddleValve46 && isOpenMiddleValve67) + {//67 骞惰仈 1234骞惰仈 + pipe1_machineIds = new List<long>() { machine_ids[0], machine_ids[1], machine_ids[2], machine_ids[3] }; + pipe2_machineIds = new List<long>() { machine_ids[5], machine_ids[6] }; + } + else if (!isOpenMiddleValve46 && !isOpenMiddleValve67) + {//7 骞惰仈 1234骞惰仈 + pipe1_machineIds = new List<long>() { machine_ids[0], machine_ids[1], machine_ids[2], machine_ids[3] }; + pipe2_machineIds = new List<long>() { machine_ids[6] }; + } + + #region 涓棿闃�闂ㄥ叧鐨勭姸鎬佷笅 + + + + Common.DispatchAnaGeneralHelper鎵▼ calc_pipe1_helper = + new Common.DispatchAnaGeneralHelper鎵▼(); + + Common.DispatchAnaGeneralHelper鎵▼ calc_pipe2_helper = + new Common.DispatchAnaGeneralHelper鎵▼(); + + if (pipe2_TargetFlow < 50) + {//鍙紑涓�鍙锋车浜屽彿娉� + calc_pipe1_helper.InitialParas( + pipe1_TargetFlow, + pipe1_TargetHead, + null, null, + (from x in _allMachineList where pipe1_machineIds.Contains(x.MachineID) select x).ToList(), + machine_run_status == null ? null : machine_run_status.MachineRunFilter); + + return calc_pipe1_helper.CalcOptList(complex_request_paras.SchemeSortType, 3); + } + else if (pipe1_TargetFlow < 50) + { + calc_pipe2_helper.InitialParas( + pipe2_TargetFlow, + pipe2_TargetHead, + null, null, + (from x in _allMachineList where pipe2_machineIds.Contains(x.MachineID) select x).ToList(), + machine_run_status == null ? null : machine_run_status.MachineRunFilter); + + return calc_pipe2_helper.CalcOptList(complex_request_paras.SchemeSortType, 3); + } + calc_pipe1_helper.InitialParas( + pipe1_TargetFlow, + pipe1_TargetHead, + null, null, + (from x in _allMachineList where pipe1_machineIds.Contains(x.MachineID) select x).ToList(), + machine_run_status == null ? null : machine_run_status.MachineRunFilter); + var pipe1_result = calc_pipe1_helper.CalcOptList(complex_request_paras.SchemeSortType, 3); + + + calc_pipe2_helper.InitialParas( + pipe2_TargetFlow, + pipe2_TargetHead, + null, null, + (from x in _allMachineList where pipe2_machineIds.Contains(x.MachineID) select x).ToList(), + machine_run_status == null ? null : machine_run_status.MachineRunFilter); + + var pipe2_result = calc_pipe2_helper.CalcOptList(complex_request_paras.SchemeSortType, 3); + + if (pipe1_result == null || pipe2_result == null) + return default; + + var result_1 = pipe1_result.First(); + var result_2 = pipe2_result.First(); + + var plan = new Model.AnaScheme(); + plan.ID = 1; + plan.TotalWrkQ = result_1.TotalWrkQ + result_2.TotalWrkQ; + plan.TotalWrkH = (result_1.TotalWrkH + result_2.TotalWrkH)/2; + plan.TotalWrkP = result_1.TotalWrkP + result_2.TotalWrkP; + plan.TotalWrkE = IStation.Common.PumpParaHelper.CalculateE(plan.TotalWrkQ, plan.TotalWrkH, plan.TotalWrkP); + plan.UWP = CalculateUWP(plan.TotalWrkP, plan.TotalWrkQ, plan.TotalWrkH); + plan.WP = CalculateWP(plan.TotalWrkP, plan.TotalWrkQ); + + plan.Items = new List<Model.AnaSchemeItem>(); + if (result_1.Items != null && result_1.Items.Count > 0) + plan.Items.AddRange(result_1.Items); + if (result_2.Items != null && result_2.Items.Count > 0) + plan.Items.AddRange(result_2.Items); + + + return new List<Model.AnaScheme>() { plan }; + #endregion + } + } + + #endregion + + + + + } +} diff --git "a/Calculation/IStation.Calculation.Dispatch/custom/shys/station/\351\207\221\346\265\267\346\263\265\347\253\231/Base.cs" "b/Calculation/IStation.Calculation.Dispatch/custom/shys/station/\351\207\221\346\265\267\346\263\265\347\253\231/Base.cs" new file mode 100644 index 0000000..1ad9787 --- /dev/null +++ "b/Calculation/IStation.Calculation.Dispatch/custom/shys/station/\351\207\221\346\265\267\346\263\265\347\253\231/Base.cs" @@ -0,0 +1,90 @@ +锘縰sing System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace IStation.Calculation.DispatchAna +{ + /// <summary> + /// 閲戞捣娉电珯璋冨害鏂规璁$畻鍣� + /// </summary> + public class CalculatorBase_SHYS_閲戞捣娉电珯 : CalculatorOptAnaBase + { + /// <summary> + /// + /// </summary> + protected List<long> machine_ids = new List<long>() { 199,202,208,211,214,217,220,223,226,229 }; + + /// <summary> + /// + /// </summary> + protected List<long> pipe1_machineIds = null;//1鍙锋车锛�2鍙锋车,3鍙锋车 + /// <summary> + /// + /// </summary> + protected List<long> pipe2_machineIds = null;//锛�4鍙锋车 锛�5鍙锋车 锛�6鍙锋车 + /// <summary> + /// + /// </summary> + protected List<long> pipe3_machineIds = null;//锛�7鍙锋车 锛�8鍙锋车锛� 9鍙锋车 锛�10鍙锋车 + /// <summary> + /// + /// </summary> + static public long _monitor_id_涓�鍙疯繘鍙g_鍘嬪姏 = 611; + /// <summary> + /// + /// </summary> + static public long _monitor_id_浜屽彿杩涘彛绠鍘嬪姏 = 613; + + /// <summary> + /// + /// </summary> + static public long _monitor_id_涓�鍙疯繘鍙g_娴侀噺 = 612; + /// <summary> + /// + /// </summary> + static public long _monitor_id_浜屽彿杩涘彛绠娴侀噺 = 614; + + /// <summary> + /// + /// </summary> + static public long _monitor_id_涓�鍙风鍘嬪姏_鍗楁眹1 = 615; + /// <summary> + /// + /// </summary> + static public long _monitor_id_涓�鍙风娴侀噺_鍗楁眹1 = 616; + + /// <summary> + /// + /// </summary> + static public long _monitor_id_浜屽彿绠″帇鍔沖鍗楁眹2 = 618; + /// <summary> + /// + /// </summary> + static public long _monitor_id_浜屽彿绠℃祦閲廮鍗楁眹2 = 619; + + /// <summary> + /// + /// </summary> + static public long _monitor_id_涓夊彿绠″帇鍔沖宸濇矙 = 621; + /// <summary> + /// + /// </summary> + static public long _monitor_id_涓夊彿绠℃祦閲廮宸濇矙 = 622; + + /// <summary> + /// + /// </summary> + public CalculatorBase_SHYS_閲戞捣娉电珯() + { + pipe1_machineIds = new List<long>() { machine_ids[0], machine_ids[1], machine_ids[2] };//1鍙锋车锛�2鍙锋车,3鍙锋车 + pipe2_machineIds = new List<long>() { machine_ids[3], machine_ids[4], machine_ids[5] };//锛�4鍙锋车 锛�5鍙锋车 锛�6鍙锋车 + pipe3_machineIds = new List<long>() { machine_ids[6], machine_ids[7], machine_ids[8], machine_ids[9] };//锛�7鍙锋车 锛�8鍙锋车 锛�9鍙锋车 锛�10鍙锋车 + + _corpID = 4; + _stationID = 10; + } + + } +} diff --git "a/Calculation/IStation.Calculation.Dispatch/custom/shys/station/\351\207\221\346\265\267\346\263\265\347\253\231/Current.cs" "b/Calculation/IStation.Calculation.Dispatch/custom/shys/station/\351\207\221\346\265\267\346\263\265\347\253\231/Current.cs" new file mode 100644 index 0000000..641523e --- /dev/null +++ "b/Calculation/IStation.Calculation.Dispatch/custom/shys/station/\351\207\221\346\265\267\346\263\265\347\253\231/Current.cs" @@ -0,0 +1,81 @@ +锘縰sing System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace IStation.Calculation.DispatchAna +{ + /// <summary> + /// 闀垮叴娉电珯璋冨害鏂规璁$畻鍣� + /// </summary> + internal class Calculator_Current_SHYS_閲戞捣娉电珯: CalculatorBase_SHYS_閲戞捣娉电珯, IGetCurrentRecord + { + public Calculator_Current_SHYS_閲戞捣娉电珯() + { + + } + /// <summary> + /// 鑾峰彇褰撳墠璋冨害淇℃伅 + /// </summary> + /// <param name="CorpID"></param> + /// <param name="StationID"></param> + /// <param name="error_info"></param> + /// <returns></returns> + public Model.CurrentRecordBundle GetCurrentRecord(long CorpID, long StationID, out string error_info) + { + error_info = null; + List<long> monitor_ids = new List<long>() { + _monitor_id_涓�鍙疯繘鍙g_鍘嬪姏,_monitor_id_涓�鍙疯繘鍙g_娴侀噺, + _monitor_id_浜屽彿杩涘彛绠鍘嬪姏, _monitor_id_浜屽彿杩涘彛绠娴侀噺, + _monitor_id_涓�鍙风鍘嬪姏_鍗楁眹1, _monitor_id_浜屽彿绠″帇鍔沖鍗楁眹2, + _monitor_id_涓�鍙风娴侀噺_鍗楁眹1, _monitor_id_浜屽彿绠℃祦閲廮鍗楁眹2 , + _monitor_id_涓夊彿绠″帇鍔沖宸濇矙, _monitor_id_涓夊彿绠℃祦閲廮宸濇矙}; + var monitor_records = new Service.MonitorRecord().GetLastRecord(_corpID, monitor_ids); + + Model.CurrentRecordBundle bundle = new Model.CurrentRecordBundle(); + + bundle.WaterLevelList = new List<Model.CurrentRecordBundle.RecordValue>(); + + var press_涓�鍙疯繘鍙g = monitor_records.Find(x => x.MonitorPointID == _monitor_id_涓�鍙疯繘鍙g_鍘嬪姏); + if (press_涓�鍙疯繘鍙g != null) + { + bundle.WaterLevelList.Add(new Model.CurrentRecordBundle.RecordValue("涓�鍙疯繘鍙g鍘嬪姏", press_涓�鍙疯繘鍙g, 4)); + } + var press_浜屽彿杩涘彛绠� = monitor_records.Find(x => x.MonitorPointID == _monitor_id_浜屽彿杩涘彛绠鍘嬪姏); + if (press_浜屽彿杩涘彛绠� != null) + { + bundle.WaterLevelList.Add(new Model.CurrentRecordBundle.RecordValue("浜屽彿杩涘彛绠″帇鍔�", press_浜屽彿杩涘彛绠�, 4)); + } + + var pipe_press1 = monitor_records.Find(x => x.MonitorPointID == _monitor_id_涓�鍙风鍘嬪姏_鍗楁眹1); + var pipe_press2 = monitor_records.Find(x => x.MonitorPointID == _monitor_id_浜屽彿绠″帇鍔沖鍗楁眹2); + var pipe_press3 = monitor_records.Find(x => x.MonitorPointID == _monitor_id_涓夊彿绠″帇鍔沖宸濇矙); + + if (pipe_press1 != null && pipe_press2 != null && pipe_press3 != null) + { + bundle.PressList = new List<Model.CurrentRecordBundle.RecordValue>(); + bundle.PressList.Add(new Model.CurrentRecordBundle.RecordValue("涓�鍙峰嚭鍙g", pipe_press1, 4)); + bundle.PressList.Add(new Model.CurrentRecordBundle.RecordValue("浜屽彿鍑哄彛绠�", pipe_press2, 4)); + bundle.PressList.Add(new Model.CurrentRecordBundle.RecordValue("涓夊彿鍑哄彛绠�", pipe_press3, 4)); + } + + var pipe_flow1 = monitor_records.Find(x => x.MonitorPointID == _monitor_id_涓�鍙风娴侀噺_鍗楁眹1); + var pipe_flow2 = monitor_records.Find(x => x.MonitorPointID == _monitor_id_浜屽彿绠℃祦閲廮鍗楁眹2); + var pipe_flow3 = monitor_records.Find(x => x.MonitorPointID == _monitor_id_涓夊彿绠℃祦閲廮宸濇矙); + if (pipe_flow1 != null && pipe_flow2 != null && pipe_flow3 != null) + { + bundle.FlowList = new List<Model.CurrentRecordBundle.RecordValue>(); + bundle.FlowList.Add(new Model.CurrentRecordBundle.RecordValue("涓�鍙峰嚭鍙g", pipe_flow1, 0)); + bundle.FlowList.Add(new Model.CurrentRecordBundle.RecordValue("浜屽彿鍑哄彛绠�", pipe_flow2, 0)); + bundle.FlowList.Add(new Model.CurrentRecordBundle.RecordValue("涓夊彿鍑哄彛绠�", pipe_flow3, 0)); + } + + + return bundle; + } + + + + } +} diff --git "a/Calculation/IStation.Calculation.Dispatch/custom/shys/station/\351\207\221\346\265\267\346\263\265\347\253\231/KeepStatus.cs" "b/Calculation/IStation.Calculation.Dispatch/custom/shys/station/\351\207\221\346\265\267\346\263\265\347\253\231/KeepStatus.cs" new file mode 100644 index 0000000..8712dce --- /dev/null +++ "b/Calculation/IStation.Calculation.Dispatch/custom/shys/station/\351\207\221\346\265\267\346\263\265\347\253\231/KeepStatus.cs" @@ -0,0 +1,231 @@ +锘縰sing IStation.Calculation.DispatchAna.Model; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace IStation.Calculation.DispatchAna +{ + /// <summary> + /// 闀垮叴娉电珯璋冨害鏂规璁$畻鍣� + /// </summary> + internal class Calculator_KeepStatus_SHYS_閲戞捣娉电珯 : CalculatorBase_SHYS_閲戞捣娉电珯, IKeepStatusCalc + { + public Calculator_KeepStatus_SHYS_閲戞捣娉电珯() + { + + } + Model.RequestParasComplex _request_paras; + List<long> _open_machine_IdList ; + /// <summary> + /// 鍒濆鍖栧弬鏁� + /// </summary> + /// <param name="complex_request_paras"></param> + /// <param name="eta_ana_records"></param> + /// <param name="open_machine_ids"></param> + public void IntialRequest( + IStation.Calculation.DispatchAna.Model.RequestParasComplex complex_request_paras, + IStation.Calculation.DispatchAna.Model.EtaAnaRecord4Station eta_ana_records, + List<long> open_machine_ids) + { + this._request_paras = complex_request_paras; + this._open_machine_IdList = open_machine_ids; + } + + + List<Model.MachineDetail> _allMachineList = null; + + /// <summary> + /// 璁$畻淇濇寔褰撳墠寮�鏈虹姸鎬� + /// </summary> + /// <param name="error_info">閿欒淇℃伅</param> + /// <returns></returns> + public Model.AnaScheme Calc(out string error_info) + { + if (_open_machine_IdList == null || _open_machine_IdList.Count == 0) + { + error_info = "ERROR 25"; + return null; + } + error_info = null; + if (_request_paras == null) + { + error_info = "ERROR 30"; + return null; + } + + if (_request_paras.OutletPipePara == null || _request_paras.OutletPipePara.Count < 3) + { + error_info = "ERROR 35"; + return null; + } + double pipe1_TargetFlow = _request_paras.OutletPipePara[0].TargetFlow; + double pipe2_TargetFlow = _request_paras.OutletPipePara[1].TargetFlow; + double pipe3_TargetFlow = _request_paras.OutletPipePara[2].TargetFlow; + if (pipe1_TargetFlow < 10 && pipe2_TargetFlow < 10 && pipe3_TargetFlow < 10) + { + return default; + } + + double pipe1_TargetPess = _request_paras.OutletPipePara[0].TargetPress; + double pipe2_TargetPess = _request_paras.OutletPipePara[1].TargetPress; + double pipe3_TargetPess = _request_paras.OutletPipePara[2].TargetPress; + if (pipe1_TargetFlow > 50) + { + if (pipe1_TargetPess < 0.01) + { + error_info = "ERROR 35,閲戞捣娉电珯闇�瑕佷竴鍙风鍘嬪姏鏈祴鍊�"; + return default; + } + } + if (pipe2_TargetFlow > 50) + { + if (pipe2_TargetPess < 0.01) + { + error_info = "ERROR 35,閲戞捣娉电珯闇�瑕佷簩鍙风鍘嬪姏鏈祴鍊�"; + return default; + } + } + if (pipe3_TargetFlow > 50) + { + if (pipe3_TargetPess < 0.01) + { + error_info = "ERROR 35,閲戞捣娉电珯闇�瑕佷笁鍙风鍘嬪姏鏈祴鍊�"; + return default; + } + } + + double inlet_press = 0;//杩涘彛鍘嬪姏(鏈変袱涓繘鍙e帇鍔�) + if (_request_paras.InletPipePara != null && _request_paras.InletPipePara.Count > 0) + { + if (_request_paras.InletPipePara.Count == 1) + { + inlet_press = _request_paras.InletPipePara[0].Value; + } + else 銆� + {//鐢ㄥ钩鍧囧�� + inlet_press = _request_paras.InletPipePara[0].Value+ + _request_paras.InletPipePara[1].Value; + inlet_press = inlet_press / 2; + } + } + double water_level = inlet_press * 100; + + + //鏈烘车淇℃伅 + if (_allMachineList == null) + { + if (!BuildMachineList( + out _allMachineList, + out error_info)) + { + error_info = "鏈烘车缁勬棤娉曟瀯寤�,ERROR 70,閿欒淇℃伅:" + error_info; + return null; + } + } + + + + + Common.DispatchAnaGeneralHelper鍘嬪姏 calc_pipe1_helper + = new Common.DispatchAnaGeneralHelper鍘嬪姏(); + + Common.DispatchAnaGeneralHelper鍘嬪姏 calc_pipe2_helper + = new Common.DispatchAnaGeneralHelper鍘嬪姏(); + + Common.DispatchAnaGeneralHelper鍘嬪姏 calc_pipe3_helper + = new Common.DispatchAnaGeneralHelper鍘嬪姏(); + + + double totalQ = 0, totalH = 0, totalP = 0; + int pipe_count = 0; + + IStation.Calculation.DispatchAna.Model.AnaScheme pipe1_result = null; + if (pipe1_TargetFlow > 50) + { + calc_pipe1_helper.InitialParas( + pipe1_TargetFlow, + water_level,true , + pipe1_TargetPess,false , + null, null, + (from x in _allMachineList where pipe1_machineIds.Contains(x.MachineID) select x).ToList(), null); + pipe1_result = calc_pipe1_helper.CalcKeepStatus(_open_machine_IdList); + if (pipe1_result == null) + { + error_info = "绠¤矾涓�璋冨害鏂规鏃犳硶璁$畻璇风‘璁ゆ暟鎹槸鍚﹀悎鐞�"; + return null; + } + totalQ += pipe1_result.TotalWrkQ; + totalP += pipe1_result.TotalWrkP; + totalH += pipe1_result.TotalWrkH; + pipe_count++; + } + + + + IStation.Calculation.DispatchAna.Model.AnaScheme pipe2_result = null; + if (pipe2_TargetFlow > 50) + { + calc_pipe2_helper.InitialParas( + pipe2_TargetFlow, + water_level,true , + pipe2_TargetPess, false , + null, null, + (from x in _allMachineList where pipe2_machineIds.Contains(x.MachineID) select x).ToList(), null); + pipe2_result = calc_pipe2_helper.CalcKeepStatus(_open_machine_IdList); + if (pipe2_result == null) + { + error_info = "绠¤矾2璋冨害鏂规鏃犳硶璁$畻璇风‘璁ゆ暟鎹槸鍚﹀悎鐞�"; + return null; + } + totalQ += pipe2_result.TotalWrkQ; + totalP += pipe2_result.TotalWrkP; + totalH += pipe2_result.TotalWrkH; + pipe_count++; + } + + + IStation.Calculation.DispatchAna.Model.AnaScheme pipe3_result = null; + if (pipe3_TargetFlow > 50) + { + calc_pipe3_helper.InitialParas( + pipe3_TargetFlow, + water_level, true, + pipe3_TargetPess, false, + null, null, + (from x in _allMachineList where pipe3_machineIds.Contains(x.MachineID) select x).ToList(), null); + pipe3_result = calc_pipe3_helper.CalcKeepStatus(_open_machine_IdList); + if (pipe3_result == null) + { + error_info = "绠¤矾3璋冨害鏂规鏃犳硶璁$畻璇风‘璁ゆ暟鎹槸鍚﹀悎鐞�"; + return null; + } + totalQ += pipe3_result.TotalWrkQ; + totalP += pipe3_result.TotalWrkP; + totalH += pipe3_result.TotalWrkH; + pipe_count++; + } + + var connect_scheme = new Model.AnaScheme(); + connect_scheme.ID = 1; + connect_scheme.TotalWrkQ = Math.Round(totalQ, 1); + connect_scheme.TotalWrkH = Math.Round(totalH / totalH,2); + connect_scheme.TotalWrkP = Math.Round(totalP, 1); + connect_scheme.TotalWrkE = IStation.Common.PumpParaHelper.CalculateE(connect_scheme.TotalWrkQ, connect_scheme.TotalWrkH, connect_scheme.TotalWrkP); + connect_scheme.UWP = CalculateUWP(connect_scheme.TotalWrkP, connect_scheme.TotalWrkQ, connect_scheme.TotalWrkH); + connect_scheme.WP = CalculateWP(connect_scheme.TotalWrkP, connect_scheme.TotalWrkQ); + + connect_scheme.Items = new List<Model.AnaSchemeItem>(); + if (pipe1_result.Items != null && pipe1_result.Items.Count > 0) + connect_scheme.Items.AddRange(pipe1_result.Items); + if (pipe2_result.Items != null && pipe2_result.Items.Count > 0) + connect_scheme.Items.AddRange(pipe2_result.Items); + if (pipe3_result.Items != null && pipe3_result.Items.Count > 0) + connect_scheme.Items.AddRange(pipe3_result.Items); + + return connect_scheme; + 銆� + } + } +} diff --git "a/Calculation/IStation.Calculation.Dispatch/custom/shys/station/\351\207\221\346\265\267\346\263\265\347\253\231/OptAna.cs" "b/Calculation/IStation.Calculation.Dispatch/custom/shys/station/\351\207\221\346\265\267\346\263\265\347\253\231/OptAna.cs" new file mode 100644 index 0000000..4ae1b3e --- /dev/null +++ "b/Calculation/IStation.Calculation.Dispatch/custom/shys/station/\351\207\221\346\265\267\346\263\265\347\253\231/OptAna.cs" @@ -0,0 +1,519 @@ +锘縰sing System; +using System.Collections.Generic; +using System.Linq; +using System.Numerics; +using System.Text; +using System.Threading.Tasks; +using IStation.Calculation.DispatchAna.Model; + +namespace IStation.Calculation.DispatchAna +{ + /// <summary> + /// 閲戞捣娉电珯璋冨害鏂规璁$畻鍣�(鏈�浼樻柟妗�) + /// </summary> + public class Calculator_OptAna_SHYS_閲戞捣娉电珯: CalculatorBase_SHYS_閲戞捣娉电珯, IOptAnaCalc + { + List<Model.MachineDetail> _allMachineList = null; + + + + + + #region 璁$畻 鏈�浼樻柟妗� + /// <summary> + /// 璁$畻 鏈�浼樻柟妗� + /// </summary> + /// <param name="complex_request_paras"></param> + /// <param name="eta_ana_records"></param> + /// <param name="machine_run_status"></param> + /// <param name="error_info"></param> + /// <returns></returns> + public List<IStation.Calculation.DispatchAna.Model.AnaScheme> CalcSchemes( + IStation.Calculation.DispatchAna.Model.RequestParasComplex complex_request_paras, + IStation.Calculation.DispatchAna.Model.EtaAnaRecord4Station eta_ana_records, + IStation.Calculation.DispatchAna.Model.MachineRunPara machine_run_status, + out string error_info) + { + this._corpID = complex_request_paras.CorpID; + this._stationID = complex_request_paras.StationID; + + + + + var isUsePress = complex_request_paras.PressValueType == Model.RequestParasComplex.ePressValueType.鍘嬪姏 ? true : false; + + + if (isUsePress) + return CalcSchemes鍘嬪姏(complex_request_paras, machine_run_status, out error_info); + else + return CalcSchemes鎵▼(complex_request_paras, machine_run_status, out error_info); + } + /// <summary> + /// + /// </summary> + /// <param name="complex_request_paras"></param> + /// <param name="machine_run_status"></param> + /// <param name="error_info"></param> + /// <returns></returns> + protected override List<IStation.Calculation.DispatchAna.Model.AnaScheme> CalcSchemes鍘嬪姏( + IStation.Calculation.DispatchAna.Model.RequestParasComplex complex_request_paras, + IStation.Calculation.DispatchAna.Model.MachineRunPara machine_run_status, + out string error_info) + { + error_info = ""; + if (complex_request_paras == null) + { + error_info = "ERROR 30"; + return null; + } + if (complex_request_paras.OutletPipePara == null || + complex_request_paras.OutletPipePara.Count < 3) + { + error_info = "ERROR 35,閲戞捣娉电珯闇�瑕�3涓嚭鍙g璺殑娴侀噺"; + return null; + } + double inlet_press = 0;//杩涘彛鍘嬪姏(鏈変袱涓繘鍙e帇鍔�) + if (complex_request_paras.InletPipePara != null && complex_request_paras.InletPipePara.Count > 0) + { + if (complex_request_paras.InletPipePara.Count == 1) + { + inlet_press = complex_request_paras.InletPipePara[0].Value; + } + else + {//鐢ㄥ钩鍧囧�� + inlet_press = complex_request_paras.InletPipePara[0].Value + + complex_request_paras.InletPipePara[1].Value; + inlet_press = inlet_press / 2; + } + } + double water_level = inlet_press * 100; + + + double pipe1_TargetFlow = complex_request_paras.OutletPipePara[0].TargetFlow; + double pipe2_TargetFlow = complex_request_paras.OutletPipePara[1].TargetFlow; + double pipe3_TargetFlow = complex_request_paras.OutletPipePara[2].TargetFlow; + if (pipe1_TargetFlow < 50 && pipe2_TargetFlow < 50 && pipe3_TargetFlow < 50) + {//閮藉叧鏈� + error_info = "ERROR 35,閲戞捣娉电珯闇�瑕�3涓嚭鍙g璺殑娴侀噺閮戒负0"; + return null; + } + + double pipe1_TargetPess = complex_request_paras.OutletPipePara[0].TargetPress; + double pipe2_TargetPess = complex_request_paras.OutletPipePara[1].TargetPress; + double pipe3_TargetPess = complex_request_paras.OutletPipePara[2].TargetPress; + if (pipe1_TargetFlow > 50) + { + if (pipe1_TargetPess < inlet_press+0.01) + { + error_info = "ERROR 35,閲戞捣娉电珯闇�瑕佷竴鍙风鍘嬪姏鏈祴鍊�"; + return default; + } + } + if (pipe2_TargetFlow > 50) + { + if (pipe2_TargetPess < inlet_press + 0.01) + { + error_info = "ERROR 35,閲戞捣娉电珯闇�瑕佷簩鍙风鍘嬪姏鏈祴鍊�"; + return default; + } + } + if (pipe3_TargetFlow > 50) + { + if (pipe3_TargetPess < inlet_press + 0.01) + { + error_info = "ERROR 35,閲戞捣娉电珯闇�瑕佷笁鍙风鍘嬪姏鏈祴鍊�"; + return default; + } + } + + + + + + + //鏈烘车淇℃伅 + if (_allMachineList == null) + { + if (!BuildMachineList( + out _allMachineList, + out error_info)) + { + error_info = "鏈烘车缁勬棤娉曟瀯寤�,ERROR 70,閿欒淇℃伅:" + error_info; + return null; + } + } + + + + + Common.DispatchAnaGeneralHelper鍘嬪姏 calc_pipe1_helper + = new Common.DispatchAnaGeneralHelper鍘嬪姏(); + + Common.DispatchAnaGeneralHelper鍘嬪姏 calc_pipe2_helper + = new Common.DispatchAnaGeneralHelper鍘嬪姏(); + + Common.DispatchAnaGeneralHelper鍘嬪姏 calc_pipe3_helper + = new Common.DispatchAnaGeneralHelper鍘嬪姏(); + + + double totalQ = 0, totalH = 0, totalP = 0; + int pipe_count = 0; + + IStation.Calculation.DispatchAna.Model.AnaScheme pipe1_result = null; + List<IStation.Calculation.DispatchAna.Model.AnaScheme> pipe1_results = null; + if (pipe1_TargetFlow > 50) + { + calc_pipe1_helper.InitialParas( + pipe1_TargetFlow, + water_level,true, + pipe1_TargetPess,false, + null, null, + (from x in _allMachineList where pipe1_machineIds.Contains(x.MachineID) select x).ToList(), + machine_run_status == null ? null : machine_run_status.MachineRunFilter); + pipe1_results = calc_pipe1_helper.CalcOptList(complex_request_paras.SchemeSortType, 3); + if (pipe1_results == null || pipe1_results.Count() == 0) + { + error_info = String.Format("绠¤矾涓�璋冨害鏂规鏃犳硶璁$畻,璇风‘璁ゆ暟鎹槸鍚﹀悎鐞�,杩涘彛鍘嬪姏:{0}MPa,鍑哄彛鍘嬪姏:{1}MPa,娴侀噺瑕佹眰:{2}", + Math.Round( inlet_press,4), Math.Round(pipe1_TargetPess,4), pipe1_TargetFlow); + return null; + } + pipe1_result = pipe1_results[0]; + totalQ += pipe1_result.TotalWrkQ; + totalP += pipe1_result.TotalWrkP; + totalH += pipe1_result.TotalWrkH; + pipe_count++; + } + IStation.Calculation.DispatchAna.Model.AnaScheme pipe2_result = null; + List<IStation.Calculation.DispatchAna.Model.AnaScheme> pipe2_results = null; + if (pipe2_TargetFlow > 50) + { + calc_pipe2_helper.InitialParas( + pipe2_TargetFlow, + water_level,true , + pipe2_TargetPess,false , + null, null, + (from x in _allMachineList where pipe2_machineIds.Contains(x.MachineID) select x).ToList(), + machine_run_status == null ? null : machine_run_status.MachineRunFilter); + + pipe2_results = calc_pipe2_helper.CalcOptList(complex_request_paras.SchemeSortType, 3); + if (pipe2_results == null || pipe2_results.Count() == 0) + { + error_info = String.Format("绠¤矾2璋冨害鏂规鏃犳硶璁$畻,璇风‘璁ゆ暟鎹槸鍚﹀悎鐞�,杩涘彛鍘嬪姏:{0}MPa,鍑哄彛鍘嬪姏:{1}MPa,娴侀噺瑕佹眰:{2}", + Math.Round(inlet_press, 4), Math.Round(pipe2_TargetPess, 4), pipe2_TargetFlow); + return null; + } + pipe2_result = pipe2_results[0]; + totalQ += pipe2_result.TotalWrkQ; + totalP += pipe2_result.TotalWrkP; + totalH += pipe2_result.TotalWrkH; + pipe_count++; + } + + IStation.Calculation.DispatchAna.Model.AnaScheme pipe3_result = null; + List<IStation.Calculation.DispatchAna.Model.AnaScheme> pipe3_results = null; + if (pipe3_TargetFlow > 50) + { + calc_pipe3_helper.InitialParas( + pipe3_TargetFlow, + water_level, true, + pipe3_TargetPess,false , + null, null, + (from x in _allMachineList where pipe3_machineIds.Contains(x.MachineID) select x).ToList(), + machine_run_status == null ? null : machine_run_status.MachineRunFilter); + + pipe3_results = calc_pipe3_helper.CalcOptList(complex_request_paras.SchemeSortType, 3); + if (pipe3_results == null || pipe3_results.Count() == 0) + { + error_info = String.Format("绠¤矾3璋冨害鏂规鏃犳硶璁$畻,璇风‘璁ゆ暟鎹槸鍚﹀悎鐞�,杩涘彛鍘嬪姏:{0}MPa,鍑哄彛鍘嬪姏:{1}MPa,娴侀噺瑕佹眰:{2}", + Math.Round(inlet_press, 4), Math.Round(pipe3_TargetPess, 4), pipe3_TargetFlow); + return null; + } + pipe3_result = pipe3_results[0]; + totalQ += pipe3_result.TotalWrkQ; + totalP += pipe3_result.TotalWrkP; + totalH += pipe3_result.TotalWrkH; + pipe_count++; + } + + var plan = new Model.AnaScheme(); + plan.ID = 1; + plan.TotalWrkQ = Math.Round(totalQ, 1); + plan.TotalWrkH = Math.Round(totalH / totalH, 2); + plan.TotalWrkP = Math.Round(totalP, 1); + plan.TotalWrkE = IStation.Common.PumpParaHelper.CalculateE(plan.TotalWrkQ, plan.TotalWrkH, plan.TotalWrkP); + plan.UWP = CalculateUWP(plan.TotalWrkP, plan.TotalWrkQ, plan.TotalWrkH); + plan.WP = CalculateWP(plan.TotalWrkP, plan.TotalWrkQ); + + plan.Items = new List<Model.AnaSchemeItem>(); + if (pipe1_result.Items != null && pipe1_result.Items.Count > 0) + plan.Items.AddRange(pipe1_result.Items); + if (pipe2_result.Items != null && pipe2_result.Items.Count > 0) + plan.Items.AddRange(pipe2_result.Items); + if (pipe3_result.Items != null && pipe3_result.Items.Count > 0) + plan.Items.AddRange(pipe3_result.Items); + + + return new List<Model.AnaScheme>() { plan }; + } + + + private List<IStation.Calculation.DispatchAna.Model.AnaScheme> CalcSchemes鎵▼( + IStation.Calculation.DispatchAna.Model.RequestParasComplex complex_request_paras, + IStation.Calculation.DispatchAna.Model.MachineRunPara machine_run_status, + out string error_info) + { + error_info = ""; + if (complex_request_paras == null) + { + error_info = "ERROR 30"; + return null; + } + if (complex_request_paras.OutletPipePara == null || + complex_request_paras.OutletPipePara.Count < 2) + { + error_info = "ERROR 35,閲戞捣娉电珯闇�瑕佷袱涓璺殑娴侀噺"; + return null; + } + + double pipe1_TargetFlow = complex_request_paras.OutletPipePara[0].TargetFlow; + double pipe2_TargetFlow = complex_request_paras.OutletPipePara[1].TargetFlow; + double pipe3_TargetFlow = complex_request_paras.OutletPipePara[2].TargetFlow; + if (pipe1_TargetFlow < 50 && pipe2_TargetFlow < 50 && pipe3_TargetFlow < 50) + {//閮藉叧鏈� + error_info = "ERROR 35,閲戞捣娉电珯闇�瑕佷袱涓璺殑娴侀噺 閮戒负0"; + return null; + } + + double pipe1_TargetHead = complex_request_paras.OutletPipePara[0].TargetPress; + double pipe2_TargetHead = complex_request_paras.OutletPipePara[1].TargetPress; + double pipe3_TargetHead = complex_request_paras.OutletPipePara[2].TargetPress; + if (pipe1_TargetFlow > 50) + { + if (pipe1_TargetHead < 0.01) + { + error_info = "ERROR 35,閲戞捣娉电珯闇�瑕佷竴鍙风鍘嬪姏鏈祴鍊�"; + return default; + } + } + if (pipe2_TargetFlow > 50) + { + if (pipe2_TargetHead < 0.01) + { + error_info = "ERROR 35,閲戞捣娉电珯闇�瑕佷簩鍙风鍘嬪姏鏈祴鍊�"; + return default; + } + } + if (pipe3_TargetFlow > 50) + { + if (pipe3_TargetHead < 0.01) + { + error_info = "ERROR 35,閲戞捣娉电珯闇�瑕�3鍙风鍘嬪姏鏈祴鍊�"; + return default; + } + } + + + //鏈烘车淇℃伅 + if (_allMachineList == null) + { + if (!BuildMachineList( + out _allMachineList, + out error_info)) + { + error_info = "鏈烘车缁勬棤娉曟瀯寤�,ERROR 70,閿欒淇℃伅:" + error_info; + return null; + } + } + + + + +/* + + Common.DispatchAnaGeneralHelper鎵▼ calc_pipe1_helper = + new Common.DispatchAnaGeneralHelper鎵▼(); + + Common.DispatchAnaGeneralHelper鎵▼ calc_pipe2_helper = + new Common.DispatchAnaGeneralHelper鎵▼(); + + if (pipe2_TargetFlow < 50) + {//鍙紑涓�鍙锋车浜屽彿娉� + calc_pipe1_helper.InitialParas( + pipe1_TargetFlow, + pipe1_TargetHead, + null, null, + (from x in _allMachineList where pipe1_machineIds.Contains(x.MachineID) select x).ToList(), + machine_run_status == null ? null : machine_run_status.MachineRunFilter); + + return calc_pipe1_helper.CalcOptList(complex_request_paras.SchemeSortType, 3); + } + else if (pipe1_TargetFlow < 50) + { + calc_pipe2_helper.InitialParas( + pipe2_TargetFlow, + pipe2_TargetHead, + null, null, + (from x in _allMachineList where pipe2_machineIds.Contains(x.MachineID) select x).ToList(), + machine_run_status == null ? null : machine_run_status.MachineRunFilter); + + return calc_pipe2_helper.CalcOptList(complex_request_paras.SchemeSortType, 3); + } + calc_pipe1_helper.InitialParas( + pipe1_TargetFlow, + pipe1_TargetHead, + null, null, + (from x in _allMachineList where pipe1_machineIds.Contains(x.MachineID) select x).ToList(), + machine_run_status == null ? null : machine_run_status.MachineRunFilter); + var pipe1_result = calc_pipe1_helper.CalcOptList(complex_request_paras.SchemeSortType, 3); + + + calc_pipe2_helper.InitialParas( + pipe2_TargetFlow, + pipe2_TargetHead, + null, null, + (from x in _allMachineList where pipe2_machineIds.Contains(x.MachineID) select x).ToList(), + machine_run_status == null ? null : machine_run_status.MachineRunFilter); + + var pipe2_result = calc_pipe2_helper.CalcOptList(complex_request_paras.SchemeSortType, 3); + + if (pipe1_result == null || pipe2_result == null) + return default; + + var result_1 = pipe1_result.First(); + var result_2 = pipe2_result.First(); + + var plan = new Model.AnaScheme(); + plan.ID = 1; + plan.TotalWrkQ = result_1.TotalWrkQ + result_2.TotalWrkQ; + plan.TotalWrkH = result_1.TotalWrkH + result_2.TotalWrkH; + plan.TotalWrkP = result_1.TotalWrkP + result_2.TotalWrkP; + plan.TotalWrkE = IStation.Common.PumpParaHelper.CalculateE(plan.TotalWrkQ, plan.TotalWrkH, plan.TotalWrkP); + plan.UWP = CalculateUWP(plan.TotalWrkP, plan.TotalWrkQ, plan.TotalWrkH); + plan.WP = CalculateWP(plan.TotalWrkP, plan.TotalWrkQ); + + plan.Items = new List<Model.AnaSchemeItem>(); + if (result_1.Items != null && result_1.Items.Count > 0) + plan.Items.AddRange(result_1.Items); + if (result_2.Items != null && result_2.Items.Count > 0) + plan.Items.AddRange(result_2.Items); + + + return new List<Model.AnaScheme>() { plan }; +*/ + + + Common.DispatchAnaGeneralHelper鎵▼ calc_pipe1_helper + = new Common.DispatchAnaGeneralHelper鎵▼(); + + Common.DispatchAnaGeneralHelper鎵▼ calc_pipe2_helper + = new Common.DispatchAnaGeneralHelper鎵▼(); + + Common.DispatchAnaGeneralHelper鎵▼ calc_pipe3_helper + = new Common.DispatchAnaGeneralHelper鎵▼(); + + + double totalQ = 0, totalH = 0, totalP = 0; + int pipe_count = 0; + + IStation.Calculation.DispatchAna.Model.AnaScheme pipe1_result = null; + List<IStation.Calculation.DispatchAna.Model.AnaScheme> pipe1_results = null; + if (pipe1_TargetFlow > 50) + { + calc_pipe1_helper.InitialParas( + pipe1_TargetFlow, + pipe1_TargetHead, + null, null, + (from x in _allMachineList where pipe1_machineIds.Contains(x.MachineID) select x).ToList(), + machine_run_status == null ? null : machine_run_status.MachineRunFilter); + pipe1_results = calc_pipe1_helper.CalcOptList(complex_request_paras.SchemeSortType, 3); + if (pipe1_results == null || pipe1_results.Count() == 0) + { + error_info = String.Format("绠¤矾涓�璋冨害鏂规鏃犳硶璁$畻,璇风‘璁ゆ暟鎹槸鍚﹀悎鐞�,鎵▼瑕佹眰:{0}m,娴侀噺瑕佹眰:{1}", + pipe1_TargetHead, pipe1_TargetFlow); + return null; + } + pipe1_result = pipe1_results[0]; + totalQ += pipe1_result.TotalWrkQ; + totalP += pipe1_result.TotalWrkP; + totalH += pipe1_result.TotalWrkH; + pipe_count++; + } + IStation.Calculation.DispatchAna.Model.AnaScheme pipe2_result = null; + List<IStation.Calculation.DispatchAna.Model.AnaScheme> pipe2_results = null; + if (pipe2_TargetFlow > 50) + { + calc_pipe2_helper.InitialParas( + pipe2_TargetFlow, + pipe2_TargetHead, + null, null, + (from x in _allMachineList where pipe2_machineIds.Contains(x.MachineID) select x).ToList(), + machine_run_status == null ? null : machine_run_status.MachineRunFilter); + + pipe2_results = calc_pipe2_helper.CalcOptList(complex_request_paras.SchemeSortType, 3); + if (pipe2_results == null || pipe2_results.Count() == 0) + { + error_info = String.Format("绠¤矾涓�璋冨害鏂规鏃犳硶璁$畻,璇风‘璁ゆ暟鎹槸鍚﹀悎鐞�,鎵▼瑕佹眰:{0}m,娴侀噺瑕佹眰:{1}", + pipe2_TargetHead, pipe1_TargetFlow); + return null; + } + pipe2_result = pipe2_results[0]; + totalQ += pipe2_result.TotalWrkQ; + totalP += pipe2_result.TotalWrkP; + totalH += pipe2_result.TotalWrkH; + pipe_count++; + } + + IStation.Calculation.DispatchAna.Model.AnaScheme pipe3_result = null; + List<IStation.Calculation.DispatchAna.Model.AnaScheme> pipe3_results = null; + if (pipe3_TargetFlow > 50) + { + calc_pipe3_helper.InitialParas( + pipe3_TargetFlow, + pipe3_TargetHead, + null, null, + (from x in _allMachineList where pipe3_machineIds.Contains(x.MachineID) select x).ToList(), + machine_run_status == null ? null : machine_run_status.MachineRunFilter); + + pipe3_results = calc_pipe3_helper.CalcOptList(complex_request_paras.SchemeSortType, 3); + if (pipe3_results == null || pipe3_results.Count() == 0) + { + error_info = String.Format("绠¤矾涓�璋冨害鏂规鏃犳硶璁$畻,璇风‘璁ゆ暟鎹槸鍚﹀悎鐞�,鎵▼瑕佹眰:{0}m,娴侀噺瑕佹眰:{1}", + pipe3_TargetHead, pipe3_TargetFlow); + return null; + } + pipe3_result = pipe3_results[0]; + totalQ += pipe3_result.TotalWrkQ; + totalP += pipe3_result.TotalWrkP; + totalH += pipe3_result.TotalWrkH; + pipe_count++; + } + + var plan = new Model.AnaScheme(); + plan.ID = 1; + plan.TotalWrkQ = Math.Round(totalQ, 1); + plan.TotalWrkH = Math.Round(totalH / totalH, 2); + plan.TotalWrkP = Math.Round(totalP, 1); + plan.TotalWrkE = IStation.Common.PumpParaHelper.CalculateE(plan.TotalWrkQ, plan.TotalWrkH, plan.TotalWrkP); + plan.UWP = CalculateUWP(plan.TotalWrkP, plan.TotalWrkQ, plan.TotalWrkH); + plan.WP = CalculateWP(plan.TotalWrkP, plan.TotalWrkQ); + + plan.Items = new List<Model.AnaSchemeItem>(); + if (pipe1_result.Items != null && pipe1_result.Items.Count > 0) + plan.Items.AddRange(pipe1_result.Items); + if (pipe2_result.Items != null && pipe2_result.Items.Count > 0) + plan.Items.AddRange(pipe2_result.Items); + if (pipe3_result.Items != null && pipe3_result.Items.Count > 0) + plan.Items.AddRange(pipe3_result.Items); + + + return new List<Model.AnaScheme>() { plan }; + } + + + #endregion + + + + + } +} diff --git "a/Calculation/IStation.Calculation.Dispatch/custom/shys/station/\351\225\277\345\205\264\345\262\233/Base.cs" "b/Calculation/IStation.Calculation.Dispatch/custom/shys/station/\351\225\277\345\205\264\345\262\233/Base.cs" index 76f79bb..1a72863 100644 --- "a/Calculation/IStation.Calculation.Dispatch/custom/shys/station/\351\225\277\345\205\264\345\262\233/Base.cs" +++ "b/Calculation/IStation.Calculation.Dispatch/custom/shys/station/\351\225\277\345\205\264\345\262\233/Base.cs" @@ -9,8 +9,43 @@ /// <summary> /// 闀垮叴娉电珯璋冨害鏂规璁$畻鍣� /// </summary> - internal class CalculatorBase_SHYS_闀垮叴宀� : CalculatorBase + public class CalculatorBase_SHYS_闀垮叴宀� : CalculatorOptAnaBase { + /// <summary> + /// + /// </summary> + protected List<long> pipe1_machineIds = new List<long>() { 19, 22 };//1鍙锋车锛�2鍙锋车 + /// <summary> + /// + /// </summary> + protected List<long> pipe2_machineIds = new List<long>() { 25, 28 };//3鍙锋车锛�4鍙锋车 + /// <summary> + /// + /// </summary> + public static long _monitor_id_pipe_press1 = 72; + /// <summary> + /// + /// </summary> + public static long _monitor_id_pipe_press2 = 76; + /// <summary> + /// + /// </summary> + public static long _monitor_id_pipe_flow1 = 73; + /// <summary> + /// + /// </summary> + public static long _monitor_id_pipe_flow2 = 77; + /// <summary> + /// + /// </summary> + public static long _monitor_id_涓棿闃�闂ㄧ姸鎬� = 71; + /// <summary> + /// + /// </summary> + public static long _montiro_id_water_level = 70; + /// <summary> + /// + /// </summary> public CalculatorBase_SHYS_闀垮叴宀�() { _corpID = 4; diff --git "a/Calculation/IStation.Calculation.Dispatch/custom/shys/station/\351\225\277\345\205\264\345\262\233/Current.cs" "b/Calculation/IStation.Calculation.Dispatch/custom/shys/station/\351\225\277\345\205\264\345\262\233/Current.cs" index f4c70bd..df94ebe 100644 --- "a/Calculation/IStation.Calculation.Dispatch/custom/shys/station/\351\225\277\345\205\264\345\262\233/Current.cs" +++ "b/Calculation/IStation.Calculation.Dispatch/custom/shys/station/\351\225\277\345\205\264\345\262\233/Current.cs" @@ -25,20 +25,21 @@ public Model.CurrentRecordBundle GetCurrentRecord(long CorpID, long StationID, out string error_info) { error_info = null; - var monitor_ids = new List<long>() { 70, 71, 72, 73, 76, 77, 79 }; + var monitor_ids = new List<long>() { _montiro_id_water_level, _monitor_id_涓棿闃�闂ㄧ姸鎬�, _monitor_id_pipe_press1, _monitor_id_pipe_flow1, + _monitor_id_pipe_press2, _monitor_id_pipe_flow2, 79 }; var monitor_records = new Service.MonitorRecord().GetLastRecord(_corpID, monitor_ids); Model.CurrentRecordBundle bundle = new Model.CurrentRecordBundle(); - var water_level = monitor_records.Find(x => x.MonitorPointID == 70); + var water_level = monitor_records.Find(x => x.MonitorPointID == _montiro_id_water_level); if (water_level != null) { bundle.WaterLevelList = new List<Model.CurrentRecordBundle.RecordValue>(); bundle.WaterLevelList.Add(new Model.CurrentRecordBundle.RecordValue("杩涙按娑蹭綅", water_level, 2)); } - var pipe_press1 = monitor_records.Find(x => x.MonitorPointID == 72); - var pipe_press2 = monitor_records.Find(x => x.MonitorPointID == 76); + var pipe_press1 = monitor_records.Find(x => x.MonitorPointID == _monitor_id_pipe_press1); + var pipe_press2 = monitor_records.Find(x => x.MonitorPointID == _monitor_id_pipe_press2); if (pipe_press1 != null && pipe_press2 != null) { bundle.PressList = new List<Model.CurrentRecordBundle.RecordValue>(); @@ -46,15 +47,15 @@ bundle.PressList.Add(new Model.CurrentRecordBundle.RecordValue("浜屽彿绠�", pipe_press2, 4)); } - var pipe_flow1 = monitor_records.Find(x => x.MonitorPointID == 73); - var pipe_flow2 = monitor_records.Find(x => x.MonitorPointID == 77); + var pipe_flow1 = monitor_records.Find(x => x.MonitorPointID == _monitor_id_pipe_flow1); + var pipe_flow2 = monitor_records.Find(x => x.MonitorPointID == _monitor_id_pipe_flow2); if (pipe_flow1 != null && pipe_flow2 != null) { bundle.FlowList = new List<Model.CurrentRecordBundle.RecordValue>(); bundle.FlowList.Add(new Model.CurrentRecordBundle.RecordValue("涓�鍙风", pipe_flow1, 0)); bundle.FlowList.Add(new Model.CurrentRecordBundle.RecordValue("浜屽彿绠�", pipe_flow2, 0)); - var middle_valve = monitor_records.Find(x => x.MonitorPointID == 71); + var middle_valve = monitor_records.Find(x => x.MonitorPointID == _monitor_id_涓棿闃�闂ㄧ姸鎬�); if (middle_valve != null) { bundle.VavleOpenList = new List<Model.CurrentRecordBundle.RecordValue>(); diff --git "a/Calculation/IStation.Calculation.Dispatch/custom/shys/station/\351\225\277\345\205\264\345\262\233/KeepStatus.cs" "b/Calculation/IStation.Calculation.Dispatch/custom/shys/station/\351\225\277\345\205\264\345\262\233/KeepStatus.cs" index b57cb92..6c941d1 100644 --- "a/Calculation/IStation.Calculation.Dispatch/custom/shys/station/\351\225\277\345\205\264\345\262\233/KeepStatus.cs" +++ "b/Calculation/IStation.Calculation.Dispatch/custom/shys/station/\351\225\277\345\205\264\345\262\233/KeepStatus.cs" @@ -70,9 +70,9 @@ double water_level = 0;//姘翠綅 - if (_request_paras.WaterLevelPara != null && _request_paras.WaterLevelPara.Count > 0) + if (_request_paras.InletPipePara != null && _request_paras.InletPipePara.Count > 0) { - water_level = _request_paras.WaterLevelPara.First().Value; + water_level = _request_paras.InletPipePara.First().Value; } @@ -112,8 +112,8 @@ new Common.DispatchAnaGeneralHelper鍘嬪姏(); calc_pipe_helper.InitialParas( pipe1_TargetFlow + pipe2_TargetFlow, - water_level, - press, + water_level,true , + press, false, null, null, allMachineList, null); @@ -121,9 +121,6 @@ } else //闃�闂ㄥ叧鐨勭姸鎬佷笅 涓ょ鐩歌繛鏁版嵁鐩稿姞 { - var pipe1_machineIds = new List<long>() { 19, 22 };//1鍙锋车锛�2鍙锋车 - var pipe2_machineIds = new List<long>() { 25, 28 };//3鍙锋车锛�4鍙锋车 - Common.DispatchAnaGeneralHelper鍘嬪姏 calc_pipe1_helper = new Common.DispatchAnaGeneralHelper鍘嬪姏(); @@ -134,8 +131,8 @@ {//鍙紑涓�鍙锋车浜屽彿娉� calc_pipe1_helper.InitialParas( pipe1_TargetFlow, - water_level, - pipe1_TargetPess, + water_level, true, + pipe1_TargetPess, false, null, null, (from x in allMachineList where pipe1_machineIds.Contains(x.MachineID) select x).ToList(), null); @@ -145,8 +142,8 @@ { calc_pipe2_helper.InitialParas( pipe2_TargetFlow, - water_level, - pipe2_TargetPess, + water_level, true, + pipe2_TargetPess, false, null, null, (from x in allMachineList where pipe2_machineIds.Contains(x.MachineID) select x).ToList(), null); @@ -158,8 +155,8 @@ calc_pipe1_helper.InitialParas( pipe1_TargetFlow, - water_level, - pipe1_TargetPess, + water_level, true, + pipe1_TargetPess, false, null, null, (from x in allMachineList where pipe1_machineIds.Contains(x.MachineID) select x).ToList(), null); var pipe1_result = calc_pipe1_helper.CalcKeepStatus(_open_machine_IdList); @@ -167,8 +164,8 @@ calc_pipe2_helper.InitialParas( pipe2_TargetFlow, - water_level, - pipe2_TargetPess, + water_level,true , + pipe2_TargetPess,false , null, null, (from x in allMachineList where pipe2_machineIds.Contains(x.MachineID) select x).ToList(), null); diff --git "a/Calculation/IStation.Calculation.Dispatch/custom/shys/station/\351\225\277\345\205\264\345\262\233/OptAna.cs" "b/Calculation/IStation.Calculation.Dispatch/custom/shys/station/\351\225\277\345\205\264\345\262\233/OptAna.cs" index 4fcb775..f9a1fe5 100644 --- "a/Calculation/IStation.Calculation.Dispatch/custom/shys/station/\351\225\277\345\205\264\345\262\233/OptAna.cs" +++ "b/Calculation/IStation.Calculation.Dispatch/custom/shys/station/\351\225\277\345\205\264\345\262\233/OptAna.cs" @@ -11,7 +11,7 @@ /// <summary> /// 闀垮叴娉电珯璋冨害鏂规璁$畻鍣�(鏈�浼樻柟妗�) /// </summary> - public class Calculator_OptAna_SHYS_闀垮叴宀�: CalculatorOptAnaBase, IOptAnaCalc + public class Calculator_OptAna_SHYS_闀垮叴宀�: CalculatorBase_SHYS_闀垮叴宀�, IOptAnaCalc { /// <summary> /// / @@ -138,11 +138,11 @@ } } double water_level = 0;//姘翠綅 - if (complex_request_paras.WaterLevelPara != null && complex_request_paras.WaterLevelPara.Count > 0) + if (complex_request_paras.InletPipePara != null && complex_request_paras.InletPipePara.Count > 0) { //var inletLevel = paras.MonitorPointInfoList.Find(x => x.SignalType == IStation.SignalType.姘翠綅); //Elevation = inletLevel?.Elevation != null ? inletLevel.Elevation.Value : 0;//鑾峰彇娴嬬偣鐨勬爣楂� - water_level = complex_request_paras.WaterLevelPara.First().Value; + water_level = complex_request_paras.InletPipePara.First().Value; } //涓棿闃�闂ㄧ姸鎬� @@ -178,10 +178,10 @@ Common.DispatchAnaGeneralHelper鍘嬪姏 calc_pipe_helper = new Common.DispatchAnaGeneralHelper鍘嬪姏(); calc_pipe_helper.InitialParas( pipe1_TargetFlow + pipe2_TargetFlow, - water_level, - (pipe1_TargetPess + pipe2_TargetPess) / 2, - null, null, - _allMachineList, machine_run_status.MachineRunFilter); + water_level,true , + (pipe1_TargetPess + pipe2_TargetPess) / 2,false , + null, null, + _allMachineList, machine_run_status==null?null: machine_run_status.MachineRunFilter); return calc_pipe_helper.CalcOptList(complex_request_paras.SchemeSortType, 3); #endregion @@ -189,10 +189,6 @@ else //闃�闂ㄥ叧鐨勭姸鎬佷笅 涓ょ鐩歌繛鏁版嵁鐩稿姞 { #region 涓棿闃�闂ㄥ叧鐨勭姸鎬佷笅 - var pipe1_machineIds = new List<long>() { 19, 22 };//1鍙锋车锛�2鍙锋车 - var pipe2_machineIds = new List<long>() { 25, 28 };//3鍙锋车锛�4鍙锋车 - - Common.DispatchAnaGeneralHelper鍘嬪姏 calc_pipe1_helper = new Common.DispatchAnaGeneralHelper鍘嬪姏(); @@ -203,8 +199,8 @@ {//鍙紑涓�鍙锋车浜屽彿娉� calc_pipe1_helper.InitialParas( pipe1_TargetFlow, - water_level, - pipe1_TargetPess, + water_level,true , + pipe1_TargetPess,false , null, null, (from x in _allMachineList where pipe1_machineIds.Contains(x.MachineID) select x).ToList(), machine_run_status ==null?null: machine_run_status.MachineRunFilter); @@ -215,36 +211,44 @@ { calc_pipe2_helper.InitialParas( pipe2_TargetFlow, - water_level, - pipe2_TargetPess, - null, null, - (from x in _allMachineList where pipe2_machineIds.Contains(x.MachineID) select x).ToList(), + water_level, true, + pipe2_TargetPess, false, + null, null, + (from x in _allMachineList where pipe2_machineIds.Contains(x.MachineID) select x).ToList(), machine_run_status == null ? null : machine_run_status.MachineRunFilter); return calc_pipe2_helper.CalcOptList(complex_request_paras.SchemeSortType, 3); } calc_pipe1_helper.InitialParas( pipe1_TargetFlow, - water_level, - pipe1_TargetPess, + water_level, true, + pipe1_TargetPess, false, null, null, (from x in _allMachineList where pipe1_machineIds.Contains(x.MachineID) select x).ToList(), machine_run_status == null ? null : machine_run_status.MachineRunFilter); var pipe1_result = calc_pipe1_helper.CalcOptList(complex_request_paras.SchemeSortType, 3); - + if (pipe1_result == null) + { + error_info = String.Format("绠¤矾涓�璋冨害鏂规鏃犳硶璁$畻,璇风‘璁ゆ暟鎹槸鍚﹀悎鐞�,娑蹭綅:{0}m,鍑哄彛鍘嬪姏:{1}MPa,娴侀噺瑕佹眰:{2}", + water_level, pipe1_TargetPess, pipe1_TargetFlow); + return null; + } calc_pipe2_helper.InitialParas( pipe2_TargetFlow, - water_level, - pipe2_TargetPess, + water_level,true , + pipe2_TargetPess,false , null, null, (from x in _allMachineList where pipe2_machineIds.Contains(x.MachineID) select x).ToList(), machine_run_status == null ? null : machine_run_status.MachineRunFilter); var pipe2_result = calc_pipe2_helper.CalcOptList(complex_request_paras.SchemeSortType, 3); - - if (pipe1_result == null || pipe2_result == null) - return default; + if (pipe2_result == null) + { + error_info = String.Format("绠¤矾浜岃皟搴︽柟妗堟棤娉曡绠�,璇风‘璁ゆ暟鎹槸鍚﹀悎鐞�,娑蹭綅:{0}m,鍑哄彛鍘嬪姏:{1}MPa,娴侀噺瑕佹眰:{2}", + water_level, pipe2_TargetPess, pipe2_TargetFlow); + return null; + } var result_1 = pipe1_result.First(); var result_2 = pipe2_result.First(); @@ -360,8 +364,7 @@ else //闃�闂ㄥ叧鐨勭姸鎬佷笅 涓ょ鐩歌繛鏁版嵁鐩稿姞 { #region 涓棿闃�闂ㄥ叧鐨勭姸鎬佷笅 - var pipe1_machineIds = new List<long>() { 19, 22 };//1鍙锋车锛�2鍙锋车 - var pipe2_machineIds = new List<long>() { 25, 28 };//3鍙锋车锛�4鍙锋车 + Common.DispatchAnaGeneralHelper鎵▼ calc_pipe1_helper = @@ -419,7 +422,7 @@ var plan = new Model.AnaScheme(); plan.ID = 1; plan.TotalWrkQ = result_1.TotalWrkQ + result_2.TotalWrkQ; - plan.TotalWrkH = result_1.TotalWrkH + result_2.TotalWrkH; + plan.TotalWrkH = (result_1.TotalWrkH + result_2.TotalWrkH)/2; plan.TotalWrkP = result_1.TotalWrkP + result_2.TotalWrkP; plan.TotalWrkE = IStation.Common.PumpParaHelper.CalculateE(plan.TotalWrkQ, plan.TotalWrkH, plan.TotalWrkP); plan.UWP = CalculateUWP(plan.TotalWrkP, plan.TotalWrkQ, plan.TotalWrkH); diff --git "a/Calculation/IStation.Calculation.Dispatch/custom/shys/station/\351\231\210\350\241\214\344\270\200\350\276\223/Base.cs" "b/Calculation/IStation.Calculation.Dispatch/custom/shys/station/\351\231\210\350\241\214\344\270\200\350\276\223/Base.cs" new file mode 100644 index 0000000..9abccb0 --- /dev/null +++ "b/Calculation/IStation.Calculation.Dispatch/custom/shys/station/\351\231\210\350\241\214\344\270\200\350\276\223/Base.cs" @@ -0,0 +1,87 @@ +锘縰sing System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace IStation.Calculation.DispatchAna +{ + /// <summary> + /// 闄堣涓�杈撹皟搴︽柟妗堣绠楀櫒 + /// </summary> + public class CalculatorBase_SHYS_闄堣涓�杈� : CalculatorOptAnaBase + { + /// <summary> + /// + /// </summary> + protected List<long> machine_ids = new List<long>() { 262,265,268,271,259,274,277,280 }; + + /// <summary> + /// + /// </summary> + protected List<long> pipe1_machineIds = null;//1鍙锋车锛�2鍙锋车 + /// <summary> + /// + /// </summary> + protected List<long> pipe2_machineIds = null;//,3鍙锋车锛�4鍙锋车 锛�5鍙锋车 + /// <summary> + /// + /// </summary> + protected List<long> pipe3_machineIds = null;//锛�6鍙锋车锛�7鍙锋车 锛�8鍙锋车 + /// <summary> + /// + /// </summary> + static public long _monitor_id_娑蹭綅1 = 856; + /// <summary> + /// + /// </summary> + static public long _monitor_id_娑蹭綅2 = 857; + /// <summary> + /// + /// </summary> + static public long _monitor_id_娑蹭綅3 = 858; + + + + /// <summary> + /// + /// </summary> + static public long _monitor_id_涓�鍙风鍘嬪姏 = 859; + /// <summary> + /// + /// </summary> + static public long _monitor_id_涓�鍙风娴侀噺 = 860; + + /// <summary> + /// + /// </summary> + static public long _monitor_id_浜屽彿绠″帇鍔� = 862; + /// <summary> + /// + /// </summary> + static public long _monitor_id_浜屽彿绠℃祦閲� = 863; + + /// <summary> + /// + /// </summary> + static public long _monitor_id_涓夊彿绠″帇鍔� = 865; + /// <summary> + /// + /// </summary> + static public long _monitor_id_涓夊彿绠℃祦閲� = 866; + + /// <summary> + /// + /// </summary> + public CalculatorBase_SHYS_闄堣涓�杈�() + { + pipe1_machineIds = new List<long>() { machine_ids[0], machine_ids[1] };//1鍙锋车锛�2鍙锋车 + pipe2_machineIds = new List<long>() { machine_ids[2], machine_ids[3], machine_ids[4] };//3鍙锋车 锛�4鍙锋车 锛�5鍙锋车 + pipe3_machineIds = new List<long>() { machine_ids[5], machine_ids[6], machine_ids[7] };//6鍙锋车锛�7鍙锋车 锛�8鍙锋车 + + _corpID = 4; + _stationID = 15; + } + + } +} diff --git "a/Calculation/IStation.Calculation.Dispatch/custom/shys/station/\351\231\210\350\241\214\344\270\200\350\276\223/Current.cs" "b/Calculation/IStation.Calculation.Dispatch/custom/shys/station/\351\231\210\350\241\214\344\270\200\350\276\223/Current.cs" new file mode 100644 index 0000000..84006da --- /dev/null +++ "b/Calculation/IStation.Calculation.Dispatch/custom/shys/station/\351\231\210\350\241\214\344\270\200\350\276\223/Current.cs" @@ -0,0 +1,96 @@ +锘縰sing System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace IStation.Calculation.DispatchAna +{ + /// <summary> + /// 闀垮叴娉电珯璋冨害鏂规璁$畻鍣� + /// </summary> + internal class Calculator_Current_SHYS_闄堣涓�杈�: CalculatorBase_SHYS_闄堣涓�杈�, IGetCurrentRecord + { + public Calculator_Current_SHYS_闄堣涓�杈�() + { + + } + /// <summary> + /// 鑾峰彇褰撳墠璋冨害淇℃伅 + /// </summary> + /// <param name="CorpID"></param> + /// <param name="StationID"></param> + /// <param name="error_info"></param> + /// <returns></returns> + public Model.CurrentRecordBundle GetCurrentRecord(long CorpID, long StationID, out string error_info) + { + error_info = null; + List<long> monitor_ids = new List<long>() { + _monitor_id_娑蹭綅1,_monitor_id_娑蹭綅2,_monitor_id_娑蹭綅3, + _monitor_id_涓�鍙风鍘嬪姏, _monitor_id_浜屽彿绠″帇鍔� , _monitor_id_涓夊彿绠″帇鍔� , + _monitor_id_涓�鍙风娴侀噺 , _monitor_id_浜屽彿绠℃祦閲� , _monitor_id_涓夊彿绠℃祦閲� }; + var monitor_records = new Service.MonitorRecord().GetLastRecord(_corpID, monitor_ids); + + Model.CurrentRecordBundle bundle = new Model.CurrentRecordBundle(); + + bundle.WaterLevelList = new List<Model.CurrentRecordBundle.RecordValue>(); + + var water_level1 = monitor_records.Find(x => x.MonitorPointID == _monitor_id_娑蹭綅1); + if (water_level1 != null) + { + bundle.WaterLevelList.Add(new Model.CurrentRecordBundle.RecordValue("娑蹭綅1", water_level1, 4)); + } + else + { + bundle.WaterLevelList.Add(new Model.CurrentRecordBundle.RecordValue("娑蹭綅1", 0 )); + } + var water_level2 = monitor_records.Find(x => x.MonitorPointID == _monitor_id_娑蹭綅2); + if (water_level2 != null) + { + bundle.WaterLevelList.Add(new Model.CurrentRecordBundle.RecordValue("娑蹭綅2", water_level2, 4)); + } + else + { + bundle.WaterLevelList.Add(new Model.CurrentRecordBundle.RecordValue("娑蹭綅2", 0)); + } + var water_level3 = monitor_records.Find(x => x.MonitorPointID == _monitor_id_娑蹭綅3); + if (water_level3 != null) + { + bundle.WaterLevelList.Add(new Model.CurrentRecordBundle.RecordValue("娑蹭綅3", water_level3, 4)); + } + else + { + bundle.WaterLevelList.Add(new Model.CurrentRecordBundle.RecordValue("娑蹭綅3", 0)); + } + + var pipe_press1 = monitor_records.Find(x => x.MonitorPointID == _monitor_id_涓�鍙风鍘嬪姏 ); + var pipe_press2 = monitor_records.Find(x => x.MonitorPointID == _monitor_id_浜屽彿绠″帇鍔� ); + var pipe_press3 = monitor_records.Find(x => x.MonitorPointID == _monitor_id_涓夊彿绠″帇鍔� ); + + if (pipe_press1 != null && pipe_press2 != null && pipe_press3 != null) + { + bundle.PressList = new List<Model.CurrentRecordBundle.RecordValue>(); + bundle.PressList.Add(new Model.CurrentRecordBundle.RecordValue("涓�鍙峰嚭鍙g", pipe_press1, 4)); + bundle.PressList.Add(new Model.CurrentRecordBundle.RecordValue("浜屽彿鍑哄彛绠�", pipe_press2, 4)); + bundle.PressList.Add(new Model.CurrentRecordBundle.RecordValue("涓夊彿鍑哄彛绠�", pipe_press3, 4)); + } + + var pipe_flow1 = monitor_records.Find(x => x.MonitorPointID == _monitor_id_涓�鍙风娴侀噺 ); + var pipe_flow2 = monitor_records.Find(x => x.MonitorPointID == _monitor_id_浜屽彿绠℃祦閲� ); + var pipe_flow3 = monitor_records.Find(x => x.MonitorPointID == _monitor_id_涓夊彿绠℃祦閲� ); + if (pipe_flow1 != null && pipe_flow2 != null && pipe_flow3 != null) + { + bundle.FlowList = new List<Model.CurrentRecordBundle.RecordValue>(); + bundle.FlowList.Add(new Model.CurrentRecordBundle.RecordValue("涓�鍙峰嚭鍙g", pipe_flow1, 0)); + bundle.FlowList.Add(new Model.CurrentRecordBundle.RecordValue("浜屽彿鍑哄彛绠�", pipe_flow2, 0)); + bundle.FlowList.Add(new Model.CurrentRecordBundle.RecordValue("涓夊彿鍑哄彛绠�", pipe_flow3, 0)); + } + + + return bundle; + } + + + + } +} diff --git "a/Calculation/IStation.Calculation.Dispatch/custom/shys/station/\351\231\210\350\241\214\344\270\200\350\276\223/KeepStatus.cs" "b/Calculation/IStation.Calculation.Dispatch/custom/shys/station/\351\231\210\350\241\214\344\270\200\350\276\223/KeepStatus.cs" new file mode 100644 index 0000000..58616e2 --- /dev/null +++ "b/Calculation/IStation.Calculation.Dispatch/custom/shys/station/\351\231\210\350\241\214\344\270\200\350\276\223/KeepStatus.cs" @@ -0,0 +1,233 @@ +锘縰sing IStation.Calculation.DispatchAna.Model; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace IStation.Calculation.DispatchAna +{ + /// <summary> + /// 闀垮叴娉电珯璋冨害鏂规璁$畻鍣� + /// </summary> + internal class Calculator_KeepStatus_SHYS_闄堣涓�杈� : CalculatorBase_SHYS_闄堣涓�杈�, IKeepStatusCalc + { + public Calculator_KeepStatus_SHYS_闄堣涓�杈�() + { + + } + Model.RequestParasComplex _request_paras; + List<long> _open_machine_IdList ; + /// <summary> + /// 鍒濆鍖栧弬鏁� + /// </summary> + /// <param name="complex_request_paras"></param> + /// <param name="eta_ana_records"></param> + /// <param name="open_machine_ids"></param> + public void IntialRequest( + IStation.Calculation.DispatchAna.Model.RequestParasComplex complex_request_paras, + IStation.Calculation.DispatchAna.Model.EtaAnaRecord4Station eta_ana_records, + List<long> open_machine_ids) + { + this._request_paras = complex_request_paras; + this._open_machine_IdList = open_machine_ids; + } + + + List<Model.MachineDetail> _allMachineList = null; + + /// <summary> + /// 璁$畻淇濇寔褰撳墠寮�鏈虹姸鎬� + /// </summary> + /// <param name="error_info">閿欒淇℃伅</param> + /// <returns></returns> + public Model.AnaScheme Calc(out string error_info) + { + if (_open_machine_IdList == null || _open_machine_IdList.Count == 0) + { + error_info = "ERROR 25"; + return null; + } + error_info = null; + if (_request_paras == null) + { + error_info = "ERROR 30"; + return null; + } + + if (_request_paras.OutletPipePara == null || _request_paras.OutletPipePara.Count < 3) + { + error_info = "ERROR 35"; + return null; + } + double pipe1_TargetFlow = _request_paras.OutletPipePara[0].TargetFlow; + double pipe2_TargetFlow = _request_paras.OutletPipePara[1].TargetFlow; + double pipe3_TargetFlow = _request_paras.OutletPipePara[2].TargetFlow; + if (pipe1_TargetFlow < 10 && pipe2_TargetFlow < 10 && pipe3_TargetFlow < 10) + { + return default; + } + + double pipe1_TargetPess = _request_paras.OutletPipePara[0].TargetPress; + double pipe2_TargetPess = _request_paras.OutletPipePara[1].TargetPress; + double pipe3_TargetPess = _request_paras.OutletPipePara[2].TargetPress; + if (pipe1_TargetFlow > 50) + { + if (pipe1_TargetPess < 0.01) + { + error_info = "ERROR 35,闄堣涓�杈撻渶瑕佷竴鍙风鍘嬪姏鏈祴鍊�"; + return default; + } + } + if (pipe2_TargetFlow > 50) + { + if (pipe2_TargetPess < 0.01) + { + error_info = "ERROR 35,闄堣涓�杈撻渶瑕佷簩鍙风鍘嬪姏鏈祴鍊�"; + return default; + } + } + if (pipe3_TargetFlow > 50) + { + if (pipe3_TargetPess < 0.01) + { + error_info = "ERROR 35,闄堣涓�杈撻渶瑕佷笁鍙风鍘嬪姏鏈祴鍊�"; + return default; + } + } + + double water_level1 = 0, water_level2=0, water_level3=0; + if (_request_paras.InletPipePara != null && _request_paras.InletPipePara.Count > 0) + { + if (_request_paras.InletPipePara.Count >= 1) + { + water_level1 = _request_paras.InletPipePara[0].Value; + } + if (_request_paras.InletPipePara.Count >=2) + { + water_level2 = _request_paras.InletPipePara[1].Value; + } + if (_request_paras.InletPipePara.Count >= 3) + { + water_level3 = _request_paras.InletPipePara[2].Value; + } + } + + + + //鏈烘车淇℃伅 + if (_allMachineList == null) + { + if (!BuildMachineList( + out _allMachineList, + out error_info)) + { + error_info = "鏈烘车缁勬棤娉曟瀯寤�,ERROR 70,閿欒淇℃伅:" + error_info; + return null; + } + } + + + + + Common.DispatchAnaGeneralHelper鍘嬪姏 calc_pipe1_helper + = new Common.DispatchAnaGeneralHelper鍘嬪姏(); + + Common.DispatchAnaGeneralHelper鍘嬪姏 calc_pipe2_helper + = new Common.DispatchAnaGeneralHelper鍘嬪姏(); + + Common.DispatchAnaGeneralHelper鍘嬪姏 calc_pipe3_helper + = new Common.DispatchAnaGeneralHelper鍘嬪姏(); + + + double totalQ = 0, totalH = 0, totalP = 0; + int pipe_count = 0; + + IStation.Calculation.DispatchAna.Model.AnaScheme pipe1_result = null; + if (pipe1_TargetFlow > 50) + { + calc_pipe1_helper.InitialParas( + pipe1_TargetFlow, + water_level1,true , + pipe1_TargetPess,false , + null, null, + (from x in _allMachineList where pipe1_machineIds.Contains(x.MachineID) select x).ToList(), null); + pipe1_result = calc_pipe1_helper.CalcKeepStatus(_open_machine_IdList); + if (pipe1_result == null) + { + error_info = "绠¤矾涓�璋冨害鏂规鏃犳硶璁$畻璇风‘璁ゆ暟鎹槸鍚﹀悎鐞�"; + return null; + } + totalQ += pipe1_result.TotalWrkQ; + totalP += pipe1_result.TotalWrkP; + totalH += pipe1_result.TotalWrkH; + pipe_count++; + } + + + + IStation.Calculation.DispatchAna.Model.AnaScheme pipe2_result = null; + if (pipe2_TargetFlow > 50) + { + calc_pipe2_helper.InitialParas( + pipe2_TargetFlow, + water_level2,true , + pipe2_TargetPess,false , + null, null, + (from x in _allMachineList where pipe2_machineIds.Contains(x.MachineID) select x).ToList(), null); + pipe2_result = calc_pipe2_helper.CalcKeepStatus(_open_machine_IdList); + if (pipe2_result == null) + { + error_info = "绠¤矾2璋冨害鏂规鏃犳硶璁$畻璇风‘璁ゆ暟鎹槸鍚﹀悎鐞�"; + return null; + } + totalQ += pipe2_result.TotalWrkQ; + totalP += pipe2_result.TotalWrkP; + totalH += pipe2_result.TotalWrkH; + pipe_count++; + } + + + IStation.Calculation.DispatchAna.Model.AnaScheme pipe3_result = null; + if (pipe3_TargetFlow > 50) + { + calc_pipe3_helper.InitialParas( + pipe3_TargetFlow, + water_level3, true, + pipe3_TargetPess,false, + null, null, + (from x in _allMachineList where pipe3_machineIds.Contains(x.MachineID) select x).ToList(), null); + pipe3_result = calc_pipe3_helper.CalcKeepStatus(_open_machine_IdList); + if (pipe3_result == null) + { + error_info = "绠¤矾3璋冨害鏂规鏃犳硶璁$畻璇风‘璁ゆ暟鎹槸鍚﹀悎鐞�"; + return null; + } + totalQ += pipe3_result.TotalWrkQ; + totalP += pipe3_result.TotalWrkP; + totalH += pipe3_result.TotalWrkH; + pipe_count++; + } + + var connect_scheme = new Model.AnaScheme(); + connect_scheme.ID = 1; + connect_scheme.TotalWrkQ = Math.Round(totalQ, 1); + connect_scheme.TotalWrkH = Math.Round(totalH / totalH,2); + connect_scheme.TotalWrkP = Math.Round(totalP, 1); + connect_scheme.TotalWrkE = IStation.Common.PumpParaHelper.CalculateE(connect_scheme.TotalWrkQ, connect_scheme.TotalWrkH, connect_scheme.TotalWrkP); + connect_scheme.UWP = CalculateUWP(connect_scheme.TotalWrkP, connect_scheme.TotalWrkQ, connect_scheme.TotalWrkH); + connect_scheme.WP = CalculateWP(connect_scheme.TotalWrkP, connect_scheme.TotalWrkQ); + + connect_scheme.Items = new List<Model.AnaSchemeItem>(); + if (pipe1_result.Items != null && pipe1_result.Items.Count > 0) + connect_scheme.Items.AddRange(pipe1_result.Items); + if (pipe2_result.Items != null && pipe2_result.Items.Count > 0) + connect_scheme.Items.AddRange(pipe2_result.Items); + if (pipe3_result.Items != null && pipe3_result.Items.Count > 0) + connect_scheme.Items.AddRange(pipe3_result.Items); + + return connect_scheme; + 銆� + } + } +} diff --git "a/Calculation/IStation.Calculation.Dispatch/custom/shys/station/\351\231\210\350\241\214\344\270\200\350\276\223/OptAna.cs" "b/Calculation/IStation.Calculation.Dispatch/custom/shys/station/\351\231\210\350\241\214\344\270\200\350\276\223/OptAna.cs" new file mode 100644 index 0000000..c3d5ae7 --- /dev/null +++ "b/Calculation/IStation.Calculation.Dispatch/custom/shys/station/\351\231\210\350\241\214\344\270\200\350\276\223/OptAna.cs" @@ -0,0 +1,447 @@ +锘縰sing System; +using System.Collections.Generic; +using System.Linq; +using System.Numerics; +using System.Text; +using System.Threading.Tasks; +using IStation.Calculation.DispatchAna.Model; + +namespace IStation.Calculation.DispatchAna +{ + /// <summary> + /// 闄堣涓�杈撹皟搴︽柟妗堣绠楀櫒(鏈�浼樻柟妗�) + /// </summary> + public class Calculator_OptAna_SHYS_闄堣涓�杈�: CalculatorBase_SHYS_闄堣涓�杈�, IOptAnaCalc + { + List<Model.MachineDetail> _allMachineList = null; + + + + + + #region 璁$畻 鏈�浼樻柟妗� + /// <summary> + /// 璁$畻 鏈�浼樻柟妗� + /// </summary> + /// <param name="complex_request_paras"></param> + /// <param name="eta_ana_records"></param> + /// <param name="machine_run_status"></param> + /// <param name="error_info"></param> + /// <returns></returns> + public List<IStation.Calculation.DispatchAna.Model.AnaScheme> CalcSchemes( + IStation.Calculation.DispatchAna.Model.RequestParasComplex complex_request_paras, + IStation.Calculation.DispatchAna.Model.EtaAnaRecord4Station eta_ana_records, + IStation.Calculation.DispatchAna.Model.MachineRunPara machine_run_status, + out string error_info) + { + this._corpID = complex_request_paras.CorpID; + this._stationID = complex_request_paras.StationID; + + + + + var isUsePress = complex_request_paras.PressValueType == Model.RequestParasComplex.ePressValueType.鍘嬪姏 ? true : false; + + + if (isUsePress) + return CalcSchemes鍘嬪姏(complex_request_paras, machine_run_status, out error_info); + else + return CalcSchemes鎵▼(complex_request_paras, machine_run_status, out error_info); + } + /// <summary> + /// + /// </summary> + /// <param name="complex_request_paras"></param> + /// <param name="machine_run_status"></param> + /// <param name="error_info"></param> + /// <returns></returns> + protected override List<IStation.Calculation.DispatchAna.Model.AnaScheme> CalcSchemes鍘嬪姏( + IStation.Calculation.DispatchAna.Model.RequestParasComplex complex_request_paras, + IStation.Calculation.DispatchAna.Model.MachineRunPara machine_run_status, + out string error_info) + { + error_info = ""; + if (complex_request_paras == null) + { + error_info = "ERROR 30"; + return null; + } + if (complex_request_paras.OutletPipePara == null || + complex_request_paras.OutletPipePara.Count < 3) + { + error_info = "ERROR 35,闄堣涓�杈撻渶瑕�3涓嚭鍙g璺殑娴侀噺"; + return null; + } + double water_level1 = 0, water_level2 = 0, water_level3 = 0; + if (complex_request_paras.InletPipePara != null && complex_request_paras.InletPipePara.Count > 0) + { + if (complex_request_paras.InletPipePara.Count >= 1) + { + water_level1 = complex_request_paras.InletPipePara[0].Value; + } + if (complex_request_paras.InletPipePara.Count >= 2) + { + water_level2 = complex_request_paras.InletPipePara[1].Value; + } + if (complex_request_paras.InletPipePara.Count >= 3) + { + water_level3 = complex_request_paras.InletPipePara[2].Value; + } + } + + + double pipe1_TargetFlow = complex_request_paras.OutletPipePara[0].TargetFlow; + double pipe2_TargetFlow = complex_request_paras.OutletPipePara[1].TargetFlow; + double pipe3_TargetFlow = complex_request_paras.OutletPipePara[2].TargetFlow; + if (pipe1_TargetFlow < 50 && pipe2_TargetFlow < 50 && pipe3_TargetFlow < 50) + {//閮藉叧鏈� + error_info = "ERROR 35,闄堣涓�杈撻渶瑕�3涓嚭鍙g璺殑娴侀噺閮戒负0"; + return null; + } + + double pipe1_TargetPess = complex_request_paras.OutletPipePara[0].TargetPress; + double pipe2_TargetPess = complex_request_paras.OutletPipePara[1].TargetPress; + double pipe3_TargetPess = complex_request_paras.OutletPipePara[2].TargetPress; + if (pipe1_TargetFlow > 50) + { + if (pipe1_TargetPess < water_level1/100 + 0.01) + { + error_info = "ERROR 35,闄堣涓�杈撻渶瑕佷竴鍙风鍘嬪姏鏈祴鍊�"; + return default; + } + } + if (pipe2_TargetFlow > 50) + { + if (pipe2_TargetPess < water_level2 / 100 + 0.01) + { + error_info = "ERROR 35,闄堣涓�杈撻渶瑕佷簩鍙风鍘嬪姏鏈祴鍊�"; + return default; + } + } + if (pipe3_TargetFlow > 50) + { + if (pipe3_TargetPess < water_level3 / 100 + 0.01) + { + error_info = "ERROR 35,闄堣涓�杈撻渶瑕佷笁鍙风鍘嬪姏鏈祴鍊�"; + return default; + } + } + + + + + + + //鏈烘车淇℃伅 + if (_allMachineList == null) + { + if (!BuildMachineList( + out _allMachineList, + out error_info)) + { + error_info = "鏈烘车缁勬棤娉曟瀯寤�,ERROR 70,閿欒淇℃伅:" + error_info; + return null; + } + } + + + + + Common.DispatchAnaGeneralHelper鍘嬪姏 calc_pipe1_helper + = new Common.DispatchAnaGeneralHelper鍘嬪姏(); + + Common.DispatchAnaGeneralHelper鍘嬪姏 calc_pipe2_helper + = new Common.DispatchAnaGeneralHelper鍘嬪姏(); + + Common.DispatchAnaGeneralHelper鍘嬪姏 calc_pipe3_helper + = new Common.DispatchAnaGeneralHelper鍘嬪姏(); + + + double totalQ = 0, totalH = 0, totalP = 0; + int pipe_count = 0; + + IStation.Calculation.DispatchAna.Model.AnaScheme pipe1_result = null; + List<IStation.Calculation.DispatchAna.Model.AnaScheme> pipe1_results = null; + if (pipe1_TargetFlow > 50) + { + calc_pipe1_helper.InitialParas( + pipe1_TargetFlow, + water_level1 ,true , + pipe1_TargetPess,false, + null, null, + (from x in _allMachineList where pipe1_machineIds.Contains(x.MachineID) select x).ToList(), + machine_run_status == null ? null : machine_run_status.MachineRunFilter); + pipe1_results = calc_pipe1_helper.CalcOptList(complex_request_paras.SchemeSortType, 3); + if (pipe1_results == null || pipe1_results.Count() == 0) + { + error_info = String.Format("绠¤矾涓�璋冨害鏂规鏃犳硶璁$畻,璇风‘璁ゆ暟鎹槸鍚﹀悎鐞�,杩涘彛娑蹭綅:{0} ,鍑哄彛鍘嬪姏:{1}MPa, 娴侀噺瑕佹眰:{2}", + Math.Round(water_level1, 4), Math.Round(pipe1_TargetPess,4), pipe1_TargetFlow); + return null; + } + pipe1_result = pipe1_results[0]; + totalQ += pipe1_result.TotalWrkQ; + totalP += pipe1_result.TotalWrkP; + totalH += pipe1_result.TotalWrkH; + pipe_count++; + } + IStation.Calculation.DispatchAna.Model.AnaScheme pipe2_result = null; + List<IStation.Calculation.DispatchAna.Model.AnaScheme> pipe2_results = null; + if (pipe2_TargetFlow > 50) + { + calc_pipe2_helper.InitialParas( + pipe2_TargetFlow, + water_level2, true, + pipe2_TargetPess,false , + null, null, + (from x in _allMachineList where pipe2_machineIds.Contains(x.MachineID) select x).ToList(), + machine_run_status == null ? null : machine_run_status.MachineRunFilter); + + pipe2_results = calc_pipe2_helper.CalcOptList(complex_request_paras.SchemeSortType, 3); + if (pipe2_results == null || pipe2_results.Count() == 0) + { + error_info = String.Format("绠¤矾2璋冨害鏂规鏃犳硶璁$畻,璇风‘璁ゆ暟鎹槸鍚﹀悎鐞�,杩涘彛娑蹭綅:{0} ,鍑哄彛鍘嬪姏:{1}MPa,娴侀噺瑕佹眰:{2}", + Math.Round(water_level1, 4), Math.Round(pipe2_TargetPess, 4), pipe2_TargetFlow); + return null; + } + pipe2_result = pipe2_results[0]; + totalQ += pipe2_result.TotalWrkQ; + totalP += pipe2_result.TotalWrkP; + totalH += pipe2_result.TotalWrkH; + pipe_count++; + } + + IStation.Calculation.DispatchAna.Model.AnaScheme pipe3_result = null; + List<IStation.Calculation.DispatchAna.Model.AnaScheme> pipe3_results = null; + if (pipe3_TargetFlow > 50) + { + calc_pipe3_helper.InitialParas( + pipe3_TargetFlow, + water_level3,true , + pipe3_TargetPess,false , + null, null, + (from x in _allMachineList where pipe3_machineIds.Contains(x.MachineID) select x).ToList(), + machine_run_status == null ? null : machine_run_status.MachineRunFilter); + + pipe3_results = calc_pipe3_helper.CalcOptList(complex_request_paras.SchemeSortType, 3); + if (pipe3_results == null || pipe3_results.Count() == 0) + { + error_info = String.Format("绠¤矾3璋冨害鏂规鏃犳硶璁$畻,璇风‘璁ゆ暟鎹槸鍚﹀悎鐞�,杩涘彛娑蹭綅:{0} ,鍑哄彛鍘嬪姏:{1}MPa,娴侀噺瑕佹眰:{2}", + Math.Round(water_level3, 4), Math.Round(pipe3_TargetPess, 4), pipe3_TargetFlow); + return null; + } + pipe3_result = pipe3_results[0]; + totalQ += pipe3_result.TotalWrkQ; + totalP += pipe3_result.TotalWrkP; + totalH += pipe3_result.TotalWrkH; + pipe_count++; + } + + var plan = new Model.AnaScheme(); + plan.ID = 1; + plan.TotalWrkQ = Math.Round(totalQ, 1); + plan.TotalWrkH = Math.Round(totalH / totalH, 2); + plan.TotalWrkP = Math.Round(totalP, 1); + plan.TotalWrkE = IStation.Common.PumpParaHelper.CalculateE(plan.TotalWrkQ, plan.TotalWrkH, plan.TotalWrkP); + plan.UWP = CalculateUWP(plan.TotalWrkP, plan.TotalWrkQ, plan.TotalWrkH); + plan.WP = CalculateWP(plan.TotalWrkP, plan.TotalWrkQ); + + plan.Items = new List<Model.AnaSchemeItem>(); + if (pipe1_result.Items != null && pipe1_result.Items.Count > 0) + plan.Items.AddRange(pipe1_result.Items); + if (pipe2_result.Items != null && pipe2_result.Items.Count > 0) + plan.Items.AddRange(pipe2_result.Items); + if (pipe3_result.Items != null && pipe3_result.Items.Count > 0) + plan.Items.AddRange(pipe3_result.Items); + + + return new List<Model.AnaScheme>() { plan }; + } + + + private List<IStation.Calculation.DispatchAna.Model.AnaScheme> CalcSchemes鎵▼( + IStation.Calculation.DispatchAna.Model.RequestParasComplex complex_request_paras, + IStation.Calculation.DispatchAna.Model.MachineRunPara machine_run_status, + out string error_info) + { + error_info = ""; + if (complex_request_paras == null) + { + error_info = "ERROR 30"; + return null; + } + if (complex_request_paras.OutletPipePara == null || + complex_request_paras.OutletPipePara.Count < 2) + { + error_info = "ERROR 35,闄堣涓�杈撻渶瑕佷袱涓璺殑娴侀噺"; + return null; + } + + double pipe1_TargetFlow = complex_request_paras.OutletPipePara[0].TargetFlow; + double pipe2_TargetFlow = complex_request_paras.OutletPipePara[1].TargetFlow; + double pipe3_TargetFlow = complex_request_paras.OutletPipePara[2].TargetFlow; + if (pipe1_TargetFlow < 50 && pipe2_TargetFlow < 50 && pipe3_TargetFlow < 50) + {//閮藉叧鏈� + error_info = "ERROR 35,闄堣涓�杈撻渶瑕佷袱涓璺殑娴侀噺 閮戒负0"; + return null; + } + + double pipe1_TargetHead = complex_request_paras.OutletPipePara[0].TargetPress; + double pipe2_TargetHead = complex_request_paras.OutletPipePara[1].TargetPress; + double pipe3_TargetHead = complex_request_paras.OutletPipePara[2].TargetPress; + if (pipe1_TargetFlow > 50) + { + if (pipe1_TargetHead < 0.01) + { + error_info = "ERROR 35,闄堣涓�杈撻渶瑕佷竴鍙风鍘嬪姏鏈祴鍊�"; + return default; + } + } + if (pipe2_TargetFlow > 50) + { + if (pipe2_TargetHead < 0.01) + { + error_info = "ERROR 35,闄堣涓�杈撻渶瑕佷簩鍙风鍘嬪姏鏈祴鍊�"; + return default; + } + } + if (pipe3_TargetFlow > 50) + { + if (pipe3_TargetHead < 0.01) + { + error_info = "ERROR 35,闄堣涓�杈撻渶瑕�3鍙风鍘嬪姏鏈祴鍊�"; + return default; + } + } + + + //鏈烘车淇℃伅 + if (_allMachineList == null) + { + if (!BuildMachineList( + out _allMachineList, + out error_info)) + { + error_info = "鏈烘车缁勬棤娉曟瀯寤�,ERROR 70,閿欒淇℃伅:" + error_info; + return null; + } + } + + + + + + Common.DispatchAnaGeneralHelper鎵▼ calc_pipe1_helper + = new Common.DispatchAnaGeneralHelper鎵▼(); + + Common.DispatchAnaGeneralHelper鎵▼ calc_pipe2_helper + = new Common.DispatchAnaGeneralHelper鎵▼(); + + Common.DispatchAnaGeneralHelper鎵▼ calc_pipe3_helper + = new Common.DispatchAnaGeneralHelper鎵▼(); + + + double totalQ = 0, totalH = 0, totalP = 0; + int pipe_count = 0; + + IStation.Calculation.DispatchAna.Model.AnaScheme pipe1_result = null; + List<IStation.Calculation.DispatchAna.Model.AnaScheme> pipe1_results = null; + if (pipe1_TargetFlow > 50) + { + calc_pipe1_helper.InitialParas( + pipe1_TargetFlow, + pipe1_TargetHead, + null, null, + (from x in _allMachineList where pipe1_machineIds.Contains(x.MachineID) select x).ToList(), + machine_run_status == null ? null : machine_run_status.MachineRunFilter); + pipe1_results = calc_pipe1_helper.CalcOptList(complex_request_paras.SchemeSortType, 3); + if (pipe1_results == null || pipe1_results.Count() == 0) + { + error_info = String.Format("绠¤矾涓�璋冨害鏂规鏃犳硶璁$畻,璇风‘璁ゆ暟鎹槸鍚﹀悎鐞�,鎵▼瑕佹眰:{0}m,娴侀噺瑕佹眰:{1}", + pipe1_TargetHead, pipe1_TargetFlow); + return null; + } + pipe1_result = pipe1_results[0]; + totalQ += pipe1_result.TotalWrkQ; + totalP += pipe1_result.TotalWrkP; + totalH += pipe1_result.TotalWrkH; + pipe_count++; + } + IStation.Calculation.DispatchAna.Model.AnaScheme pipe2_result = null; + List<IStation.Calculation.DispatchAna.Model.AnaScheme> pipe2_results = null; + if (pipe2_TargetFlow > 50) + { + calc_pipe2_helper.InitialParas( + pipe2_TargetFlow, + pipe2_TargetHead, + null, null, + (from x in _allMachineList where pipe2_machineIds.Contains(x.MachineID) select x).ToList(), + machine_run_status == null ? null : machine_run_status.MachineRunFilter); + + pipe2_results = calc_pipe2_helper.CalcOptList(complex_request_paras.SchemeSortType, 3); + if (pipe2_results == null || pipe2_results.Count() == 0) + { + error_info = String.Format("绠¤矾涓�璋冨害鏂规鏃犳硶璁$畻,璇风‘璁ゆ暟鎹槸鍚﹀悎鐞�,鎵▼瑕佹眰:{0}m,娴侀噺瑕佹眰:{1}", + pipe2_TargetHead, pipe1_TargetFlow); + return null; + } + pipe2_result = pipe2_results[0]; + totalQ += pipe2_result.TotalWrkQ; + totalP += pipe2_result.TotalWrkP; + totalH += pipe2_result.TotalWrkH; + pipe_count++; + } + + IStation.Calculation.DispatchAna.Model.AnaScheme pipe3_result = null; + List<IStation.Calculation.DispatchAna.Model.AnaScheme> pipe3_results = null; + if (pipe3_TargetFlow > 50) + { + calc_pipe3_helper.InitialParas( + pipe3_TargetFlow, + pipe3_TargetHead, + null, null, + (from x in _allMachineList where pipe3_machineIds.Contains(x.MachineID) select x).ToList(), + machine_run_status == null ? null : machine_run_status.MachineRunFilter); + + pipe3_results = calc_pipe3_helper.CalcOptList(complex_request_paras.SchemeSortType, 3); + if (pipe3_results == null || pipe3_results.Count() == 0) + { + error_info = String.Format("绠¤矾涓�璋冨害鏂规鏃犳硶璁$畻,璇风‘璁ゆ暟鎹槸鍚﹀悎鐞�,鎵▼瑕佹眰:{0}m,娴侀噺瑕佹眰:{1}", + pipe3_TargetHead, pipe3_TargetFlow); + return null; + } + pipe3_result = pipe3_results[0]; + totalQ += pipe3_result.TotalWrkQ; + totalP += pipe3_result.TotalWrkP; + totalH += pipe3_result.TotalWrkH; + pipe_count++; + } + + var plan = new Model.AnaScheme(); + plan.ID = 1; + plan.TotalWrkQ = Math.Round(totalQ, 1); + plan.TotalWrkH = Math.Round(totalH / totalH, 2); + plan.TotalWrkP = Math.Round(totalP, 1); + plan.TotalWrkE = IStation.Common.PumpParaHelper.CalculateE(plan.TotalWrkQ, plan.TotalWrkH, plan.TotalWrkP); + plan.UWP = CalculateUWP(plan.TotalWrkP, plan.TotalWrkQ, plan.TotalWrkH); + plan.WP = CalculateWP(plan.TotalWrkP, plan.TotalWrkQ); + + plan.Items = new List<Model.AnaSchemeItem>(); + if (pipe1_result.Items != null && pipe1_result.Items.Count > 0) + plan.Items.AddRange(pipe1_result.Items); + if (pipe2_result.Items != null && pipe2_result.Items.Count > 0) + plan.Items.AddRange(pipe2_result.Items); + if (pipe3_result.Items != null && pipe3_result.Items.Count > 0) + plan.Items.AddRange(pipe3_result.Items); + + + return new List<Model.AnaScheme>() { plan }; + } + + + #endregion + + + + + } +} diff --git "a/Calculation/IStation.Calculation.Dispatch/custom/shys/station/\351\231\210\350\241\214\344\272\214\350\276\223/Base.cs" "b/Calculation/IStation.Calculation.Dispatch/custom/shys/station/\351\231\210\350\241\214\344\272\214\350\276\223/Base.cs" new file mode 100644 index 0000000..fd234dd --- /dev/null +++ "b/Calculation/IStation.Calculation.Dispatch/custom/shys/station/\351\231\210\350\241\214\344\272\214\350\276\223/Base.cs" @@ -0,0 +1,62 @@ +锘縰sing System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace IStation.Calculation.DispatchAna +{ + /// <summary> + /// 闄堣浜岃緭璋冨害鏂规璁$畻鍣� + /// </summary> + public class CalculatorBase_SHYS_闄堣浜岃緭 : CalculatorOptAnaBase + { + /// <summary> + /// + /// </summary> + static protected List<long> machine_ids = new List<long>() { 283,286,289,292,295,298,301 }; + + /// <summary> + /// + /// </summary> + protected List<long> pipe1_machineIds = null;//1鍙锋车锛�2鍙锋车,3鍙锋车 + /// <summary> + /// + /// </summary> + protected List<long> pipe2_machineIds = null;//锛�4鍙锋车 锛�5鍙锋车 锛�6鍙锋车锛�7鍙锋车 + /// <summary> + /// + /// </summary> + static public long _monitor_id_娑蹭綅 = 916; + + /// <summary> + /// + /// </summary> + static public long _monitor_id_涓�鍙风鍘嬪姏 = 917; + /// <summary> + /// + /// </summary> + static public long _monitor_id_浜屽彿绠″帇鍔� = 920; + /// <summary> + /// + /// </summary> + static public long _monitor_id_涓�鍙风娴侀噺 = 918; + /// <summary> + /// + /// </summary> + static public long _monitor_id_浜屽彿绠℃祦閲� = 921; + + /// <summary> + /// + /// </summary> + public CalculatorBase_SHYS_闄堣浜岃緭() + { + pipe1_machineIds = new List<long>() { machine_ids[0], machine_ids[1], machine_ids[2] };//1鍙锋车锛�2鍙锋车,3鍙锋车 + pipe2_machineIds = new List<long>() { machine_ids[3], machine_ids[4], machine_ids[5], machine_ids[6] };//锛�4鍙锋车 锛�5鍙锋车 锛�6鍙锋车锛�7鍙锋车 + + _corpID = 4; + _stationID = 16; + } + + } +} diff --git "a/Calculation/IStation.Calculation.Dispatch/custom/shys/station/\351\231\210\350\241\214\344\272\214\350\276\223/Current.cs" "b/Calculation/IStation.Calculation.Dispatch/custom/shys/station/\351\231\210\350\241\214\344\272\214\350\276\223/Current.cs" new file mode 100644 index 0000000..7e8329f --- /dev/null +++ "b/Calculation/IStation.Calculation.Dispatch/custom/shys/station/\351\231\210\350\241\214\344\272\214\350\276\223/Current.cs" @@ -0,0 +1,64 @@ +锘縰sing System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace IStation.Calculation.DispatchAna +{ + /// <summary> + /// 闄堣浜岃緭娉电珯璋冨害鏂规璁$畻鍣� + /// </summary> + internal class Calculator_Current_SHYS_闄堣浜岃緭: CalculatorBase_SHYS_闄堣浜岃緭, IGetCurrentRecord + { + /// <summary> + /// 鑾峰彇褰撳墠璋冨害淇℃伅 + /// </summary> + /// <param name="CorpID"></param> + /// <param name="StationID"></param> + /// <param name="error_info"></param> + /// <returns></returns> + public Model.CurrentRecordBundle GetCurrentRecord(long CorpID, long StationID, out string error_info) + { + error_info = null; + List<long> monitor_ids = new List<long>() { _monitor_id_娑蹭綅, _monitor_id_涓�鍙风鍘嬪姏, + _monitor_id_浜屽彿绠″帇鍔�, _monitor_id_涓�鍙风娴侀噺, _monitor_id_浜屽彿绠℃祦閲� }; + var monitor_records = new Service.MonitorRecord().GetLastRecord(_corpID, monitor_ids); + + Model.CurrentRecordBundle bundle = new Model.CurrentRecordBundle(); + + bundle.WaterLevelList = new List<Model.CurrentRecordBundle.RecordValue>(); + + var water_level = monitor_records.Find(x => x.MonitorPointID == _monitor_id_娑蹭綅); + if (water_level != null) + { + bundle.WaterLevelList.Add(new Model.CurrentRecordBundle.RecordValue("娑蹭綅", water_level, 2)); + } + + + var pipe_press1 = monitor_records.Find(x => x.MonitorPointID == _monitor_id_涓�鍙风鍘嬪姏); + var pipe_press2 = monitor_records.Find(x => x.MonitorPointID == _monitor_id_浜屽彿绠″帇鍔�); + if (pipe_press1 != null && pipe_press2 != null) + { + bundle.PressList = new List<Model.CurrentRecordBundle.RecordValue>(); + bundle.PressList.Add(new Model.CurrentRecordBundle.RecordValue("涓�鍙风", pipe_press1, 4)); + bundle.PressList.Add(new Model.CurrentRecordBundle.RecordValue("浜屽彿绠�", pipe_press2, 4)); + } + + var pipe_flow1 = monitor_records.Find(x => x.MonitorPointID == _monitor_id_涓�鍙风娴侀噺); + var pipe_flow2 = monitor_records.Find(x => x.MonitorPointID == _monitor_id_浜屽彿绠℃祦閲�); + if (pipe_flow1 != null && pipe_flow2 != null) + { + bundle.FlowList = new List<Model.CurrentRecordBundle.RecordValue>(); + bundle.FlowList.Add(new Model.CurrentRecordBundle.RecordValue("涓�鍙风", pipe_flow1, 0)); + bundle.FlowList.Add(new Model.CurrentRecordBundle.RecordValue("浜屽彿绠�", pipe_flow2, 0)); + } + + + return bundle; + } + + + + } +} diff --git "a/Calculation/IStation.Calculation.Dispatch/custom/shys/station/\351\231\210\350\241\214\344\272\214\350\276\223/KeepStatus.cs" "b/Calculation/IStation.Calculation.Dispatch/custom/shys/station/\351\231\210\350\241\214\344\272\214\350\276\223/KeepStatus.cs" new file mode 100644 index 0000000..d8dfbe7 --- /dev/null +++ "b/Calculation/IStation.Calculation.Dispatch/custom/shys/station/\351\231\210\350\241\214\344\272\214\350\276\223/KeepStatus.cs" @@ -0,0 +1,193 @@ +锘縰sing System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace IStation.Calculation.DispatchAna +{ + /// <summary> + /// 闄堣浜岃緭娉电珯璋冨害鏂规璁$畻鍣� + /// </summary> + internal class Calculator_KeepStatus_SHYS_闄堣浜岃緭 : CalculatorBase_SHYS_闄堣浜岃緭, IKeepStatusCalc + { + public Calculator_KeepStatus_SHYS_闄堣浜岃緭() + { + + } + Model.RequestParasComplex _request_paras; + List<long> _open_machine_IdList ; + + List<Model.MachineDetail> _allMachineList = null; + /// <summary> + /// 鍒濆鍖栧弬鏁� + /// </summary> + /// <param name="complex_request_paras"></param> + /// <param name="eta_ana_records"></param> + /// <param name="open_machine_ids"></param> + public void IntialRequest( + IStation.Calculation.DispatchAna.Model.RequestParasComplex complex_request_paras, + IStation.Calculation.DispatchAna.Model.EtaAnaRecord4Station eta_ana_records, + List<long> open_machine_ids) + { + this._request_paras = complex_request_paras; + this._open_machine_IdList = open_machine_ids; + } + + + + + /// <summary> + /// 璁$畻淇濇寔褰撳墠寮�鏈虹姸鎬� + /// </summary> + /// <param name="error_info">閿欒淇℃伅</param> + /// <returns></returns> + public Model.AnaScheme Calc(out string error_info) + { + if (_open_machine_IdList == null || _open_machine_IdList.Count == 0) + { + error_info = "ERROR 25"; + return null; + } + error_info = null; + if (_request_paras == null) + { + error_info = "ERROR 30"; + return null; + } + + if (_request_paras.OutletPipePara == null || _request_paras.OutletPipePara.Count < 2) + { + error_info = "ERROR 35"; + return null; + } + double pipe1_TargetFlow = _request_paras.OutletPipePara[0].TargetFlow; + double pipe2_TargetFlow = _request_paras.OutletPipePara[1].TargetFlow; + if (pipe1_TargetFlow < 10 && pipe2_TargetFlow < 10) + { + return default; + } + + double pipe1_TargetPess = _request_paras.OutletPipePara[0].TargetPress; + double pipe2_TargetPess = _request_paras.OutletPipePara[1].TargetPress; + if (pipe1_TargetFlow > 50) + { + if (pipe1_TargetPess < 0.01) + { + error_info = "ERROR 35,闄堣浜岃緭闇�瑕佷竴鍙风鍘嬪姏鏈祴鍊�"; + return default; + } + } + if (pipe2_TargetFlow > 50) + { + if (pipe2_TargetPess < 0.01) + { + error_info = "ERROR 35,闄堣浜岃緭闇�瑕佷簩鍙风鍘嬪姏鏈祴鍊�"; + return default; + } + } + + double water_level = 0;//姘翠綅 + if (_request_paras.InletPipePara != null && _request_paras.InletPipePara.Count > 0) + { + water_level = _request_paras.InletPipePara[0].Value; + } + + //鏈烘车淇℃伅 + if(_allMachineList == null) + { + if (!BuildMachineList( + out _allMachineList, + out error_info)) + { + error_info = "鏈烘车缁勬棤娉曟瀯寤�,ERROR 70,閿欒淇℃伅:" + error_info; + return null; + } + } + + + + + + Common.DispatchAnaGeneralHelper鍘嬪姏 calc_pipe1_helper + = new Common.DispatchAnaGeneralHelper鍘嬪姏(); + + Common.DispatchAnaGeneralHelper鍘嬪姏 calc_pipe2_helper + = new Common.DispatchAnaGeneralHelper鍘嬪姏(); + + if (pipe2_TargetFlow < 30) + {//鍙紑涓�鍙锋车浜屽彿娉� + calc_pipe1_helper.InitialParas( + pipe1_TargetFlow, + water_level, true, + pipe1_TargetPess, false, + null, null, + (from x in _allMachineList where pipe1_machineIds.Contains(x.MachineID) select x).ToList(), null); + + return calc_pipe1_helper.CalcKeepStatus(_open_machine_IdList); + } + else if (pipe1_TargetFlow < 30) + { + calc_pipe2_helper.InitialParas( + pipe2_TargetFlow, + water_level,true , + pipe2_TargetPess,false , + null, null, + (from x in _allMachineList where pipe2_machineIds.Contains(x.MachineID) select x).ToList(), null); + + return calc_pipe2_helper.CalcKeepStatus(_open_machine_IdList); + } + + + + + calc_pipe1_helper.InitialParas( + pipe1_TargetFlow, + water_level, true, + pipe1_TargetPess, false, + null, null, + (from x in _allMachineList where pipe1_machineIds.Contains(x.MachineID) select x).ToList(), null); + var pipe1_result = calc_pipe1_helper.CalcKeepStatus(_open_machine_IdList); + if (pipe1_result == null) + { + error_info = "绠¤矾涓�璋冨害鏂规鏃犳硶璁$畻璇风‘璁ゆ暟鎹槸鍚﹀悎鐞�"; + return null; + } + + calc_pipe2_helper.InitialParas( + pipe2_TargetFlow, + water_level, true, + pipe2_TargetPess, true, + null, null, + (from x in _allMachineList where pipe2_machineIds.Contains(x.MachineID) select x).ToList(), null); + + var pipe2_result = calc_pipe2_helper.CalcKeepStatus(_open_machine_IdList); + if (pipe2_result == null) + { + error_info = "绠¤矾浜岃皟搴︽柟妗堟棤娉曡绠楄纭鏁版嵁鏄惁鍚堢悊"; + return null; + } + + + + var connect_scheme = new Model.AnaScheme(); + connect_scheme.ID = 1; + connect_scheme.TotalWrkQ = pipe1_result.TotalWrkQ + pipe2_result.TotalWrkQ; + connect_scheme.TotalWrkH = (pipe1_result.TotalWrkH + pipe2_result.TotalWrkH) / 2; + connect_scheme.TotalWrkP = pipe1_result.TotalWrkP + pipe2_result.TotalWrkP; + connect_scheme.TotalWrkE = IStation.Common.PumpParaHelper.CalculateE(connect_scheme.TotalWrkQ, connect_scheme.TotalWrkH, connect_scheme.TotalWrkP); + connect_scheme.UWP = CalculateUWP(connect_scheme.TotalWrkP, connect_scheme.TotalWrkQ, connect_scheme.TotalWrkH); + connect_scheme.WP = CalculateWP(connect_scheme.TotalWrkP, connect_scheme.TotalWrkQ); + + connect_scheme.Items = new List<Model.AnaSchemeItem>(); + if (pipe1_result.Items != null && pipe1_result.Items.Count > 0) + connect_scheme.Items.AddRange(pipe1_result.Items); + if (pipe2_result.Items != null && pipe2_result.Items.Count > 0) + connect_scheme.Items.AddRange(pipe2_result.Items); + + + return connect_scheme; + + } + } +} diff --git "a/Calculation/IStation.Calculation.Dispatch/custom/shys/station/\351\231\210\350\241\214\344\272\214\350\276\223/OptAna.cs" "b/Calculation/IStation.Calculation.Dispatch/custom/shys/station/\351\231\210\350\241\214\344\272\214\350\276\223/OptAna.cs" new file mode 100644 index 0000000..22a7112 --- /dev/null +++ "b/Calculation/IStation.Calculation.Dispatch/custom/shys/station/\351\231\210\350\241\214\344\272\214\350\276\223/OptAna.cs" @@ -0,0 +1,366 @@ +锘縰sing System; +using System.Collections.Generic; +using System.Linq; +using System.Numerics; +using System.Text; +using System.Threading.Tasks; +using IStation.Calculation.DispatchAna.Model; + +namespace IStation.Calculation.DispatchAna +{ + /// <summary> + /// 闄堣浜岃緭璋冨害鏂规璁$畻鍣�(鏈�浼樻柟妗�) + /// </summary> + public class Calculator_OptAna_SHYS_闄堣浜岃緭: CalculatorBase_SHYS_闄堣浜岃緭, IOptAnaCalc + { + List<Model.MachineDetail> _allMachineList = null; + + + /// <summary> + /// / + /// </summary> + public Calculator_OptAna_SHYS_闄堣浜岃緭() + { + + } + + + #region 璁$畻 鏈�浼樻柟妗� + /// <summary> + /// 璁$畻 鏈�浼樻柟妗� + /// </summary> + /// <param name="complex_request_paras"></param> + /// <param name="eta_ana_records"></param> + /// <param name="machine_run_status"></param> + /// <param name="error_info"></param> + /// <returns></returns> + public List<IStation.Calculation.DispatchAna.Model.AnaScheme> CalcSchemes( + IStation.Calculation.DispatchAna.Model.RequestParasComplex complex_request_paras, + IStation.Calculation.DispatchAna.Model.EtaAnaRecord4Station eta_ana_records, + IStation.Calculation.DispatchAna.Model.MachineRunPara machine_run_status, + out string error_info) + { + this._corpID = complex_request_paras.CorpID; + this._stationID = complex_request_paras.StationID; + + + + + var isUsePress = complex_request_paras.PressValueType == Model.RequestParasComplex.ePressValueType.鍘嬪姏 ? true : false; + + + if (isUsePress) + return CalcSchemes鍘嬪姏(complex_request_paras, machine_run_status, out error_info); + else + return CalcSchemes鎵▼(complex_request_paras, machine_run_status, out error_info); + } + /// <summary> + /// + /// </summary> + /// <param name="complex_request_paras"></param> + /// <param name="machine_run_status"></param> + /// <param name="error_info"></param> + /// <returns></returns> + protected override List<IStation.Calculation.DispatchAna.Model.AnaScheme> CalcSchemes鍘嬪姏( + IStation.Calculation.DispatchAna.Model.RequestParasComplex complex_request_paras, + IStation.Calculation.DispatchAna.Model.MachineRunPara machine_run_status, + out string error_info) + { + error_info = ""; + if (complex_request_paras == null) + { + error_info = "ERROR 30"; + return null; + } + if (complex_request_paras.OutletPipePara == null || + complex_request_paras.OutletPipePara.Count < 2) + { + error_info = "ERROR 35,闄堣浜岃緭闇�瑕佷袱涓璺殑娴侀噺"; + return null; + } + + double pipe1_TargetFlow = complex_request_paras.OutletPipePara[0].TargetFlow; + double pipe2_TargetFlow = complex_request_paras.OutletPipePara[1].TargetFlow; + if (pipe1_TargetFlow < 50 && pipe2_TargetFlow < 50) + {//閮藉叧鏈� + error_info = "ERROR 35,闄堣浜岃緭闇�瑕佷袱涓璺殑娴侀噺閮戒负0"; + return null; + } + + double pipe1_TargetPess = complex_request_paras.OutletPipePara[0].TargetPress; + double pipe2_TargetPess = complex_request_paras.OutletPipePara[1].TargetPress; + if (pipe1_TargetFlow > 50) + { + if (pipe1_TargetPess < 0.01) + { + error_info = "ERROR 35,闄堣浜岃緭闇�瑕佷竴鍙风鍘嬪姏鏈祴鍊�"; + return default; + } + } + if (pipe2_TargetFlow > 50) + { + if (pipe2_TargetPess < 0.01) + { + error_info = "ERROR 35,闄堣浜岃緭闇�瑕佷簩鍙风鍘嬪姏鏈祴鍊�"; + return default; + } + } + double water_level = 0;//姘翠綅 + if (complex_request_paras.InletPipePara != null && complex_request_paras.InletPipePara.Count > 0) + { + + water_level = complex_request_paras.InletPipePara[0].Value; + + } + + + //鏈烘车淇℃伅 + if (_allMachineList == null) + { + if (!BuildMachineList( + out _allMachineList, + out error_info)) + { + error_info = "鏈烘车缁勬棤娉曟瀯寤�,ERROR 70,閿欒淇℃伅:" + error_info; + return null; + } + } + + + + + Common.DispatchAnaGeneralHelper鍘嬪姏 calc_pipe1_helper = + new Common.DispatchAnaGeneralHelper鍘嬪姏(); + + Common.DispatchAnaGeneralHelper鍘嬪姏 calc_pipe2_helper = + new Common.DispatchAnaGeneralHelper鍘嬪姏(); + + if (pipe2_TargetFlow < 50) + {//鍙紑涓�鍙锋车浜屽彿娉� + calc_pipe1_helper.InitialParas( + pipe1_TargetFlow, + water_level,true , + pipe1_TargetPess,false , + null, null, + (from x in _allMachineList where pipe1_machineIds.Contains(x.MachineID) select x).ToList(), + machine_run_status == null ? null : machine_run_status.MachineRunFilter); + + return calc_pipe1_helper.CalcOptList(complex_request_paras.SchemeSortType, 3); + } + else if (pipe1_TargetFlow < 50) + { + calc_pipe2_helper.InitialParas( + pipe2_TargetFlow, + water_level, true, + pipe2_TargetPess, false, + null, null, + (from x in _allMachineList where pipe2_machineIds.Contains(x.MachineID) select x).ToList(), + machine_run_status == null ? null : machine_run_status.MachineRunFilter); + + return calc_pipe2_helper.CalcOptList(complex_request_paras.SchemeSortType, 3); + } + calc_pipe1_helper.InitialParas( + pipe1_TargetFlow, + water_level,true , + pipe1_TargetPess,false , + null, null, + (from x in _allMachineList where pipe1_machineIds.Contains(x.MachineID) select x).ToList(), + machine_run_status == null ? null : machine_run_status.MachineRunFilter); + var pipe1_result = calc_pipe1_helper.CalcOptList(complex_request_paras.SchemeSortType, 3); + if (pipe1_result == null) + { + error_info = String.Format("绠¤矾涓�璋冨害鏂规鏃犳硶璁$畻,璇风‘璁ゆ暟鎹槸鍚﹀悎鐞�,娑蹭綅:{0}m,鍑哄彛鍘嬪姏:{1}MPa,娴侀噺瑕佹眰:{2}", + water_level, pipe1_TargetPess, pipe1_TargetFlow); + return null; + } + + calc_pipe2_helper.InitialParas( + pipe2_TargetFlow, + water_level, true, + pipe2_TargetPess, false, + null, null, + (from x in _allMachineList where pipe2_machineIds.Contains(x.MachineID) select x).ToList(), + machine_run_status == null ? null : machine_run_status.MachineRunFilter); + + var pipe2_result = calc_pipe2_helper.CalcOptList(complex_request_paras.SchemeSortType, 3); + if (pipe2_result == null) + { + error_info = String.Format("绠¤矾2璋冨害鏂规鏃犳硶璁$畻,璇风‘璁ゆ暟鎹槸鍚﹀悎鐞�,娑蹭綅:{0}m,鍑哄彛鍘嬪姏:{1}MPa,娴侀噺瑕佹眰:{2}", + water_level, pipe2_TargetPess, pipe2_TargetFlow); + return null; + } + + var result_1 = pipe1_result.First(); + var result_2 = pipe2_result.First(); + + var plan = new Model.AnaScheme(); + plan.ID = 1; + plan.TotalWrkQ = result_1.TotalWrkQ + result_2.TotalWrkQ; + plan.TotalWrkH = result_1.TotalWrkH + result_2.TotalWrkH; + plan.TotalWrkP = result_1.TotalWrkP + result_2.TotalWrkP; + plan.TotalWrkE = IStation.Common.PumpParaHelper.CalculateE(plan.TotalWrkQ, plan.TotalWrkH, plan.TotalWrkP); + plan.UWP = CalculateUWP(plan.TotalWrkP, plan.TotalWrkQ, plan.TotalWrkH); + plan.WP = CalculateWP(plan.TotalWrkP, plan.TotalWrkQ); + + plan.Items = new List<Model.AnaSchemeItem>(); + if (result_1.Items != null && result_1.Items.Count > 0) + plan.Items.AddRange(result_1.Items); + if (result_2.Items != null && result_2.Items.Count > 0) + plan.Items.AddRange(result_2.Items); + + + return new List<Model.AnaScheme>() { plan }; + } + + + private List<IStation.Calculation.DispatchAna.Model.AnaScheme> CalcSchemes鎵▼( + IStation.Calculation.DispatchAna.Model.RequestParasComplex complex_request_paras, + IStation.Calculation.DispatchAna.Model.MachineRunPara machine_run_status, + out string error_info) + { + error_info = ""; + if (complex_request_paras == null) + { + error_info = "ERROR 30"; + return null; + } + if (complex_request_paras.OutletPipePara == null || + complex_request_paras.OutletPipePara.Count < 2) + { + error_info = "ERROR 35,闄堣浜岃緭闇�瑕佷袱涓璺殑娴侀噺"; + return null; + } + + double pipe1_TargetFlow = complex_request_paras.OutletPipePara[0].TargetFlow; + double pipe2_TargetFlow = complex_request_paras.OutletPipePara[1].TargetFlow; + if (pipe1_TargetFlow < 50 && pipe2_TargetFlow < 50) + {//閮藉叧鏈� + error_info = "ERROR 35,闄堣浜岃緭闇�瑕佷袱涓璺殑娴侀噺 閮戒负0"; + return null; + } + + double pipe1_TargetHead = complex_request_paras.OutletPipePara[0].TargetPress; + double pipe2_TargetHead = complex_request_paras.OutletPipePara[1].TargetPress; + + if (pipe1_TargetFlow > 50) + { + if (pipe1_TargetHead < 0.01) + { + error_info = "ERROR 35,闄堣浜岃緭闇�瑕佷竴鍙风鍘嬪姏鏈祴鍊�"; + return default; + } + } + if (pipe2_TargetFlow > 50) + { + if (pipe2_TargetHead < 0.01) + { + error_info = "ERROR 35,闄堣浜岃緭闇�瑕佷簩鍙风鍘嬪姏鏈祴鍊�"; + return default; + } + } + + + + //鏈烘车淇℃伅 + if (_allMachineList == null) + { + if (!BuildMachineList( + out _allMachineList, + out error_info)) + { + error_info = "鏈烘车缁勬棤娉曟瀯寤�,ERROR 70,閿欒淇℃伅:" + error_info; + return null; + } + } + + + + + + + Common.DispatchAnaGeneralHelper鎵▼ calc_pipe1_helper = + new Common.DispatchAnaGeneralHelper鎵▼(); + + Common.DispatchAnaGeneralHelper鎵▼ calc_pipe2_helper = + new Common.DispatchAnaGeneralHelper鎵▼(); + + if (pipe2_TargetFlow < 50) + {//鍙紑涓�鍙锋车浜屽彿娉� + calc_pipe1_helper.InitialParas( + pipe1_TargetFlow, + pipe1_TargetHead, + null, null, + (from x in _allMachineList where pipe1_machineIds.Contains(x.MachineID) select x).ToList(), + machine_run_status == null ? null : machine_run_status.MachineRunFilter); + + return calc_pipe1_helper.CalcOptList(complex_request_paras.SchemeSortType, 3); + } + else if (pipe1_TargetFlow < 50) + { + calc_pipe2_helper.InitialParas( + pipe2_TargetFlow, + pipe2_TargetHead, + null, null, + (from x in _allMachineList where pipe2_machineIds.Contains(x.MachineID) select x).ToList(), + machine_run_status == null ? null : machine_run_status.MachineRunFilter); + + return calc_pipe2_helper.CalcOptList(complex_request_paras.SchemeSortType, 3); + } + calc_pipe1_helper.InitialParas( + pipe1_TargetFlow, + pipe1_TargetHead, + null, null, + (from x in _allMachineList where pipe1_machineIds.Contains(x.MachineID) select x).ToList(), + machine_run_status == null ? null : machine_run_status.MachineRunFilter); + var pipe1_result = calc_pipe1_helper.CalcOptList(complex_request_paras.SchemeSortType, 3); + if (pipe1_result == null) + { + error_info = String.Format("绠¤矾涓�璋冨害鏂规鏃犳硶璁$畻,璇风‘璁ゆ暟鎹槸鍚﹀悎鐞�, 娴侀噺瑕佹眰:{1},鎵▼{0}m", + pipe1_TargetFlow, pipe1_TargetHead); + return null; + } + + calc_pipe2_helper.InitialParas( + pipe2_TargetFlow, + pipe2_TargetHead, + null, null, + (from x in _allMachineList where pipe2_machineIds.Contains(x.MachineID) select x).ToList(), + machine_run_status == null ? null : machine_run_status.MachineRunFilter); + + var pipe2_result = calc_pipe2_helper.CalcOptList(complex_request_paras.SchemeSortType, 3); + if (pipe2_result == null) + { + error_info = String.Format("绠¤矾涓�璋冨害鏂规鏃犳硶璁$畻,璇风‘璁ゆ暟鎹槸鍚﹀悎鐞�, 娴侀噺瑕佹眰:{1},鎵▼{0}m", + pipe2_TargetFlow, pipe2_TargetHead); + return null; + } + + var result_1 = pipe1_result.First(); + var result_2 = pipe2_result.First(); + + var plan = new Model.AnaScheme(); + plan.ID = 1; + plan.TotalWrkQ = result_1.TotalWrkQ + result_2.TotalWrkQ; + plan.TotalWrkH = (result_1.TotalWrkH + result_2.TotalWrkH)/2; + plan.TotalWrkP = result_1.TotalWrkP + result_2.TotalWrkP; + plan.TotalWrkE = IStation.Common.PumpParaHelper.CalculateE(plan.TotalWrkQ, plan.TotalWrkH, plan.TotalWrkP); + plan.UWP = CalculateUWP(plan.TotalWrkP, plan.TotalWrkQ, plan.TotalWrkH); + plan.WP = CalculateWP(plan.TotalWrkP, plan.TotalWrkQ); + + plan.Items = new List<Model.AnaSchemeItem>(); + if (result_1.Items != null && result_1.Items.Count > 0) + plan.Items.AddRange(result_1.Items); + if (result_2.Items != null && result_2.Items.Count > 0) + plan.Items.AddRange(result_2.Items); + + + return new List<Model.AnaScheme>() { plan }; + } + + #endregion + + + + + } +} diff --git a/Calculation/IStation.Calculation.Dispatch/general/KeepStatus.cs b/Calculation/IStation.Calculation.Dispatch/general/KeepStatus.cs index c73b3db..d55b94b 100644 --- a/Calculation/IStation.Calculation.Dispatch/general/KeepStatus.cs +++ b/Calculation/IStation.Calculation.Dispatch/general/KeepStatus.cs @@ -73,9 +73,9 @@ } double water_level = 0;//姘翠綅 - if (_request_paras.WaterLevelPara != null && _request_paras.WaterLevelPara.Count > 0) + if (_request_paras.InletPipePara != null && _request_paras.InletPipePara.Count > 0) { - water_level = _request_paras.WaterLevelPara.First().Value; + water_level = _request_paras.InletPipePara.First().Value; } if (_request_paras.ValvePara == null || _request_paras.ValvePara.Count < 1) @@ -97,8 +97,8 @@ new IStation.Calculation.DispatchAna.Common.DispatchAnaGeneralHelper鍘嬪姏(); calc_pipe_helper.InitialParas( target_flow, - water_level, - target_press, + water_level,true, + target_press,false, _request_paras.OutletPipePara[0].TargetFlowRangeMin, _request_paras.OutletPipePara[0].TargetFlowRangeMax, allMachineList, null); diff --git a/Calculation/IStation.Calculation.Dispatch/general/OptAna.cs b/Calculation/IStation.Calculation.Dispatch/general/OptAna.cs index bf4a6e1..3623389 100644 --- a/Calculation/IStation.Calculation.Dispatch/general/OptAna.cs +++ b/Calculation/IStation.Calculation.Dispatch/general/OptAna.cs @@ -13,6 +13,7 @@ public class Calculator_OptAna_General : CalculatorOptAnaBase, IOptAnaCalc { List<IStation.Calculation.DispatchAna.Model.MachineDetail> allMachineList = null; + #region 璁$畻 鏈�浼樻柟妗� /// <summary> /// 璁$畻 鏈�浼樻柟妗� @@ -26,8 +27,7 @@ IStation.Calculation.DispatchAna.Model.EtaAnaRecord4Station eta_ana_records, IStation.Calculation.DispatchAna.Model.MachineRunPara machine_run_status, out string error_info) - { - + { var isUsePress = complex_request_paras.PressValueType == Model.RequestParasComplex.ePressValueType.鍘嬪姏 ? true : false; if (eta_ana_records != null && eta_ana_records.Q.HasValue && eta_ana_records.H.HasValue) @@ -107,9 +107,13 @@ } double water_level = 0;//姘翠綅 - if (complex_request_paras.WaterLevelPara != null && complex_request_paras.WaterLevelPara.Count > 0) + if (complex_request_paras.InletPipePara != null && complex_request_paras.InletPipePara.Count > 0) { - water_level = complex_request_paras.WaterLevelPara.First().Value; + water_level = complex_request_paras.InletPipePara.First().Value; + if (!complex_request_paras.InletPipePara.First().IsWaterLevel) + {//鎹㈡垚M + water_level = water_level * 102; + } } @@ -132,8 +136,8 @@ new IStation.Calculation.DispatchAna.Common.DispatchAnaGeneralHelper鍘嬪姏(); calc_pipe_helper.InitialParas( target_flow, - water_level, - target_press, + water_level,true , + target_press,false , complex_request_paras.OutletPipePara[0].TargetFlowRangeMin, complex_request_paras.OutletPipePara[0].TargetFlowRangeMax, allMachineList, diff --git "a/Calculation/IStation.Calculation.Dispatch/helper/DispatchAnaGeneralHelper\345\216\213\345\212\233.cs" "b/Calculation/IStation.Calculation.Dispatch/helper/DispatchAnaGeneralHelper\345\216\213\345\212\233.cs" index fdd7862..f4d3da2 100644 --- "a/Calculation/IStation.Calculation.Dispatch/helper/DispatchAnaGeneralHelper\345\216\213\345\212\233.cs" +++ "b/Calculation/IStation.Calculation.Dispatch/helper/DispatchAnaGeneralHelper\345\216\213\345\212\233.cs" @@ -65,20 +65,41 @@ /// 鍒濆鍖栧弬鏁� /// </summary> /// <param name="targetQ"></param> - /// <param name="water_level"></param> - /// <param name="outlet_press"></param> + /// <param name="inlet_para"></param> + /// <param name="inlet_is_waterlevel"></param> + /// <param name="outlet_para"></param> + /// <param name="outlet_is_waterlevel"></param> /// <param name="MinQ"></param> /// <param name="MaxQ"></param> /// <param name="allEnginePumpList"></param> /// <param name="MachineRunFilterList"></param> /// <returns></returns> public bool InitialParas( - double targetQ, double water_level, double outlet_press, string MinQ, string MaxQ, + double targetQ, + double inlet_para,bool inlet_is_waterlevel, + double outlet_para,bool outlet_is_waterlevel, + string MinQ, string MaxQ, List<IStation.Calculation.DispatchAna.Model.MachineDetail> allEnginePumpList, List<IStation.Calculation.DispatchAna.Model.MachineRunFilter> MachineRunFilterList) - { - this._targetInletPress = Math.Round(water_level / 102, 4); - this._targetOutletPress = outlet_press; + { + if (inlet_is_waterlevel) + { + this._targetInletPress = Math.Round(inlet_para / 102, 4); + } + else + { + this._targetInletPress = Math.Round(inlet_para, 4); + } + + if (outlet_is_waterlevel) + { + this._targetOutletPress = Math.Round(outlet_para / 102, 4); + } + else + { + this._targetOutletPress = outlet_para; + } + this._targetQ = targetQ; this._allMachineList = allEnginePumpList; @@ -283,51 +304,66 @@ #region 寮�濮嬪垎鏋� _anaSchemeList = new List<IStation.Calculation.DispatchAna.Model.AnaScheme>(); - - int max_fre_num = 2;//鏈�澶氬彉棰�2鍙�, 鍏朵綑鐨勫嵆浣垮彉棰�,涔熸寜50HZ杩愯 - var arry_allMachineList = all_machine_ana_result_list.ToArray(); - for (int openPumpNum = 1; openPumpNum <= all_machine_ana_result_list.Count(); openPumpNum++) + if (all_machine_ana_result_list.Count() == 0) { - //寰楀埌鎵�鏈夋帓鍒楃粍鍚� - List<IStation.Calculation.DispatchAna.Model.PumpAnaDataBase[]> open_machine_combine_list = - IStation.Model.PermutationAndCombination<IStation.Calculation.DispatchAna.Model.PumpAnaDataBase>.GetCombination( - arry_allMachineList, openPumpNum); - - - foreach (var open_machine_list in open_machine_combine_list) + return null; + } + else if (all_machine_ana_result_list.Count() == 1) + { + var first_pump = all_machine_ana_result_list.First(); + first_pump.AsFrequency = true; + IStation.Calculation.DispatchAna.Model.PumpAnaDataBase[] open_machine_list = new + IStation.Calculation.DispatchAna.Model.PumpAnaDataBase[] { first_pump }; + AnaMahineComb(open_machine_list); + } + else + { + int max_fre_num = 2;//鏈�澶氬彉棰�2鍙�, 鍏朵綑鐨勫嵆浣垮彉棰�,涔熸寜50HZ杩愯 + var arry_allMachineList = all_machine_ana_result_list.ToArray(); + for (int openPumpNum = 1; openPumpNum <= all_machine_ana_result_list.Count(); openPumpNum++) { - var fre_machines = (from x in open_machine_list where x.IsFrequency select x).ToArray(); + //寰楀埌鎵�鏈夋帓鍒楃粍鍚� + List<IStation.Calculation.DispatchAna.Model.PumpAnaDataBase[]> open_machine_combine_list = + IStation.Model.PermutationAndCombination<IStation.Calculation.DispatchAna.Model.PumpAnaDataBase>.GetCombination( + arry_allMachineList, openPumpNum); - if (fre_machines.Count() > max_fre_num) - {//鏈�澶氭妸2鍙版车褰撲綔鍙橀娉佃繍琛�, 鍏朵綑鎸夊伐棰戞车杩愯 - List<IStation.Calculation.DispatchAna.Model.PumpAnaDataBase[]> real_fre_machine_combine_list = - IStation.Model.PermutationAndCombination<IStation.Calculation.DispatchAna.Model.PumpAnaDataBase>.GetCombination( - fre_machines, max_fre_num);//鎺掑垪缁勫悎,鎵鹃噷闈㈢殑2鍙� - foreach (var real_fre_machine_list in real_fre_machine_combine_list) + foreach (var open_machine_list in open_machine_combine_list) + { + var fre_machines = (from x in open_machine_list where x.IsFrequency select x).ToArray(); + + if (fre_machines.Count() > max_fre_num) + {//鏈�澶氭妸2鍙版车褰撲綔鍙橀娉佃繍琛�, 鍏朵綑鎸夊伐棰戞车杩愯 + List<IStation.Calculation.DispatchAna.Model.PumpAnaDataBase[]> real_fre_machine_combine_list = + IStation.Model.PermutationAndCombination<IStation.Calculation.DispatchAna.Model.PumpAnaDataBase>.GetCombination( + fre_machines, max_fre_num);//鎺掑垪缁勫悎,鎵鹃噷闈㈢殑2鍙� + + foreach (var real_fre_machine_list in real_fre_machine_combine_list) + { + foreach (var m in fre_machines) + {//鍏堟妸鎵�鏈夊彉棰戞车褰撲綔宸ラ娉� + m.AsFrequency = false; + } + foreach (var m in real_fre_machine_list) + {//鎶婃帓鍒楃粍鍚堜腑鐨勪袱鍙拌缃綅鍙橀娉� + m.AsFrequency = true; + } + AnaMahineComb(open_machine_list); + } + + } + else { foreach (var m in fre_machines) - {//鍏堟妸鎵�鏈夊彉棰戞车褰撲綔宸ラ娉� - m.AsFrequency = false; - } - foreach (var m in real_fre_machine_list) - {//鎶婃帓鍒楃粍鍚堜腑鐨勪袱鍙拌缃綅鍙橀娉� + { m.AsFrequency = true; } AnaMahineComb(open_machine_list); } - - } - else - { - foreach (var m in fre_machines) - { - m.AsFrequency = true; - } - AnaMahineComb(open_machine_list); } } } + #endregion if (_anaSchemeList.Count() == 0) @@ -409,15 +445,18 @@ fixPumpAnaCombine.Add(machine); } } + if (fre_pump_count > 0) + { + if (total_min_flow > _targetQmax) + { + return; + } + if (total_max_flow < _targetQmin) + { + return; + } + } - if (total_min_flow > _targetQmax) - { - return; - } - if (total_max_flow < _targetQmin) - { - return; - } if (fre_pump_count == 0) {//鍙敤鍥洪娉靛嵆鍙� diff --git a/Calculation/IStation.Calculation.Dispatch/input/WaterLevelPara.cs b/Calculation/IStation.Calculation.Dispatch/input/InletPipePara.cs similarity index 71% rename from Calculation/IStation.Calculation.Dispatch/input/WaterLevelPara.cs rename to Calculation/IStation.Calculation.Dispatch/input/InletPipePara.cs index 67ad288..bb313bd 100644 --- a/Calculation/IStation.Calculation.Dispatch/input/WaterLevelPara.cs +++ b/Calculation/IStation.Calculation.Dispatch/input/InletPipePara.cs @@ -9,20 +9,26 @@ /// <summary> /// /// </summary> - public class WaterLevelPara + public class InletPipePara { /// <summary> /// /// </summary> - public WaterLevelPara() { } + public InletPipePara() { IsWaterLevel = true; } /// <summary> /// /// </summary> /// <param name="v"></param> - public WaterLevelPara (double v) + public InletPipePara (double v) { this.Value = v; } + + /// <summary> + /// 鏄惁鏄按浣� + /// </summary> + public bool IsWaterLevel { get; set; } = true; + /// <summary> /// /// </summary> diff --git a/Calculation/IStation.Calculation.Dispatch/input/OutletPipePara.cs b/Calculation/IStation.Calculation.Dispatch/input/OutletPipePara.cs index 388df7b..43e6166 100644 --- a/Calculation/IStation.Calculation.Dispatch/input/OutletPipePara.cs +++ b/Calculation/IStation.Calculation.Dispatch/input/OutletPipePara.cs @@ -14,7 +14,7 @@ /// <summary> /// /// </summary> - public OutletPipePara() { } + public OutletPipePara() { IsWaterLevel = false ; } /// <summary> /// @@ -34,6 +34,11 @@ public string Name { get; set; } /// <summary> + /// 鏄惁鏄按浣� + /// </summary> + public bool IsWaterLevel { get; set; } = false ; + + /// <summary> /// 闃�闂ㄧ姸鎬� 1 寮� 0 鍏� /// </summary> public int ValveStatus { get; set; } diff --git a/Calculation/IStation.Calculation.Dispatch/input/RequestParasComplex.cs b/Calculation/IStation.Calculation.Dispatch/input/RequestParasComplex.cs index d622d07..dcedec6 100644 --- a/Calculation/IStation.Calculation.Dispatch/input/RequestParasComplex.cs +++ b/Calculation/IStation.Calculation.Dispatch/input/RequestParasComplex.cs @@ -60,6 +60,11 @@ /// </summary> public List<OutletPipePara> OutletPipePara { get; set; } + /// <summary> + /// 杩涘彛绠¤矾 + /// </summary> + public List<InletPipePara> InletPipePara { get; set; } + /// <summary> /// 闃�闂ㄧ姸鎬�(涓嶅惈鍑哄彛绠¤矾鐨勯榾闂ㄧ姸鎬�) @@ -67,10 +72,7 @@ public List<ValvePara> ValvePara { get; set; } - /// <summary> - /// 姘翠綅鍙傛暟 - /// </summary> - public List<WaterLevelPara> WaterLevelPara { get; set; } + -- Gitblit v1.9.3