//初始化写入数据库的对象 private void InitDataStatistics(EnumSliceType ASliceType, int AFunctype, ObjectInfo AObjectInfo, DateTime AStarttime) { IDataFirstStatisticsSlice.ObjectType = AObjectInfo.ObjType; IDataFirstStatisticsSlice.StrRent = IGlobalSetting.StrRent; IDataFirstStatisticsSlice.ObjectID = AObjectInfo.ObjID; switch (AFunctype) { case 1: IDataFirstStatisticsSlice.RecordFunction = EnumRecordFunction.RecordLength; break; case 2: IDataFirstStatisticsSlice.RecordFunction = EnumRecordFunction.RecordNumber; break; case 3: IDataFirstStatisticsSlice.RecordFunction = EnumRecordFunction.RingTime; break; case 4: IDataFirstStatisticsSlice.RecordFunction = EnumRecordFunction.HoldTime; break; default: break; } IDataFirstStatisticsSlice.StartTimeUTC = LongParse(AStarttime.ToUniversalTime().ToString("yyyyMMdd000000"), 0); //以这个local时间为唯一值 IDataFirstStatisticsSlice.StartTimeLocal = LongParse(AStarttime.ToString("yyyyMMdd000000"), 0); IDataFirstStatisticsSlice.UpdateTime = DateTime.Now; IDataFirstStatisticsSlice.Year = AStarttime.Year; IDataFirstStatisticsSlice.Month = AStarttime.Month; IDataFirstStatisticsSlice.Day = AStarttime.Day; IDataFirstStatisticsSlice.StatisticsType = ConstStatisticsType.RecordStaitics; IDataFirstStatisticsSlice.SliceType = ASliceType; }
/// <summary> /// 初始化写入数据库的对象 /// </summary> /// <param name="ASliceType">切片类型</param> /// <param name="AFunctype">统计类型</param> /// <param name="AObjectInfo">坐席,分机</param> /// <param name="AStarttime"></param> private void InitDataStatistics(EnumSliceType ASliceType, int AFunctype, ObjectInfo AObjectInfo, DateTime AStarttime) { IDataFirstStatisticsSlice.ObjectType = AObjectInfo.ObjType; IDataFirstStatisticsSlice.StrRent = IGlobalSetting.StrRent; IDataFirstStatisticsSlice.ObjectID = AObjectInfo.ObjID; switch (AFunctype) { case 1: { IDataFirstStatisticsSlice.QMFunction = EnumQMFunction.ScoreNumber; IDataFirstStatisticsSlice.OrderID = 1; } break; case 2: { IDataFirstStatisticsSlice.QMFunction = EnumQMFunction.AppealNumber; IDataFirstStatisticsSlice.OrderID = 2; } break; case 3: { IDataFirstStatisticsSlice.QMFunction = EnumQMFunction.AppealSucNum; IDataFirstStatisticsSlice.OrderID = 3; } break; case 4: { IDataFirstStatisticsSlice.QMFunction = EnumQMFunction.TotalScore; IDataFirstStatisticsSlice.OrderID = 4; } break; case 5: { IDataFirstStatisticsSlice.QMFunction = EnumQMFunction.QaBeAppealedNum; IDataFirstStatisticsSlice.OrderID = 5; } break; case 6: { IDataFirstStatisticsSlice.QMFunction = EnumQMFunction.QaScoreNum; IDataFirstStatisticsSlice.OrderID = 6; } break; case 7: { IDataFirstStatisticsSlice.QMFunction = EnumQMFunction.QaTaskFinishedNum; IDataFirstStatisticsSlice.OrderID = 7; } break; case 8: { IDataFirstStatisticsSlice.QMFunction = EnumQMFunction.QaTaskReceivedNum; IDataFirstStatisticsSlice.OrderID = 8; } break; default: break; } IDataFirstStatisticsSlice.StartTimeUTC = LongParse(AStarttime.ToUniversalTime().ToString("yyyyMMddHHmmss"), 0); //以这个local时间为唯一值 IDataFirstStatisticsSlice.StartTimeLocal = LongParse(AStarttime.ToString("yyyyMMddHHmmss"), 0); IDataFirstStatisticsSlice.UpdateTime = DateTime.Now; IDataFirstStatisticsSlice.Year = AStarttime.Year; IDataFirstStatisticsSlice.Month = AStarttime.Month; IDataFirstStatisticsSlice.Day = AStarttime.Day; IDataFirstStatisticsSlice.StatisticsType = ConstStatisticsType.QMStatistics; IDataFirstStatisticsSlice.SliceType = ASliceType; }
/// <summary> /// 按对象 按功能分 /// </summary> /// <param name="AStarttime">开始时间</param> /// <param name="AStoptime">截止时间</param> /// <param name="AObjectInfo">统计目标</param> /// <param name="ASliceType">切片类型</param> private void DoRealStatistics(DateTime AStarttime, DateTime AStoptime, ObjectInfo AObjectInfo, EnumSliceType ASliceType) { List <DateTimeSplite> LListDateTimeSplite; foreach (int item in Enum.GetValues(typeof(EnumQMFunction))) { //if (item != 8) // continue; IDataFirstStatisticsSlice = new DataFirstStatisticsSlice(); InitDataStatistics(ASliceType, item, AObjectInfo, AStarttime); if (AObjectInfo.ObjID >= CombinSourceCode(StatisticsConstDefine.Const_Source_Agent_Begin) && AObjectInfo.ObjID < CombinSourceCode(StatisticsConstDefine.Const_Source_Extension_Begin)) { IDataFirstStatisticsSlice.ObjectType = 2; } else if (AObjectInfo.ObjID >= CombinSourceCode(StatisticsConstDefine.Const_Source_Extension_Begin) && AObjectInfo.ObjID < CombinSourceCode(StatisticsConstDefine.Const_Source_TrueExtension_Begin)) { IDataFirstStatisticsSlice.ObjectType = 1; } else if (AObjectInfo.ObjID >= CombinSourceCode(StatisticsConstDefine.Const_Source_TrueExtension_Begin) && AObjectInfo.ObjID < CombinSourceCode(StatisticsConstDefine.Const_Source_Role_Begin)) { IDataFirstStatisticsSlice.ObjectType = 1; } //得到统计的值 LListDateTimeSplite = new List <DateTimeSplite>(); switch (ASliceType) { case EnumSliceType.DaySlice: { if (IGlobalSetting.IlogicPartMark == 1) //按月分区了 { GetSpliteTime(AStarttime, AStoptime, ref LListDateTimeSplite); foreach (DateTimeSplite dsplite in LListDateTimeSplite) { IDataFirstStatisticsSlice.Value01 += DALQMInfo.GetQMDayStatisticsInfo(IDataBaseConfig, AObjectInfo, IGlobalSetting, dsplite.StartStatisticsTime, dsplite.StopStatisticsTime, item, IDataFirstStatisticsSlice.ObjectType); } } else { IDataFirstStatisticsSlice.Value01 = DALQMInfo.GetQMDayStatisticsInfo(IDataBaseConfig, AObjectInfo, IGlobalSetting, AStarttime, AStoptime, item, IDataFirstStatisticsSlice.ObjectType); } DALFirstStatisticsQM.InsertQMStatistics(IDataBaseConfig, IGlobalSetting, 2, IDataFirstStatisticsSlice); } break; case EnumSliceType.WeekSlice: { IDataFirstStatisticsSlice.Value01 = DALFirstStatisticsQM.GetWeekQMStatistics(IDataBaseConfig, AObjectInfo, IGlobalSetting, LongParse(AStarttime.ToString("yyyyMMddHHmmss"), 0), LongParse(AStoptime.ToString("yyyyMMddHHmmss"), 0), item, IDataFirstStatisticsSlice.ObjectType); DALFirstStatisticsQM.InsertQMStatistics(IDataBaseConfig, IGlobalSetting, 3, IDataFirstStatisticsSlice); } break; case EnumSliceType.MonthSlice: { IDataFirstStatisticsSlice.Value01 = DALFirstStatisticsQM.GetMonthQMStatistics(IDataBaseConfig, AObjectInfo, IGlobalSetting, LongParse(AStarttime.ToString("yyyyMMddHHmmss"), 0), LongParse(AStoptime.ToString("yyyyMMddHHmmss"), 0), item, IDataFirstStatisticsSlice.ObjectType); DALFirstStatisticsQM.InsertQMStatistics(IDataBaseConfig, IGlobalSetting, 4, IDataFirstStatisticsSlice); } break; case EnumSliceType.YearSlice: { IDataFirstStatisticsSlice.Value01 = DALFirstStatisticsQM.GetYearQMStatistics(IDataBaseConfig, AObjectInfo, IGlobalSetting, LongParse(AStarttime.ToString("yyyyMMddHHmmss"), 0), LongParse(AStoptime.ToString("yyyyMMddHHmmss"), 0), item, IDataFirstStatisticsSlice.ObjectType); DALFirstStatisticsQM.InsertQMStatistics(IDataBaseConfig, IGlobalSetting, 5, IDataFirstStatisticsSlice); } break; default: break; } } }
//按对象 按功能分 private void DoRealStatistics(DateTime AStarttime, DateTime AStoptime, ObjectInfo AObjectInfo, EnumSliceType ASliceType, int AIntOrderId = -1) { List <DateTimeSplite> LListDateTimeSplite; foreach (int item in Enum.GetValues(typeof(EnumRecordFunction))) { IDataFirstStatisticsSlice = new DataFirstStatisticsSlice(); InitDataStatistics(ASliceType, item, AObjectInfo, AStarttime); //得到统计的值 LListDateTimeSplite = new List <DateTimeSplite>(); switch (ASliceType) { case EnumSliceType.MiniteSlice: { if (IGlobalSetting.IlogicPartMark == 1) //按月分区了 { GetSpliteTime(AStarttime, AStoptime, ref LListDateTimeSplite); foreach (DateTimeSplite dsplite in LListDateTimeSplite) { IDataFirstStatisticsSlice.Value01 += DALRecordInfo.GetAllRecordStatisticsInfo(IDataBaseConfig, AObjectInfo, IGlobalSetting, dsplite.StartStatisticsTime, dsplite.StopStatisticsTime, item); } } else { IDataFirstStatisticsSlice.Value01 = DALRecordInfo.GetAllRecordStatisticsInfo(IDataBaseConfig, AObjectInfo, IGlobalSetting, AStarttime, AStoptime, item); } } break; case EnumSliceType.DaySlice: { IDataFirstStatisticsSlice.Value01 = DALFirstStatisticsRecord.GetDayRecordStatistics(IDataBaseConfig, AObjectInfo, IGlobalSetting, LongParse(AStarttime.ToString("yyyyMMdd000000"), 0), LongParse(AStoptime.ToString("yyyyMMdd000000"), 0), item, IDataFirstStatisticsSlice.ObjectType); } break; case EnumSliceType.WeekSlice: { IDataFirstStatisticsSlice.Value01 = DALFirstStatisticsRecord.GetWeekRecordStatistics(IDataBaseConfig, AObjectInfo, IGlobalSetting, LongParse(AStarttime.ToString("yyyyMMdd000000"), 0), LongParse(AStoptime.ToString("yyyyMMdd000000"), 0), item, IDataFirstStatisticsSlice.ObjectType); } break; case EnumSliceType.MonthSlice: { IDataFirstStatisticsSlice.Value01 = DALFirstStatisticsRecord.GetMonthRecordStatistics(IDataBaseConfig, AObjectInfo, IGlobalSetting, LongParse(AStarttime.ToString("yyyyMMdd000000"), 0), LongParse(AStoptime.ToString("yyyyMMdd000000"), 0), item, IDataFirstStatisticsSlice.ObjectType); } break; case EnumSliceType.YearSlice: { IDataFirstStatisticsSlice.Value01 = DALFirstStatisticsRecord.GetYearRecordStatistics(IDataBaseConfig, AObjectInfo, IGlobalSetting, LongParse(AStarttime.ToString("yyyyMMdd000000"), 0), LongParse(AStoptime.ToString("yyyyMMdd000000"), 0), item, IDataFirstStatisticsSlice.ObjectType); } break; default: break; } //将数据写入数据库 switch (ASliceType) { case EnumSliceType.MiniteSlice: { IDataFirstStatisticsSlice.OrderID = AIntOrderId; DALFirstStatisticsRecord.InsertRecordStatistics(IDataBaseConfig, IGlobalSetting, 1, IDataFirstStatisticsSlice); } break; case EnumSliceType.DaySlice: DALFirstStatisticsRecord.InsertRecordStatistics(IDataBaseConfig, IGlobalSetting, 2, IDataFirstStatisticsSlice); break; case EnumSliceType.WeekSlice: DALFirstStatisticsRecord.InsertRecordStatistics(IDataBaseConfig, IGlobalSetting, 3, IDataFirstStatisticsSlice); break; case EnumSliceType.MonthSlice: DALFirstStatisticsRecord.InsertRecordStatistics(IDataBaseConfig, IGlobalSetting, 4, IDataFirstStatisticsSlice); break; case EnumSliceType.YearSlice: DALFirstStatisticsRecord.InsertRecordStatistics(IDataBaseConfig, IGlobalSetting, 5, IDataFirstStatisticsSlice); break; default: break; } } }