Exemple #1
0
        /// <summary>
        /// 计算耗热量并将结果集传回
        /// </summary>
        /// <returns></returns>
        public WccResultSet CalcWccResultSet()
        {
            WccResultSet wccrSet = new WccResultSet();

            for (int i = 0; i < _wccwns.Count; i++)
            {
                WastingCaloricCalculatorWithName wccwn = _wccwns[i];

                string stname = wccwn.StationName;
                WccResultsCollection wccrs = new WccResultsCollection(stname);

                WastingCaloricCalculatorsCollection wccs = wccwn.WastingCaloricCalculatorsCollection;
                for (int j = 0; j < wccs.Count; j++)
                {
                    WastingCaloricCalculator wcc = wccs[j];
                    int      wc   = wcc.Calc();
                    DateTime date = wcc.Date;

                    WccResult wccr = new WccResult(date, wc);
                    wccrs.Add(wccr);
                }

                wccrSet.Add(wccrs);
            }
            return(wccrSet);
        }
 /// <summary>
 /// 按照时间顺序自动加入相关的Wcc中,或自动创建Wcc并加入到wccs中
 /// </summary>
 /// <param name="grDataPoint"></param>
 public void AddGrDataPoint(GrDataPoint grDataPoint)
 {
     if (_wccs.Count > 0)
     {
         // 已包含数据
         WastingCaloricCalculator lastwcc = _wccs[_wccs.Count - 1];
         if (lastwcc.IsTodayGrDataPoint(grDataPoint))
         {
             lastwcc.AddGrDataPoint(grDataPoint);
         }
         else if (lastwcc.IsNextDayDataPoint(grDataPoint))
         {
             if (lastwcc.CanCalcZeroDataPoint(grDataPoint))
             {
                 GrDataPoint zerogdp = lastwcc.CalcZeroDataPoint(grDataPoint);
                 lastwcc.AddGrDataPoint(zerogdp);
                 CreateAndAddNewWcc(zerogdp);
             }
             else
             {
                 CreateAndAddNewWcc(grDataPoint);
             }
         }
         else
         {
             CreateAndAddNewWcc(grDataPoint);
         }
     }
     else
     {
         CreateAndAddNewWcc(grDataPoint);
     }
 }
        /// <summary>
        ///
        /// </summary>
        /// <param name="grDataPoint"></param>
        private void CreateAndAddNewWcc(GrDataPoint grDataPoint)
        {
            WastingCaloricCalculator newwcc = new WastingCaloricCalculator(grDataPoint.DateTime);

            newwcc.AddGrDataPoint(grDataPoint);
            _wccs.Add(newwcc);
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="wcc"></param>
        public void Add(WastingCaloricCalculator wcc)
        {
            if (wcc == null)
            {
                throw new ArgumentNullException("wcc");
            }

            _list.Add(wcc);
        }
        public void testCalcZeroDataPoint()
        {
            string      name = "name";
            GrDataPoint dp1  = new GrDataPoint(
                name,
                DateTime.Parse("2007-10-12 12:00:00"),
                100,
                50,
                1000
                );

            GrDataPoint dp2 = new GrDataPoint(
                name,
                DateTime.Parse("2007-10-13 11:59:59"),
                80,
                40,
                1200
                );

            WastingCaloricCalculator wcc = new WastingCaloricCalculator(DateTime.Parse("2007-10-12"));

            wcc.AddGrDataPoint(dp1);
            GrDataPoint ans = wcc.CalcZeroDataPoint(dp2);

            Assert.AreEqual(name, ans.StationName);
            Assert.AreEqual(DateTime.Parse("2007-10-13 0:0:0"), ans.DateTime);
            Assert.AreEqual(90F, ans.OneGiveTemp, 0.1F);
            Assert.AreEqual(45F, ans.OneBackTemp, 0.1F);
            Assert.AreEqual(1100F, ans.OneSum, 0.1F);


            Assert.AreEqual(true, wcc.CanCalcZeroDataPoint(dp2));
            Assert.AreEqual(false, wcc.IsTodayGrDataPoint(dp2));
            Assert.AreEqual(true, wcc.IsNextDayDataPoint(dp2));

            // 1 gr data point
            Assert.AreEqual(1, wcc.Calc());

            wcc.AddGrDataPoint(ans);
            Assert.AreEqual(1, wcc.Calc());
        }