| | |
| | | namespace IStation.Test |
| | | using 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 组合偏差修正 |
| | | |
| | | StationCombineHelper.Start(3);// 6 分析泵频谱系数 |
| | | 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; |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | } |