コード例 #1
0
        /// <summary>
        /// 从数据库加载上来?缓存预热的机制
        /// </summary>
        /// <returns></returns>
        public static int CachePreheating()
        {
            int result = 0;
            // 把所有的数据都缓存起来的代码
            var manager = new BaseOrganizeLogOnManager();

            using (IDataReader dataReader = manager.ExecuteReader(0, BaseOrganizeLogOnEntity.FieldId))
            {
                while (dataReader.Read())
                {
                    var entity = BaseEntity.Create <BaseOrganizeLogOnEntity>(dataReader, false);
                    SetCache(entity);
                    result++;
                }
                dataReader.Close();
            }

            return(result);
        }
コード例 #2
0
        /// <summary>
        /// 更新实体
        /// </summary>
        /// <param name="entity">实体</param>
        public static int LogOnStatistics()
        {
            int result = 0;

            bool update = false;
            int  i      = 0;

            // 电脑登录系统、没有登记过的,全部登记上来。
            BaseOrganizeLogOnEntity organizeLogOnEntity = null;
            string sqlQuery = string.Empty;

            sqlQuery = @"SELECT u.companyid id
                                , MIN(l.firstvisit) firstvisit
                                , MAX(l.lastvisit) lastvisit 
                           FROM baseuserlogon l
                                , baseuser u 
                          WHERE l.id = u.id 
                          GROUP BY u.companyid";

            BaseOrganizeLogOnManager organizeLogOnManager = new BaseOrganizeLogOnManager();
            BaseOrganizeLogOnManager manager = new BaseOrganizeLogOnManager();

            using (IDataReader dataReader = manager.ExecuteReader(sqlQuery))
            {
                while (dataReader.Read())
                {
                    i++;
                    string id = BaseBusinessLogic.ConvertToString(dataReader[BaseOrganizeLogOnEntity.FieldId]);

                    DateTime?firstVisit = BaseBusinessLogic.ConvertToNullableDateTime(dataReader[BaseOrganizeLogOnEntity.FieldFirstVisit]);
                    DateTime?lastVisit  = BaseBusinessLogic.ConvertToNullableDateTime(dataReader[BaseOrganizeLogOnEntity.FieldLastVisit]);
                    organizeLogOnEntity = organizeLogOnManager.GetObject(id);
                    if (organizeLogOnEntity == null)
                    {
                        organizeLogOnEntity            = new BaseOrganizeLogOnEntity();
                        organizeLogOnEntity.Id         = id;
                        organizeLogOnEntity.FirstVisit = firstVisit;
                        organizeLogOnEntity.LastVisit  = lastVisit;
                        organizeLogOnManager.AddObject(organizeLogOnEntity);
                    }
                    else
                    {
                        update = false;
                        if (firstVisit.HasValue)
                        {
                            if (organizeLogOnEntity.FirstVisit == null || organizeLogOnEntity.FirstVisit > firstVisit)
                            {
                                organizeLogOnEntity.FirstVisit = firstVisit;
                                update = true;
                            }
                        }
                        if (lastVisit.HasValue)
                        {
                            if (organizeLogOnEntity.LastVisit == null || organizeLogOnEntity.LastVisit < lastVisit)
                            {
                                organizeLogOnEntity.LastVisit = lastVisit;
                                update = true;
                            }
                        }
                        if (update)
                        {
                            organizeLogOnManager.UpdateObject(organizeLogOnEntity);
                        }
                    }
                    if (update)
                    {
                        System.Console.WriteLine("第 " + i.ToString() + " companyid : " + id);
                    }
                    else
                    {
                        System.Console.WriteLine("第 " + i.ToString());
                    }
                }
                dataReader.Close();
            }

            // 巴枪登录系统、没有登记过的,全部登记上来。
            sqlQuery = @"SELECT u.companyid id
                                , MIN(l.firstvisit) firstvisit
                                , MAX(l.lastvisit) lastvisit 
                           FROM pdauserlogon l
                                , baseuser u 
                          WHERE l.id = u.id 
                          GROUP BY u.companyid";
            using (IDataReader dataReader = manager.ExecuteReader(sqlQuery))
            {
                i = 0;
                while (dataReader.Read())
                {
                    i++;
                    string   id         = BaseBusinessLogic.ConvertToString(dataReader[BaseOrganizeLogOnEntity.FieldId]);
                    DateTime?firstVisit = BaseBusinessLogic.ConvertToNullableDateTime(dataReader[BaseOrganizeLogOnEntity.FieldFirstVisit]);
                    DateTime?lastVisit  = BaseBusinessLogic.ConvertToNullableDateTime(dataReader[BaseOrganizeLogOnEntity.FieldLastVisit]);
                    organizeLogOnEntity = organizeLogOnManager.GetObject(id);
                    if (organizeLogOnEntity == null)
                    {
                        organizeLogOnEntity            = new BaseOrganizeLogOnEntity();
                        organizeLogOnEntity.Id         = id;
                        organizeLogOnEntity.FirstVisit = firstVisit;
                        organizeLogOnEntity.LastVisit  = lastVisit;
                        organizeLogOnManager.Add(organizeLogOnEntity);
                    }
                    else
                    {
                        update = false;
                        if (firstVisit.HasValue)
                        {
                            if (organizeLogOnEntity.FirstVisit == null || organizeLogOnEntity.FirstVisit > firstVisit)
                            {
                                organizeLogOnEntity.FirstVisit = firstVisit;
                                update = true;
                            }
                        }
                        if (lastVisit.HasValue)
                        {
                            if (organizeLogOnEntity.LastVisit == null || organizeLogOnEntity.LastVisit < lastVisit)
                            {
                                organizeLogOnEntity.LastVisit = lastVisit;
                                update = true;
                            }
                        }
                        organizeLogOnManager.UpdateObject(organizeLogOnEntity);
                    }

                    if (update)
                    {
                        System.Console.WriteLine("第 " + i.ToString() + " companyid : " + id);
                    }
                    else
                    {
                        System.Console.WriteLine("第 " + i.ToString());
                    }
                }
                dataReader.Close();
            }

            System.Console.WriteLine("公司整体登录状态已经更新完毕。");

            return(result);
        }