tangxu
2022-11-02 05f522e321a742f03bf1e3e26edaeb5147da42f4
解决南汇北 计划计算
已修改17个文件
335 ■■■■■ 文件已修改
Application/IStation.Application.OpenApi/shys/plan/PlanAna_ShysController.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Application/IStation.Application.OpenApi/shys/plan/shys/ShysHelper.cs 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Application/IStation.Application.OpenApi/shys/plan/shys/shys南汇北泵站.cs 26 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Application/IStation.Application.OpenApi/shys/plan/shys/shys徐泾泵站.cs 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Application/IStation.Application.OpenApi/shys/plan/shys/shys金泽泵站.cs 68 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Application/IStation.Application.OpenApi/shys/plan/shys/shys金海泵站.cs 25 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Calculation/IStation.Calculation.Dispatch/base/CalculatorOptAnaBase.cs 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Calculation/IStation.Calculation.Dispatch/custom/shys/station/五号沟金海方向/OptAna.cs 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Calculation/IStation.Calculation.Dispatch/custom/shys/station/南汇北/OptAna.cs 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Calculation/IStation.Calculation.Dispatch/custom/shys/station/金海泵站/Base.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Calculation/IStation.Calculation.Dispatch/custom/shys/station/金海泵站/KeepStatus.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Calculation/IStation.Calculation.Dispatch/custom/shys/station/金海泵站/OptAna.cs 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Calculation/IStation.Calculation.Dispatch/custom/shys/station/陈行一输/KeepStatus.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Calculation/IStation.Calculation.Dispatch/custom/shys/station/陈行一输/OptAna.cs 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Calculation/IStation.Calculation.Dispatch/general/OptAna.cs 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Calculation/IStation.Calculation.Dispatch/helper/DispatchAnaGeneralHelper压力.cs 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Model/IStation.Model.Curve/曲线表达式/CurveExpress.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Application/IStation.Application.OpenApi/shys/plan/PlanAna_ShysController.cs
@@ -58,7 +58,7 @@
        [HttpGet]
        public List<PlanAnaDto> Calculate_debug()
        {
            var path = @"D:\WorkData\IStation\result_1024lq.json";
            var path = @"D:\WorkData\IStation\result_1102.json";
            if (!System.IO.File.Exists(path))
                return null;
Application/IStation.Application.OpenApi/shys/plan/shys/ShysHelper.cs
@@ -49,15 +49,12 @@
        {
            _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(6, new StationInfo(4, new IStation.Calculation.shys严桥泵站()));//NG æ²¡æœ‰æµé‡æ•°æ®, æ²¡æœ‰å‡ºå£æ¶²ä½æ•°æ®
            //_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 ä¸‰å·ç®¡å‡ºå£æµé‡å€¼
            //_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 æ²¡æœ‰æä¾› æµé‡ ,无法计算
@@ -65,13 +62,13 @@
            // _dict.Add(14, new StationInfo(17, new IStation.Calculation.shys泰和泵站()));//NG  ç®¡è·¯äºŒè°ƒåº¦æ–¹æ¡ˆæ— æ³•计算,请确认数据是否合理,进口压力:0.12395039999999999MPa,出口压力:0.14949020652770995MPa,流量要求:4180.51220703125"
#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
            _dict.Add(11, new StationInfo(11, new IStation.Calculation.shys南汇北泵站()));
#else
            _dict.Add(3, new StationInfo(9, new IStation.Calculation.shys五号沟金海方向())); //ok
            _dict.Add(15, new StationInfo(19, new IStation.Calculation.shys金泽泵站()));//ok
            _dict.Add(9, new StationInfo(8, new IStation.Calculation.shys徐泾泵站())); //OK
            _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
Application/IStation.Application.OpenApi/shys/plan/shys/shysÄϻ㱱±ÃÕ¾.cs
@@ -11,7 +11,7 @@
        public shys南汇北泵站()
        {
            this._corpID = 4;
            this._dispatchAnaCalc = new IStation.Calculation.DispatchAna.Calculator_OptAna_General();
            this._dispatchAnaCalc = new IStation.Calculation.DispatchAna.Calculator_OptAna_SHYS_南汇北();
        }
        /// <summary>
@@ -121,20 +121,32 @@
                        {
                            new DispatchAna.Model.InletPipePara()
                            {
                                Name="进口压力",
                                Name="进口压力1",
                                IsWaterLevel=false,
                                Value = (inlet_press1.RecordValue+inlet_press2.RecordValue)/2
                                Value =  inlet_press1.RecordValue
                            },
                            new DispatchAna.Model.InletPipePara()
                            {
                                Name="进口压力2",
                                IsWaterLevel=false,
                                Value =  inlet_press2.RecordValue
                            }
                        };
            complex_dispatch_request.OutletPipePara = new List<DispatchAna.Model.OutletPipePara>();
            complex_dispatch_request.OutletPipePara.Add(new DispatchAna.Model.OutletPipePara()
            {
                Name = "总管路",
                Name = "总管路1",
                IsWaterLevel = false,
                TargetFlow = (pipe1_flow.RecordValue + pipe2_flow.RecordValue),
                TargetPress = (pipe1_press.RecordValue + pipe2_press.RecordValue) / 2
                TargetFlow =  pipe1_flow.RecordValue ,
                TargetPress =  pipe1_press.RecordValue
            });
            complex_dispatch_request.OutletPipePara.Add(new DispatchAna.Model.OutletPipePara()
            {
                Name = "总管路2",
                IsWaterLevel = false,
                TargetFlow =   pipe2_flow.RecordValue ,
                TargetPress =   pipe2_press.RecordValue
            });
            error_info = null;
            return complex_dispatch_request;
Application/IStation.Application.OpenApi/shys/plan/shys/shysÐìãþ±ÃÕ¾.cs
@@ -51,7 +51,7 @@
            var pipe1_in_press = allRecords_hour.Find(x => x.MonitorTag == monitor进水总管压力.Item1);
            if (pipe1_in_press == null)
            {
                error_info = "徐泾泵站RecordValue æµ‹ç‚¹æœªæ‰¾åˆ°";
                error_info = "徐泾泵站进水总管压力测点未找到";
                return null;
            }
            
@@ -74,14 +74,14 @@
                return null;
            }
            var water_level_value = pipe1_in_press.RecordValue * 100;
            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.InletPipePara = new List<DispatchAna.Model.InletPipePara>()
                        {
                             new DispatchAna.Model.InletPipePara(){ Name="æ°´æ± ", Value = water_level_value}
                             new DispatchAna.Model.InletPipePara(){ Name="进口压力", IsWaterLevel=false, Value = pipe1_in_press.RecordValue}
                        };
            complex_dispatch_request.OutletPipePara = new List<DispatchAna.Model.OutletPipePara>();
            complex_dispatch_request.OutletPipePara.Add(new DispatchAna.Model.OutletPipePara()
Application/IStation.Application.OpenApi/shys/plan/shys/shys½ðÔó±ÃÕ¾.cs
@@ -42,6 +42,12 @@
                return "出水总管压力";
            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";
            return "未知测点";
        }
        /// <summary>
@@ -56,33 +62,43 @@
        {
            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;
            }
            double water_level = (water_level1.RecordValue + water_level2.RecordValue + water_level3.RecordValue) / 3;
            //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出水总管瞬时流量.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;
            }
            complex_dispatch_request.CorpID = this._corpID;
@@ -91,14 +107,14 @@
            complex_dispatch_request.PressValueType = DispatchAna.Model.RequestParasComplex.ePressValueType.压力;
            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}
                        };
            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,
                TargetPress = pipe1_press.RecordValue,
            });
Application/IStation.Application.OpenApi/shys/plan/shys/shys½ðº£±ÃÕ¾.cs
@@ -19,18 +19,29 @@
        /// </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>("_0402010502090103013",
            IStation.Calculation.DispatchAna.Calculator_OptAna_SHYS_金海泵站._monitor_id_一号管流量_南汇1);
        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>("_0402010502090105012",
            IStation.Calculation.DispatchAna.Calculator_OptAna_SHYS_金海泵站._monitor_id_二号管压力_南汇2);
        private Tuple<string, long> monitor出水南汇2流量 = new Tuple<string, long>("_0402010502090103014",
            IStation.Calculation.DispatchAna.Calculator_OptAna_SHYS_金海泵站._monitor_id_二号管流量_南汇2);
        
        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",
            IStation.Calculation.DispatchAna.Calculator_OptAna_SHYS_金海泵站._monitor_id_三号管压力_川沙);
        private Tuple<string, long> monitor出水川沙流量 = new Tuple<string, long>("_0402010502090103015",
            IStation.Calculation.DispatchAna.Calculator_OptAna_SHYS_金海泵站._monitor_id_三号管流量_川沙);
        //private Tuple<string, long> monitor出水川沙总管进水压力 = new Tuple<string, long>("_0402010502090105013", 613);
        private Tuple<string, long> monitor进水总管压力1 = new Tuple<string, long>("_0402010502090105001", 611);
        private Tuple<string, long> monitor进水总管压力2 = new Tuple<string, long>("_0402010502090205001", 613);
        private Tuple<string, long> monitor进水总管压力1 = new Tuple<string, long>("_0402010502090105001",
            IStation.Calculation.DispatchAna.Calculator_OptAna_SHYS_金海泵站._monitor_id_一号进口管_压力);
        private Tuple<string, long> monitor进水总管压力2 = new Tuple<string, long>("_0402010502090205001",
            IStation.Calculation.DispatchAna.Calculator_OptAna_SHYS_金海泵站._monitor_id_二号进口管_压力);
        public override bool Is液位Monitor(string tagname)
        {
            return false;
        }
        public override string GetMonitorNameByTag(string tagname)
        {
            if (monitor出水南汇1压力.Item1 == tagname)
Calculation/IStation.Calculation.Dispatch/base/CalculatorOptAnaBase.cs
@@ -123,7 +123,30 @@
            sum.WP = CalculateWP(sum.Dt, sum.Qt);
            return sum;
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="pipes"></param>
        /// <returns></returns>
        protected static double CalcConnectPipeEta(List<IStation.Calculation.DispatchAna.Model.AnaScheme> pipes)
        {
            double eta = 0;
            double qh = 0;
            int count = 0;
            foreach (var pipe in pipes)
            {
                if (pipe == null)
                    continue;
                if (pipe.TotalWrkQ < 1 || pipe.TotalWrkH < 0.1)
                    continue;
                qh += pipe.TotalWrkQ * pipe.TotalWrkH;
                eta += pipe.TotalWrkQ * pipe.TotalWrkH * pipe.TotalWrkE;
                count++;
            }
            if (count <= 0)
                return 0;
            return Math.Round(eta / qh, 2);
        }
    }
}
Calculation/IStation.Calculation.Dispatch/custom/shys/station/ÎåºÅ¹µ½ðº£·½Ïò/OptAna.cs
@@ -110,14 +110,16 @@
            {
                if (complex_request_paras.InletPipePara.Count == 1)
                {
                    water_level = complex_request_paras.InletPipePara[0].Value;
                    water_level = complex_request_paras.InletPipePara.First().Value;
                }
                else
                {//用平均值
                    water_level = complex_request_paras.InletPipePara[0].Value +
                        complex_request_paras.InletPipePara[1].Value;
                    water_level = water_level / 2;
                }
                {//多个用平均值
                    for (int i = 0; i < complex_request_paras.InletPipePara.Count; i++)
                    {
                        water_level += complex_request_paras.InletPipePara[i].Value;
                    }
                    water_level = water_level / complex_request_paras.InletPipePara.Count;
                }
            }
@@ -205,7 +207,9 @@
            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.TotalWrkE = Math.Round( (result_1.TotalWrkQ * result_1.TotalWrkH * result_1.TotalWrkE +
                result_2.TotalWrkQ * result_2.TotalWrkH * result_2.TotalWrkE) / (result_1.TotalWrkQ * result_1.TotalWrkH   +
                result_2.TotalWrkQ * result_2.TotalWrkH),2) ;
            plan.UWP = CalculateUWP(plan.TotalWrkP, plan.TotalWrkQ, plan.TotalWrkH);
            plan.WP = CalculateWP(plan.TotalWrkP, plan.TotalWrkQ);
Calculation/IStation.Calculation.Dispatch/custom/shys/station/Äϻ㱱/OptAna.cs
@@ -117,7 +117,7 @@
                    inlet_press = complex_request_paras.InletPipePara[0].Value;
                }
            }
            double water_level = inlet_press * 102;
            //机泵信息
@@ -132,26 +132,21 @@
                }
            }
            double outlet_press = (pipe1_TargetPess + pipe2_TargetPess) / 2;
            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);
            Common.DispatchAnaGeneralHelper压力 calc_pipe1_helper =  new Common.DispatchAnaGeneralHelper压力();
                return calc_pipe1_helper.CalcOptList(complex_request_paras.SchemeSortType, 3);
            calc_pipe1_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_pipe1_helper.CalcOptList(complex_request_paras.SchemeSortType, 3);
        }
Calculation/IStation.Calculation.Dispatch/custom/shys/station/½ðº£±ÃÕ¾/Base.cs
@@ -31,7 +31,7 @@
        /// <summary>
        /// 
        /// </summary>
        static public  long _monitor_id_一号进口管_压力 = 611;
        static public long _monitor_id_一号进口管_压力 = 611;
        /// <summary>
        /// 
        /// </summary>
Calculation/IStation.Calculation.Dispatch/custom/shys/station/½ðº£±ÃÕ¾/KeepStatus.cs
@@ -210,7 +210,7 @@
            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.TotalWrkH = Math.Round(totalH / pipe_count, 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);
Calculation/IStation.Calculation.Dispatch/custom/shys/station/½ðº£±ÃÕ¾/OptAna.cs
@@ -86,7 +86,7 @@
                    inlet_press = inlet_press / 2;
                }
            }
            double water_level = inlet_press * 100;
            double pipe1_TargetFlow = complex_request_paras.OutletPipePara[0].TargetFlow;
@@ -165,7 +165,7 @@
            {
                calc_pipe1_helper.InitialParas(
                pipe1_TargetFlow,
                water_level,true,
                inlet_press, false ,
                pipe1_TargetPess,false,
              null, null,
             (from x in _allMachineList where pipe1_machineIds.Contains(x.MachineID) select x).ToList(),
@@ -189,7 +189,7 @@
            {
                calc_pipe2_helper.InitialParas(
                pipe2_TargetFlow,
                water_level,true ,
             inlet_press, false,
              pipe2_TargetPess,false ,
              null, null,
             (from x in _allMachineList where pipe2_machineIds.Contains(x.MachineID) select x).ToList(),
@@ -215,7 +215,7 @@
            {
                calc_pipe3_helper.InitialParas(
                pipe3_TargetFlow,
                water_level, true,
             inlet_press, false,
                pipe3_TargetPess,false ,
                null, null,
             (from x in _allMachineList where pipe3_machineIds.Contains(x.MachineID) select x).ToList(),
@@ -238,9 +238,12 @@
            var plan = new Model.AnaScheme();
            plan.ID = 1;
            plan.TotalWrkQ = Math.Round(totalQ, 1);
            plan.TotalWrkH = Math.Round(totalH / totalH, 2);
            plan.TotalWrkH = Math.Round(totalH / pipe_count, 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);
@@ -255,6 +258,7 @@
            return new List<Model.AnaScheme>() { plan };   
        }
        private List<IStation.Calculation.DispatchAna.Model.AnaScheme> CalcSchemes扬程(
@@ -491,9 +495,9 @@
            var plan = new Model.AnaScheme();
            plan.ID = 1;
            plan.TotalWrkQ = Math.Round(totalQ, 1);
            plan.TotalWrkH = Math.Round(totalH / totalH, 2);
            plan.TotalWrkH = Math.Round(totalH / pipe_count, 2);
            plan.TotalWrkP = Math.Round(totalP, 1);
            plan.TotalWrkE = IStation.Common.PumpParaHelper.CalculateE(plan.TotalWrkQ, plan.TotalWrkH, plan.TotalWrkP);
            plan.TotalWrkE = CalcConnectPipeEta(new List<AnaScheme>() { pipe1_result, pipe2_result, pipe3_result });
            plan.UWP = CalculateUWP(plan.TotalWrkP, plan.TotalWrkQ, plan.TotalWrkH);
            plan.WP = CalculateWP(plan.TotalWrkP, plan.TotalWrkQ);
Calculation/IStation.Calculation.Dispatch/custom/shys/station/³ÂÐÐÒ»Êä/KeepStatus.cs
@@ -212,7 +212,7 @@
            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.TotalWrkH = Math.Round(totalH / pipe_count, 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);
Calculation/IStation.Calculation.Dispatch/custom/shys/station/³ÂÐÐÒ»Êä/OptAna.cs
@@ -104,7 +104,7 @@
            double pipe3_TargetPess = complex_request_paras.OutletPipePara[2].TargetPress;
            if (pipe1_TargetFlow > 50)
            {
                if (pipe1_TargetPess < water_level1/100 + 0.01)
                if (pipe1_TargetPess < water_level1 / 102 + 0.01)
                {
                    error_info = "ERROR 35,陈行一输需要一号管压力未赋值";
                    return default;
@@ -112,7 +112,7 @@
            }
            if (pipe2_TargetFlow > 50)
            {
                if (pipe2_TargetPess < water_level2 / 100 + 0.01)
                if (pipe2_TargetPess < water_level2 / 102 + 0.01)
                {
                    error_info = "ERROR 35,陈行一输需要二号管压力未赋值";
                    return default;
@@ -120,7 +120,7 @@
            }
            if (pipe3_TargetFlow > 50)
            {
                if (pipe3_TargetPess < water_level3 / 100 + 0.01)
                if (pipe3_TargetPess < water_level3 / 102 + 0.01)
                {
                    error_info = "ERROR 35,陈行一输需要三号管压力未赋值";
                    return default;
@@ -239,9 +239,9 @@
            var plan = new Model.AnaScheme();
            plan.ID = 1;
            plan.TotalWrkQ = Math.Round(totalQ, 1);
            plan.TotalWrkH = Math.Round(totalH / totalH, 2);
            plan.TotalWrkH = Math.Round(totalH / pipe_count, 2);
            plan.TotalWrkP = Math.Round(totalP, 1);
            plan.TotalWrkE = IStation.Common.PumpParaHelper.CalculateE(plan.TotalWrkQ, plan.TotalWrkH, plan.TotalWrkP);
            plan.TotalWrkE = CalcConnectPipeEta(new List<AnaScheme>() { pipe1_result, pipe2_result, pipe3_result });
            plan.UWP = CalculateUWP(plan.TotalWrkP, plan.TotalWrkQ, plan.TotalWrkH);
            plan.WP = CalculateWP(plan.TotalWrkP, plan.TotalWrkQ);
@@ -419,9 +419,9 @@
            var plan = new Model.AnaScheme();
            plan.ID = 1;
            plan.TotalWrkQ = Math.Round(totalQ, 1);
            plan.TotalWrkH = Math.Round(totalH / totalH, 2);
            plan.TotalWrkH = Math.Round(totalH / pipe_count, 2);
            plan.TotalWrkP = Math.Round(totalP, 1);
            plan.TotalWrkE = IStation.Common.PumpParaHelper.CalculateE(plan.TotalWrkQ, plan.TotalWrkH, plan.TotalWrkP);
            plan.TotalWrkE = CalcConnectPipeEta(new List<AnaScheme>() { pipe1_result, pipe2_result, pipe3_result });
            plan.UWP = CalculateUWP(plan.TotalWrkP, plan.TotalWrkQ, plan.TotalWrkH);
            plan.WP = CalculateWP(plan.TotalWrkP, plan.TotalWrkQ);
Calculation/IStation.Calculation.Dispatch/general/OptAna.cs
@@ -29,38 +29,6 @@
            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)
            {
                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;
                }
            }
            if (isUsePress)
                return CalcSchemes压力(complex_request_paras, machine_run_status, out error_info);
            else
@@ -99,27 +67,37 @@
                return null;
            }
            double target_press = complex_request_paras.OutletPipePara[0].TargetPress;
            if (target_press < 0.01)
            double outlet_para_value = complex_request_paras.OutletPipePara[0].TargetPress;
            bool outlet_isWaterLevel = complex_request_paras.OutletPipePara[0].IsWaterLevel;
            if (outlet_para_value < 0.01)
            {
                error_info = "压力值过低, è¯·ç¡®è®¤æ˜¯å¦èµ‹å€¼, ERROR 68";
                return null;
            }
            double water_level = 0;//水位
            double inlet_para_value = 0;//水位
            bool inlet_isWaterLevel = true;
            if (complex_request_paras.InletPipePara != null && complex_request_paras.InletPipePara.Count > 0)
            {
                water_level = complex_request_paras.InletPipePara.First().Value;
                if (!complex_request_paras.InletPipePara.First().IsWaterLevel)
                {//换成M
                    water_level = water_level * 102;
                inlet_isWaterLevel = complex_request_paras.InletPipePara.First().IsWaterLevel;
                if (complex_request_paras.InletPipePara.Count == 1)
                {
                    inlet_para_value = complex_request_paras.InletPipePara.First().Value;
                }
                else
                {//多个用平均值
                    for (int i = 0; i < complex_request_paras.InletPipePara.Count; i++)
                    {
                        inlet_para_value += complex_request_paras.InletPipePara[i].Value;
                    }
                    inlet_para_value = inlet_para_value / complex_request_paras.InletPipePara.Count;
                }
            }
           if(allMachineList == null)
            if (allMachineList == null)
            {
                if (!BuildMachineList(
                    out allMachineList,
@@ -136,8 +114,8 @@
                new IStation.Calculation.DispatchAna.Common.DispatchAnaGeneralHelper压力();
            calc_pipe_helper.InitialParas(
                target_flow,
                water_level,true ,
                target_press,false ,
                inlet_para_value, inlet_isWaterLevel,
                outlet_para_value, outlet_isWaterLevel,
                complex_request_paras.OutletPipePara[0].TargetFlowRangeMin,
                complex_request_paras.OutletPipePara[0].TargetFlowRangeMax,
                allMachineList,
Calculation/IStation.Calculation.Dispatch/helper/DispatchAnaGeneralHelperѹÁ¦.cs
@@ -999,10 +999,23 @@
                flow = Math.Round(flow, 1);
                var head = IStation.Model.FitCurveHelper.GetFitPointY(ana_data.CurveInfoQH, Math.Round(flow, 1));
                head = Math.Round(head, 1);
                head = Math.Round(head, 2);
                ana_data.WorkPointQ = flow;
                ana_data.WorkPointH = head;
                ana_data.WorkPointP = Math.Round(IStation.Model.FitCurveHelper.GetFitPointY(ana_data.CurveInfoQP, ana_data.WorkPointQ), 1);
                if(ana_data.WorkPointP < 0.1)
                {
                    if(ana_data.WorkPointQ > ana_data.CurveInfoQP.Max)
                    {
                        ana_data.WorkPointP = Math.Round(IStation.Model.FitCurveHelper.GetFitPointY(ana_data.CurveInfoQP, ana_data.CurveInfoQP.Max ), 1);
                    }
                    else
                    {
                        return 0;
                    }
                }
                ana_data.WorkPointE = Math.Round(IStation.Common.PumpParaHelper.CalculateE(ana_data.WorkPointQ, ana_data.WorkPointH, ana_data.WorkPointP), 1);
                ana_data.IsExtendCurve = false;
Model/IStation.Model.Curve/ÇúÏß±í´ïʽ/CurveExpress.cs
@@ -143,7 +143,7 @@
            {
                this.DefinePoints = express.DefinePoints;
            }
           else  if(fitType == eCurveFitType.ThroughPoint)
            else if (fitType == eCurveFitType.ThroughPoint)
            {
                this.DefinePoints = express.DefinePoints;
            }