ningshuxia
2025-04-16 ed113213fc94c3d9886ea08dfddd09d08d9ba7d5
01-api/_Expand/IStation.Win.Schedule/bjMain.cs
@@ -83,15 +83,15 @@
            {
                return;
            }
            var time_list = _schedule_request_list.Select(x => x.ReceptionTime).OrderBy(x => x).ToList();
            var start_time = time_list.Last().AddDays(-2);
            var end_time = time_list.Last().AddDays(1);
            var deline = new DateTime(2024,12,1);
            var deline2 = new DateTime(2025,1,1);
            var time_list = _schedule_request_list.Where(x=>x.ReceptionTime>=deline&&x.ReceptionTime<= deline2).Select(x => x.ReceptionTime).OrderBy(x => x).ToList();
            foreach (var item in time_list)
            {
                this.repImgDate.Items.Add(item.ToString("G"), item, -1);
            }
            var monitor_record_list = _service_monitor_record.GetByReceiptTimeRange(start_time, end_time);
            }
            var monitor_record_list = _service_monitor_record.GetByReceiptTimeRange(deline, deline2);
            if (monitor_record_list == null || !monitor_record_list.Any())
            {
                return;
@@ -123,7 +123,7 @@
            if (this.barCekSimSchedule.Checked)
            {
                var target_flow1 = request.TargetFlow1;
                var target_flow2 = request.TargetFlow2;
                var target_flow2 = request.TargetFlow2;
                var target_pressure1 = Curve.PumpCalculateHelper.Mpa2M(request.TargetPressure1);
                var target_pressure2 = Curve.PumpCalculateHelper.Mpa2M(request.TargetPressure2);
@@ -139,12 +139,30 @@
                    analysis_deviation_list = null;
                }
                if (this.barCekCalcPressureDiff.Checked)
                {
                    var time = Convert.ToDateTime(this.barEditImgRealTime.EditValue);
                    if (_monitor_record_dict != null && _monitor_record_dict.ContainsKey(time))
                    {
                        var valid_record_list = _monitor_record_dict[time];
                        var station_scada_dict = GetStationScadaDict(monitor_record_list);
                        var validRealTimePressure = station_scada_dict[IStation.eDockingStation.Ch1s][0].Item2 ;
                        if (validRealTimePressure.HasValue)
                        {
                            var validRealTimePressureDiff = validRealTimePressure.Value - target_pressure1;
                            target_pressure1 += validRealTimePressureDiff;
                            AlertTool.ShowInfo(this, "填补压力缺失", $"{validRealTimePressureDiff:N3}");
                        }
                    }
                }
                if (this.barCekCalcFlowDiff.Checked)
                {
                    var ptList = new List<CurvePoint>();
                    try
                    {
                        var filePath = @"D:\WorkCode\Project\ChDt1\Schedule.Ch.V1.0\02-desktop\Desktop\IStation.Test\bin\Debug\net6.0-windows\csv\alow.csv";
                        var filePath = @"D:\WorkCode\Project\ChDt1\Schedule.Ch.V1.0\02-desktop\Desktop\IStation.Test\bin\Debug\net6.0-windows\stationcsv\characteristic_curve.csv";
                        using (StreamReader reader = new StreamReader(filePath))
                        {
                            reader.ReadLine();
@@ -164,17 +182,17 @@
                            }
                        }
                    }
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine("读取文件时出错: " + ex.Message);
                    }
                    var x = ptList.Select(x => x.X).ToArray();
                    var y = ptList.Select(x => x.Y).ToArray();
                    // 多项式回归的阶数(例如,二次多项式)
                    int degree = 10;
                    int degree = 3;
                    // 拟合多项式回归模型
                    double[] coefficients = NonlinearRegressionHelper.FitPolynomial(x, y, degree);
@@ -184,12 +202,13 @@
                    double yPredicted = NonlinearRegressionHelper.PredictPolynomial(xNew, coefficients);
                    target_flow2 += yPredicted;
                    AlertTool.ShowInfo(this,"预测缺失",$"{yPredicted}");
                    AlertTool.ShowInfo(this, "预测流量缺失", $"{yPredicted:N1}");
                    // 计算 R² 和 MSE
                    double rSquared = NonlinearRegressionHelper.CalculateRSquared(x, y, coefficients);
                    double mse = NonlinearRegressionHelper.CalculateMSE(x, y, coefficients);
                }
@@ -690,6 +709,14 @@
            Verify(time);
        }
        private void barCekCalcPressureDiff_CheckedChanged(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            var time = Convert.ToDateTime(this.barEditImgRealTime.EditValue);
            Schedule(_schedule_request);
            Verify(time);
        }
        #region Expand
        private string GetStationName(eDockingStation station)
        {
@@ -927,13 +954,17 @@
            var pump27_power = scada_dict[GlobalHelper.二输27泵_有功功率];
            var pump21_maintenance_status = scada_dict[GlobalHelper.二输21泵_状态];
            var pump22_maintenance_status = scada_dict[GlobalHelper.二输22泵_状态];
            var pump23_maintenance_status = scada_dict[GlobalHelper.二输23泵_状态];
            var pump24_maintenance_status = scada_dict[GlobalHelper.二输24泵_状态];
            var pump25_maintenance_status = scada_dict[GlobalHelper.二输25泵_状态];
            var pump26_maintenance_status = scada_dict[GlobalHelper.二输26泵_状态];
            var pump27_maintenance_status = scada_dict[GlobalHelper.二输27泵_状态];
            if (scada_dict.ContainsKey(GlobalHelper.二输21泵_状态))
            {
            }
            //var pump21_maintenance_status = scada_dict[GlobalHelper.二输21泵_状态];
            //var pump22_maintenance_status = scada_dict[GlobalHelper.二输22泵_状态];
            //var pump23_maintenance_status = scada_dict[GlobalHelper.二输23泵_状态];
            //var pump24_maintenance_status = scada_dict[GlobalHelper.二输24泵_状态];
            //var pump25_maintenance_status = scada_dict[GlobalHelper.二输25泵_状态];
            //var pump26_maintenance_status = scada_dict[GlobalHelper.二输26泵_状态];
            //var pump27_maintenance_status = scada_dict[GlobalHelper.二输27泵_状态];
            pump21_pressure.Mpa2M();
@@ -1091,7 +1122,7 @@
        #endregion
        public class NonlinearRegressionHelper
        {
        {
            // 多项式回归拟合
            public static double[] FitPolynomial(double[] x, double[] y, int degree)