예제 #1
0
        public void RunFirstStatistics()
        {
            string LPath     = System.AppDomain.CurrentDomain.BaseDirectory.ToString();
            string LFilePath = System.IO.Path.Combine(LPath, StatisticsConstDefine.XmlFileName);

            if (ReadXml(LFilePath))
            {
                if (IListServiceConfigInfo != null)
                {
                    //服务启动时间
                    string LStrStartTime = ConfigurationManager.AppSettings["StartTime"] != null ? ConfigurationManager.AppSettings["StartTime"] : "020000";
                    LStrStartTime = DateTime.Now.Date.ToString("yyyyMMdd") + LStrStartTime;
                    DateTime LStartTime = StringToDateTime(LStrStartTime);

                    //初次统计
                    foreach (ServiceConfigInfo serviceconfiginfo in IListServiceConfigInfo)
                    {
                        //serviceconfiginfo.StartTime这个时间写统计结束的时间
                        if (LStartTime < DateTime.Now && serviceconfiginfo.StartTime < DateTime.Today && serviceconfiginfo.IsStart)
                        {
                            //读取全局参数
                            List <string> LListStrRent       = new List <string>();
                            List <string> LListTableNameInfo = new List <string>();
                            string        LStrTemp           = string.Empty;
                            //得到租户信息
                            DALCommon.ObtainRentList(IDatabaseConfig, ref LListStrRent);
                            foreach (string strRent in LListStrRent)
                            {
                                IGlobalSetting.StrRent = strRent;
                                int LlogicPartMark = DALCommon.ObtainRentLogicTable(IDatabaseConfig, strRent, StatisticsConstDefine.Const_ColumnName_LPRecord);

                                //1为有分表 2为无分表
                                if (LlogicPartMark == 0)
                                {
                                    FileLog.WriteInfo("DoAction()", "LlogicPartMark == 0"); continue;
                                }
                                IGlobalSetting.IlogicPartMark = LlogicPartMark;

                                if (LlogicPartMark == 1)
                                {
                                    LListTableNameInfo = new List <string>();
                                    DALCommon.ObtainRentExistLogicPartitionTables(IDatabaseConfig, strRent, StatisticsConstDefine.Const_TableName_Record, ref LListTableNameInfo);
                                }

                                IGlobalSetting.LStrRecordName = LListTableNameInfo;

                                //全局参数里座席分机真实分机
                                LStrTemp = string.Empty;
                                DALGlobalSetting.GetGlobalSetting(IDatabaseConfig, ref LStrTemp, strRent, StatisticsConstDefine.Const_Agent_Extension);
                                if (LStrTemp.Contains('R')) //如有真实分机则统计座席和真实分机的信息
                                {
                                    IGlobalSetting.StrConfigAER = "R";
                                }
                                else  //其它则统计座席和分机的信息
                                {
                                    IGlobalSetting.StrConfigAER = "A";
                                }

                                //全局周的配置
                                LStrTemp = string.Empty;
                                DALGlobalSetting.GetGlobalSetting(IDatabaseConfig, ref LStrTemp, strRent, StatisticsConstDefine.Const_Week_Config);
                                IGlobalSetting.StrWeekStart = LStrTemp;

                                //全局月的配置
                                LStrTemp = string.Empty;
                                DALGlobalSetting.GetGlobalSetting(IDatabaseConfig, ref LStrTemp, strRent, StatisticsConstDefine.Const_Month_Config);
                                IGlobalSetting.StrMonthStart = LStrTemp;

                                if (serviceconfiginfo.StatistcsName != StatisticsConstDefine.KPIStatisticsName && serviceconfiginfo.IsStart)
                                {
                                    IStatistics iStatistics = DALFactory.DataAccess.CreateStatistic(serviceconfiginfo.StatistcsName);
                                    iStatistics.DoAction(IDatabaseConfig, serviceconfiginfo, IGlobalSetting);
                                }

                                if (serviceconfiginfo.StatistcsName == StatisticsConstDefine.KPIStatisticsName && serviceconfiginfo.IsStart)
                                {
                                    //kpi计算
                                    KPIStatistics kpiStatistics = new KPIStatistics();
                                    kpiStatistics.DoAction(IDatabaseConfig, serviceconfiginfo, IGlobalSetting);
                                }

                                Thread.Sleep(10);
                            }
                        }
                    }
                }
                //保存统计时间到xml
                SaveXml(LFilePath);
                Thread.Sleep(60 * 1000);
            }
        }