using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data.SqlClient; using System.Data; using ZXDT.DBUtility; namespace ZXDT.CallCenter.DAL { public partial class ReportDAL { public ReportDAL() { } #region 其他各项指标 /// /// 获取接通率数据 /// /// 开始日期 /// 结束日期 /// public DataTable GetOtherData1(string startDate, string endDate) { StringBuilder strSql = new StringBuilder(); strSql.Append("SELECT CallState,COUNT(CallState) as num FROM T_Call_CallRecords "); strSql.Append(" where CallType=0 "); strSql.Append(" and CONVERT(varchar(100), BeginTime, 8)>='08:30:00' "); strSql.Append(" and CONVERT(varchar(100), BeginTime, 8)<='20:00:00' "); if (!string.IsNullOrEmpty(startDate)) { strSql.Append(" and BeginTime>='" + startDate + " 00:00:00' "); } if (!string.IsNullOrEmpty(endDate)) { strSql.Append(" and BeginTime<='" + endDate + " 23:59:59' "); } strSql.Append(" GROUP BY CallState"); DataSet ds = DbHelperSQL.Query(strSql.ToString()); if (ds.Tables[0].Rows.Count > 0) { return ds.Tables[0]; } else { return null; } } /// /// 获取流失率数据 /// /// 开始日期 /// 结束日期 /// public DataTable GetOtherData2(string startDate, string endDate) { StringBuilder strSql = new StringBuilder(); strSql.Append("SELECT CallState,COUNT(CallState) as num FROM T_Call_CallRecords "); // strSql.Append(" where CallType=0 AND ( RingLongTime>15 OR CallState=1) "); strSql.Append(" where CallType=0 "); strSql.Append(" and CONVERT(varchar(100), BeginTime, 8)>='08:30:00' "); strSql.Append(" and CONVERT(varchar(100), BeginTime, 8)<='20:00:00' "); if (!string.IsNullOrEmpty(startDate)) { strSql.Append(" and BeginTime>='" + startDate + " 00:00:00' "); } if (!string.IsNullOrEmpty(endDate)) { strSql.Append(" and BeginTime<='" + endDate + " 23:59:59' "); } strSql.Append(" GROUP BY CallState"); DataSet ds = DbHelperSQL.Query(strSql.ToString()); if (ds.Tables[0].Rows.Count > 0) { return ds.Tables[0]; } else { return null; } } /// /// 按时转出率 /// /// 开始日期 /// 结束日期 /// public DataTable GetOtherData3(string startDate, string endDate) { StringBuilder strSql = new StringBuilder(); strSql.Append("SELECT COUNT(1) num,t.CallState FROM "); strSql.Append(" (SELECT CASE "); //未转派 超时0 strSql.Append(" WHEN F_SENTORDERTIME IS NULL AND DATEDIFF(minute, DATEADD(day,1,F_CREATEDATE), GETDATE())> 0 THEN 0 "); //未转派 未超时1 strSql.Append(" WHEN F_SENTORDERTIME IS NULL THEN 1 "); //已转派 超时0 strSql.Append(" WHEN DATEDIFF(minute, DATEADD(day,1,F_CREATEDATE), F_SENTORDERTIME)>0 THEN 0 "); //已转派 未超时1 strSql.Append(" ELSE 1 END AS CallState FROM T_Wo_WorkOrderBase "); strSql.Append(" where 1=1 "); if (!string.IsNullOrEmpty(startDate)) { strSql.Append(" and F_CreateDate>='" + startDate + " 00:00:00' "); } if (!string.IsNullOrEmpty(endDate)) { strSql.Append(" and F_CreateDate<='" + endDate + " 23:59:59' "); } strSql.Append(" ) t GROUP BY t.CallState"); DataSet ds = DbHelperSQL.Query(strSql.ToString()); if (ds.Tables[0].Rows.Count > 0) { return ds.Tables[0]; } else { return null; } } /// /// 按时办结率 /// /// 开始日期 /// 结束日期 /// public DataTable GetOtherData4(string startDate, string endDate) { StringBuilder strSql = new StringBuilder(); strSql.Append("SELECT COUNT(1) num,t.CallState,t.F_HOUSING FROM "); strSql.Append(" (SELECT CASE "); // 超时0 strSql.Append(" WHEN F_OVERTIMES > 0 THEN 0 "); // 未超时1 strSql.Append(" ELSE 1 END AS CallState,F_HOUSING FROM T_Wo_WorkOrderBase "); strSql.Append(" where 1=1 AND F_HOUSING in ('投诉','建议','咨询')"); if (!string.IsNullOrEmpty(startDate)) { strSql.Append(" and F_CreateDate>='" + startDate + " 00:00:00' "); } if (!string.IsNullOrEmpty(endDate)) { strSql.Append(" and F_CreateDate<='" + endDate + " 23:59:59' "); } strSql.Append(" ) t GROUP BY t.CallState,t.F_HOUSING"); DataSet ds = DbHelperSQL.Query(strSql.ToString()); if (ds.Tables[0].Rows.Count > 0) { return ds.Tables[0]; } else { return null; } } /// /// 按时答复率 /// /// 开始日期 /// 结束日期 /// public DataTable GetOtherData5(string startDate, string endDate) { StringBuilder strSql = new StringBuilder(); strSql.Append("SELECT COUNT(1) num,t.CallState FROM "); strSql.Append(" (SELECT CASE "); // 超时0 strSql.Append(" WHEN ReplayTime IS NULL AND DATEDIFF(second, GETDATE(), NeedReplayTime)<0 THEN 0 "); // 超时0 strSql.Append(" WHEN ReplayTime IS NOT NULL AND DATEDIFF(second, ReplayTime, NeedReplayTime)<0 THEN 0 "); strSql.Append(" ELSE 1 END AS CallState FROM dbo.T_Wo_WorkOrderHistory "); strSql.Append(" WHERE NeedReplayTime IS NOT NULL "); if (!string.IsNullOrEmpty(startDate)) { strSql.Append(" and F_OPTDATE>='" + startDate + " 00:00:00' "); } if (!string.IsNullOrEmpty(endDate)) { strSql.Append(" and F_OPTDATE<='" + endDate + " 23:59:59' "); } strSql.Append(" ) t GROUP BY t.CallState"); DataSet ds = DbHelperSQL.Query(strSql.ToString()); if (ds.Tables[0].Rows.Count > 0) { return ds.Tables[0]; } else { return null; } } /// /// 定责指标 /// /// 开始日期 /// 结束日期 /// public DataTable GetOtherData6(string startDate, string endDate) { StringBuilder strSql = new StringBuilder(); strSql.Append("SELECT F_SERVICENATURE,COUNT(1)AS num FROM dbo.T_Wo_WorkOrderBase "); strSql.Append(" WHERE F_WORKORDERSTATEID=5 and F_HOUSING='投诉' "); if (!string.IsNullOrEmpty(startDate)) { strSql.Append(" and F_CreateDate>='" + startDate + " 00:00:00' "); } if (!string.IsNullOrEmpty(endDate)) { strSql.Append(" and F_CreateDate<='" + endDate + " 23:59:59' "); } strSql.Append(" GROUP BY F_SERVICENATURE "); DataSet ds = DbHelperSQL.Query(strSql.ToString()); if (ds.Tables[0].Rows.Count > 0) { return ds.Tables[0]; } else { return null; } } /// /// 首呼解决率 /// /// /// /// public DataTable GetOtherData10(string startDate, string endDate) { StringBuilder strSql = new StringBuilder(); strSql.Append("SELECT COUNT(1) num,t.CallState,F_HOUSING FROM "); strSql.Append(" (SELECT CASE "); //首呼解决 strSql.Append(" WHEN F_WORKORDERTYPEID=3 THEN 1 "); //转单 strSql.Append(" ELSE 0 END AS CallState,F_HOUSING FROM T_Wo_WorkOrderBase "); strSql.Append(" where 1=1 AND F_HOUSING IN('投诉','建议') "); if (!string.IsNullOrEmpty(startDate)) { strSql.Append(" and F_CreateDate>='" + startDate + " 00:00:00' "); } if (!string.IsNullOrEmpty(endDate)) { strSql.Append(" and F_CreateDate<='" + endDate + " 23:59:59' "); } strSql.Append(" ) t GROUP BY t.F_HOUSING,t.CallState"); DataSet ds = DbHelperSQL.Query(strSql.ToString()); if (ds.Tables[0].Rows.Count > 0) { return ds.Tables[0]; } else { return null; } } #endregion #region 定责类型统计报表 public DataTable GetOtherData7(string startDate, string endDate) { StringBuilder strSql = new StringBuilder(); strSql.Append("SELECT F_PROVINCE as name,COUNT(1)AS num FROM ("); strSql.Append(" SELECT DISTINCT F_WORKORDERID,F_PROVINCE,F_CITY,F_AREA FROM "); strSql.Append(" dbo.T_Wo_WorkOrderBase a INNER JOIN T_Wo_WorkOrderNotice b ON a.F_WORKORDERID=b.OrderId"); strSql.Append(" Where NoticeState=1 AND NoticeType=1 and F_WORKORDERSTATEID=5"); if (!string.IsNullOrEmpty(startDate)) { strSql.Append(" and a.F_CreateDate>='" + startDate + " 00:00:00' "); } if (!string.IsNullOrEmpty(endDate)) { strSql.Append(" and a.F_CreateDate<='" + endDate + " 23:59:59' "); } strSql.Append(" ) t GROUP BY t.F_PROVINCE ORDER BY num DESC "); DataSet ds = DbHelperSQL.Query(strSql.ToString()); if (ds.Tables[0].Rows.Count > 0) { return ds.Tables[0]; } else { return null; } } public DataTable GetOtherData8(string startDate, string endDate) { StringBuilder strSql = new StringBuilder(); strSql.Append("SELECT F_CITY as name,COUNT(1)AS num FROM ("); strSql.Append(" SELECT DISTINCT F_WORKORDERID,F_PROVINCE,F_CITY,F_AREA FROM "); strSql.Append(" dbo.T_Wo_WorkOrderBase a INNER JOIN T_Wo_WorkOrderNotice b ON a.F_WORKORDERID=b.OrderId"); strSql.Append(" Where NoticeState=1 AND NoticeType=1 and F_WORKORDERSTATEID=5"); if (!string.IsNullOrEmpty(startDate)) { strSql.Append(" and a.F_CreateDate>='" + startDate + " 00:00:00' "); } if (!string.IsNullOrEmpty(endDate)) { strSql.Append(" and a.F_CreateDate<='" + endDate + " 23:59:59' "); } strSql.Append(" ) t GROUP BY t.F_CITY ORDER BY num DESC "); DataSet ds = DbHelperSQL.Query(strSql.ToString()); if (ds.Tables[0].Rows.Count > 0) { return ds.Tables[0]; } else { return null; } } public DataTable GetOtherData9(string startDate, string endDate) { StringBuilder strSql = new StringBuilder(); strSql.Append("SELECT F_AREA as name,COUNT(1)AS num FROM ("); strSql.Append(" SELECT DISTINCT F_WORKORDERID,F_PROVINCE,F_CITY,F_AREA FROM "); strSql.Append(" dbo.T_Wo_WorkOrderBase a INNER JOIN T_Wo_WorkOrderNotice b ON a.F_WORKORDERID=b.OrderId"); strSql.Append(" Where NoticeState=1 AND NoticeType=1 and F_WORKORDERSTATEID=5"); if (!string.IsNullOrEmpty(startDate)) { strSql.Append(" and a.F_CreateDate>='" + startDate + " 00:00:00' "); } if (!string.IsNullOrEmpty(endDate)) { strSql.Append(" and a.F_CreateDate<='" + endDate + " 23:59:59' "); } strSql.Append(" ) t GROUP BY t.F_AREA ORDER BY num DESC "); DataSet ds = DbHelperSQL.Query(strSql.ToString()); if (ds.Tables[0].Rows.Count > 0) { return ds.Tables[0]; } else { return null; } } #endregion } }