Exemplo n.º 1
0
 public void Read()
 {
     lock (lockObject)
     {
         List <SingleSheBei> tmpAllSheBei = new List <SingleSheBei>();
         using (DataTable dt = frmMain.mMain.AllDataBase.ReadData.Read("select * from SetSheBei order by id"))
         {
             if (dt != null && dt.Rows.Count > 0)
             {
                 SingleSheBei tmpSheBei;
                 for (int i = 0; i < dt.Rows.Count; i++)
                 {
                     tmpSheBei        = new SingleSheBei();
                     tmpSheBei.SheBei = All.Class.Num.ToString(dt.Rows[i]["SheBei"]);
                     tmpSheBei.Last   = All.Class.Num.ToDateTime(dt.Rows[i]["Last"]);
                     tmpSheBei.ZhouQi = All.Class.Num.ToInt(dt.Rows[i]["ZhouQi"]);
                     tmpSheBei.DanWei = All.Class.Num.ToString(dt.Rows[i]["DanWei"]);
                     tmpSheBei.Video  = All.Class.Num.ToString(dt.Rows[i]["Video"]);
                     tmpAllSheBei.Add(tmpSheBei);
                 }
             }
         }
         this.AllSheBei = tmpAllSheBei;
     }
 }
Exemplo n.º 2
0
        public override void Flush()
        {
            lock (lockObject)
            {
                List <SingleSheBei> tmpNeedWeiHu = new List <SingleSheBei>();
                List <SingleSheBei> tmpNextWeiHu = new List <SingleSheBei>();
                List <int>          maxTime      = new List <int>();
                int          tmpShiJian          = 0;
                SingleSheBei tmpSheBei;
                bool         insert = false;

                if (this.AllSheBei != null && this.AllSheBei.Count > 0)
                {
                    AllSheBei.ForEach(
                        sheBei =>
                    {
                        //统一单位
                        tmpShiJian = sheBei.ZhouQi;
                        switch (sheBei.DanWei)
                        {
                        case "年":
                            tmpShiJian = tmpShiJian * 24 * 60 * 365;
                            break;

                        case "月":
                            tmpShiJian = tmpShiJian * 24 * 60 * 30;
                            break;

                        case "周":
                            tmpShiJian = tmpShiJian * 24 * 60 * 7;
                            break;

                        case "日":
                            tmpShiJian = tmpShiJian * 24 * 60 * 1;
                            break;

                        case "时":
                            tmpShiJian = tmpShiJian * 60 * 1;
                            break;
                        }
                        tmpSheBei        = new SingleSheBei();
                        tmpSheBei.Next   = sheBei.Last.AddMinutes(tmpShiJian);
                        tmpSheBei.SheBei = sheBei.SheBei;
                        tmpSheBei.Last   = sheBei.Last;
                        tmpSheBei.ZhouQi = sheBei.ZhouQi;
                        tmpSheBei.DanWei = sheBei.DanWei;
                        tmpSheBei.Video  = sheBei.Video;

                        if (tmpSheBei.Next < DateTime.Now)    //马上维护
                        {
                            tmpNeedWeiHu.Add(tmpSheBei);
                        }
                        else                               //不用马上维护
                        {
                            if (maxTime.Count < NextCount) //个数不足
                            {
                                insert = false;
                                for (int i = 0; i < tmpNextWeiHu.Count; i++)
                                {
                                    if (tmpNextWeiHu[i].Next > tmpSheBei.Next)
                                    {
                                        tmpNextWeiHu.Insert(i, tmpSheBei);    //插入适当位置
                                        insert = true;
                                        break;
                                    }
                                }
                                if (!insert)    //添加到末尾
                                {
                                    tmpNextWeiHu.Add(tmpSheBei);
                                }
                            }
                            else
                            {
                                insert = false;
                                if (tmpSheBei.Next < tmpNextWeiHu[NextCount - 1].Next)
                                {
                                    tmpNextWeiHu.RemoveAt(NextCount - 1);
                                    for (int i = 0; i < tmpNextWeiHu.Count; i++)
                                    {
                                        if (tmpNextWeiHu[i].Next > tmpSheBei.Next)
                                        {
                                            tmpNextWeiHu.Insert(i, tmpSheBei);
                                            insert = true;
                                            break;
                                        }
                                    }
                                    if (!insert)
                                    {
                                        tmpNextWeiHu.Add(tmpSheBei);
                                    }
                                }
                            }
                        }
                    });
                }
                this.NeedWeiHu = tmpNeedWeiHu;
                this.NextWeiHu = tmpNextWeiHu;
            }
        }