已重命名11个文件
已修改11个文件
已添加6个文件
| | |
| | | private readonly Service.HydraulicModelValidationConfig _service_hydraulic_model_validation_config = new IStation.Service.HydraulicModelValidationConfig(); |
| | | |
| | | private static readonly Dictionary<string, double> _pump_nr_dict = new() { |
| | | { "Pump11",524}, |
| | | { "Pump12",524}, |
| | | { "Pump13",524}, |
| | | { "Pump14",524}, |
| | | //{ "Pump15",545}, |
| | | //{ "Pump16",524}, |
| | | { "Pump17",524}, |
| | | { "Pump18",524}, |
| | | { "Pump11",590}, |
| | | { "Pump12",590}, |
| | | { "Pump13",590}, |
| | | { "Pump14",590}, |
| | | //{ "Pump15",590}, |
| | | //{ "Pump16",590}, |
| | | { "Pump17",590}, |
| | | { "Pump18",590}, |
| | | |
| | | { "Pump21",740}, |
| | | { "Pump22",495}, |
| | |
| | | </ItemGroup> |
| | | |
| | | <ItemGroup> |
| | | <PackageReference Include="Yw.Application.Core" Version="3.0.7" /> |
| | | <PackageReference Include="Yw.Application.Core" Version="3.1.0" /> |
| | | <PackageReference Include="Yw.Captcha.Core" Version="3.0.0" /> |
| | | </ItemGroup> |
| | | |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <Project Sdk="Microsoft.NET.Sdk"> |
| | | |
| | | <PropertyGroup> |
| | | <OutputType>Exe</OutputType> |
| | | <TargetFramework>net6.0</TargetFramework> |
| | | <ImplicitUsings>enable</ImplicitUsings> |
| | | <Nullable>enable</Nullable> |
| | | </PropertyGroup> |
| | | |
| | | </Project> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | // See https://aka.ms/new-console-template for more information |
| | | Console.WriteLine("Hello, World!"); |
| | |
| | | </PropertyGroup> |
| | | |
| | | <ItemGroup> |
| | | <PackageReference Include="Yw.Dto.Core" Version="3.0.7" /> |
| | | <PackageReference Include="Yw.Service.Auth.Core" Version="3.0.8" /> |
| | | <PackageReference Include="Yw.Dto.Core" Version="3.1.0" /> |
| | | <PackageReference Include="Yw.Service.Auth.Core" Version="3.1.0" /> |
| | | </ItemGroup> |
| | | |
| | | <ItemGroup> |
| | |
| | | <Project> |
| | | <PropertyGroup> |
| | | <_PublishTargetUrl>D:\WorkCode\IStation\Service.Ch.V1.1\IStation.Entry\bin\Release\net6.0\publish\</_PublishTargetUrl> |
| | | <History>True|2024-06-26T08:20:21.3981649Z||;False|2024-06-26T16:19:59.2162840+08:00||;True|2024-06-26T15:20:17.9242271+08:00||;True|2024-06-19T15:01:43.3271769+08:00||;True|2024-06-18T09:51:50.4178295+08:00||;True|2024-06-18T09:41:19.5989782+08:00||;True|2024-06-18T09:41:10.7867036+08:00||;True|2024-06-18T09:38:57.0128861+08:00||;True|2024-06-17T15:22:17.6153518+08:00||;False|2024-06-17T15:22:01.3404718+08:00||;True|2024-06-13T11:15:55.4873247+08:00||;True|2024-06-13T11:14:52.9075916+08:00||;True|2024-06-13T10:09:13.5966875+08:00||;True|2024-06-13T09:58:26.1880685+08:00||;True|2024-06-13T09:49:29.6928004+08:00||;True|2024-06-13T09:46:16.2707476+08:00||;True|2024-05-30T14:57:39.3412922+08:00||;True|2024-05-30T11:59:44.7664433+08:00||;True|2024-05-30T11:53:59.9799057+08:00||;True|2024-05-30T11:21:35.4761141+08:00||;True|2024-05-30T11:16:55.6157765+08:00||;True|2024-05-30T11:07:45.8336241+08:00||;True|2024-05-30T10:59:58.8877118+08:00||;True|2024-05-30T10:36:09.0290592+08:00||;True|2024-05-30T10:35:17.5448779+08:00||;True|2024-05-27T17:06:29.6833574+08:00||;False|2024-05-27T17:06:07.6398727+08:00||;False|2024-05-27T17:05:20.1523960+08:00||;False|2024-05-27T17:05:04.1140399+08:00||;False|2024-05-27T17:04:44.5872009+08:00||;True|2024-05-11T15:21:00.4779174+08:00||;True|2024-04-23T10:14:25.7074885+08:00||;True|2024-04-22T16:37:12.5852855+08:00||;True|2024-04-22T16:34:52.0894541+08:00||;True|2024-04-19T10:53:01.1630050+08:00||;True|2024-04-19T10:52:02.7021209+08:00||;True|2024-03-30T11:56:28.7775554+08:00||;True|2024-03-13T14:48:09.8998210+08:00||;True|2024-03-13T14:47:27.2433264+08:00||;True|2023-12-25T14:14:16.4083227+08:00||;True|2023-11-16T13:48:01.0622937+08:00||;True|2023-10-18T11:32:08.8356991+08:00||;False|2023-10-18T11:29:58.5783437+08:00||;True|2023-10-16T10:41:58.8456599+08:00||;False|2023-10-16T10:30:14.3272745+08:00||;True|2023-09-11T14:56:16.8635396+08:00||;True|2023-08-31T14:48:56.6882268+08:00||;True|2023-08-31T14:42:46.1818009+08:00||;True|2023-08-31T14:35:48.5604752+08:00||;True|2023-08-08T11:38:41.3309044+08:00||;True|2023-07-28T11:00:59.6697086+08:00||;True|2023-07-18T14:39:48.3496234+08:00||;True|2023-07-17T17:38:55.8911210+08:00||;True|2023-07-17T11:57:31.1164907+08:00||;True|2023-07-17T10:00:17.1961455+08:00||;True|2023-07-13T16:04:03.6854523+08:00||;True|2023-07-11T09:58:12.2295644+08:00||;True|2023-06-26T11:38:29.6648988+08:00||;True|2023-06-21T16:17:40.6226554+08:00||;True|2023-06-21T13:30:18.8163322+08:00||;True|2023-06-21T13:19:43.9290154+08:00||;True|2023-06-21T11:35:28.3376504+08:00||;</History> |
| | | <History>True|2024-07-09T01:51:25.7986637Z||;False|2024-07-09T09:50:56.5778877+08:00||;False|2024-07-09T09:50:23.0123211+08:00||;True|2024-06-26T16:20:21.3981649+08:00||;False|2024-06-26T16:19:59.2162840+08:00||;True|2024-06-26T15:20:17.9242271+08:00||;True|2024-06-19T15:01:43.3271769+08:00||;True|2024-06-18T09:51:50.4178295+08:00||;True|2024-06-18T09:41:19.5989782+08:00||;True|2024-06-18T09:41:10.7867036+08:00||;True|2024-06-18T09:38:57.0128861+08:00||;True|2024-06-17T15:22:17.6153518+08:00||;False|2024-06-17T15:22:01.3404718+08:00||;True|2024-06-13T11:15:55.4873247+08:00||;True|2024-06-13T11:14:52.9075916+08:00||;True|2024-06-13T10:09:13.5966875+08:00||;True|2024-06-13T09:58:26.1880685+08:00||;True|2024-06-13T09:49:29.6928004+08:00||;True|2024-06-13T09:46:16.2707476+08:00||;True|2024-05-30T14:57:39.3412922+08:00||;True|2024-05-30T11:59:44.7664433+08:00||;True|2024-05-30T11:53:59.9799057+08:00||;True|2024-05-30T11:21:35.4761141+08:00||;True|2024-05-30T11:16:55.6157765+08:00||;True|2024-05-30T11:07:45.8336241+08:00||;True|2024-05-30T10:59:58.8877118+08:00||;True|2024-05-30T10:36:09.0290592+08:00||;True|2024-05-30T10:35:17.5448779+08:00||;True|2024-05-27T17:06:29.6833574+08:00||;False|2024-05-27T17:06:07.6398727+08:00||;False|2024-05-27T17:05:20.1523960+08:00||;False|2024-05-27T17:05:04.1140399+08:00||;False|2024-05-27T17:04:44.5872009+08:00||;True|2024-05-11T15:21:00.4779174+08:00||;True|2024-04-23T10:14:25.7074885+08:00||;True|2024-04-22T16:37:12.5852855+08:00||;True|2024-04-22T16:34:52.0894541+08:00||;True|2024-04-19T10:53:01.1630050+08:00||;True|2024-04-19T10:52:02.7021209+08:00||;True|2024-03-30T11:56:28.7775554+08:00||;True|2024-03-13T14:48:09.8998210+08:00||;True|2024-03-13T14:47:27.2433264+08:00||;True|2023-12-25T14:14:16.4083227+08:00||;True|2023-11-16T13:48:01.0622937+08:00||;True|2023-10-18T11:32:08.8356991+08:00||;False|2023-10-18T11:29:58.5783437+08:00||;True|2023-10-16T10:41:58.8456599+08:00||;False|2023-10-16T10:30:14.3272745+08:00||;True|2023-09-11T14:56:16.8635396+08:00||;True|2023-08-31T14:48:56.6882268+08:00||;True|2023-08-31T14:42:46.1818009+08:00||;True|2023-08-31T14:35:48.5604752+08:00||;True|2023-08-08T11:38:41.3309044+08:00||;True|2023-07-28T11:00:59.6697086+08:00||;True|2023-07-18T14:39:48.3496234+08:00||;True|2023-07-17T17:38:55.8911210+08:00||;True|2023-07-17T11:57:31.1164907+08:00||;True|2023-07-17T10:00:17.1961455+08:00||;True|2023-07-13T16:04:03.6854523+08:00||;True|2023-07-11T09:58:12.2295644+08:00||;True|2023-06-26T11:38:29.6648988+08:00||;True|2023-06-21T16:17:40.6226554+08:00||;True|2023-06-21T13:30:18.8163322+08:00||;True|2023-06-21T13:19:43.9290154+08:00||;True|2023-06-21T11:35:28.3376504+08:00||;</History> |
| | | <LastFailureDetails /> |
| | | </PropertyGroup> |
| | | </Project> |
| | |
| | | EndProject |
| | | Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "IStation.TopShelf.Validation", "IStation.TopShelf.Validation\IStation.TopShelf.Validation.csproj", "{D09D4DD5-9F4D-442E-A11D-547AEB3FF18C}" |
| | | EndProject |
| | | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "IStation.Test.One", "IStation.Test.One\IStation.Test.One.csproj", "{9D3A6032-C476-470B-954D-B300546984A4}" |
| | | EndProject |
| | | Global |
| | | GlobalSection(SolutionConfigurationPlatforms) = preSolution |
| | | Debug|Any CPU = Debug|Any CPU |
| | |
| | | {D09D4DD5-9F4D-442E-A11D-547AEB3FF18C}.Release|Any CPU.Build.0 = Release|Any CPU |
| | | {D09D4DD5-9F4D-442E-A11D-547AEB3FF18C}.Release|x86.ActiveCfg = Release|Any CPU |
| | | {D09D4DD5-9F4D-442E-A11D-547AEB3FF18C}.Release|x86.Build.0 = Release|Any CPU |
| | | {9D3A6032-C476-470B-954D-B300546984A4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
| | | {9D3A6032-C476-470B-954D-B300546984A4}.Debug|Any CPU.Build.0 = Debug|Any CPU |
| | | {9D3A6032-C476-470B-954D-B300546984A4}.Debug|x86.ActiveCfg = Debug|Any CPU |
| | | {9D3A6032-C476-470B-954D-B300546984A4}.Debug|x86.Build.0 = Debug|Any CPU |
| | | {9D3A6032-C476-470B-954D-B300546984A4}.Release|Any CPU.ActiveCfg = Release|Any CPU |
| | | {9D3A6032-C476-470B-954D-B300546984A4}.Release|Any CPU.Build.0 = Release|Any CPU |
| | | {9D3A6032-C476-470B-954D-B300546984A4}.Release|x86.ActiveCfg = Release|Any CPU |
| | | {9D3A6032-C476-470B-954D-B300546984A4}.Release|x86.Build.0 = Release|Any CPU |
| | | EndGlobalSection |
| | | GlobalSection(SolutionProperties) = preSolution |
| | | HideSolutionNode = FALSE |
| | |
| | | GlobalSection(NestedProjects) = preSolution |
| | | {34BCD6D5-2061-42AE-AFB4-9A37B32321C5} = {C5DDDBED-5401-4F86-B4B6-97082CDEFC61} |
| | | {35E6A93C-A115-43E7-AE6B-67CEE31C3B7C} = {C5DDDBED-5401-4F86-B4B6-97082CDEFC61} |
| | | {9D3A6032-C476-470B-954D-B300546984A4} = {C5DDDBED-5401-4F86-B4B6-97082CDEFC61} |
| | | EndGlobalSection |
| | | GlobalSection(ExtensibilityGlobals) = postSolution |
| | | SolutionGuid = {E02989A8-9B6F-43E5-AACA-790328215089} |
| | |
| | | Settings.ParasHelper.LocalFile.HydraulicModelFile); |
| | | |
| | | private static readonly Dictionary<string, double> _pump_nr_dict = new() { |
| | | { "Pump11",524}, |
| | | { "Pump12",524}, |
| | | { "Pump13",524}, |
| | | { "Pump14",524}, |
| | | //{ "Pump15",545}, |
| | | //{ "Pump16",524}, |
| | | { "Pump17",524}, |
| | | { "Pump18",524}, |
| | | { "Pump11",590}, |
| | | { "Pump12",590}, |
| | | { "Pump13",590}, |
| | | { "Pump14",590}, |
| | | //{ "Pump15",590}, |
| | | //{ "Pump16",590}, |
| | | { "Pump17",590}, |
| | | { "Pump18",590}, |
| | | |
| | | { "Pump21",740}, |
| | | { "Pump22",495}, |
| | |
| | | </ItemGroup> |
| | | |
| | | <ItemGroup> |
| | | <PackageReference Include="Yw.DAL.PostgreSql.Core" Version="3.0.6" /> |
| | | <PackageReference Include="Yw.DAL.SQLite.Core" Version="3.0.6" /> |
| | | <PackageReference Include="Yw.DALFactory.Core" Version="3.0.0" /> |
| | | <PackageReference Include="Yw.DAL.PostgreSql.Core" Version="3.0.7" /> |
| | | <PackageReference Include="Yw.DAL.SQLite.Core" Version="3.0.7" /> |
| | | <PackageReference Include="Yw.DALFactory.Core" Version="3.0.2" /> |
| | | <PackageReference Include="Yw.MathNet.Core" Version="3.0.0" /> |
| | | <PackageReference Include="Yw.Service.Core" Version="3.0.2" /> |
| | | <PackageReference Include="Yw.Service.Core" Version="3.0.6" /> |
| | | <PackageReference Include="Yw.Yitter.Core" Version="3.0.1" /> |
| | | </ItemGroup> |
| | | |
¶Ô±ÈÐÂÎļþ |
| | |
| | | namespace IStation |
| | | { |
| | | /// <summary> |
| | | /// 模åéªè¯è¾
å©ç±» |
| | | /// </summary> |
| | | public class HydraulicModelValidationHelperJob |
| | | { |
| | | private static readonly string _hydraulic_model_file = Path.Combine( |
| | | Settings.ParasHelper.LocalFile.DataFolderDirectory, |
| | | Settings.ParasHelper.LocalFile.HydraulicModelFile); |
| | | |
| | | private static readonly Dictionary<string, double> _pump_nr_dict = new() { |
| | | { "Pump11",590}, |
| | | { "Pump12",590}, |
| | | { "Pump13",590}, |
| | | { "Pump14",590}, |
| | | //{ "Pump15",590}, |
| | | //{ "Pump16",590}, |
| | | { "Pump17",590}, |
| | | { "Pump18",590}, |
| | | |
| | | { "Pump21",740}, |
| | | { "Pump22",495}, |
| | | { "Pump23",495}, |
| | | { "Pump24",495}, |
| | | { "Pump25",495}, |
| | | { "Pump26",495}, |
| | | { "Pump27",740} |
| | | }; |
| | | |
| | | private static readonly List<string> _MPa = new(); |
| | | private static readonly List<string> _kPa = new(); |
| | | |
| | | /// <summary> |
| | | /// |
| | | /// </summary> |
| | | public static void Execute() |
| | | { |
| | | var verification_id = 1; |
| | | var current_time = DateTime.Now; |
| | | |
| | | if (!File.Exists(_hydraulic_model_file)) |
| | | { |
| | | // Log.Info(verification_id, $"模åéªè¯è®¡åä»»å¡ä¸,æ°´åæ¨¡åæä»¶ä¸åå¨,èªå¨è·³è¿å½åæ°æ®!"); |
| | | // return; |
| | | } |
| | | var hydraulic_model_validation_config = new IStation.Service.HydraulicModelValidationConfig().Get(); |
| | | if (hydraulic_model_validation_config == null) |
| | | { |
| | | // Log.Info(verification_id, "模åéªè¯è®¡åä»»å¡ä¸,æ°´åæ¨¡åéªè¯æä»¶ä¸åå¨,èªå¨è·³è¿å½åæ°æ®!"); |
| | | //return; |
| | | } |
| | | if (!Settings.ParasHelper.ZyDocking.Enable) |
| | | { |
| | | //Log.Info(verification_id, "模åéªè¯è®¡åä»»å¡ä¸,Scadaå¯¹æ¥æ¥å£æªå¯ç¨,èªå¨è·³è¿å½åæ°æ®!"); |
| | | // return; |
| | | }// |
| | | |
| | | |
| | | |
| | | var fileName = "D:\\ScadaDebug.json"; |
| | | var json = File.ReadAllText(fileName); |
| | | var hydraulic_model_scada_list = Yw.JsonHelper.Json2Object<List<IStation.Model.HydraulicModelScada>>(json); |
| | | |
| | | if (!hydraulic_model_scada_list.Any()) |
| | | { |
| | | //Log.Info(verification_id, "模åéªè¯è®¡åä»»å¡ä¸,æ¥æ¶Scadaæ°æ®ä¸ºç©º,èªå¨è·³è¿å½åæ°æ®!"); |
| | | // return; |
| | | } |
| | | else |
| | | { |
| | | // var json = Yw.JsonHelper.Object2Json(hydraulic_model_scada_list); |
| | | //Log.Debug(verification_id, json); |
| | | } |
| | | |
| | | var flow_id_mapping_dict = hydraulic_model_validation_config.FlowIdMappingDict; |
| | | var pressure_id_mapping_dict = hydraulic_model_validation_config.PressureIdMappingDict; |
| | | var pattern_id_mapping_dict = hydraulic_model_validation_config.PatternIdMappingDict; |
| | | |
| | | var pressure_id_kPa_list = hydraulic_model_validation_config.PressureIdkPaList; |
| | | |
| | | var pattern_list = new List<IStation.Hydraulic.Pattern>(); |
| | | var time_value = new IStation.Hydraulic.TimeValue |
| | | { |
| | | Time = current_time, |
| | | Value = new Dictionary<string, double>() |
| | | }; |
| | | |
| | | foreach (var hydraulic_model_scada in hydraulic_model_scada_list) |
| | | { |
| | | var tag = hydraulic_model_scada.Tag; |
| | | var value = hydraulic_model_scada.Value; |
| | | foreach (var item in flow_id_mapping_dict) |
| | | { |
| | | if (item.Value != tag) |
| | | continue; |
| | | time_value.Value.Add(tag, value ?? 0); |
| | | } |
| | | |
| | | foreach (var item in pressure_id_mapping_dict) |
| | | { |
| | | if (item.Value != tag) |
| | | continue; |
| | | |
| | | var pressure_value = value ?? 0; |
| | | if (pressure_id_kPa_list.Contains(tag)) |
| | | { |
| | | pressure_value /= 1000; |
| | | } |
| | | pressure_value = IStation.Curve.PumpCalculateHelper.Mpa2M(pressure_value); |
| | | time_value.Value.Add(tag, pressure_value); |
| | | } |
| | | |
| | | foreach (var item in pattern_id_mapping_dict) |
| | | { |
| | | if (item.Value != tag) |
| | | continue; |
| | | var pattern_id = item.Key; |
| | | var factor = value; |
| | | if (_pump_nr_dict.ContainsKey(pattern_id)) |
| | | { |
| | | factor /= _pump_nr_dict[pattern_id]; |
| | | factor = factor < 0 ? 0 : factor; |
| | | } |
| | | var pattern = new IStation.Hydraulic.Pattern |
| | | { |
| | | Id = pattern_id, |
| | | FactorList = new List<float>() |
| | | }; |
| | | if (factor.HasValue) |
| | | pattern.FactorList.Add((float)factor.Value); |
| | | pattern_list.Add(pattern); |
| | | } |
| | | } |
| | | |
| | | var pattern_dict = new Dictionary<string, double>(); |
| | | pattern_list = pattern_list.OrderBy(x => x.Id).ToList(); |
| | | foreach (var item in pattern_list) |
| | | { |
| | | pattern_dict[item.Id] = item.FactorList.FirstOrDefault(); |
| | | } |
| | | var pattern_list_json = Yw.JsonHelper.Object2Json(pattern_dict); |
| | | |
| | | |
| | | // Log.Info(verification_id, _hydraulic_model_file);//text |
| | | var hydraulic_model_record_list = IStation.Hydraulic.ModeVerifyHelper.Verify(verification_id, _hydraulic_model_file, flow_id_mapping_dict, pressure_id_mapping_dict, pattern_list, time_value); |
| | | if (hydraulic_model_record_list == null || !hydraulic_model_record_list.Any()) |
| | | { |
| | | // Log.Info(verification_id, "模åéªè¯è®¡åä»»å¡ä¸,模åéªè¯æ°æ®ä¸ºç©ºï¼èªå¨è·³è¿å½åæ°æ®!"); |
| | | // return; |
| | | } |
| | | |
| | | |
| | | } |
| | | |
| | | |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <Project Sdk="Microsoft.NET.Sdk"> |
| | | |
| | | <PropertyGroup> |
| | | <OutputType>Exe</OutputType> |
| | | <TargetFramework>net6.0</TargetFramework> |
| | | <ImplicitUsings>enable</ImplicitUsings> |
| | | <Nullable>enable</Nullable> |
| | | <PlatformTarget>x86</PlatformTarget> |
| | | </PropertyGroup> |
| | | |
| | | <ItemGroup> |
| | | <ProjectReference Include="..\IStation.Dto\IStation.Dto.csproj" /> |
| | | <ProjectReference Include="..\IStation.Service\IStation.Service.csproj" /> |
| | | </ItemGroup> |
| | | |
| | | </Project> |
¶Ô±ÈÐÂÎļþ |
| | |
| | |  |
| | | IStation.HydraulicModelValidationHelperJob.Execute(); |
| | |
| | | namespace IStation.Test |
| | | namespace IStation |
| | | { |
| | | /// <summary> |
| | | /// 模åéªè¯è¾
å©ç±» |
| | | /// </summary> |
| | | public class HydraulicModelValidationHelperJob |
| | | public class HydraulicModelValidationHelperJob |
| | | { |
| | | private static readonly string _hydraulic_model_file = Path.Combine( |
| | | Settings.ParasHelper.LocalFile.DataFolderDirectory, |
| | | Settings.ParasHelper.LocalFile.HydraulicModelFile); |
| | | |
| | | private static readonly Dictionary<string, double> _pump_nr_dict = new() { |
| | | { "Pump11",524}, |
| | | { "Pump12",524}, |
| | | { "Pump13",524}, |
| | | { "Pump14",524}, |
| | | //{ "Pump15",545}, |
| | | //{ "Pump16",524}, |
| | | { "Pump17",524}, |
| | | { "Pump18",524}, |
| | | { "Pump11",590}, |
| | | { "Pump12",590}, |
| | | { "Pump13",590}, |
| | | { "Pump14",590}, |
| | | //{ "Pump15",590}, |
| | | //{ "Pump16",590}, |
| | | { "Pump17",590}, |
| | | { "Pump18",590}, |
| | | |
| | | { "Pump21",740}, |
| | | { "Pump22",495}, |
| | |
| | | { "Pump27",740} |
| | | }; |
| | | |
| | | private static readonly List<string> _MPa = new(); |
| | | private static readonly List<string> _kPa = new(); |
| | | |
| | | /// <summary> |
| | | /// |
| | | /// </summary> |
| | | public static void Execute() |
| | | public stat void Execute() |
| | | { |
| | | |
| | | var verification_id = Yw.YitIdHelper.NextId(); |
| | | var verification_id = 1; |
| | | var current_time = DateTime.Now; |
| | | |
| | | if (!File.Exists(_hydraulic_model_file)) |
| | | { |
| | | //Log.Info(verification_id, $"模åéªè¯è®¡åä»»å¡ä¸,æ°´åæ¨¡åæä»¶ä¸åå¨,èªå¨è·³è¿å½åæ°æ®!"); |
| | | return; |
| | | // Log.Info(verification_id, $"模åéªè¯è®¡åä»»å¡ä¸,æ°´åæ¨¡åæä»¶ä¸åå¨,èªå¨è·³è¿å½åæ°æ®!"); |
| | | // return; |
| | | } |
| | | var hydraulic_model_validation_config = new IStation.Service.HydraulicModelValidationConfig().Get(); |
| | | if (hydraulic_model_validation_config == null) |
| | | { |
| | | //Log.Info(verification_id, "模åéªè¯è®¡åä»»å¡ä¸,æ°´åæ¨¡åéªè¯æä»¶ä¸åå¨,èªå¨è·³è¿å½åæ°æ®!"); |
| | | return; |
| | | // Log.Info(verification_id, "模åéªè¯è®¡åä»»å¡ä¸,æ°´åæ¨¡åéªè¯æä»¶ä¸åå¨,èªå¨è·³è¿å½åæ°æ®!"); |
| | | //return; |
| | | } |
| | | |
| | | var hydraulic_model_scada_list = new List<Model.HydraulicModelScada>(); |
| | | |
| | | var scada_debug_json_file = Path.Combine(Settings.ParasHelper.LocalFile.DataFolderDirectory, "scada_debug.txt"); |
| | | var scada_debug_json = File.ReadAllText(scada_debug_json_file); |
| | | |
| | | |
| | | var zy_scada_output = Yw.JsonHelper.Json2Object<IStation.Dto.ScadaScheduleInput>(scada_debug_json); |
| | | |
| | | if (zy_scada_output.data != null && zy_scada_output.data.Any()) |
| | | if (!Settings.ParasHelper.ZyDocking.Enable) |
| | | { |
| | | var data_dict = zy_scada_output.data; |
| | | foreach (var scada_dict in data_dict) |
| | | { |
| | | var vals = scada_dict.Value.ElementAt(0).Value; |
| | | var time = scada_dict.Value.ElementAt(1).Value; |
| | | var key = scada_dict.Value.ElementAt(2).Value; |
| | | var hydraulic_model_scada = new Model.HydraulicModelScada(); |
| | | hydraulic_model_scada.VerificationID = verification_id; |
| | | hydraulic_model_scada.Tag = key; |
| | | if (DateTime.TryParse(time, out DateTime t)) |
| | | hydraulic_model_scada.Time = t; |
| | | if (double.TryParse(vals, out double v)) |
| | | hydraulic_model_scada.Value = v; |
| | | hydraulic_model_scada_list.Add(hydraulic_model_scada); |
| | | } |
| | | } |
| | | //Log.Info(verification_id, "模åéªè¯è®¡åä»»å¡ä¸,Scadaå¯¹æ¥æ¥å£æªå¯ç¨,èªå¨è·³è¿å½åæ°æ®!"); |
| | | // return; |
| | | }// |
| | | |
| | | |
| | | |
| | | var fileName = "D:\\ScadaDebug.json"; |
| | | var json = File.ReadAllText(fileName); |
| | | var hydraulic_model_scada_list = Yw.JsonHelper.Json2Object<List<IStation.Model.HydraulicModelScada>>(json); |
| | | |
| | | if (!hydraulic_model_scada_list.Any()) |
| | | { |
| | | //Log.Info(verification_id, "模åéªè¯è®¡åä»»å¡ä¸,æ¥æ¶Scadaæ°æ®ä¸ºç©º,èªå¨è·³è¿å½åæ°æ®!"); |
| | | return; |
| | | // return; |
| | | } |
| | | else |
| | | { |
| | | var json = Yw.JsonHelper.Object2Json(hydraulic_model_scada_list); |
| | | // Log.Debug(verification_id, json); |
| | | // var json = Yw.JsonHelper.Object2Json(hydraulic_model_scada_list); |
| | | //Log.Debug(verification_id, json); |
| | | } |
| | | |
| | | var flow_id_mapping_dict = hydraulic_model_validation_config.FlowIdMappingDict; |
| | | var pressure_id_mapping_dict = hydraulic_model_validation_config.PressureIdMappingDict; |
| | | var pattern_id_mapping_dict = hydraulic_model_validation_config.PatternIdMappingDict; |
| | | |
| | | var pressure_id_kPa_list = hydraulic_model_validation_config.PressureIdkPaList; |
| | | |
| | | var pattern_list = new List<IStation.Hydraulic.Pattern>(); |
| | |
| | | } |
| | | } |
| | | |
| | | |
| | | // Log.Info(verification_id, _hydraulic_model_file);//text |
| | | var hydraulic_model_record_list = IStation.Hydraulic.ModeVerifyHelper.Verify(verification_id, _hydraulic_model_file, flow_id_mapping_dict, pressure_id_mapping_dict, pattern_list, time_value); |
| | | if (hydraulic_model_record_list == null || !hydraulic_model_record_list.Any()) |
| | | { |
| | | |
| | | return; |
| | | // Log.Info(verification_id, "模åéªè¯è®¡åä»»å¡ä¸,模åéªè¯æ°æ®ä¸ºç©ºï¼èªå¨è·³è¿å½åæ°æ®!"); |
| | | // return; |
| | | } |
| | | |
| | | var hydraulic_model_validation = new Model.HydraulicModelValidation(); |
| | |
| | | var bol = new IStation.Service.HydraulicModelValidation().Insert(hydraulic_model_validation) > 0; |
| | | if (!bol) |
| | | { |
| | | //Log.Info(verification_id, "模åéªè¯è®¡åä»»å¡ä¸,æ°´åæ¨¡åéªè¯,ä¿å失败!"); |
| | | } |
| | | |
| | | bol = new IStation.Service.HydraulicModelScada().Inserts(hydraulic_model_scada_list); |
| | | if (!bol) |
| | | { |
| | | // Log.Info(verification_id, "模åéªè¯è®¡åä»»å¡ä¸,æ°´åæ¨¡åScada,ä¿å失败!"); |
| | | } |
| | | |
| | | bol = new IStation.Service.HydraulicModelRecord().Inserts(hydraulic_model_record_list); |
| | | if (!bol) |
| | | { |
| | | // Log.Info(verification_id, "模åéªè¯è®¡åä»»å¡ä¸,æ°´åæ¨¡åè®°å½,ä¿å失败!"); |
| | | } |
| | | |
| | | // Log.Info(verification_id, $"模åéªè¯è®¡åä»»å¡ä¸,æ°´åæ¨¡åéªè¯,[{current_time:G}]éªè¯æå!"); |
| | | |
| | | |
| | | } |
| | | |
| | | |
| | | } |
| | | } |
| | |
| | | </PropertyGroup> |
| | | |
| | | <ItemGroup> |
| | | <Compile Remove="bak\EpanetMethods.cs" /> |
| | | <Compile Remove="bak\HydraulicModelValidationHelperJob.cs" /> |
| | | <Compile Remove="bak\ModelVerification.cs" /> |
| | | <Compile Remove="bak\Program - å¤å¶%282%29.cs" /> |
| | | <Compile Remove="bak\Program - å¤å¶%283%29.cs" /> |
| | | <Compile Remove="bak\Program - å¤å¶.cs" /> |
| | | <Compile Remove="bak\Program _mode.cs" /> |
| | | <Compile Remove="bak\Program_bak.cs" /> |
| | | <Compile Remove="bak\ScadaModelValidHelper - å¤å¶.cs" /> |
| | | <Compile Remove="bak\ScheduleModelValidHelper - å¤å¶%282%29.cs" /> |
| | | <Compile Remove="bak\ScheduleModelValidHelper - å¤å¶%283%29.cs" /> |
| | | <Compile Remove="bak\ScheduleModelValidHelper - å¤å¶.cs" /> |
| | | <Compile Remove="EpanetMethods.cs" /> |
| | | <Compile Remove="HydraulicModelValidationHelperJob.cs" /> |
| | | <Compile Remove="ModelVerification.cs" /> |
| | | <Compile Remove="Program - å¤å¶%282%29.cs" /> |
| | | <Compile Remove="Program - å¤å¶%283%29.cs" /> |
| | |
| | | <ProjectReference Include="..\..\IStation.Service\IStation.Service.csproj" /> |
| | | </ItemGroup> |
| | | |
| | | <ItemGroup> |
| | | <Folder Include="bak\" /> |
| | | </ItemGroup> |
| | | |
| | | </Project> |
| | |
| | |  |
| | | using IStation; |
| | | using IStation.Epanet; |
| | | using IStation.Test; |
| | | |
| | |
| | | //Console.WriteLine("ç»æ"); |
| | | //Console.ReadKey(); |
| | | |
| | | var file_path = $"{AppDomain.CurrentDomain.BaseDirectory}Data\\HydraulicModel.inp"; |
| | | //var file_path = $"{AppDomain.CurrentDomain.BaseDirectory}Data\\HydraulicModel.inp"; |
| | | |
| | | NetworkHelper.Open(file_path,out IStation.Epanet.Network.Network network); |
| | | var a = network; |
| | | //NetworkHelper.Open(file_path,out IStation.Epanet.Network.Network network); |
| | | //var a = network; |
| | | |
| | | var json = Yw.JsonHelper.Object2Json(a); |
| | | var b = json; |
| | | //var json = Yw.JsonHelper.Object2Json(a); |
| | | //var b = json; |
| | | HydraulicModelValidationHelperJob.Execute(); |
¶Ô±ÈÐÂÎļþ |
| | |
| | | namespace IStation.Test |
| | | { |
| | | /// <summary> |
| | | /// 模åéªè¯è¾
å©ç±» |
| | | /// </summary> |
| | | public class HydraulicModelValidationHelperJob |
| | | { |
| | | private static readonly string _hydraulic_model_file = Path.Combine( |
| | | Settings.ParasHelper.LocalFile.DataFolderDirectory, |
| | | Settings.ParasHelper.LocalFile.HydraulicModelFile); |
| | | |
| | | private static readonly Dictionary<string, double> _pump_nr_dict = new() { |
| | | { "Pump11",524}, |
| | | { "Pump12",524}, |
| | | { "Pump13",524}, |
| | | { "Pump14",524}, |
| | | //{ "Pump15",545}, |
| | | //{ "Pump16",524}, |
| | | { "Pump17",524}, |
| | | { "Pump18",524}, |
| | | |
| | | { "Pump21",740}, |
| | | { "Pump22",495}, |
| | | { "Pump23",495}, |
| | | { "Pump24",495}, |
| | | { "Pump25",495}, |
| | | { "Pump26",495}, |
| | | { "Pump27",740} |
| | | }; |
| | | |
| | | /// <summary> |
| | | /// |
| | | /// </summary> |
| | | public static void Execute() |
| | | { |
| | | |
| | | var verification_id = Yw.YitIdHelper.NextId(); |
| | | var current_time = DateTime.Now; |
| | | |
| | | if (!File.Exists(_hydraulic_model_file)) |
| | | { |
| | | //Log.Info(verification_id, $"模åéªè¯è®¡åä»»å¡ä¸,æ°´åæ¨¡åæä»¶ä¸åå¨,èªå¨è·³è¿å½åæ°æ®!"); |
| | | return; |
| | | } |
| | | var hydraulic_model_validation_config = new IStation.Service.HydraulicModelValidationConfig().Get(); |
| | | if (hydraulic_model_validation_config == null) |
| | | { |
| | | //Log.Info(verification_id, "模åéªè¯è®¡åä»»å¡ä¸,æ°´åæ¨¡åéªè¯æä»¶ä¸åå¨,èªå¨è·³è¿å½åæ°æ®!"); |
| | | return; |
| | | } |
| | | |
| | | var hydraulic_model_scada_list = new List<Model.HydraulicModelScada>(); |
| | | |
| | | var scada_debug_json_file = Path.Combine(Settings.ParasHelper.LocalFile.DataFolderDirectory, "scada_debug.txt"); |
| | | var scada_debug_json = File.ReadAllText(scada_debug_json_file); |
| | | |
| | | |
| | | var zy_scada_output = Yw.JsonHelper.Json2Object<IStation.Dto.ScadaScheduleInput>(scada_debug_json); |
| | | |
| | | if (zy_scada_output.data != null && zy_scada_output.data.Any()) |
| | | { |
| | | var data_dict = zy_scada_output.data; |
| | | foreach (var scada_dict in data_dict) |
| | | { |
| | | var vals = scada_dict.Value.ElementAt(0).Value; |
| | | var time = scada_dict.Value.ElementAt(1).Value; |
| | | var key = scada_dict.Value.ElementAt(2).Value; |
| | | var hydraulic_model_scada = new Model.HydraulicModelScada(); |
| | | hydraulic_model_scada.VerificationID = verification_id; |
| | | hydraulic_model_scada.Tag = key; |
| | | if (DateTime.TryParse(time, out DateTime t)) |
| | | hydraulic_model_scada.Time = t; |
| | | if (double.TryParse(vals, out double v)) |
| | | hydraulic_model_scada.Value = v; |
| | | hydraulic_model_scada_list.Add(hydraulic_model_scada); |
| | | } |
| | | } |
| | | |
| | | if (!hydraulic_model_scada_list.Any()) |
| | | { |
| | | //Log.Info(verification_id, "模åéªè¯è®¡åä»»å¡ä¸,æ¥æ¶Scadaæ°æ®ä¸ºç©º,èªå¨è·³è¿å½åæ°æ®!"); |
| | | return; |
| | | } |
| | | else |
| | | { |
| | | var json = Yw.JsonHelper.Object2Json(hydraulic_model_scada_list); |
| | | // Log.Debug(verification_id, json); |
| | | } |
| | | |
| | | var flow_id_mapping_dict = hydraulic_model_validation_config.FlowIdMappingDict; |
| | | var pressure_id_mapping_dict = hydraulic_model_validation_config.PressureIdMappingDict; |
| | | var pattern_id_mapping_dict = hydraulic_model_validation_config.PatternIdMappingDict; |
| | | var pressure_id_kPa_list = hydraulic_model_validation_config.PressureIdkPaList; |
| | | |
| | | var pattern_list = new List<IStation.Hydraulic.Pattern>(); |
| | | var time_value = new IStation.Hydraulic.TimeValue |
| | | { |
| | | Time = current_time, |
| | | Value = new Dictionary<string, double>() |
| | | }; |
| | | |
| | | foreach (var hydraulic_model_scada in hydraulic_model_scada_list) |
| | | { |
| | | var tag = hydraulic_model_scada.Tag; |
| | | var value = hydraulic_model_scada.Value; |
| | | foreach (var item in flow_id_mapping_dict) |
| | | { |
| | | if (item.Value != tag) |
| | | continue; |
| | | time_value.Value.Add(tag, value ?? 0); |
| | | } |
| | | |
| | | foreach (var item in pressure_id_mapping_dict) |
| | | { |
| | | if (item.Value != tag) |
| | | continue; |
| | | var pressure_value = value ?? 0; |
| | | if (pressure_id_kPa_list.Contains(tag)) |
| | | { |
| | | pressure_value /= 1000; |
| | | } |
| | | pressure_value = IStation.Curve.PumpCalculateHelper.Mpa2M(pressure_value); |
| | | time_value.Value.Add(tag, pressure_value); |
| | | } |
| | | |
| | | foreach (var item in pattern_id_mapping_dict) |
| | | { |
| | | if (item.Value != tag) |
| | | continue; |
| | | var pattern_id = item.Key; |
| | | var factor = value; |
| | | if (_pump_nr_dict.ContainsKey(pattern_id)) |
| | | { |
| | | factor /= _pump_nr_dict[pattern_id]; |
| | | factor = factor < 0 ? 0 : factor; |
| | | } |
| | | var pattern = new IStation.Hydraulic.Pattern |
| | | { |
| | | Id = pattern_id, |
| | | FactorList = new List<float>() |
| | | }; |
| | | if (factor.HasValue) |
| | | pattern.FactorList.Add((float)factor.Value); |
| | | pattern_list.Add(pattern); |
| | | } |
| | | } |
| | | |
| | | |
| | | var hydraulic_model_record_list = IStation.Hydraulic.ModeVerifyHelper.Verify(verification_id, _hydraulic_model_file, flow_id_mapping_dict, pressure_id_mapping_dict, pattern_list, time_value); |
| | | if (hydraulic_model_record_list == null || !hydraulic_model_record_list.Any()) |
| | | { |
| | | |
| | | return; |
| | | } |
| | | |
| | | var hydraulic_model_validation = new Model.HydraulicModelValidation(); |
| | | hydraulic_model_validation.ID = verification_id; |
| | | hydraulic_model_validation.Time = current_time; |
| | | //hydraulic_model_validation.Config = Yw.JsonHelper.Object2Json(hydraulic_model_validation_config); |
| | | |
| | | var bol = new IStation.Service.HydraulicModelValidation().Insert(hydraulic_model_validation) > 0; |
| | | if (!bol) |
| | | { |
| | | } |
| | | |
| | | bol = new IStation.Service.HydraulicModelScada().Inserts(hydraulic_model_scada_list); |
| | | if (!bol) |
| | | { |
| | | } |
| | | |
| | | bol = new IStation.Service.HydraulicModelRecord().Inserts(hydraulic_model_record_list); |
| | | if (!bol) |
| | | { |
| | | } |
| | | |
| | | |
| | | } |
| | | } |
| | | } |
| | |
| | | { |
| | | |
| | | } |
| | | |
| | | |
| | | public TimeValue(TimeValue rhs) |
| | | { |
| | | this.Time = rhs.Time; |