using CallCenter.Utility; using CallCenter.Utility.Linq; using CallCenter.Utility.Time; using CallCenterApi.Common; using CallCenterApi.DB; using CallCenterApi.Interface.Controllers.Base; using CallCenterApi.Interface.Models.Dto; using CallCenterApi.Model; using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Text; using System.Web; using System.Web.Mvc; using static CallCenter.Utility.NPOIHelper; namespace CallCenterApi.Interface.Controllers.report { // [Authority] public class WorkOrderReportController : BaseController { private readonly BLL.T_Sys_Department departmentBLL = new BLL.T_Sys_Department(); private readonly BLL.T_Bus_WorkOrder workOrderBLL = new BLL.T_Bus_WorkOrder(); private readonly BLL.T_Bus_AssignedInfo assignedInfoBLL = new BLL.T_Bus_AssignedInfo(); private readonly BLL.T_Bus_Feedback feedbackBLL = new BLL.T_Bus_Feedback(); private readonly BLL.T_Sys_DictionaryValue dictValueBLL = new BLL.T_Sys_DictionaryValue(); private readonly BLL.T_Sys_Area areaBLL = new BLL.T_Sys_Area(); private readonly BLL.T_Bus_VisitResult visitResultBLL = new BLL.T_Bus_VisitResult(); private readonly BLL.T_Bus_DelayTime delayTimeBLL = new BLL.T_Bus_DelayTime(); private readonly BLL.T_Sys_UserAccount userAccount = new BLL.T_Sys_UserAccount(); private readonly BLL.T_Bus_SubmitSuper submitsuperBLL = new BLL.T_Bus_SubmitSuper(); /// /// 处理数量统计 /// /// public ActionResult GetDeptCount(DateTime? start, DateTime? end, bool isExport = false) { if (start == null) { start = DateTime.Now; start = new DateTime(start.Value.Year, start.Value.Month, 1); } if (end == null) { end = DateTime.Now; } Dictionary paras = new Dictionary(); paras.Add("@sdate", start.Value.ToString("yyyy-MM-dd")); paras.Add("@edate", end.Value.ToString("yyyy-MM-dd")); var obj = DbHelperSQL.RunProcedure("P_DeptDealReport", paras, "DeptDealReport"); if (isExport) { var cols = new string[] { "单位名称", "数量" }; new NPOIHelper().ExportToExcel($"处理数量统计报表{Convert.ToDateTime(start).ToString("yyyyMMdd")}-{Convert.ToDateTime(end).ToString("yyyyMMdd")}", obj.Tables[0], cols); return Success("导出excel"); } return Success("成功", obj); } /// /// 处理效率统计 /// /// public ActionResult GetDeptEfficiency1(DateTime? start, DateTime? end, bool isExport = false) { if (start == null) { start = DateTime.Now; start = new DateTime(start.Value.Year, start.Value.Month, 1); } if (end == null) { end = DateTime.Now; } Dictionary paras = new Dictionary(); paras.Add("@sdate", start.Value.ToString("yyyy-MM-dd")); paras.Add("@edate", end.Value.ToString("yyyy-MM-dd")); var obj = DbHelperSQL.RunProcedure("P_DeptEfficiencyReport", paras, "DeptEfficiencyReport"); if (isExport) { string[] cols = new string[] { "单位名称", "处理总量", "及时量", "超时量", "处理及时率" }; NPOIHelper npoi = new NPOIHelper(); if (npoi.ExportToExcel("处理效率统计报表", obj.Tables[0], cols) == "") { return Success("导出成功"); } else { return Error("导出失败"); } } return Success("成功", obj); } public ActionResult GetDeptEfficiency(DateTime? start, DateTime? end, bool isExport = false,string source="") { if (start == null) { start = DateTime.Now; start = new DateTime(start.Value.Year, start.Value.Month, 1); } if (end == null) { end = DateTime.Now; } Dictionary paras = new Dictionary(); paras.Add("@sdate", start.Value.ToString("yyyy-MM-dd")); paras.Add("@edate", end.Value.ToString("yyyy-MM-dd")); paras.Add("@source", source); var obj = DbHelperSQL.RunProcedure("P_DeptEfficiencyReport_1", paras, "DeptEfficiencyReport"); var newSet = new DataSet(); if (obj != null && obj.Tables[0] != null && obj.Tables[0].Rows.Count > 0) { obj.Tables[0].Columns.Add("rate", typeof(decimal)); for (int i = 0; i < obj.Tables[0].Rows.Count; i++) { int completedcount = 0, timelycount = 0, timeoutcount = 0; double timelyrate = 0; int.TryParse(obj.Tables[0].Rows[i]["completedcount"].ToString(), out completedcount); int.TryParse(obj.Tables[0].Rows[i]["timelycount"].ToString(), out timelycount); int.TryParse(obj.Tables[0].Rows[i]["timeoutcount"].ToString(), out timeoutcount); timeoutcount = completedcount - timelycount; obj.Tables[0].Rows[i]["timeoutcount"] = timeoutcount; if (completedcount > 0) { timelyrate = double.Parse((timelycount * 100).ToString()) / completedcount; obj.Tables[0].Rows[i]["timelyrate"] = timelyrate.ToString("f") + "%"; obj.Tables[0].Rows[i]["rate"] = timelyrate; } } obj.Tables[0].DefaultView.Sort = "rate desc"; newSet.Tables.Add(obj.Tables[0].DefaultView.ToTable()); newSet.Tables[0].Columns.Remove("rate"); //obj.Tables[0] = obj.Tables[0].DefaultView.ToTable(); } if (isExport) { string[] cols = new string[] { "单位名称", "处理总量", "及时量", "超时量", "处理及时率" }; NPOIHelper npoi = new NPOIHelper(); if (npoi.ExportToExcel("处理效率统计报表", newSet.Tables[0], cols) == "") { return Success("导出成功"); } else { return Error("导出失败"); } } return Success("成功", newSet); } /// /// 市民满意度评价 /// /// public ActionResult GetDeptSatisfied(DateTime? start, DateTime? end,int source=0, bool isExport = false) { if (start == null) { start = DateTime.Now; start = new DateTime(start.Value.Year, start.Value.Month, 1); } if (end == null) { end = DateTime.Now; } Dictionary paras = new Dictionary(); paras.Add("@sdate", start.Value.ToString("yyyy-MM-dd")); paras.Add("@edate", end.Value.ToString("yyyy-MM-dd")); paras.Add("@source", source.ToString()); var obj = DbHelperSQL.RunProcedure("P_DeptSatisfied", paras, "DeptSatisfied"); if (isExport) { string[] cols = new string[] { "单位名称", "受理总量", "处理总量", "满意总量", "基本满意总量", "不满意总量", "满意度" }; new NPOIHelper().ExportToExcel($"满意度统计报表{Convert.ToDateTime(start).ToString("yyyyMMdd")}-{Convert.ToDateTime(end).ToString("yyyyMMdd")}", obj.Tables[0], cols); return Success("导出excel"); } var ob = new { state = "success", message = "成功", DeptSatisfiedReport = obj , }; return Success("成功", ob ); } /// /// 市民满意度评价台账 /// /// public ActionResult GetDeptSatisfiedList(string start, string end,int deptId=0,int myd=-1, int page = 1, int pagesize = 10, bool isExport = false) { string sql = " and F_IsDelete=0 and F_WorkState=9 and F_MainDeptId is not null and F_MainDeptId !='' and F_DealDeptId is not null and F_DealDeptId !=''"; if (!string.IsNullOrEmpty(start)&&start.Trim() != "" && start != "undefined") { sql += " and F_CreateTime>='" + start + "' "; } if (!string.IsNullOrEmpty(end) && end.Trim() != "" && end != "undefined") { sql += " and F_CreateTime<='" + end + "' "; } if (deptId > 0) { sql += " and F_MainDeptId= " + deptId; } if (myd > -1) { sql += " and MYD= " + myd; } if (isExport) { var dtdc = DbHelperSQL.Query("select F_WorkOrderId,F_ComTitle,F_ComContent,dbo.GetDeptNames(F_MainDeptId) as DeptName,dbo.GetUserName(F_CreateUser) as UserName,F_LimitTime,F_Result,MYD from (select *,(select top 1 (case F_IsSatisfie when 1 then '满意' when 0 then '不满意' else '基本满意' end) F_Satisfie from T_Bus_VisitResult WITH(NOLOCK) where F_IsDelete = 0 and F_WorkOrderId = a.F_WorkOrderId order by F_Id desc) MYD from T_Bus_WorkOrder a WITH(NOLOCK)) b where 1=1 " + sql ).Tables[0]; string[] dccols = new string[] { "工单编号", "述求标题", "工单内容", "承办单位", "受理人", "时限", "办理结果", "满意度" }; new NPOIHelper().ExportToExcel($"满意度台账报表{DateTime.Now.ToString("yyyyMMddHHmmssfff")}", dtdc, dccols); return Success("导出excel"); } string cols = " F_WorkOrderId,F_ComTitle,F_ComContent,dbo.GetDeptNames(F_MainDeptId) as DeptName,dbo.GetUserName(F_CreateUser) as UserName,F_WorkState,F_LimitTime,F_Result,MYD"; int recordCount = 0; DataTable dt = BLL.PagerBLL.GetListPager( "(select *,(select top 1 F_IsSatisfie from T_Bus_VisitResult WITH(NOLOCK) where F_IsDelete = 0 and F_WorkOrderId = a.F_WorkOrderId order by F_Id desc) MYD from T_Bus_WorkOrder a WITH(NOLOCK)) b", "F_Id", cols, sql, "ORDER BY F_CreateTime DESC", pagesize, page, true, out recordCount); var obj = new { state = "success", message = "成功", rows = dt, total = recordCount }; return Content(obj.ToJson()); } /// /// 县区满意度评价 /// /// #region 20191022 调整多主办单位需调整 public ActionResult GetAreaSatisfied(DateTime? start, DateTime? end, bool isExport = false) { if (start == null) { start = DateTime.Now; start = new DateTime(start.Value.Year, start.Value.Month, 1); } if (end == null) { end = DateTime.Now; } //var sql = "F_IsDelete=0 and F_IsSure=1 and F_State=1 and isnull(F_FeedbackTime,'')<>'' " // + "and datediff(day, F_FeedbackTime, @sdate) <= 0 and datediff(day, F_FeedbackTime, @edate) >= 0" // + "and F_WorkOrderId in (select F_WorkOrderId from T_Bus_WorkOrder where F_WorkState = 9)"; //var assignedInfoList = assignedInfoBLL.GetModelList(sql); //var workorderList = workOrderBLL.GetModelList(""); //var deptList = departmentBLL.GetModelList(" F_State=0 AND F_PartentId=0 "); //foreach (var item in deptList) //{ // var deptlist2 = departmentBLL.GetModelList(" F_State=0 AND F_PartentId in (select F_DeptId FROM T_Sys_Department where F_State=0 AND F_PartentId=" + item.F_DeptId + ") "); //} Dictionary paras = new Dictionary(); paras.Add("@sdate", start.Value.ToString("yyyy-MM-dd")); paras.Add("@edate", end.Value.ToString("yyyy-MM-dd")); var obj = DbHelperSQL.RunProcedure("P_AreaSatisfiedReport", paras, "AreaSatisfiedReport"); if (isExport) { string[] cols = new string[] { "县/区", "处理总量", "满意总量", "不满意总量", "满意度" }; new NPOIHelper().ExportToExcel($"满意度统计报表{Convert.ToDateTime(start).ToString("yyyyMMdd")}-{Convert.ToDateTime(end).ToString("yyyyMMdd")}", obj.Tables[0], cols); return Success("导出excel"); } return Success("成功", obj); } //public ActionResult GetAreaSatisfied(DateTime? start, DateTime? end, bool isExport = false) //{ // if (start == null) // { // start = DateTime.Now; // start = new DateTime(start.Value.Year, start.Value.Month, 1); // } // if (end == null) // { // end = DateTime.Now; // } // //string sql = $"select * from dbo.GetDeptSatisfied('{start.Value.ToString("yyyy-MM-dd")}','{end.Value.ToString("yyyy-MM-dd")}') ORDER BY rate DESC"; // //var dtall = DbHelperSQL.Query(sql).Tables[0]; // Dictionary paras = new Dictionary(); // paras.Add("@sdate", start.Value.ToString("yyyy-MM-dd")); // paras.Add("@edate", end.Value.ToString("yyyy-MM-dd")); // var obj = DbHelperSQL.RunProcedure("P_AreaSatisfiedReport", paras, "AreaSatisfiedReport"); // if (isExport) // { // string[] cols = new string[] { "县/区", "处理总量", "满意总量", "不满意总量", "满意度" }; // new NPOIHelper().ExportToExcel($"满意度统计报表{Convert.ToDateTime(start).ToString("yyyyMMdd")}-{Convert.ToDateTime(end).ToString("yyyyMMdd")}", obj.Tables[0], cols); // return Success("导出excel"); // } // return Success("成功", obj); // //int recordCount = 0; // //var dt = BLL.PagerBLL.GetListPager( // // "("+sql+") as v", // // "deptname", // // "*", // // "", // // "ORDER BY rate DESC", // // pageSize, // // pageIndex, // // true, // // out recordCount); // //var obj = new // //{ // // state = "success", // // message = "成功", // // rows = dt, // // total = recordCount // //}; // //return Content(obj.ToJson()); //} #endregion /// /// 单位绩效考核 /// /// /// /// public ActionResult GetDeptAssessment(DateTime? start, DateTime? end, bool isExport = false,string source="") { StringBuilder sb1 = new StringBuilder(); StringBuilder sb2 = new StringBuilder(); if (start == null) { start = DateTime.Now; start = new DateTime(start.Value.Year, start.Value.Month, 1); } if (end == null) { end = DateTime.Now; } Dictionary paras = new Dictionary(); paras.Add("@sdate", start.Value.ToString("yyyy-MM-dd")); paras.Add("@edate", end.Value.ToString("yyyy-MM-dd")); paras.Add("@source", source); var obj = DbHelperSQL.RunProcedure("P_DeptAssessmentReport", paras, "DeptAssessmentReport"); if (isExport) { string[] cols = new string[] { "单位名称", "已办总量", "及时量", "超时量", "超时时长(小时)", "延时量", "处理时长(小时)", "平均处理时长(小时)", "最大处理时长(小时)", "回访量", "市民满意", "市民不满意" }; NPOIHelper npoi = new NPOIHelper(); if (npoi.ExportToExcel("单位绩效考核报表", obj.Tables[0], cols) == "") { return Success("导出成功"); } else { return Error("导出失败"); } } return Success("成功", obj); } /// /// 坐席工作统计 /// /// /// /// public ActionResult GetUserAccountAssessment1(DateTime? start, DateTime? end, bool isExport = false) { StringBuilder sb1 = new StringBuilder(); StringBuilder sb2 = new StringBuilder(); if (start == null) { start = DateTime.Now; start = new DateTime(start.Value.Year, start.Value.Month, 1); } if (end == null) { end = DateTime.Now; } Dictionary paras = new Dictionary(); paras.Add("@sdate", start.Value.ToString("yyyy-MM-dd HH:mm:ss")); paras.Add("@edate", end.Value.ToString("yyyy-MM-dd HH:mm:ss")); var obj = DbHelperSQL.RunProcedure("P_UserAssessmentReport", paras, "UserAssessmentReport"); if (isExport) { string[] cols = new string[] { "姓名", "接听量", "通话成单量", "手动录单量", "当即办理量", "网络转办量", "回访量"}; NPOIHelper npoi = new NPOIHelper(); if (npoi.ExportToExcel("坐席工作统计报表", obj.Tables[0], cols) == "") { return Success("导出成功"); } else { return Error("导出失败"); } } return Success("成功", obj); } public ActionResult GetUserAccountAssessment(DateTime? start, DateTime? end, bool isExport = false,string source="",string name="") { StringBuilder sb1 = new StringBuilder(); StringBuilder sb2 = new StringBuilder(); if (start == null) { start = DateTime.Now; start = new DateTime(start.Value.Year, start.Value.Month, 1); } if (end == null) { end = DateTime.Now; } Dictionary paras = new Dictionary(); paras.Add("@sdate", start.Value.ToString("yyyy-MM-dd HH:mm:ss")); paras.Add("@edate", end.Value.ToString("yyyy-MM-dd HH:mm:ss")); paras.Add("@source", source); paras.Add("@name", name); var obj = DbHelperSQL.RunProcedure("P_UserAssessmentReport_1", paras, "UserAssessmentReport"); if (isExport) { string[] cols = new string[] { "姓名", "接听量", "通话成单量", "手动录单量", "当即办理量", "网络转办量", "回访量","呼出量" ,"回拨量"}; NPOIHelper npoi = new NPOIHelper(); if (npoi.ExportToExcel("坐席工作统计报表", obj.Tables[0], cols) == "") { return Success("导出成功"); } else { return Error("导出失败"); } } return Success("成功", obj); } public ActionResult GetUserReturn(DateTime? start, DateTime? end, bool isExport = false) { StringBuilder sb1 = new StringBuilder(); StringBuilder sb2 = new StringBuilder(); if (start == null) { start = DateTime.Now; start = new DateTime(start.Value.Year, start.Value.Month, 1); } if (end == null) { end = DateTime.Now; } Dictionary paras = new Dictionary(); paras.Add("@sdate", start.Value.ToString("yyyy-MM-dd HH:mm:ss")); paras.Add("@edate", end.Value.ToString("yyyy-MM-dd HH:mm:ss")); var obj = DbHelperSQL.RunProcedure("P_UserReturn", paras, "UserReturn"); if (isExport) { string[] cols = new string[] { "姓名", "工单量", "回访量", "未回访量", "回访率" }; NPOIHelper npoi = new NPOIHelper(); if (npoi.ExportToExcel("坐席回访统计报表", obj.Tables[0], cols) == "") { return Success("导出成功"); } else { return Error("导出失败"); } } return Success("成功", obj); } public ActionResult WorkOrdrList(int isdc=0) { DataTable dt = new DataTable(); string sql = " and F_IsDelete=0 "; int sourceArea = RequestString.GetInt("sourceArea", 0); int keyid = RequestString.GetInt("keyid", 0); int deptid = RequestString.GetInt("deptid", 0); int key = RequestString.GetInt("key", 0); int timetype = RequestString.GetInt("timetype", 0); int ishf = RequestString.GetInt("ishf", 0); int area = RequestString.GetInt("area", 0); int state = RequestString.GetInt("state", -1); int type = RequestString.GetInt("type", 0); int source = RequestString.GetInt("source", 0); string mobile = RequestString.GetQueryString("mobile"); int dbdb = RequestString.GetInt("dbdb", 0); int db = RequestString.GetInt("db", 0); string dbusercode = RequestString.GetQueryString("dbusercode"); string strpageindex = RequestString.GetQueryString("page"); string strpagesize = RequestString.GetQueryString("pagesize"); string usercode = RequestString.GetQueryString("usercode"); string strstarttime = HttpUtility.UrlDecode(RequestString.GetQueryString("starttime")); string strendtime = HttpUtility.UrlDecode(RequestString.GetQueryString("endtime")); int isRelease = RequestString.GetInt("isRelease", 0); int name= RequestString.GetInt("name", 0); int handling = RequestString.GetInt("handling", 0); int pageindex = 1; int pagesize = 10; if (strpageindex.Trim() != "") { pageindex = Convert.ToInt32(strpageindex); } if (strpagesize.Trim() != "") { pagesize = Convert.ToInt32(strpagesize); } if (!string .IsNullOrEmpty (usercode)) { sql += " and F_CreateUser='"+ usercode + "' "; } string value = ""; if (string .IsNullOrEmpty (strstarttime)&& string.IsNullOrEmpty(strendtime)) { if (db > 0 || dbdb>0) { DateTime start; start = new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1); if (dbdb==5) { value += "and datediff(SS ,F_CreateTime,'" + start.ToString("yyyy-MM-dd HH:mm:ss") + "')<=0 "; value += " and datediff(SS ,F_CreateTime,'" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "')>=0"; } else { value += "and datediff(SS ,SupervisorTime,'" + start.ToString("yyyy-MM-dd HH:mm:ss") + "')<=0 "; value += " and datediff(SS ,SupervisorTime,'" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "')>=0"; } } else { if (timetype == 1) { sql += "and datediff(DAY ,a.F_CreateTime ,getdate())=0 "; } else if (timetype == 2) { sql += "and datediff(WEEK ,a.F_CreateTime ,getdate())=0 "; } else if (timetype == 4) { } else { sql += " and datediff(MONTH ,a.F_CreateTime ,getdate())=0 "; } } } else { if (db>0 || dbdb > 0) { if (dbdb == 5) { if (!string.IsNullOrEmpty(strstarttime)) { value += "and datediff(SS ,F_CreateTime,'" + strstarttime + "')<=0 "; } if (!string.IsNullOrEmpty(strendtime)) { value += " and datediff(SS ,F_CreateTime,'" + strendtime + "')>=0"; } } else { if (!string.IsNullOrEmpty(strstarttime)) { value += "and datediff(SS ,SupervisorTime,'" + strstarttime + "')<=0 "; } if (!string.IsNullOrEmpty(strendtime)) { value += " and datediff(SS ,SupervisorTime,'" + strendtime + "')>=0"; } } } else { if (!string.IsNullOrEmpty(strstarttime)) { sql += "and datediff(SS ,F_CreateTime,'" + strstarttime + "')<=0 "; } if (!string.IsNullOrEmpty(strendtime)) { sql += " and datediff(SS ,F_CreateTime,'" + strendtime + "')>=0"; } } } if (dbdb>0) { sql += " and F_WorkOrderID in(select F_WorkOrderID from T_Bus_RemindRecord WITH(NOLOCK) where F_Type= 1 and F_IsDelete = 0 and F_State = 0 and (Supervisor ='' or Supervisor is null )"+ value + ") and F_WorkState != '9'"; } if(db>0) { if (!string .IsNullOrEmpty (dbusercode)) { value += "and Supervisor='" + dbusercode + "'"; } if (db==1) { sql += " and a.F_WorkOrderID in(select F_WorkOrderID from T_Bus_RemindRecord WITH(NOLOCK) where F_Type= 1 and F_IsDelete = 0 " + value + " and Supervisor !='' and Supervisor is not null )"; } else if (db == 2) { sql += " and a.F_WorkOrderID in(select F_WorkOrderID from T_Bus_RemindRecord WITH(NOLOCK) where F_Type= 1 and F_State = 1 " + value + " )"; } else if (db == 3) { sql += " and a.F_WorkOrderID in(select F_WorkOrderID from T_Bus_RemindRecord WITH(NOLOCK) where F_Type= 1 and F_State = 2 " + value + " ) "; } else if (db == 4) { sql += " and a.F_WorkOrderID in(select F_WorkOrderID from T_Bus_RemindRecord WITH(NOLOCK) where F_Type= 1 " + value + " ) and F_WorkState = '9'"; } } if (!string .IsNullOrEmpty (mobile )) { sql += "and a.F_CusPhone = '" + mobile + "'"; } if (area > 0) { sql += "and a.F_SourceArea='" + area + "'"; } if (state>-1) { sql += "and a.F_WorkState='" + state + "'"; } if (type > 0) { sql += "and a.F_InfoType='" + type + "'"; } if (source > 0) { sql += "and a.F_InfoSource='" + source + "'"; } if (isRelease>0) { if (isRelease==2) sql += " and (F_IsRelease =2 or F_IsRelease is null or F_IsRelease ='')"; else sql += "and F_IsRelease ='"+ isRelease + "'"; } if (ishf>0) { if (string.IsNullOrEmpty(strstarttime) && string.IsNullOrEmpty(strendtime)) { value += " and datediff(MONTH ,a.F_CreateTime ,getdate())=0 "; } else { if (!string.IsNullOrEmpty(strstarttime)) { value += "and datediff(SS ,F_CreateTime,'" + strstarttime + "')<=0 "; } } if (ishf==1) { sql += "and F_WorkOrderId in (select F_WorkOrderId from T_Bus_VisitResult WITH(NOLOCK) " + " where F_IsDelete =0 "+ value + " ) "; } else { sql += "and F_WorkOrderId not in (select F_WorkOrderId from T_Bus_VisitResult WITH(NOLOCK) " + "where F_IsDelete =0 " + value + " and F_IsSms !=1 ) "; } } if (handling>0) { if (deptid <= 0) return Error("请选择部门"); if (string.IsNullOrEmpty(strstarttime) && string.IsNullOrEmpty(strendtime)) { sql += " and datediff(MONTH ,a.F_CreateTime ,getdate())=0 "; } sql += "F_MainDeptId='" + deptid + "' and F_IsResult=0"; switch (handling) { case 2: break; } } string cols = ""; string order = "ORDER BY a.F_CreateTime DESC"; if (name >0) { cols = "distinct F_CusName"; order = ""; } else if (db>0) { cols = " a.F_WorkOrderId,F_ComTitle,F_WorkState,F_MainDeptId,F_IsResult,a.F_CreateTime,dbo.GetUserName(a.F_CreateUser) as UserName,dbo.GetDictionaryName(F_InfoType) as TypeName,dbo.GetDictionaryName(F_InfoSource) as SourceName,dbo.GetDictionaryName(F_Key) KeyName,dbo.GetDeptNames(F_MainDeptId) as DeptName,F_CloseTime,F_LimitTime as LimitTime,F_ComContent,dbo.GetUserName((select top 1 Supervisor from T_Bus_RemindRecord where F_WorkOrderId=a.F_WorkOrderId order by F_Id desc)) as Supervisor"; } else { cols = " a.F_WorkOrderId,F_ComTitle,F_WorkState,F_MainDeptId,F_IsResult,a.F_CreateTime,dbo.GetUserName(a.F_CreateUser) as UserName,dbo.GetDictionaryName(F_InfoType) as TypeName,dbo.GetDictionaryName(F_InfoSource) as SourceName,dbo.GetDictionaryName(F_Key) KeyName,dbo.GetDeptNames(F_MainDeptId) as DeptName,F_CloseTime,F_LimitTime as LimitTime,F_ComContent"; } if (isdc > 0) { var top = " "; var orderby = " order by F_CreateTime desc"; if (sql == " and F_IsDelete=0 ") { top = " top 1000 "; orderby += " desc "; } if (db == 1) { var dtdc = DbHelperSQL.Query(" select ROW_NUMBER() OVER(ORDER BY F_CreateTime desc) 编号, F_WorkOrderId 事项单号, dbo.GetDeptNames(F_MainDeptId ) 承办单位, " + "(case F_WorkState when 0 then '新工单' when 1 then '待交办' when 2 then '待查收' when 3 then '退回审核中' when 4 then '办理中' when 5 then '延时审核中' when 6 then '已办理' when 7 then '已审核' when 8 then '重办中' when 9 then '已完结' when 11 then '重办待交办' when 12 then '重办驳回' else '办理中' end) 督办情况,(case (select top 1 F_Mode from T_Bus_RemindRecord where F_WorkOrderId = a.F_WorkOrderId order by F_Id desc) when 0 then '现场' when 1 then '电话'else '未知' end ) 督办方式" + " from T_Bus_WorkOrder a WITH(NOLOCK) where 1=1 " + sql + order).Tables[0]; var msg = new NPOIHelper().ExportToExcel("工单列表", dtdc); if (msg == "") { return Success("导出成功"); } else { return Error("导出失败"); } } else { var dtdc = DbHelperSQL.Query(" select ROW_NUMBER() OVER(ORDER BY F_CreateTime desc) 序号,F_CreateTime 日期, F_WorkOrderId 工单号,F_ComTitle 诉求标题,F_ComContent 诉求内容,dbo.GetDictionaryName(F_Key) 反映类别, " + " dbo.GetDeptNames(F_MainDeptId ) 主办单位, " + " (select top 1 F_Result from T_Bus_Feedback WITH(NOLOCK) where F_State=1 and F_Type!=3 and F_IsDelete=0 and F_WorkOrderId =a.F_WorkOrderId order by F_Id desc) 办理结果, " + " F_CusName 来电人姓名 ,F_CusPhone 来电人手机号 " + " from T_Bus_WorkOrder a WITH(NOLOCK) where 1=1 " + sql + orderby).Tables[0]; var msg = new NPOIHelper().ExportToExcel("工单列表", dtdc); if (msg == "") { return Success("导出成功"); } else { return Error("导出失败"); } } } else { int recordCount = 0; dt = BLL.PagerBLL.GetListPager( "T_Bus_WorkOrder a WITH(NOLOCK)", "a.F_WorkOrderId", cols, sql, order, pagesize, pageindex, true, out recordCount); var obj = new { state = "success", message = "成功", rows = dt, total = recordCount }; return Content(obj.ToJson()); } } public ActionResult IncomingCalls (string date,int isdc=0) { if (string.IsNullOrEmpty(date)) date = DateTime.Now.ToString("yyyy-MM-dd"); var modelcalllist = new BLL .T_Call_CallRecords().GetModelList(" CallType =0 and DATEDIFF(DAY, BeginTime, '"+ date + "') = 0"); var userlist = new BLL.T_Sys_UserAccount().GetModelList(" F_SeatFlag =1"); int ldcount = 0;int jtcount = 0; int newldcount = 0; int newjtcount = 0; List incomings = new List(); //incoming.time = "00:00-08:00"; //incoming.IncomingCount = modelcalllist.Where(x => x.BeginTime.Value.Hour >= 0 && x.BeginTime.Value.Hour <= 8 //).Count(); //ldcount += incoming.IncomingCount; //incoming.Oncapacity = modelcalllist.Where(x => x.BeginTime.Value.Hour >= 0 && x.BeginTime.Value.Hour <= 8 //&&x.CallState ==1 ).Count(); //jtcount += incoming.Oncapacity; //var modelcalllists = modelcalllist.Where(x => x.UserCode != null && x.UserCode != "" && x.BeginTime.Value.Hour >= 0 && x.BeginTime.Value.Hour <=8).Select(x => x.UserCode).Distinct // (); //if (modelcalllists!=null&& modelcalllists.Count() >0) //{ // incoming.seatsCount = modelcalllists.Count(); // foreach (var it in modelcalllists) // { // var user = userlist.Where(x => x.F_UserCode == it); // if (user != null && user.Count() > 0) // incoming.seats += "," + user.FirstOrDefault().F_UserName; // else // incoming.seats += "," + it; // } // if (!string .IsNullOrEmpty(incoming.seats)) // incoming.seats = incoming.seats.TrimStart(','); //} //else //{ // incoming.seatsCount =0; // incoming.seats = ""; //} //incomings.Add(incoming); int v = 24; if (DateTime .Parse (date ).Year ==DateTime .Now .Year && DateTime.Parse(date).Month == DateTime.Now.Month && DateTime.Parse(date).Day == DateTime.Now.Day) { v = DateTime.Now.Hour; } for (int i=0;i < v; i ++) { Incoming incomin = new Incoming(); int t = i + 1; string iss=i.ToString () ,tss=t .ToString (); if (i < 10) iss = "0" + i; if (t < 10) tss = "0" + t; incomin.time = iss + ":00" + "-" + tss + ":00"; incomin.IncomingCount = modelcalllist.Where(x => x.BeginTime.Value.Hour ==i &&x.PhoneType =="12345" ).Count(); ldcount += incomin.IncomingCount; incomin.Oncapacity = modelcalllist.Where(x => x.BeginTime.Value.Hour ==i && x.CallState == 1 && x.PhoneType == "12345").Count(); jtcount += incomin.Oncapacity; incomin.newIncomingCount = modelcalllist.Where(x => x.BeginTime.Value.Hour == i && x.PhoneType == "12345" ).Count(); newldcount += incomin.newIncomingCount; incomin.newOncapacity = modelcalllist.Where(x => x.BeginTime.Value.Hour == i && x.CallState == 1 && x.PhoneType == "12345").Count(); newjtcount += incomin.newOncapacity; var modelcalllistss = modelcalllist.Where(x => x.UserCode != null&& x.UserCode != "" && x.BeginTime.Value.Hour==i&&x.PhoneType =="12345").Select(x => x.UserCode).Distinct (); if (modelcalllistss != null && modelcalllistss.Count() > 0) { incomin.seatsCount = modelcalllistss.Count(); foreach (var it in modelcalllistss) { var user = userlist.Where(x => x.F_UserCode == it); if (user != null && user.Count() > 0) incomin.seats += "," + user.FirstOrDefault().F_UserName; else incomin.seats += "," + it; } if (!string.IsNullOrEmpty(incomin.seats)) incomin.seats= incomin.seats.TrimStart(','); } else { incomin.seatsCount = 0; incomin.seats = ""; } var modelcalllists = modelcalllist.Where(x => x.UserCode != null && x.UserCode != "" && x.BeginTime.Value.Hour == i && x.PhoneType != "12345").Select(x => x.UserCode).Distinct (); if (modelcalllists != null && modelcalllists.Count() > 0) { incomin.newseatsCount = modelcalllists.Count(); foreach (var it in modelcalllists) { var user = userlist.Where(x => x.F_UserCode == it); if (user != null && user.Count() > 0) incomin.newseats += "," + user.FirstOrDefault().F_UserName; else incomin.newseats += "," + it; } if (!string.IsNullOrEmpty(incomin.newseats)) incomin.newseats = incomin.newseats.TrimStart(','); } else { incomin.newseatsCount = 0; incomin.newseats = ""; } incomings.Add(incomin); } Incoming incomint = new Incoming(); incomint.time = "共计"; incomint.IncomingCount = ldcount; incomint.Oncapacity = jtcount; incomint.newIncomingCount = newldcount; incomint.newOncapacity = newjtcount; incomings.Add(incomint); if (isdc >0) { new NPOIHelper().IncomingCalls(incomings); return Success("导出excel"); } return Success("获取成功", incomings); } /// /// 逾期未回复统计 /// /// /// /// /// /// public ActionResult GetOutTimeNotApply(DateTime? start, DateTime? end, int deptId = -1, int pageIndex = 1, int pageSize = 10, bool isExport = false) { if (start == null) { start = DateTime.Now; start = new DateTime(start.Value.Year, start.Value.Month, 1); } if (end == null) { end = DateTime.Now; } var where = ""; if (deptId > 0) { where = " AND F_MainDeptId=" + deptId; } string sql = $" and datediff(day,F_CreateTime,'{start.Value.ToString("yyyy-MM-dd")}')<=0 and datediff(day,F_CreateTime,'{end.Value.ToString("yyyy-MM-dd")}')>=0 "+ where; if (isExport) { string[] cols = new string[] { "工单编号", "承办单位", "工单内容", "转派时间", "回复时限", "超时时间" }; var dtall = DbHelperSQL.Query("select * from V_Bus_OverNoBack where 1=1 "+sql).Tables[0]; dtall.Columns.Remove("F_MainDeptId"); dtall.Columns.Remove("F_CreateTime"); new NPOIHelper().ExportToExcel($"逾期未回复统计报表{Convert.ToDateTime(start).ToString("yyyyMMdd")}-{Convert.ToDateTime(end).ToString("yyyyMMdd")}", dtall, cols); return Success("导出excel"); } int recordCount = 0; var dt = BLL.PagerBLL.GetListPager( "V_Bus_OverNoBack", "F_WorkOrderId", "*", sql, "ORDER BY F_CreateTime DESC", pageSize, pageIndex, true, out recordCount); var obj = new { state = "success", message = "成功", rows = dt, total = recordCount }; return Content(obj.ToJson()); } /// /// 重办不满意统计 /// /// /// /// /// public ActionResult GetNotSatisfied(DateTime? start, DateTime? end, int pageIndex = 1, int pageSize = 10, bool isExport = false) { if (start == null) { start = DateTime.Now; start = new DateTime(start.Value.Year, start.Value.Month, 1); } if (end == null) { end = DateTime.Now; } string sql = $" and datediff(day,cjTime,'{start.Value.ToString("yyyy-MM-dd")}')<=0 and datediff(day,cjTime,'{end.Value.ToString("yyyy-MM-dd")}')>=0 "; if (isExport) { string[] cols = new string[] { "工单编号", "承办单位", "工单内容", "创建时间", "处理结果", "处理时间", "回访结果", "回访时间" }; var dtall = DbHelperSQL.Query("select * from V_Bus_ReloadNoSatisfie where 1=1 " + sql + " order by cjTime DESC ").Tables[0]; dtall.Columns.Remove("F_Id"); new NPOIHelper().ExportToExcel($"重办不满意统计报表{Convert.ToDateTime(start).ToString("yyyyMMdd")}-{Convert.ToDateTime(end).ToString("yyyyMMdd")}", dtall, cols); return Success("导出excel"); } int recordCount = 0; var dt = BLL.PagerBLL.GetListPager( "V_Bus_ReloadNoSatisfie", "F_Id", "*", sql, "ORDER BY cjTime DESC", pageSize, pageIndex, true, out recordCount); var obj = new { state = "success", message = "成功", rows = dt, total = recordCount }; return Content(obj.ToJson()); } /// /// 延期统计 /// /// /// /// /// /// /// public ActionResult GetDelay(DateTime? start, DateTime? end, bool isExport = false) { if (start == null) { start = DateTime.Now; start = new DateTime(start.Value.Year, start.Value.Month, 1); } if (end == null) { end = DateTime.Now; } Dictionary paras = new Dictionary(); paras.Add("@sdate", start.Value.ToString("yyyy-MM-dd")); paras.Add("@edate", end.Value.ToString("yyyy-MM-dd")); var obj = DbHelperSQL.RunProcedure("P_DeptDelayReport", paras, "DeptDelayReport"); if (isExport) { string[] cols = new string[] { "单位名称", "办理数量", "延时数量", "延时率" }; NPOIHelper npoi = new NPOIHelper(); if (npoi.ExportToExcel("延时分析统计报表", obj.Tables[0], cols) == "") { return Success("导出成功"); } else { return Error("导出失败"); } } return Success("成功", obj); } /// /// 通报批评 /// /// /// /// /// /// /// public ActionResult GetNotice(DateTime? start, DateTime? end, bool isExport = false) { if (start == null) { start = DateTime.Now; start = new DateTime(start.Value.Year, start.Value.Month, 1); } if (end == null) { end = DateTime.Now; } //string sql = "select * from dbo.GetNoticeReport('"+ start.Value.ToString("yyyy-MM-dd") + "','" + end.Value.ToString("yyyy-MM-dd") + "') ORDER BY zbcount+xbcount DESC"; //var dt = DbHelperSQL.Query(sql).Tables[0]; Dictionary paras = new Dictionary(); paras.Add("@sdate", start.Value.ToString("yyyy-MM-dd")); paras.Add("@edate", end.Value.ToString("yyyy-MM-dd")); var obj = DbHelperSQL.RunProcedure("P_DeptNoticeReport", paras, "DeptNoticeReport"); if (isExport) { var cols = new string[] { "承办单位", "主办受理数量", "主办通报批评数量", "主办通报批评率", "协办受理数量", "协办通报批评数量", "协办通报批评率" }; new NPOIHelper().ExportToExcel($"通报批评{Convert.ToDateTime(start).ToString("yyyyMMdd")}-{Convert.ToDateTime(end).ToString("yyyyMMdd")}", obj.Tables[0], cols); return Success("导出excel"); } return Success("成功", obj); } /// /// 诉求受理对比 /// /// public ActionResult GetAppeal1(DateTime? start, DateTime? end, bool isExport = false) { if (start == null) { start = DateTime.Now; start = new DateTime(start.Value.Year, start.Value.Month, 1); } if (end == null) { end = DateTime.Now; } Dictionary paras = new Dictionary(); paras.Add("@sdate", start.Value.ToString("yyyy-MM-dd")); paras.Add("@edate", end.Value.ToString("yyyy-MM-dd")); var obj = DbHelperSQL.RunProcedure("P_UserAppealReport", paras, "UserAppealReport"); if (isExport) { var cols = new string[] { "坐席名称", "受理数量", "上月同期受理数量", "上月同期环比", "去年同期受理数量", "去年同期同比" }; new NPOIHelper().ExportToExcel($"诉求受理对比{Convert.ToDateTime(start).ToString("yyyyMMdd")}-{Convert.ToDateTime(end).ToString("yyyyMMdd")}", obj.Tables[0], cols); return Success("导出excel"); } return Success("成功", obj); } public ActionResult GetAppeal(DateTime? start, DateTime? end, bool isExport = false , string source = "") { if (start == null) { start = DateTime.Now; start = new DateTime(start.Value.Year, start.Value.Month, 1); } if (end == null) { end = DateTime.Now; } Dictionary paras = new Dictionary(); paras.Add("@sdate", start.Value.ToString("yyyy-MM-dd")); paras.Add("@edate", end.Value.ToString("yyyy-MM-dd")); paras.Add("@source", source); var obj = DbHelperSQL.RunProcedure("P_UserAppealReport_1", paras, "UserAppealReport"); var newSet = new DataSet();var newtable = new DataTable("UserAppealReport"); #region newtable.Columns.Add(new DataColumn("username")); newtable.Columns.Add(new DataColumn("count", typeof(int))); newtable.Columns.Add(new DataColumn("mcount", typeof(int))); newtable.Columns.Add(new DataColumn("mom")); newtable.Columns.Add(new DataColumn("ycount", typeof(int))); newtable.Columns.Add(new DataColumn("yoy")); #endregion if (obj != null && obj.Tables[0] != null && obj.Tables[0].Rows.Count > 0) { for (int i = 0; i < obj.Tables[0].Rows.Count; i++) { int count = 0, mcount = 0, ycount = 0; double mom = 0, yoy = 0; int.TryParse(obj.Tables[0].Rows[i]["count"].ToString(), out count); int.TryParse(obj.Tables[0].Rows[i]["mcount"].ToString(), out mcount); int.TryParse(obj.Tables[0].Rows[i]["ycount"].ToString(), out ycount); if(mcount>0) mom = double.Parse((count * 100).ToString()) / mcount; if (ycount > 0) yoy = double.Parse((count * 100).ToString()) / ycount; #region DataRow drNew = newtable.NewRow(); drNew["username"] = obj.Tables[0].Rows[i]["username"]; drNew["count"] = count; drNew["mcount"] = mcount; drNew["mom"] = mom > 0 ? mom.ToString("f") + "%" : "0"; drNew["ycount"] = ycount; drNew["yoy"] = yoy > 0 ? yoy.ToString("f") + "%" : "0"; newtable.Rows.Add(drNew); #endregion } newtable.DefaultView.Sort = "count desc"; newSet.Tables.Add(newtable.DefaultView.ToTable()); } if (isExport) { var cols = new string[] { "坐席名称", "受理数量", "上月同期受理数量", "上月同期环比", "去年同期受理数量", "去年同期同比" }; new NPOIHelper().ExportToExcel($"诉求受理对比{Convert.ToDateTime(start).ToString("yyyyMMdd")}-{Convert.ToDateTime(end).ToString("yyyyMMdd")}", newSet.Tables[0], cols); return Success("导出excel"); } return Success("成功", newSet); } /// /// 获取督办报表 /// /// public ActionResult GetDBReportform(string starttime,string endtime) { if (string .IsNullOrEmpty (starttime)) { starttime = DateTime.Now.ToString("yyyy-MM") + "-01 00:00:00"; endtime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); } else { if (string.IsNullOrEmpty(endtime)) { endtime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); } } Dictionary paras = new Dictionary(); paras.Add("@sdate", starttime); paras.Add("@edate", endtime); var obj1 = DbHelperSQL.RunProcedure("P_DBReportform_1", paras, "DBReportform").Tables[0]; string sqlarea = " select COUNT(1) from T_Bus_WorkOrder where F_WorkOrderID in(select F_WorkOrderID from T_Bus_RemindRecord WITH(NOLOCK) where F_Type=1 and F_IsDelete=0 and F_State =0 and (Supervisor ='' or Supervisor is null and F_CreateTime between '" + starttime + "' AND '" + endtime + "')) and F_WorkState !='9'and F_IsDelete =0 "; DataTable dttype = DbHelperSQL.Query(sqlarea).Tables[0]; var obj = new { obj1, total = dttype }; return Content(obj.ToJson()); } /// /// 坐席状态统计 /// /// /// /// public ActionResult GetZuoXiState(string starttime, string endtime) { if (string.IsNullOrEmpty(starttime)) { starttime = DateTime.Now.ToString("yyyy-MM") + "-01 00:00:00"; endtime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); } else { if (string.IsNullOrEmpty(endtime)) { endtime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); } } string sql = " a.OccurTime between '" + starttime + "' AND '" + endtime + "'"; string value = " TimeLogin between '" + starttime + "' AND '" + endtime + "'"; string value1 = " TimeLogout between '" + starttime + "' AND '" + endtime + "'"; string sqlarea = " select a.AgentId ,dbo.GetUserName(a.AgentId) as UserName,(select COUNT(1) from rep_agent_detail where "+ value + " and AgentId = a.AgentId and 1" + " is not null ) as 签入 ,(select COUNT(1) from rep_agent_detail where "+ value1 + " and AgentId = a.AgentId and TimeLogout is not null ) as 签出,SUM(case State when 5 then 1 else 0 end) as 置忙 ,SUM(case State when 2 then 1 else 0 end) as 置闲 from dbo.rep_agent_state a where "+ sql + " group by AgentId "; DataTable obj = DbHelperSQL.Query(sqlarea).Tables[0]; return Content(obj.ToJson()); } /// /// 坐席时间 /// /// /// /// public ActionResult GetZuoXiTime (string starttime, string endtime,string usercode,int state=0) { if (string.IsNullOrEmpty(starttime)) { starttime = DateTime.Now.ToString("yyyy-MM") + "-01 00:00:00"; endtime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); } else { if (string.IsNullOrEmpty(endtime)) { endtime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); } } if (string.IsNullOrEmpty(usercode)) return Error("请选择坐席"); string sqlzuoxi = ""; if (state==0) { sqlzuoxi = "select TimeLogin from rep_agent_detail where TimeLogin between '" + starttime + "' AND '" + endtime + "' and AgentId ='" + usercode + "'and TimeLogin is not null "; } else if (state == 1) { sqlzuoxi = "select TimeLogout from rep_agent_detail where TimeLogout between '" + starttime + "' AND '" + endtime + "' and AgentId ='" + usercode + "' and TimeLogout is not null "; } else if (state == 2) { sqlzuoxi = "select OccurTime from rep_agent_state where OccurTime between '" + starttime + "' AND '" + endtime + "' and AgentId ='" + usercode + "' and State = 2 "; } else if (state == 3) { sqlzuoxi = "select OccurTime from rep_agent_state where OccurTime between '" + starttime + "' AND '" + endtime + "' and AgentId ='" + usercode + "' and State = 5 "; } DataTable obj = DbHelperSQL.Query(sqlzuoxi).Tables[0]; return Content(obj.ToJson()); } /// /// 获取绩效 /// /// /// /// public ActionResult GetEvaluation(string date, int deptid = 0,int isdc=0) { string sql = "F_IsDelete=0"; string message = "";string datemessage = ""; if (!string.IsNullOrEmpty(date)) { message = "统计周期:" + DateTime.Parse(date).AddMonths(-1).ToString("yyyy年MM月") + "-25日--" + DateTime.Parse(date).ToString("yyyy年MM月") + "-24日"; datemessage = MonthtoUpper(DateTime.Parse(date).Month ); date = DateTime.Parse(date).ToString("yyyyMM"); } else { message = "统计周期:" + DateTime.Now.AddMonths(-1).ToString("yyyy年MM月") + "-25日--" + DateTime.Now.ToString("yyyy年MM月") + "-24日"; date = DateTime .Now.AddMonths (-1).ToString("yyyyMM"); datemessage = MonthtoUpper(DateTime.Now .Month); } sql += "and F_Date='" + date + "'"; if (deptid>0) { sql += "and F_Deptid='" + deptid + "'"; } if (isdc>0) { var dtdc = DbHelperSQL.Query(" select * from T_Sys_Evaluation a WITH(NOLOCK) where " + sql+ " " + " and F_Undertake>0 and F_Deptid in (select F_DeptId from T_Sys_Department " + "where F_DeptId in (SELECT F_DeptId FROM dbo.[GetDaptiD](155) where F_IsDept = 1) " + "and F_PartentId =155 and F_IsDealDept = 1 and F_DeptName not like '%测试%') order by F_Total desc").Tables[0]; var dtdc1 = DbHelperSQL.Query(" select * from T_Sys_Evaluation a WITH(NOLOCK) where " + sql + " " + "and F_Undertake>0 and F_Deptid in (select F_DeptId from T_Sys_Department " + "where F_DeptId in (SELECT F_DeptId FROM dbo.[GetDaptiD](155) where F_IsDept = 1) " + "and F_PartentId in(167, 169,170) and F_IsDealDept = 1 and F_DeptName not like '%测试%') order by F_Total desc").Tables[0]; var dtdc2 = DbHelperSQL.Query(" select * from T_Sys_Evaluation a WITH(NOLOCK) where " + sql + " " + " and F_Undertake>0 and F_Deptid in (select F_DeptId from T_Sys_Department " + "where F_DeptId in (SELECT F_DeptId FROM dbo.[GetDaptiD](155) where F_IsDept = 1) " + "and F_PartentId in(171, 172) and F_IsDealDept = 1 and F_DeptName not like '%测试%') order by F_Total desc").Tables[0]; var dtdc3 = DbHelperSQL.Query(" select * from T_Sys_Evaluation a WITH(NOLOCK) where " + sql + " " + " and F_Undertake=0 order by F_Total desc").Tables[0]; var msg = new NPOIHelper().ExportEvaluation ( dtdc, dtdc1, dtdc2, dtdc3, message, datemessage); if (msg == "") { return Success("导出成功"); } else { return Error("导出失败"); } } else { string Evaluation = "select * from T_Sys_Evaluation where " + sql + "order by F_Total desc "; DataTable obj = DbHelperSQL.Query(Evaluation).Tables[0]; return Content(obj.ToJson()); } } private static string MonthtoUpper(int month) { if (month < 10) { return NumtoUpper(month) ; } else if (month == 10) { return "十" ; } else { return "十" + NumtoUpper(month - 10) ; } } private static string NumtoUpper(int num) { String str = num.ToString(); string rstr = ""; int n; for (int i = 0; i < str.Length; i++) { n = Convert.ToInt16(str[i].ToString());//char转数字,转换为字符串,再转数字 switch (n) { case 0: rstr = rstr + "〇"; break; case 1: rstr = rstr + "一"; break; case 2: rstr = rstr + "二"; break; case 3: rstr = rstr + "三"; break; case 4: rstr = rstr + "四"; break; case 5: rstr = rstr + "五"; break; case 6: rstr = rstr + "六"; break; case 7: rstr = rstr + "七"; break; case 8: rstr = rstr + "八"; break; default: rstr = rstr + "九"; break; } } return rstr; } /// /// 获取绩效 /// /// /// /// public ActionResult GetDeptDeptAchievements(string starttime, string endtime , int type=0,int deptid=0) { if (string.IsNullOrEmpty(starttime)) { starttime = DateTime.Now.AddMonths (-1).ToString("yyyy-MM") + "-21 00:00:00"; endtime = DateTime.Now.ToString("yyyy-MM") + "-20 00:00:00"; } else { if (string.IsNullOrEmpty(endtime)) { endtime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); } } Dictionary paras = new Dictionary(); paras.Add("@sdate", starttime); paras.Add("@edate", endtime); paras.Add("@type", type.ToString ()); if (deptid>0) paras.Add("@deptid", deptid.ToString ()); else paras.Add("@deptid",""); var obj = DbHelperSQL.RunProcedure("P_DeptAchievements_1", paras, "DeptAchievements").Tables[0]; ; return Content(obj.ToJson()); } /// /// 工单周报 /// 暂时无用,多主办单位不处理 /// /// /// /// /// /// /// public ActionResult GetWeaklyReport(DateTime? start, DateTime? end, int type = 0, int dateType = 0, int pageIndex = 1, int pageSize = 10, bool isExport = false) { StringBuilder sb1 = new StringBuilder(); StringBuilder sb2 = new StringBuilder(); StringBuilder sb3 = new StringBuilder(); var startDate = new DateTime(); var endDate = new DateTime(); var lastStartDate = new DateTime(); var lastEndDate = new DateTime(); var differ = 0; var str = ""; switch (dateType) { //日 case 1: if (start == null) { start = DateTime.Now.Date; } if (end == null) { end = DateTime.Now.Date.AddDays(1).AddSeconds(-1); } startDate = Convert.ToDateTime(start); endDate = Convert.ToDateTime(end).AddDays(1).AddSeconds(-1); differ = (endDate - startDate).Days + 1; lastStartDate = startDate.AddDays(-differ); lastEndDate = endDate.AddDays(-differ); str = "日"; break; //周 case 2: if (start == null) { start = DateTime.Now.Date; } if (end == null) { end = DateTime.Now.Date.AddDays(1).AddSeconds(-1); } startDate = Convert.ToDateTime(start); endDate = Convert.ToDateTime(end); differ = 7 - (int)startDate.DayOfWeek; startDate = DateTools.GetWeekFirstDayMon((DateTime)start); endDate = DateTools.GetWeekLastDaySun((DateTime)end).AddDays(1).AddSeconds(-1); differ = (endDate - startDate).Days + 1; lastStartDate = DateTools.GetWeekFirstDayMon(startDate.AddDays(-1)); lastEndDate = DateTools.GetWeekLastDaySun(lastStartDate).AddDays(1).AddSeconds(-1); str = "周"; break; //月 case 3: if (start == null) { start = DateTime.Now.Date; } if (end == null) { end = DateTime.Now.Date.AddDays(1).AddSeconds(-1); } startDate = Convert.ToDateTime(start); endDate = Convert.ToDateTime(end); differ = startDate.Day; startDate = startDate.AddDays(-differ + 1); endDate = endDate.AddDays(DateTime.DaysInMonth(startDate.Year, startDate.Month) - differ).AddDays(1).AddSeconds(-1); //differ = (endDate - startDate). + 1; lastStartDate = startDate.AddMonths(-1); lastEndDate = lastStartDate.AddDays(DateTime.DaysInMonth(lastStartDate.Year, lastStartDate.Month) - 1).AddDays(1).AddSeconds(-1); str = "月"; break; default: break; } //type 查询类型 type=1 按区域;type=2 按部门; type=3 按工单类型 switch (type) { case 1: var areaList = areaBLL.DataTableToList(areaBLL.GetList(" F_State=0 ").Tables[0]); var areaList1 = new BLL.T_Bus_WorkOrderReport().DataTableToAreaList(DbHelperSQL.Query($"SELECT A.F_WorkOrderId,A.F_WorkState,A.F_SourceArea,B.F_AreaName, row_number() over(partition by B.F_AreaId order by A.F_Id desc) FROM T_Bus_WorkOrder A LEFT JOIN T_Sys_Area B ON A.F_SourceArea = B.F_AreaId WHERE datediff(s, '{startDate}', A.F_CreateTime) > 0 and datediff(s, '{endDate}', A.F_CreateTime) < 0 and A.F_IsDelete = 0 AND A.F_WorkOrderId IS NOT NULL AND A.F_SourceArea > 0").Tables[0]); var areaList2 = new BLL.T_Bus_WorkOrderReport().DataTableToAreaList(DbHelperSQL.Query($"SELECT A.F_WorkOrderId,A.F_WorkState,A.F_SourceArea,B.F_AreaName, row_number() over(partition by B.F_AreaId order by A.F_Id desc) FROM T_Bus_WorkOrder A LEFT JOIN T_Sys_Area B ON A.F_SourceArea = B.F_AreaId WHERE datediff(s, '{lastStartDate}', A.F_CreateTime) > 0 and datediff(s, '{lastEndDate}', A.F_CreateTime) < 0 and A.F_IsDelete = 0 AND A.F_WorkOrderId IS NOT NULL AND A.F_SourceArea > 0").Tables[0]); List areaWeaklyReportDtoList = new List(); areaList.ForEach(x => { var query = areaList1.Where(y => x.F_AreaId == y.FieldId).ToList(); var assignedCount = query.Count(); var lastAssignedcount = areaList2.Where(y => x.F_AreaId == y.FieldId).Count(); var countRate = lastAssignedcount == 0 ? "0%" : assignedCount == 0 ? "0%" : ((double)assignedCount / lastAssignedcount * 100).ToString("f2") + "%"; var completedCount = query.Where(y => y.WorkOrderState == 9).Count(); var completedRate = assignedCount == 0 ? "0%" : completedCount == 0 ? "0%" : ((double)completedCount / assignedCount * 100).ToString("f2") + "%"; areaWeaklyReportDtoList.Add(new DeptWeaklyReportDto { name = x.F_AreaName, assignedcount = assignedCount, countrate = countRate, completedcount = completedCount, completedrate = completedRate }); }); if (isExport) { var dt = areaWeaklyReportDtoList.ToDataTable(new string[] { "name", "assignedcount", "countrate", "completedcount", "completedrate" }); new NPOIHelper().ExportToExcel($"按区域{str}报表{Convert.ToDateTime(startDate).ToString("yyyyMMdd")}-{Convert.ToDateTime(endDate).ToString("yyyyMMdd")}", dt, new string[] { "区域", "受理数量", "数量同比", "办结数量", "办结率" }); return Success("导出excel"); } return Content(new { rows = areaWeaklyReportDtoList.Skip((pageIndex - 1) * pageSize).Take(pageSize), total = areaWeaklyReportDtoList.Count }.ToJson()); case 2: var deptList = departmentBLL.DataTableToList(departmentBLL.GetList(" F_State=0 AND F_DeptNameSpell=3 ").Tables[0]); var deptList1 = new BLL.T_Bus_WorkOrderReport().DataTableToDeptList1(DbHelperSQL.Query($"SELECT A.F_WorkOrderId,A.F_WorkState,B.F_MainDeptId,C.F_DeptName , row_number() over(partition by B.F_MainDeptId order by A.F_Id desc)FROM T_Bus_WorkOrder A LEFT JOIN T_Bus_AssignedInfo B ON A.F_WorkOrderId=B.F_WorkOrderId LEFT JOIN T_Sys_Department C ON B.F_MainDeptId=C.F_DeptId AND C.F_DeptNameSpell=3 WHERE datediff(s,'{startDate}',A.F_CreateTime)>0 and datediff(s,'{endDate}',A.F_CreateTime)<0 and A.F_IsDelete=0 AND A.F_WorkOrderId IS NOT NULL AND B.F_IsDelete=0 and B.F_IsSure in (0,1,2) and B.F_State in (0,1)").Tables[0]).DistinctBy(x => x.WorkOrderId).ToList();//DataTableToDeptList var deptList2 = new BLL.T_Bus_WorkOrderReport().DataTableToDeptList1(DbHelperSQL.Query($"SELECT A.F_WorkOrderId,A.F_WorkState,B.F_MainDeptId,C.F_DeptName , row_number() over(partition by B.F_MainDeptId order by A.F_Id desc)FROM T_Bus_WorkOrder A LEFT JOIN T_Bus_AssignedInfo B ON A.F_WorkOrderId=B.F_WorkOrderId LEFT JOIN T_Sys_Department C ON B.F_MainDeptId=C.F_DeptId AND C.F_DeptNameSpell=3 WHERE datediff(s,'{lastStartDate}',A.F_CreateTime)>0 and datediff(s,'{lastEndDate}',A.F_CreateTime)<0 and A.F_IsDelete=0 AND A.F_WorkOrderId IS NOT NULL AND B.F_IsDelete=0 and B.F_IsSure in (0,1,2) and B.F_State in (0,1)").Tables[0]).DistinctBy(x => x.WorkOrderId).ToList();//DataTableToDeptList List deptWeaklyReportDtoList = new List(); deptList.ForEach(x => { var query = deptList1.Where(y => y.FieldId!=null && y.FieldId.Split(',').Contains(x.F_DeptId.ToString())).ToList(); //var query = deptList1.Where(y => y.FieldId == x.F_DeptId).ToList(); var assignedCount = query.Count(); var lastAssignedcount = deptList2.Where(y => y.FieldId != null && y.FieldId.Split(',').Contains(x.F_DeptId.ToString())).Count(); //var lastAssignedcount = deptList2.Where(y => y.FieldId == x.F_DeptId).Count(); var countRate = lastAssignedcount == 0 ? "0%" : assignedCount == 0 ? "0%" : ((double)assignedCount / lastAssignedcount * 100).ToString("f2") + "%"; var completedCount = query.Where(y => y.WorkOrderState == 9).Count(); var completedRate = assignedCount == 0 ? "0%" : completedCount == 0 ? "0%" : ((double)completedCount / assignedCount * 100).ToString("f2") + "%"; deptWeaklyReportDtoList.Add(new DeptWeaklyReportDto { name = x.F_DeptName, assignedcount = assignedCount, countrate = countRate, completedcount = completedCount, completedrate = completedRate }); }); if (isExport) { var dt = deptWeaklyReportDtoList.ToDataTable(new string[] { "name", "assignedcount", "countrate", "completedcount", "completedrate" }); new NPOIHelper().ExportToExcel($"按单位{str}报表{Convert.ToDateTime(startDate).ToString("yyyyMMdd")}-{Convert.ToDateTime(endDate).ToString("yyyyMMdd")}", dt, new string[] { "单位", "受理数量", "数量同比", "办结数量", "办结率" }); return Success("导出excel"); } return Content(new { rows = deptWeaklyReportDtoList.Skip((pageIndex - 1) * pageSize).Take(pageSize), total = deptWeaklyReportDtoList.Count }.ToJson()); case 3: var typeList = dictValueBLL.DataTableToList(dictValueBLL.GetList(" F_State=0 and F_ItemId=2 ").Tables[0]); var typeList1 = new BLL.T_Bus_WorkOrderReport().DataTableToTypeList(DbHelperSQL.Query($"SELECT A.F_WorkOrderId,A.F_WorkState,A.F_InfoType,B.F_Value , row_number() over(partition by A.F_InfoType order by A.F_Id desc) FROM T_Bus_WorkOrder A LEFT JOIN T_Sys_DictionaryValue B ON A.F_InfoType=B.F_ValueId WHERE datediff(s,'{startDate}',A.F_CreateTime)>0 and datediff(s,'{endDate}',A.F_CreateTime)<0 and A.F_IsDelete=0 AND A.F_WorkOrderId IS NOT NULL AND B.F_State=0 and B.F_ItemId=2 ").Tables[0]); var typeList2 = new BLL.T_Bus_WorkOrderReport().DataTableToTypeList(DbHelperSQL.Query($"SELECT A.F_WorkOrderId,A.F_WorkState,A.F_InfoType,B.F_Value , row_number() over(partition by A.F_InfoType order by A.F_Id desc) FROM T_Bus_WorkOrder A LEFT JOIN T_Sys_DictionaryValue B ON A.F_InfoType=B.F_ValueId WHERE datediff(s,'{lastStartDate}',A.F_CreateTime)>0 and datediff(s,'{lastEndDate}',A.F_CreateTime)<0 and A.F_IsDelete=0 AND A.F_WorkOrderId IS NOT NULL AND B.F_State=0 and B.F_ItemId=2 ").Tables[0]); List typeWeaklyReportDtoList = new List(); typeList.ForEach(x => { var query = typeList1.Where(y => y.FieldId == x.F_ValueId); var assignedCount = query.Count(); var lastAssignedcount = typeList2.Where(y => y.FieldId == x.F_ValueId).Count(); var countRate = lastAssignedcount == 0 ? "0%" : assignedCount == 0 ? "0%" : ((double)assignedCount / lastAssignedcount * 100).ToString("f2") + "%"; var completedCount = query.Where(y => y.WorkOrderState == 9).Count(); var completedRate = assignedCount == 0 ? "0%" : completedCount == 0 ? "0%" : ((double)completedCount / assignedCount * 100).ToString("f2") + "%"; typeWeaklyReportDtoList.Add(new DeptWeaklyReportDto { name = x.F_Value, assignedcount = assignedCount, countrate = countRate, completedcount = completedCount, completedrate = completedRate }); }); if (isExport) { var dt = typeWeaklyReportDtoList.ToDataTable(new string[] { "name", "assignedcount", "countrate", "completedcount", "completedrate" }); new NPOIHelper().ExportToExcel($"按工单类型{str}报表{Convert.ToDateTime(startDate).ToString("yyyyMMdd")}-{Convert.ToDateTime(endDate).ToString("yyyyMMdd")}", dt, new string[] { "工单类型", "受理数量", "数量同比", "办结数量", "办结率" }); return Success("导出excel"); } return Content(new { rows = typeWeaklyReportDtoList.Skip((pageIndex - 1) * pageSize).Take(pageSize), total = typeWeaklyReportDtoList.Count }.ToJson()); case 4: var sourceList = dictValueBLL.DataTableToList(dictValueBLL.GetList(" F_State = 0 and F_ItemId = 1").Tables[0]); var sourceList1 = new BLL.T_Bus_WorkOrderReport().DataTableToSourceList(DbHelperSQL.Query($"SELECT A.F_WorkOrderId,A.F_WorkState,A.F_InfoSource,B.F_Value , row_number() over(partition by A.F_InfoSource order by A.F_Id desc) FROM T_Bus_WorkOrder A LEFT JOIN T_Sys_DictionaryValue B ON A.F_InfoSource = B.F_ValueId WHERE datediff(s, '{startDate}', A.F_CreateTime) > 0 and datediff(s, '{endDate}', A.F_CreateTime) < 0 and A.F_IsDelete = 0 AND A.F_WorkOrderId IS NOT NULL AND B.F_State = 0 and B.F_ItemId = 1").Tables[0]); var sourceList2 = new BLL.T_Bus_WorkOrderReport().DataTableToSourceList(DbHelperSQL.Query($"SELECT A.F_WorkOrderId,A.F_WorkState,A.F_InfoSource,B.F_Value , row_number() over(partition by A.F_InfoSource order by A.F_Id desc) FROM T_Bus_WorkOrder A LEFT JOIN T_Sys_DictionaryValue B ON A.F_InfoSource = B.F_ValueId WHERE datediff(s, '{lastStartDate}', A.F_CreateTime) > 0 and datediff(s, '{lastEndDate}', A.F_CreateTime) < 0 and A.F_IsDelete = 0 AND A.F_WorkOrderId IS NOT NULL AND B.F_State = 0 and B.F_ItemId = 1").Tables[0]); List sourceWeaklyReportDtoList = new List(); sourceList.ForEach(x => { var query = sourceList1.Where(y => y.FieldId == x.F_ValueId).ToList(); var assignedCount = query.Count(); var lastAssignedcount = sourceList2.Where(y => y.FieldId == x.F_ValueId).Count(); var countRate = lastAssignedcount == 0 ? "0%" : assignedCount == 0 ? "0%" : ((double)assignedCount / lastAssignedcount * 100).ToString("f2") + "%"; var completedCount = query.Where(y => y.WorkOrderState == 9).Count(); var completedRate = assignedCount == 0 ? "0%" : completedCount == 0 ? "0%" : ((double)completedCount / assignedCount * 100).ToString("f2") + "%"; sourceWeaklyReportDtoList.Add(new DeptWeaklyReportDto { name = x.F_Value, assignedcount = assignedCount, countrate = countRate, completedcount = completedCount, completedrate = completedRate }); }); if (isExport) { var dt = sourceWeaklyReportDtoList.ToDataTable(new string[] { "name", "assignedcount", "countrate", "completedcount", "completedrate" }); new NPOIHelper().ExportToExcel($"按工单来源{str}报表{Convert.ToDateTime(startDate).ToString("yyyyMMdd")}-{Convert.ToDateTime(endDate).ToString("yyyyMMdd")}", dt, new string[] { "工单来源", "受理数量", "数量同比", "办结数量", "办结率" }); return Success("导出excel"); } return Content(new { rows = sourceWeaklyReportDtoList.Skip((pageIndex - 1) * pageSize).Take(pageSize), total = sourceWeaklyReportDtoList.Count }.ToJson()); default: return Error("参数错误"); } } /// /// 工单日周月报 /// /// /// /// /// /// /// public ActionResult GetDayWeekMonthReport(DateTime? date, int type = 0, int dateType = 0, bool isExport = false,string source="") { if (date == null) { date = DateTime.Now.Date; } Dictionary paras = new Dictionary(); paras.Add("@date", date.Value.ToString("yyyy-MM-dd")); paras.Add("@datatype", type.ToString()); paras.Add("@datetype", dateType.ToString()); paras.Add("@source", source); var obj = DbHelperSQL.RunProcedure("P_DayWeekMonthReport", paras, "DayWeekMonthReport"); if (isExport) { var cols = new string[] { "名称", "受理数量", "数量同比", "结案数量", "结案率" }; var start = obj.Tables[1].Rows[0]["startdate"].ToString(); var end = obj.Tables[1].Rows[0]["enddate"].ToString(); new NPOIHelper().ExportToExcel($"工单报表{Convert.ToDateTime(start).ToString("yyyyMMdd")}-{Convert.ToDateTime(end).ToString("yyyyMMdd")}", obj.Tables[0], cols); return Success("导出excel"); } return Success("成功", obj); } /// /// 电话中心受话情况统计表 /// /// /// /// /// /// /// public ActionResult CenterReception(DateTime? starttime, DateTime? endtime,string usercode="",string group="", bool isExport = false) { DateTime date = DateTime.Now; if (starttime == null) { starttime = new DateTime(date.Year, date.Month, 1); } if (endtime == null) { endtime = DateTime.Now; } Dictionary paras = new Dictionary(); paras.Add("@sdate", starttime.Value.ToString("yyyy-MM-dd HH:mm:ss")); paras.Add("@edate", endtime.Value.ToString("yyyy-MM-dd HH:mm:ss")); paras.Add("@usercode", usercode); paras.Add("@group", group); var obj = DbHelperSQL.RunProcedure("P_CenterReception", paras, "CenterReception"); if (isExport) { string message = new NPOIHelper().CenterReception(obj); if (message == "") return Success("导出excel"); else return Error(message); } return Success("成功", obj); } /// /// 局委办件统计 /// /// /// /// /// /// /// public ActionResult BureauHandling(DateTime? starttime, DateTime? endtime,int deptid =0, int source=0, bool isExport = false) { DateTime date = DateTime.Now; if (starttime == null) { starttime = new DateTime(date.Year, date.Month, 1); } if (endtime == null) { endtime = DateTime.Now; } string dept = ""; if (deptid>0) dept= deptid.ToString(); string infosource = ""; if (source > 0) infosource = source.ToString(); Dictionary paras = new Dictionary(); paras.Add("@sdate", starttime.Value.ToString("yyyy-MM-dd HH:mm:ss")); paras.Add("@edate", endtime.Value.ToString("yyyy-MM-dd HH:mm:ss")); paras.Add("@deptid", dept); paras.Add("@source", infosource); var obj = DbHelperSQL.RunProcedure("P_DeptBureauHandling", paras, "DeptBureauHandling"); if (isExport) { string message = new NPOIHelper().BureauHandling(obj); if (message == "") return Success("导出excel"); else return Error(message); } return Success("成功", obj); } /// /// 局委评议统计 /// /// /// /// /// /// /// public ActionResult DeptReview(DateTime? starttime, DateTime? endtime, int deptid = 0, int source = 0, bool isExport = false) { DateTime date = DateTime.Now; if (starttime == null) { starttime = new DateTime(date.Year, date.Month, 1); } if (endtime == null) { endtime = DateTime.Now; } string dept = ""; if (deptid > 0) dept = deptid.ToString(); string infosource = ""; if (source > 0) infosource = source.ToString(); Dictionary paras = new Dictionary(); paras.Add("@sdate", starttime.Value.ToString("yyyy-MM-dd HH:mm:ss")); paras.Add("@edate", endtime.Value.ToString("yyyy-MM-dd HH:mm:ss")); paras.Add("@deptid", dept); paras.Add("@source", infosource); var obj = DbHelperSQL.RunProcedure("P_DeptReview", paras, "DeptReview"); if (isExport) { var cols = new string[] { "序号", "承办单位", "办件总数", "评议率", "评议总数", "一次评议满意", "一次评议不满意" , "一次评议满意率", "二次评议满意", "二次评议不满意", "二级评议满意率"}; new NPOIHelper().ExportToExcel("局委评议统计", obj.Tables[0], cols); return Success("导出excel"); } return Success("成功", obj); } /// /// 政民互动综合统计 /// /// /// /// /// /// /// public ActionResult Government(DateTime? starttime, DateTime? endtime, int deptid = 0, int source = 0, bool isExport = false) { DateTime date = DateTime.Now; if (starttime == null) { starttime = new DateTime(date.Year, date.Month, 1); } if (endtime == null) { endtime = DateTime.Now; } string dept = ""; if (deptid > 0) dept = deptid.ToString(); string infosource = ""; if (source > 0) infosource = source.ToString(); Dictionary paras = new Dictionary(); paras.Add("@sdate", starttime.Value.ToString("yyyy-MM-dd HH:mm:ss")); paras.Add("@edate", endtime.Value.ToString("yyyy-MM-dd HH:mm:ss")); paras.Add("@deptid", dept); paras.Add("@source", infosource); var obj = DbHelperSQL.RunProcedure("P_Government", paras, "Government"); if (isExport) { string message = new NPOIHelper().Government(obj); if (message == "") return Success("导出excel"); else return Error(message); } return Success("成功", obj); } /// /// 归并热线每日数据统计 /// /// /// /// public ActionResult MergerHotline(DateTime? starttime , DateTime ? endtime,bool isExport = false ) { DateTime date = DateTime.Now; if (starttime ==null ) { starttime = new DateTime(date.Year, date.Month, 1); } if (endtime == null) { endtime = DateTime.Now; } List MergerHotSource = new List(); var source = new BLL.T_Sys_DictionaryValue().GetModelList ("F_PrentId ='2498'"); string key = ""; foreach (var it in source) { key += ",'"+it.F_Value+"'" ; } var CallRecords = new BLL.T_Call_CallRecords().GetModelList("CallType=0 and BeginTime between '" + starttime.Value.ToString("yyyy-MM-dd HH:mm:ss") + "' and '" + endtime.Value.ToString("yyyy-MM-dd HH:mm:ss") + "' and PhoneType in ("+ key .TrimStart (',') + ")"); if (source !=null && source .Count >0) { for (DateTime dt = starttime.Value; dt <= endtime.Value; dt = dt.AddDays(1)) { MergerHot.MergerHotSource mergerHotSources = new MergerHot.MergerHotSource(); mergerHotSources.Data = dt.ToString("MM月dd日"); mergerHotSources.MergerHot = new List(); for (int i = 0; i < source.Count + 3; i++) { if (i < source.Count) { MergerHot.MergerHots mergerHot = new MergerHot.MergerHots(); if (source[i].F_Value == "12345") { mergerHot.sort = source.Count; } else { mergerHot.sort = i-1; } mergerHot.Source = source[i ].F_Value ; mergerHot.Call = CallRecords.Where(x => x.BeginTime .Value.Day ==dt .Day && x.PhoneType == source[i].F_Value).Count(); mergerHot.Connect = CallRecords.Where(x => x.BeginTime .Value.Day == dt.Day && x.CallState == 1 && x.PhoneType == source[i].F_Value).Count(); mergerHot.Notconnected = CallRecords.Where(x => x.BeginTime .Value.Day == dt.Day && x.CallState == 0 && x.PhoneType == source[i].F_Value && x.UserCode != "" && x.UserCode != null).Count(); mergerHot.voluntarily = CallRecords.Where(x => x.BeginTime .Value.Day == dt.Day && x.CallState == 0 && x.PhoneType == source[i].F_Value && (x.UserCode == "" || x.UserCode == null)).Count(); if (mergerHot.Call > 0) { mergerHot.rate = string.Format("{0:f2}%", (float)mergerHot.Connect / (float)mergerHot.Call * 100); } else { mergerHot.rate = "100%"; } mergerHotSources.MergerHot.Add(mergerHot); } else if (i == source.Count) { MergerHot.MergerHots mergerHot = new MergerHot.MergerHots(); mergerHot.Source = "当日小计"; mergerHot.sort = source.Count + 1; mergerHot.Call = CallRecords.Where(x => x.BeginTime .Value.Day == dt.Day).Count(); mergerHot.Connect = CallRecords.Where(x => x.BeginTime .Value.Day == dt.Day && x.CallState == 1).Count(); mergerHot.Notconnected = CallRecords.Where(x => x.BeginTime .Value.Day == dt.Day && x.CallState == 0 && x.UserCode != "" && x.UserCode != null).Count(); mergerHot.voluntarily = CallRecords.Where(x => x.BeginTime .Value.Day == dt.Day && x.CallState == 0 && (x.UserCode == "" || x.UserCode == null)).Count(); if (mergerHot.Call>0) { mergerHot.rate = string.Format("{0:f2}%", (float)mergerHot.Connect / (float)mergerHot.Call * 100); } else { mergerHot.rate = "100%"; } mergerHotSources.MergerHot.Add(mergerHot); } else if (i == source.Count+1) { MergerHot.MergerHots mergerHot = new MergerHot.MergerHots(); mergerHot.Source = "累计"; mergerHot.sort = source.Count+2; mergerHot.Call = CallRecords.Where(x => x.BeginTime .Value.Date >=starttime .Value.Date && x.BeginTime .Value.Date <= dt.Date ).Count(); mergerHot.Connect = CallRecords.Where(x => x.BeginTime .Value.Date >= starttime.Value.Date && x.BeginTime .Value.Date <= dt.Date && x.CallState == 1 ).Count(); mergerHot.Notconnected = CallRecords.Where(x => x.BeginTime .Value.Date >= starttime.Value.Date && x.BeginTime .Value.Date <= dt.Date && x.CallState == 0 && x.UserCode != "" && x.UserCode != null).Count(); mergerHot.voluntarily = CallRecords.Where(x => x.BeginTime .Value.Date >= starttime.Value.Date && x.BeginTime .Value.Date <= dt.Date && x.CallState == 0 && (x.UserCode == "" || x.UserCode == null)).Count(); if (mergerHot.Call > 0) { mergerHot.rate = string.Format("{0:f2}%", (float)mergerHot.Connect / (float)mergerHot.Call * 100); } else { mergerHot.rate = "100%"; } mergerHotSources.MergerHot.Add(mergerHot); } else if (i == source.Count+2) { MergerHot.MergerHots mergerHot = new MergerHot.MergerHots(); mergerHot.Source = "归并热线小计"; mergerHot.sort = source.Count-1; mergerHot.Call = CallRecords.Where(x => x.BeginTime .Value.Day == dt.Day&&x.PhoneType !="12345").Count(); mergerHot.Connect = CallRecords.Where(x => x.BeginTime .Value.Day == dt.Day && x.CallState == 1 && x.PhoneType != "12345").Count(); mergerHot.Notconnected = CallRecords.Where(x => x.BeginTime .Value.Day == dt.Day && x.CallState == 0 && x.UserCode != "" && x.UserCode != null && x.PhoneType != "12345").Count(); mergerHot.voluntarily = CallRecords.Where(x => x.BeginTime .Value.Day == dt.Day && x.CallState == 0 && (x.UserCode == "" || x.UserCode == null) && x.PhoneType != "12345").Count(); mergerHot.callback = CallRecords.Where(x => x.BeginTime .Value.Day == dt.Day &&x .PhoneType != "12345" && x.Callback == 1).Count(); if (mergerHot.Call > 0) { mergerHot.rate = string.Format("{0:f2}%", (float)mergerHot.Connect / (float)mergerHot.Call * 100); } else { mergerHot.rate = "100%"; } mergerHotSources.MergerHot.Add(mergerHot); } } mergerHotSources.MergerHot= mergerHotSources.MergerHot.OrderBy(x => x.sort).ToList (); MergerHotSource.Add(mergerHotSources); } } if (MergerHotSource!=null && MergerHotSource .Count >0) { MergerHot.MergerHotSource mergerHotSources = new MergerHot.MergerHotSource(); mergerHotSources.Data = "合计"; mergerHotSources.MergerHot = new List(); for (int i = 0; i < source.Count + 2; i++) { if (i < source.Count) { MergerHot.MergerHots mergerHot = new MergerHot.MergerHots(); mergerHot.Source = source[i].F_Value; mergerHot.Call = CallRecords.Where(x=> x.PhoneType == source[i].F_Value).Count(); mergerHot.Connect = CallRecords.Where(x => x.CallState == 1 && x.PhoneType == source[i].F_Value).Count(); mergerHot.Notconnected = CallRecords.Where(x => x.CallState == 0 && x.PhoneType == source[i].F_Value && x.UserCode != "" && x.UserCode != null).Count(); mergerHot.voluntarily = CallRecords.Where(x => x.CallState == 0 && x.PhoneType == source[i].F_Value && (x.UserCode == "" || x.UserCode == null)).Count(); if (source[i].F_Value=="12345") { mergerHot.sort = source.Count ; } else { mergerHot.sort =i -1; } if (mergerHot.Call > 0) { mergerHot.rate = string.Format("{0:f2}%", (float)mergerHot.Connect / (float)mergerHot.Call * 100); } else { mergerHot.rate = "100%"; } mergerHotSources.MergerHot.Add(mergerHot); } else if (i == source.Count) { MergerHot.MergerHots mergerHot = new MergerHot.MergerHots(); mergerHot.Source ="当日小计"; mergerHot.sort = source.Count + 1; mergerHot.Call = CallRecords.Count(); mergerHot.Connect = CallRecords.Where(x =>x.CallState == 1).Count(); mergerHot.Notconnected = CallRecords.Where(x => x.CallState == 0 && x.UserCode != "" && x.UserCode != null).Count(); mergerHot.voluntarily = CallRecords.Where(x => x.CallState == 0 && (x.UserCode == "" || x.UserCode == null)).Count(); if (mergerHot.Call > 0) { mergerHot.rate = string.Format("{0:f2}%", (float)mergerHot.Connect / (float)mergerHot.Call * 100); } else { mergerHot.rate = "100%"; } mergerHotSources.MergerHot.Add(mergerHot); } else if (i == source.Count+1) { MergerHot.MergerHots mergerHot = new MergerHot.MergerHots(); mergerHot.Source = "归并热线小计"; mergerHot.sort = source.Count - 1; mergerHot.Call = CallRecords.Where(x => x.PhoneType != "12345").Count(); mergerHot.Connect = CallRecords.Where(x => x.PhoneType != "12345").Count(); mergerHot.Notconnected = CallRecords.Where(x =>x.CallState == 0 && x.UserCode != "" && x.UserCode != null && x.PhoneType != "12345").Count(); mergerHot.voluntarily = CallRecords.Where(x => x.CallState == 0 && (x.UserCode == "" || x.UserCode == null && x.PhoneType != "12345")).Count(); mergerHot.callback = CallRecords.Where(x => x.PhoneType != "12345" && x.Callback == 1).Count(); if (mergerHot.Call > 0) { mergerHot.rate = string.Format("{0:f2}%", (float)mergerHot.Connect / (float)mergerHot.Call * 100); } else { mergerHot.rate = "100%"; } mergerHotSources.MergerHot.Add(mergerHot); } } mergerHotSources.MergerHot = mergerHotSources.MergerHot.OrderBy(x => x.sort).ToList(); MergerHotSource.Add(mergerHotSources); } if (isExport) { new NPOIHelper().ExportMergerToExcel(MergerHotSource); return Success("导出excel"); } return Success("获取成功", MergerHotSource); } /// /// 调度工作量统计 /// /// /// /// /// /// /// public ActionResult GetWorkLoad1(DateTime? start, DateTime? end, bool isExport = false) { if (start == null) { start = DateTime.Now; start = new DateTime(start.Value.Year, start.Value.Month, 1); } if (end == null) { end = DateTime.Now; } Dictionary paras = new Dictionary(); paras.Add("@sdate", start.Value.ToString("yyyy-MM-dd")); paras.Add("@edate", end.Value.ToString("yyyy-MM-dd")); var obj = DbHelperSQL.RunProcedure("P_LeaderAssessmentReport", paras, "LeaderAssessmentReport"); if (isExport) { var cols = new string[] { "姓名", "回退量", "交办量", "退回审核量", "延时审核量", "重办量", "结案量" }; new NPOIHelper().ExportToExcel($"调度工作量统计{Convert.ToDateTime(start).ToString("yyyyMMdd")}-{Convert.ToDateTime(end).ToString("yyyyMMdd")}", obj.Tables[0], cols); return Success("导出excel"); } return Success("成功", obj); } public ActionResult GetWorkLoad(DateTime? start, DateTime? end, bool isExport = false, string source = "") { if (start == null) { start = DateTime.Now; start = new DateTime(start.Value.Year, start.Value.Month, 1); } if (end == null) { end = DateTime.Now; } Dictionary paras = new Dictionary(); paras.Add("@sdate", start.Value.ToString("yyyy-MM-dd")); paras.Add("@edate", end.Value.ToString("yyyy-MM-dd")); paras.Add("@source", source); var obj = DbHelperSQL.RunProcedure("P_LeaderAssessmentReport_1", paras, "LeaderAssessmentReport"); if (isExport) { var cols = new string[] { "姓名", "回退量", "交办量", "退回审核量", "延时审核量", "重办量", "结案量" }; new NPOIHelper().ExportToExcel($"调度工作量统计{Convert.ToDateTime(start).ToString("yyyyMMdd")}-{Convert.ToDateTime(end).ToString("yyyyMMdd")}", obj.Tables[0], cols); return Success("导出excel"); } return Success("成功", obj); } /// /// 获取未处理报表 /// /// /// /// public ActionResult GetNoDealReport(DateTime? start, DateTime? end, int deptid = 0, int pageIndex = 1, int pageSize = 10, int isdc = 0) { if (start == null) { start = DateTime.Now; start = new DateTime(start.Value.Year, start.Value.Month, 1); } if (end == null) { end = DateTime.Now; } var where = ""; if (deptid > 0) { where = " AND F_MainDeptId=" + deptid; } string sql = $" and datediff(day,F_CreateTime,'{start.Value.ToString("yyyy-MM-dd")}')<=0 and datediff(day,F_CreateTime,'{end.Value.ToString("yyyy-MM-dd")}')>=0 " + where; if (isdc > 0) { string[] cols = new string[] { "工单编号", "承办单位", "工单内容", "转派时间", "回复时限", "超时/剩余", "工单状态" }; var dtall = DbHelperSQL.Query("select * from V_Bus_NoDeal where 1=1 " + sql).Tables[0]; dtall.Columns.Remove("F_MainDeptId"); dtall.Columns.Remove("F_CreateTime"); dtall.Columns.Remove("F_WorkState"); new NPOIHelper().ExportToExcel($"单位未处理统计报表{start.Value.ToString("yyyyMMdd")}-{end.Value.ToString("yyyyMMdd")}", dtall, cols); return Success("导出excel"); } int recordCount = 0; var dt = BLL.PagerBLL.GetListPager( "V_Bus_NoDeal", "F_WorkOrderId", "*", sql, "ORDER BY F_CreateTime DESC", pageSize, pageIndex, true, out recordCount); var obj = new { state = "success", message = "成功", rows = dt, total = recordCount }; return Content(obj.ToJson()); } #region 20190618 zhengbingbing 新增处理量统计按照时间筛选 /// /// 处理量统计 /// /// /// /// /// public ActionResult GetDeptDayReport1(string sdate, string edate,int isdept=1, bool isExport = false) { if (string.IsNullOrEmpty(sdate)) { sdate = DateTime.Now.Date.ToString("yyyy-MM-01"); } if (string.IsNullOrEmpty(edate)) { edate = DateTime.Now.Date.ToString("yyyy-MM-dd"); } if (User.F_RoleCode == "GLY" || User.F_RoleCode == "SPZ" || User.F_RoleCode == "SPZJZ") { var maindeptid = 0; if (User.F_RoleCode == "WLDW") { maindeptid = User.F_DeptId; } else if (User.F_RoleCode == "EJWLDW") { maindeptid = User.F_DeptId; isdept = 2; } } Dictionary paras = new Dictionary(); paras.Add("@sdate", sdate); paras.Add("@edate", edate); paras.Add("@isdept", isdept.ToString ()); var obj = DbHelperSQL.RunProcedure("P_DeptDayReport", paras, "DeptDayReport"); if (isExport) { var cols = new string[] { "名称", "受理数量", "处理量", "延期量", "重办量", "结案量", "办理率", "办结率" }; new NPOIHelper().ExportToExcel($"工单报表{sdate}-{edate}", obj.Tables[0], cols); return Success("导出excel"); } return Success("成功", obj); } public ActionResult GetDeptDayReport(string sdate, string edate, int isdept = 0, bool isExport = false,string source="",int deptid=0 ) { if (string.IsNullOrEmpty(sdate)) { sdate = DateTime.Now.Date.ToString("yyyy-MM-01"); } if (string.IsNullOrEmpty(edate)) { edate = DateTime.Now.Date.ToString("yyyy-MM-dd"); } if (User.F_RoleCode != "GLY" && User.F_RoleCode != "SPZ" && User.F_RoleCode != "SPZJZ") { if (User.F_RoleCode == "WLDW") { isdept = User.F_DeptId; } else if (User.F_RoleCode == "EJWLDW") { isdept = User.F_DeptId; } } string dept = ""; if (isdept > 0) dept = isdept.ToString(); Dictionary paras = new Dictionary(); paras.Add("@sdate", sdate); paras.Add("@edate", edate); paras.Add("@isdept", dept); paras.Add("@source", source); var obj = DbHelperSQL.RunProcedure("P_DeptDayReport_1", paras, "DeptDayReport"); if (obj!=null && obj.Tables[0]!=null && obj.Tables[0].Rows.Count > 0) { for (int i = 0; i < obj.Tables[0].Rows.Count; i++) { int acceptcount = 0, dealcount = 0, endcount = 0;double dealrate = 0, endrate = 0; int.TryParse(obj.Tables[0].Rows[i]["acceptcount"].ToString(),out acceptcount); int.TryParse(obj.Tables[0].Rows[i]["dealcount"].ToString(), out dealcount); int.TryParse(obj.Tables[0].Rows[i]["endcount"].ToString(), out endcount); if(acceptcount>0) { dealrate = double.Parse((dealcount * 100).ToString()) / acceptcount; endrate = double.Parse((endcount * 100).ToString()) / acceptcount; obj.Tables[0].Rows[i]["dealrate"] = dealrate.ToString("f") + "%"; obj.Tables[0].Rows[i]["endrate"] = endrate.ToString("f") + "%"; } } } if (isExport) { var cols = new string[] { "名称", "受理数量", "处理量", "延期量", "重办量", "结案量", "办理率", "办结率" }; new NPOIHelper().ExportToExcel($"处理数量统计报表{sdate.Substring(0, 10)}-{edate.Substring(0, 10)}", obj.Tables[0], cols); return Success("导出excel"); } return Success("成功", obj); } #endregion #region 20191104 zhengbingbing 增加三级单位统计项 /// /// 三级单位处理量统计 /// /// /// /// /// public ActionResult GetDept3DayReport1(string sdate, string edate, bool isExport = false) { if (string.IsNullOrEmpty(sdate)) { sdate = DateTime.Now.Date.ToString("yyyy-MM-01"); } if (string.IsNullOrEmpty(edate)) { edate = DateTime.Now.Date.ToString("yyyy-MM-dd"); } int deptid = 0; if (User.F_RoleCode != "GLY" && User.F_RoleCode != "SPZ" && User.F_RoleCode != "SPZJZ") { if (User.F_RoleCode == "WLDW" || User.F_RoleCode == "EJWLDW") { deptid = User.F_DeptId; } } Dictionary paras = new Dictionary(); paras.Add("@sdate", sdate); paras.Add("@edate", edate); paras.Add("@deptid", deptid.ToString()); var obj = DbHelperSQL.RunProcedure("P_Dept3DayReport", paras, "Dept3DayReport"); if (isExport) { var cols = new string[] { "单位名称", "受理数量", "处理量", "结案量", "办理率", "办结率" }; new NPOIHelper().ExportToExcel($"工单报表{sdate}-{edate}", obj.Tables[0], cols); return Success("导出excel"); } return Success("成功", obj); } public ActionResult GetDept3DayReport(string sdate, string edate, bool isExport = false,string source = "") { if (string.IsNullOrEmpty(sdate)) { sdate = DateTime.Now.Date.ToString("yyyy-MM-01"); } if (string.IsNullOrEmpty(edate)) { edate = DateTime.Now.Date.ToString("yyyy-MM-dd"); } int deptid = 0; if (User.F_RoleCode != "GLY" && User.F_RoleCode != "SPZ" && User.F_RoleCode != "SPZJZ") { if (User.F_RoleCode == "WLDW" || User.F_RoleCode == "EJWLDW") { deptid = User.F_DeptId; } } Dictionary paras = new Dictionary(); paras.Add("@sdate", sdate); paras.Add("@edate", edate); paras.Add("@deptid", deptid.ToString()); paras.Add("@source", source); var obj = DbHelperSQL.RunProcedure("P_Dept3DayReport_1", paras, "Dept3DayReport"); if (obj != null && obj.Tables[0] != null && obj.Tables[0].Rows.Count > 0) { for (int i = 0; i < obj.Tables[0].Rows.Count; i++) { int acceptcount = 0, dealcount = 0, endcount = 0; double dealrate = 0, endrate = 0; int.TryParse(obj.Tables[0].Rows[i]["acceptcount"].ToString(), out acceptcount); int.TryParse(obj.Tables[0].Rows[i]["dealcount"].ToString(), out dealcount); int.TryParse(obj.Tables[0].Rows[i]["endcount"].ToString(), out endcount); if (acceptcount > 0) { dealrate = double.Parse((dealcount * 100).ToString()) / acceptcount; endrate = double.Parse((endcount * 100).ToString()) / acceptcount; obj.Tables[0].Rows[i]["dealrate"] = dealrate.ToString("f") + "%"; obj.Tables[0].Rows[i]["endrate"] = endrate.ToString("f") + "%"; } } } if (isExport) { var cols = new string[] { "单位名称", "受理数量", "处理量", "结案量", "办理率", "办结率" }; new NPOIHelper().ExportToExcel($"工单报表{sdate}-{edate}", obj.Tables[0], cols); return Success("导出excel"); } return Success("成功", obj); } /// /// 三级单位满意度统计 /// /// /// /// /// public ActionResult GetDept3SatisfiedReport(string sdate, string edate, bool isExport = false, string source = "") { if (string.IsNullOrEmpty(sdate)) { sdate = DateTime.Now.Date.ToString("yyyy-MM-01"); } if (string.IsNullOrEmpty(edate)) { edate = DateTime.Now.Date.ToString("yyyy-MM-dd"); } int deptid = 0; if (User.F_RoleCode != "GLY" && User.F_RoleCode != "SPZ" && User.F_RoleCode != "SPZJZ") { if (User.F_RoleCode == "WLDW" || User.F_RoleCode == "EJWLDW") { deptid = User.F_DeptId; } } Dictionary paras = new Dictionary(); paras.Add("@sdate", sdate); paras.Add("@edate", edate); paras.Add("@deptid", deptid.ToString()); paras.Add("@source", source); var obj = DbHelperSQL.RunProcedure("P_Dept3SatisfiedReport", paras, "Dept3SatisfiedReport"); if (isExport) { string[] cols = new string[] { "单位名称", "处理总量", "满意总量", "不满意总量", "满意度" }; new NPOIHelper().ExportToExcel($"满意度统计报表{Convert.ToDateTime(sdate).ToString("yyyyMMdd")}-{Convert.ToDateTime(edate).ToString("yyyyMMdd")}", obj.Tables[0], cols); return Success("导出excel"); } return Success("成功", obj); } /// /// 三级单位处理效率统计 /// /// /// /// /// public ActionResult GetDept3EfficiencyReport(string sdate, string edate, bool isExport = false, string source = "") { if (string.IsNullOrEmpty(sdate)) { sdate = DateTime.Now.Date.ToString("yyyy-MM-01"); } if (string.IsNullOrEmpty(edate)) { edate = DateTime.Now.Date.ToString("yyyy-MM-dd"); } int deptid = 0; if (User.F_RoleCode != "GLY" && User.F_RoleCode != "SPZ" && User.F_RoleCode != "SPZJZ") { if (User.F_RoleCode == "WLDW" || User.F_RoleCode == "EJWLDW") { deptid = User.F_DeptId; } } Dictionary paras = new Dictionary(); paras.Add("@sdate", sdate); paras.Add("@edate", edate); paras.Add("@deptid", deptid.ToString()); paras.Add("@source", source); var obj = DbHelperSQL.RunProcedure("P_Dept3EfficiencyReport", paras, "Dept3EfficiencyReport"); if (isExport) { string[] cols = new string[] { "单位名称", "处理总量", "及时量", "超时量", "处理及时率" }; NPOIHelper npoi = new NPOIHelper(); if (npoi.ExportToExcel("处理效率统计报表", obj.Tables[0], cols) == "") { return Success("导出成功"); } else { return Error("导出失败"); } } return Success("成功", obj); } public ActionResult GetDept3EfficiencyReport1(string sdate, string edate, bool isExport = false) { if (string.IsNullOrEmpty(sdate)) { sdate = DateTime.Now.Date.ToString("yyyy-MM-01"); } if (string.IsNullOrEmpty(edate)) { edate = DateTime.Now.Date.ToString("yyyy-MM-dd"); } int deptid = 0; if (User.F_RoleCode != "GLY" && User.F_RoleCode != "SPZ" && User.F_RoleCode != "SPZJZ") { if (User.F_RoleCode == "WLDW" || User.F_RoleCode == "EJWLDW") { deptid = User.F_DeptId; } } Dictionary paras = new Dictionary(); paras.Add("@sdate", sdate); paras.Add("@edate", edate); paras.Add("@deptid", deptid.ToString()); var obj = DbHelperSQL.RunProcedure("P_Dept3EfficiencyReport_1", paras, "Dept3EfficiencyReport"); var newSet = new DataSet(); if (obj != null && obj.Tables[0] != null && obj.Tables[0].Rows.Count > 0) { obj.Tables[0].Columns.Add("rate", typeof(decimal)); for (int i = 0; i < obj.Tables[0].Rows.Count; i++) { int completedcount = 0, timelycount = 0, timeoutcount = 0; double timelyrate = 0; int.TryParse(obj.Tables[0].Rows[i]["completedcount"].ToString(), out completedcount); int.TryParse(obj.Tables[0].Rows[i]["timelycount"].ToString(), out timelycount); int.TryParse(obj.Tables[0].Rows[i]["timeoutcount"].ToString(), out timeoutcount); timeoutcount = completedcount - timelycount; obj.Tables[0].Rows[i]["timeoutcount"] = timeoutcount; if (completedcount > 0) { timelyrate = double.Parse((timelycount * 100).ToString()) / completedcount; obj.Tables[0].Rows[i]["timelyrate"] = timelyrate.ToString("f") + "%"; obj.Tables[0].Rows[i]["rate"] = timelyrate; } } obj.Tables[0].DefaultView.Sort = "rate desc"; newSet.Tables.Add(obj.Tables[0].DefaultView.ToTable()); newSet.Tables[0].Columns.Remove("rate"); } if (isExport) { string[] cols = new string[] { "单位名称", "处理总量", "及时量", "超时量", "处理及时率" }; NPOIHelper npoi = new NPOIHelper(); if (npoi.ExportToExcel("处理效率统计报表", newSet.Tables[0], cols) == "") { return Success("导出成功"); } else { return Error("导出失败"); } } return Success("成功", newSet); } #endregion /// /// 单位月统计 /// /// /// /// public ActionResult GetDeptMonthReport(string date, bool isExport = false) { if (string.IsNullOrEmpty(date)) { date = DateTime.Now.Date.ToString("yyyy-MM"); } Dictionary paras = new Dictionary(); paras.Add("@date", date); var obj = DbHelperSQL.RunProcedure("P_DeptMonthReport", paras, "DeptMonthReport"); if (isExport) { var cols = new string[] { "名称", "当月受理数量", "当月处理量", "往月处理量", "当月延期量", "往月延期量", "当月重办量", "往月重办量", "当月结案量", "当月办理率", "当月办结率" }; new NPOIHelper().ExportToExcel($"工单报表{date}", obj.Tables[0], cols); return Success("导出excel"); } return Success("成功", obj); } /// /// 单位办理率统计 /// /// /// /// /// /// /// public ActionResult GetDeptEndRate(string month, int type = 0, bool isExport = false) { string start = "", end = ""; if (month != null) { var date = DateTime.Parse(month + "-01"); start = date.ToString("yyyy-MM-dd"); ; end = date.AddMonths(1).AddDays(-1).ToString("yyyy-MM-dd"); } Dictionary paras = new Dictionary(); paras.Add("@sdate", start); paras.Add("@edate", end); paras.Add("@type", type.ToString()); var obj = DbHelperSQL.RunProcedure("P_DeptEndRateReport", paras, "DeptEndRateReport"); if (isExport) { var cols = new string[] { "单位", "受理数量", "办理数量", "结案数量", "结案率" }; new NPOIHelper().ExportToExcel($"单位办理率统计{month}", obj.Tables[0], cols, 1); return Success("导出excel"); } return Success("成功", obj); } /// /// 工单热点分布 /// /// /// /// /// /// /// /// public ActionResult GetHotspotMap(DateTime? start, DateTime? end, int deptid = 0, int keyid = 0,int sourcearea = 0, int source=0) { if (start == null) { start = DateTime.Now; //start = new DateTime(start.Value.Year, start.Value.Month, 1); start = DateTime.Now.AddDays(-3); } if (end == null) { end = DateTime.Now; } var where = " and ISNUMERIC(F_Longitude)>0 and ISNUMERIC(F_Latitude)>0 "; if (deptid > 0) where += " and F_WorkOrderID in(select F_WorkOrderID from T_Bus_AssignedInfo where F_MainDeptId = '" + deptid + "' and F_IsSure in (0,1) and F_State=1 and F_IsDelete=0 )"; if (keyid > 0) where += " and ','+F_Key+',' like '%," + keyid + ",%' "; if (sourcearea > 0) where += " and F_SourceArea='" + sourcearea+"' "; if (source > 0) where += " and F_InfoSource = '" + source + "' "; string sql = $" and datediff(day,F_CreateTime,'{start.Value.ToString("yyyy-MM-dd")}')<=0 and datediff(day,F_CreateTime,'{end.Value.ToString("yyyy-MM-dd")}')>=0 " + where; var orderlist = workOrderBLL.GetList(" 1=1 "+sql).Tables[0]; var list = new List(); foreach (DataRow dr in orderlist.Rows) { var longitude = dr["F_Longitude"].ToString(); var latitude = dr["F_Latitude"].ToString(); var title= dr["F_ComTitle"].ToString(); var content= dr["F_ComContent"].ToString(); var strobj = new string[] { longitude, latitude, title, content }; list.Add(strobj); } return Success("",list); } #region 20191121 zhengbingbing 新增质检工作统计:工单回访量、回访量、结案量、工单重办量、重办量 public ActionResult GetQualityAssessment(DateTime? start, DateTime? end, bool isExport = false) { if (start == null) { start = DateTime.Now; start = new DateTime(start.Value.Year, start.Value.Month, 1); } if (end == null) { end = DateTime.Now; } Dictionary paras = new Dictionary(); paras.Add("@sdate", start.Value.ToString("yyyy-MM-dd")); paras.Add("@edate", end.Value.ToString("yyyy-MM-dd")); var wherevi = " and F_CreateTime between '"+ start.Value.ToString("yyyy-MM-dd 00:00:00") + "' and '"+ end.Value.ToString("yyyy-MM-dd 23:59:59") + "'"; var whereja = " and F_CloseTime between '" + start.Value.ToString("yyyy-MM-dd 00:00:00") + "' and '" + end.Value.ToString("yyyy-MM-dd 23:59:59") + "'"; string sql = "select '('+F_UserCode+')'+F_UserName 姓名" + ",(select COUNT(1) from(select F_CreateUser, F_WorkOrderId from T_Bus_VisitResult where F_IsDelete = 0 "+ wherevi + " group by F_CreateUser, F_WorkOrderId) t where F_CreateUser = F_UserCode) 工单回访量" + ",(select COUNT(1) from T_Bus_VisitResult where F_IsDelete = 0 " + wherevi + " and F_CreateUser = F_UserCode and F_IsDelete = 0) 回访量" + ",(select COUNT(1) from T_Bus_WorkOrder where F_WorkState = 9 and F_IsDelete = 0 and F_CloseUser = F_UserCode "+ whereja + ") 结案量" + ",(select COUNT(1) from(select F_CreateUser, F_WorkOrderId from T_Bus_Operation where F_IsDelete = 0 "+ wherevi + " and F_State = 11 and F_WorkOrderId in (select F_WorkOrderId from T_Bus_Operation where F_IsDelete = 0 and F_State = 8) group by F_CreateUser,F_WorkOrderId) tt where F_CreateUser = F_UserCode) 工单重办量" + ",(select COUNT(1) from T_Bus_Operation where F_IsDelete = 0 and F_State = 11 and F_CreateUser = F_UserCode " + wherevi + ") 重办量" + " from T_Sys_UserAccount where F_RoleId = 18 and F_DeleteFlag = 0 order by F_UserCode"; var obj = DbHelperSQL.Query(sql); if (isExport) { string[] cols = new string[] { "姓名", "工单回访量", "回访量", "结案量", "工单重办量", "重办量" }; NPOIHelper npoi = new NPOIHelper(); if (npoi.ExportToExcel("质检工作统计报表", obj.Tables[0], cols) == "") { return Success("导出成功"); } else { return Error("导出失败"); } } return Success("成功", obj); } #endregion /// /// /// /// /// /// /// public ActionResult GetAudithandling(DateTime? start, DateTime? end, bool isExport = false) { if (start == null) { start = DateTime.Now; start = new DateTime(start.Value.Year, start.Value.Month, 1); } if (end == null) { end = DateTime.Now; } Dictionary paras = new Dictionary(); paras.Add("@sdate", start.Value.ToString("yyyy-MM-dd")); paras.Add("@edate", end.Value.ToString("yyyy-MM-dd")); var obj = DbHelperSQL.RunProcedure("P_Audithandling", paras, "Audithandling"); if (isExport) { var cols = new string[] { "单位名称", "办理件数量", "退回件数量", "延时件数量","超期未果数量" }; new NPOIHelper().ExportToExcel($"审核办理工单统计{Convert.ToDateTime(start).ToString("yyyyMMdd")}-{Convert.ToDateTime(end).ToString("yyyyMMdd")}", obj.Tables[0], cols); return Success("导出excel"); } return Success("成功", obj); } } }