From ed113213fc94c3d9886ea08dfddd09d08d9ba7d5 Mon Sep 17 00:00:00 2001
From: ningshuxia <ningshuxia0927@outlook.com>
Date: 星期三, 16 四月 2025 19:19:34 +0800
Subject: [PATCH] 调度代码修正

---
 02-desktop/Desktop/IStation.Test/Program.cs |  227 +++++++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 220 insertions(+), 7 deletions(-)

diff --git a/02-desktop/Desktop/IStation.Test/Program.cs b/02-desktop/Desktop/IStation.Test/Program.cs
index 05a9279..3f8a0a0 100644
--- a/02-desktop/Desktop/IStation.Test/Program.cs
+++ b/02-desktop/Desktop/IStation.Test/Program.cs
@@ -1,26 +1,239 @@
-锘縩amespace IStation.Test
+锘縰sing IStation.Model;
+using System.Data;
+using System.Text;
+
+namespace IStation.Test
 {
     internal class Program
     {
-
-       
-
         // 杩囨护鏃犳晥鏁版嵁
         // 1杈撴ā鍨嬩慨姝�
         // 2杈撴暟鎹慨姝�
         // 淇缁勫悎鍋忓樊
         static void Main(string[] args)
         {
-            Station2Helper.Start();
-            Console.WriteLine();
+            //Station1Helper.Start();  //1 鏁版嵁淇
+            //Station2Helper.Start();  //2 妯″瀷淇
+            // 3  python淇
+            //Completion();            //4 淇鍚庣浉浼兼崲绠椾慨姝�
+
+            //StationCombineHelper.Start(1);// 5 缁勫悎鍋忓樊淇
+            //StationCombineHelper.Start(2);// 5 缁勫悎鍋忓樊淇
+
+            // 6 鍒嗘瀽娉甸璋辩郴鏁�
+            // 7 
+            Station2TotalFlowDiffHelper.Start();// 8 琛ュ叏娴侀噺鍋忓樊
+
             Console.WriteLine();
             Console.WriteLine("ok");
             Console.ReadKey();
+
         }
 
-         
+
+        public static void Completion()
+        {
+            var fullPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "pumpcsv");
+
+            var fileNameList = Directory.GetFiles(fullPath).Select(x => Path.GetFileNameWithoutExtension(x)).ToList();
+            fileNameList = fileNameList.Where(x => x.Contains("update_curve")).ToList();
+            if (fileNameList == null || fileNameList.Count() < 1)
+                return; 
+            var deleteList = fileNameList.Where(x => x.Contains("similar") || x.Contains("def")).ToList();
+            deleteList?.ForEach(x => File.Delete(x));
+
+            var flagCurveDict = GetFlagCurveDict();
+
+            fileNameList.RemoveAll(x => x.Contains("similar") ||x.Contains("def"));
+            var group = fileNameList.Where(x => x.Contains("update_curve")).GroupBy(x => x.Substring(0, 2));
+            foreach (var flagItem in group)
+            {
+                if (!int.TryParse(flagItem.Key, out int flag))
+                    continue;
+             
+                var files = flagItem.OrderBy(x => x).ToList();
+                var fileInfoList = new List<(int Hz, string FileName)>();
+                foreach (var fileName in files)
+                {
+                    var hz = fileName.Substring(3, 2);
+                    if (!int.TryParse(hz, out int hzInt))
+                        continue;
+                    if (hzInt > 50)
+                    {
+                        continue;
+                    }
+                    fileInfoList.Add((hzInt, fileName));
+                }
+                if (fileInfoList.Count == 1 && fileInfoList[0].Hz==50)
+                {
+                    continue;
+                }
+                for (int i = 25; i <= 50; i++)
+                {
+                    var maxHz = fileInfoList.Max(x => x.Hz);
+                    var curvePointList = new List<CurvePoint>();
+                    var fileName = string.Empty;
+                    var currentHz = i;
+                    var newFileName = "";
+                    if (fileInfoList.Exists(x => x.Hz == i))
+                    {
+                        continue;
+                    }
+                    else if (currentHz == 50)
+                    {
+                        var curve = flagCurveDict[flag];
+                        curvePointList = curve.GetFitPoints(100).ToList();
+                        newFileName = $"{flagItem.Key}_{50}_update_curve_def.csv";
+                    }
+                    else if (currentHz > maxHz)
+                    {
+                        var curve = flagCurveDict[flag];
+                        var similar_qh = Model.CurveCalcuHelper.CalculateSimilarQH(curve, 50, currentHz);
+                        if (similar_qh == null)
+                        {
+                            continue;
+                        }
+                        curvePointList = similar_qh.GetFitPoints(100).ToList();
+                        newFileName = $"{flagItem.Key}_{currentHz}_update_curve_similar_def.csv";
+                    }
+                    else
+                    {
+                        var (Hz, FileName) = fileInfoList.FirstOrDefault(x => x.Hz > i);
+                        if (Hz < 1)
+                            continue;
+
+                        var updateCurvePtList = new List<CurvePoint>();
+                        var updateCurveFile = Path.Combine(fullPath, $"{flagItem.Key}_{Hz}_update_curve.csv");
+                        using (var fs = new FileStream(updateCurveFile, FileMode.Open, FileAccess.Read))
+                        using (var sr = new StreamReader(fs, Encoding.UTF8))
+                        {
+                            var strLine = string.Empty;
+                            sr.ReadLine();
+                            while (!string.IsNullOrEmpty(strLine = sr.ReadLine()))
+                            {
+                                var strList = strLine.Split(',');
+                                var x = double.Parse(strList[0]);
+                                var y = double.Parse(strList[1]);
+                                updateCurvePtList.Add(new CurvePoint(x, y));
+                            }
+                        }
+
+                        var similar_qh = Model.CurveCalcuHelper.CalculateSimilarQH(new CurveExpress(updateCurvePtList), Hz, currentHz);
+                        if (similar_qh == null)
+                        {
+                            continue;
+                        }
+                        curvePointList = similar_qh.GetFitPoints(100).ToList();
+                        newFileName = $"{flagItem.Key}_{currentHz}_update_curve_similar_{Hz}.csv";
+                    }
+                    if (!curvePointList.Any())
+                    {
+                        continue;
+                    }
+                    var currentCurveFile = Path.Combine(fullPath, newFileName);
+                    CsvHelper.ExportToCsv(curvePointList, currentCurveFile);
+                    Console.WriteLine(newFileName);
+                }
+            }
+
+        }
 
 
+        //static void Main(string[] args)
+        //{
+        //    var splineList = new List<CurvePoint>();
+        //    var measuredList = new List<CurvePoint>();
+
+        //    var path = AppDomain.CurrentDomain.BaseDirectory;
+        //    var lienPaht = path + @"\pumpcsv\23_44_old_curve.csv";
+        //    var measuredPath = path + @"\pumpcsv\23_44.csv";
+
+        //    using (var fs = new FileStream(lienPaht, FileMode.Open, FileAccess.Read))
+        //    using (var sr = new StreamReader(fs, Encoding.UTF8))
+        //    {
+        //        var strLine = string.Empty;
+        //        sr.ReadLine();
+        //        while (!string.IsNullOrEmpty(strLine = sr.ReadLine()))
+        //        {
+        //            var strList = strLine.Split(',');
+        //            var x = double.Parse(strList[0]);
+        //            var y = double.Parse(strList[1]);
+        //            splineList.Add(new CurvePoint(x, y));
+        //        }
+        //    }
+
+        //    using (var fs = new FileStream(measuredPath, FileMode.Open, FileAccess.Read))
+        //    using (var sr = new StreamReader(fs, Encoding.UTF8))
+        //    {
+        //        var strLine = string.Empty;
+        //        sr.ReadLine();
+        //        while (!string.IsNullOrEmpty(strLine = sr.ReadLine()))
+        //        {
+        //            var strList = strLine.Split(',');
+        //            var x = double.Parse(strList[4]);
+        //            var y = double.Parse(strList[5]);
+        //            measuredList.Add(new CurvePoint(x, y));
+        //        }
+        //    }
+
+
+        //    // 鏍锋潯鏇茬嚎澶勭悊
+        //    double[] splineX = splineList.Select(x => x.X).ToArray();
+        //    double[] splineY = splineList.Select(x => x.Y).ToArray();
+
+        //    // 瀹炴祴鏁版嵁澶勭悊
+        //    double[] measuredXAll = measuredList.Select(x => x.X).ToArray();
+        //    double[] measuredYAll = measuredList.Select(x => x.Y).ToArray();
+
+
+
+        //    var helper = new PumpCurveDataFusionCorrectorHelper();
+        //    (double[] mergedX, double[] mergedY, double[] optimizedX, double[] optimizedY) = helper.Corrent(splineX, splineY, measuredXAll, measuredYAll);
+
+        //    var pt_list = new List<CurvePoint>();
+        //    for (int i = 0; i < optimizedX.Length; i++)
+        //    {
+        //        var x = optimizedX[i];
+        //        var y = optimizedY[i];
+        //        pt_list.Add(new CurvePoint(x, y));
+        //    }
+        //    var fullPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "pumpcsv");
+        //    CsvHelper.ExportToCsv(pt_list, Path.Combine(fullPath, $"23_44_update_curve.csv"));
+
+        //    Console.WriteLine("ok");
+        //    Console.ReadKey();
+        //}
+
+        private static Dictionary<int, IStation.Model.CurveExpress> GetFlagCurveDict()
+        {
+            var dict = new Dictionary<int, IStation.Model.CurveExpress>();
+            var bll_curve = new IStation.BLL.PumpCurve();
+            var station_list = new IStation.BLL.Station().GetAll();
+            foreach (var station in station_list)
+            {
+                var eq_list = new IStation.BLL.Equipment().GetPumpListByBelongTypeAndBelongID(IStation.ObjectType.Station, station.ID);
+                if (eq_list == null || !eq_list.Any())
+                {
+                    continue;
+                }
+
+                foreach (var eq in eq_list)
+                {
+                    IStation.Model.CurveExpress qh = null;
+                    var curve_info = bll_curve.GetDefaultWorkingByPumpID(eq.ID)?.CurveInfo;
+                    if (curve_info != null)
+                    {
+                        qh = curve_info.CurveQH;
+                    }
+                    dict.Add(eq.SortCode, qh);
+                }
+            }
+
+            return dict;
+        }
     }
 
+
+
+
 }

--
Gitblit v1.9.3