tangxu
2024-03-26 edd23f115dba31d764fdaf75a6207d888d0419d3
Calc/IStation.Calc.Core/CalcPrj.cs
@@ -14,14 +14,38 @@
        private List<Model.ElecPriceMonthSetting> _elePriceMonthList = null;
        private List<IStation.CalcModel.PumpInfo> _allCalcPumpInfos;
        public CalcPrj() { }
        public string  Calc(IStation.CalcModel.AnaRequest anaRequest, out AnaPrj defaultPrj)
        {
            InitalPumpInfo();
            InitialElePrice();
            var calcHelper = GetCalcHelper(anaRequest);
            //string error_info = null;
            //var prj = calcHelper.CalcOptPrjs(out error_info);
            string error_info;
            var anaPrjs = calcHelper.CalcOptPrjs(out error_info);
            if (!string.IsNullOrEmpty(error_info) || anaPrjs == null || anaPrjs.Count() == 0)
            {
                defaultPrj = null;
                return error_info;
            }
            anaPrjs.Sort(new AnaPrj.Comparer(anaRequest.CalcOptType));
              defaultPrj = anaPrjs.First();
            return null;
        }
        /// <summary>
        /// 构建计算辅助类
        /// </summary>
        /// <param name="isIgnoreOpenLimitAble"></param>
        /// <returns></returns>
        private IStation.Calc.ErQuCalcBaseHelper GetCalcHelper(IStation.CalcModel.AnaRequest _anaRequest)
        {
        private IStation.Calc.ErQuCalcBaseHelper GetCalcHelper(IStation.CalcModel.AnaRequest anaRequest)
        {
            IStation.Calc.ErQuCalcBaseHelper calcHelper = IStation.Calc.ErQuCalcBaseHelper.Build();
            calcHelper.MinOpenPumpMinute = IStation.AnaGlobalParas.Setting.MinOpenTimeMinute;
            calcHelper.MinSwitchPumpMinute = IStation.AnaGlobalParas.Setting.MinSwitchTimeMinute;
@@ -36,15 +60,15 @@
                calcHelper.CalcSpaceMinute = IStation.AnaGlobalParas.Setting.CalcSpaceMinuteQ;
                calcHelper.MaxPumpSwitchCount = IStation.AnaGlobalParas.Setting.MaxPumpSwitchCountQ;
            }
            DateTime  rangeStartTime = _anaRequest.Day ;
            DateTime rangeEndTime = _anaRequest.Day.AddDays(1);
            DateTime rangeStartTime = anaRequest.StartTime ;
            DateTime rangeEndTime = anaRequest.EndTime;
            calcHelper.SetPumpInfo(_allCalcPumpInfos);
            calcHelper.SetCalcTimeRange(rangeStartTime, rangeEndTime);
            calcHelper.StartOpenCount = _anaRequest.StartOpenCount;// Convert.ToInt32(imageComboCurrentOpenCount.EditValue);
            calcHelper.StartOpenCount = anaRequest.StartOpenCount;// Convert.ToInt32(imageComboCurrentOpenCount.EditValue);
            calcHelper.ElecPrice = _elePriceMonthList;
            calcHelper.IsDispDebug = true;
            calcHelper.IsDispDebug = false ;
            calcHelper.OnShowDebugInfo += (info) =>
            {
                //if (tabPageDebug.PageVisible)
@@ -200,7 +224,7 @@
                {
                    if (limit_times[0].Start == rangeStartTime)
                    {
                        _anaRequest.StartOpenCount = -1;//不考虑
                        anaRequest.StartOpenCount = -1;//不考虑
                    }
                }
            }
@@ -208,7 +232,7 @@
            calcHelper.SetAnaRequest(_anaRequest);
            calcHelper.SetAnaRequest(anaRequest);
@@ -221,8 +245,7 @@
        /// </summary>
        private void InitalPumpInfo()
        {
            if (_allCalcPumpInfos == null)
            {
                var allCurveList = IStation.Common.PumpCurve.GetAll();
                var allPumpMapList = IStation.Common.PumpCurveMapping.GetAll();
                var allPumpList = IStation.Common.Product.GetAllPump();
@@ -247,18 +270,17 @@
                    _allCalcPumpInfos.Add(calcPumpInfo);
                }
            }
        }
        /// <summary>
        /// 
        /// </summary>
        private void InitialElePrice()
        {
            if (_elePriceMonthList == null)
            {
                var allPrices = IStation.Common.ElecPrice.GetAll();
                _elePriceMonthList = allPrices.First().Settings.MonthList;
            }
        }
        #endregion