| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409 |
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Data.SqlClient;
- using System.Data;
- using YTSoft.DBUtility;
- namespace YTSoft.BaseCallCenter.DAL
- {
- public partial class ReportDAL
- {
- public ReportDAL()
- { }
- #region 其他各项指标
- /// <summary>
- /// 获取接通率数据
- /// </summary>
- /// <param name="StartDate">开始日期</param>
- /// <param name="EndDate">结束日期</param>
- /// <returns></returns>
- 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;
- }
- }
- /// <summary>
- /// 获取流失率数据
- /// </summary>
- /// <param name="StartDate">开始日期</param>
- /// <param name="EndDate">结束日期</param>
- /// <returns></returns>
- 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(" 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;
- }
- }
- /// <summary>
- /// 按时转出率
- /// </summary>
- /// <param name="StartDate">开始日期</param>
- /// <param name="EndDate">结束日期</param>
- /// <returns></returns>
- 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;
- }
- }
- /// <summary>
- /// 按时办结率
- /// </summary>
- /// <param name="StartDate">开始日期</param>
- /// <param name="EndDate">结束日期</param>
- /// <returns></returns>
- 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;
- }
- }
- /// <summary>
- /// 按时答复率
- /// </summary>
- /// <param name="StartDate">开始日期</param>
- /// <param name="EndDate">结束日期</param>
- /// <returns></returns>
- 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;
- }
- }
- /// <summary>
- /// 定责指标
- /// </summary>
- /// <param name="StartDate">开始日期</param>
- /// <param name="EndDate">结束日期</param>
- /// <returns></returns>
- 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;
- }
- }
- /// <summary>
- /// 首呼解决率
- /// </summary>
- /// <param name="startDate"></param>
- /// <param name="endDate"></param>
- /// <returns></returns>
- 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
- }
- }
|