思念食品API

ZuoXiTongHuaController.cs 12KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265
  1. using CallCenter.Utility;
  2. using CallCenterApi.DB;
  3. using CallCenterApi.Interface.Controllers.Base;
  4. using System;
  5. using System.Collections.Generic;
  6. using System.Data;
  7. using System.Linq;
  8. using System.Web;
  9. using System.Web.Mvc;
  10. namespace CallCenterApi.Interface.Controllers.report
  11. {
  12. // [Authority]
  13. public class ZuoXiTongHuaController : BaseController
  14. {
  15. //坐席日通话时长
  16. //获取表头
  17. public ActionResult GetColumnList()
  18. {
  19. if (Request.IsAuthenticated)
  20. {
  21. String[] str = { "坐席人员", "通话总时长(小时)", "呼出通话总时长(小时)"
  22. , "呼出通话占比", "呼入通话总时长", "呼入通话占比"
  23. ,"平均日呼入通话时长(小时)","平均日呼出通话时长(小时)"
  24. };
  25. return Success("获取坐席日通话时长统计表头成功", str);
  26. }
  27. return NoToken("未知错误,请重新登录");
  28. }
  29. //获取数据
  30. public ActionResult GetDataList(string stime, string endtime)
  31. {
  32. if (Request.IsAuthenticated)
  33. {
  34. int userId = CurrentUser.UserData.F_UserId;
  35. Model.T_Sys_UserAccount userModel = new BLL.T_Sys_UserAccount().GetModel(userId);
  36. DataTable dtNew = new DataTable();
  37. dtNew = getData(stime, endtime, userModel.F_SeartGroupID.Value);
  38. return Success("获取坐席日通话时长统计数据成功", dtNew);
  39. }
  40. return NoToken("未知错误,请重新登录");
  41. }
  42. //导出数据
  43. public ActionResult ExptList(string stime, string endtime)
  44. {
  45. if (Request.IsAuthenticated)
  46. {
  47. int userId = CurrentUser.UserData.F_UserId;
  48. Model.T_Sys_UserAccount userModel = new BLL.T_Sys_UserAccount().GetModel(userId);
  49. NPOIHelper npoi = new NPOIHelper();
  50. DataTable dt = getData(stime, endtime, userModel.F_SeartGroupID.Value);
  51. if (npoi.ExportToExcel("坐席日通话时长数据", dt) == "")
  52. {
  53. return Success("导出成功");
  54. }
  55. else
  56. {
  57. return Error("导出失败");
  58. }
  59. }
  60. return NoToken("未知错误,请重新登录");
  61. }
  62. /// <summary>
  63. /// 2018-05-03 lihai 修改用户条件
  64. /// </summary>
  65. /// <param name="stime"></param>
  66. /// <param name="endtime"></param>
  67. /// <returns></returns>
  68. private DataTable getData(string stime, string endtime, int dpt)
  69. {
  70. DataTable dtNew = new DataTable();
  71. #region
  72. DataColumn dc1 = new DataColumn("坐席人员");
  73. DataColumn dc2 = new DataColumn("通话总时长");
  74. DataColumn dc3 = new DataColumn("呼出通话总时长");
  75. DataColumn dc4 = new DataColumn("呼出通话占比");
  76. DataColumn dc5 = new DataColumn("呼入通话总时长");
  77. DataColumn dc6 = new DataColumn("呼入通话占比");
  78. DataColumn dc7 = new DataColumn("平均日呼入通话时长");
  79. DataColumn dc8 = new DataColumn("平均日呼出通话时长");
  80. dtNew.Columns.Add(dc1);
  81. dtNew.Columns.Add(dc2);
  82. dtNew.Columns.Add(dc3);
  83. dtNew.Columns.Add(dc4);
  84. dtNew.Columns.Add(dc5);
  85. dtNew.Columns.Add(dc6);
  86. dtNew.Columns.Add(dc7);
  87. dtNew.Columns.Add(dc8);
  88. #endregion
  89. string sqltimeCallRecords = "";
  90. if (stime != null && stime.Trim() != "")
  91. {
  92. sqltimeCallRecords += " and CONVERT(varchar , BeginTime, 120)>=CONVERT(varchar , '" + stime.Trim() + " 00:00:01', 120) ";
  93. }
  94. if (endtime != null && endtime.Trim() != "")
  95. {
  96. sqltimeCallRecords += " and CONVERT(varchar , BeginTime, 120)<=CONVERT(varchar , '" + endtime.Trim() + " 23:59:59', 120) ";
  97. }
  98. double zong1 = 0;
  99. double zong2 = 0;
  100. double zong3 = 0;
  101. double day = 0;
  102. Double sumshuchu = 0;
  103. Double sumshuru = 0;
  104. if (stime != null && endtime != null && endtime.Trim() != "" && stime.Trim() != "")
  105. {
  106. TimeSpan time = Convert.ToDateTime(endtime) - Convert.ToDateTime(stime);
  107. day = time.Days + 1;
  108. }
  109. DataTable dt = new DataTable();
  110. //2018-05-03 lihai 修改用户条件
  111. //string sql = "SELECT *,(SELECT sum(TalkLongTime) FROM T_Call_CallRecords where UserId=T_Sys_UserAccount.F_Userid " + sqltimeCallRecords + ") as counts from T_Sys_UserAccount where F_RoleId in(1,28,29) order by counts desc ";
  112. //2018-07-06 lihai 部门搜索条件
  113. var sqlUser = "";
  114. if (dpt != 0)
  115. {
  116. sqlUser += " and F_SeartGroupID = '" + dpt + "' ";
  117. }
  118. string sql = "SELECT *,(SELECT sum(TalkLongTime) FROM T_Call_CallRecords where UserId=T_Sys_UserAccount.F_Userid " + sqltimeCallRecords + ") as counts from T_Sys_UserAccount where f_seatFlag=1 and F_WorkNumber!='' " + sqlUser + " order by counts desc ";
  119. dt = DbHelperSQL.Query(sql).Tables[0];
  120. for (int i = 0; i < dt.Rows.Count; i++)
  121. {
  122. DataRow drNew = dtNew.NewRow();
  123. sql = "SELECT (SELECT sum(TalkLongTime) FROM T_Call_CallRecords where UserId=" + dt.Rows[i]["F_UserId"].ToString() + "" + sqltimeCallRecords + ") as sums,";
  124. sql += "(SELECT sum(TalkLongTime) FROM T_Call_CallRecords where UserId=" + dt.Rows[i]["F_UserId"].ToString() + " and CallType=0" + sqltimeCallRecords + ") as sumshuru,";
  125. sql += "(SELECT sum(TalkLongTime) FROM T_Call_CallRecords where UserId=" + dt.Rows[i]["F_UserId"].ToString() + " and CallType=1" + sqltimeCallRecords + ") as sumshuchu";
  126. DataTable dt1 = new DataTable();
  127. dt1 = DbHelperSQL.Query(sql).Tables[0];
  128. object sumsobj = 0;
  129. if (dt1.Rows[0]["sums"] == null || dt1.Rows[0]["sums"].ToString() == "" || dt1.Rows[0]["sums"].ToString() == "0")
  130. {
  131. //continue;
  132. }
  133. else {
  134. sumsobj = dt1.Rows[0]["sums"];
  135. }
  136. drNew["坐席人员"] = dt.Rows[i]["F_UserName"].ToString();
  137. //drNew["通话总时长"] = (Convert.ToDouble(dt1.Rows[0]["sums"]) / 3600).ToString("f2");
  138. //drNew["通话总时长"] = (Convert.ToDouble(sumsobj) / 3600).ToString("0.0000");
  139. drNew["通话总时长"] = CallCenter.Utility.DateTimeConvert.parseTimeSeconds(Convert.ToInt32(sumsobj), 0);
  140. Double sums = 0;
  141. if (sumsobj != null && sumsobj.ToString() != "")
  142. {
  143. zong1 += Convert.ToInt32(sumsobj);
  144. sums = Convert.ToInt32(sumsobj);
  145. }
  146. if (dt1.Rows[0]["sumshuchu"] == null || dt1.Rows[0]["sumshuchu"].ToString() == "")
  147. {
  148. drNew["呼出通话总时长"] = "0";
  149. }
  150. else
  151. {
  152. //drNew["呼出通话总时长"] = (Convert.ToDouble(dt1.Rows[0]["sumshuchu"]) / 3600).ToString("0.0000");
  153. drNew["呼出通话总时长"] = CallCenter.Utility.DateTimeConvert.parseTimeSeconds(Convert.ToInt32(dt1.Rows[0]["sumshuchu"]), 0);
  154. }
  155. sumshuchu = 0;
  156. if (dt1.Rows[0]["sumshuchu"] != null && dt1.Rows[0]["sumshuchu"].ToString() != "")
  157. {
  158. zong2 += Convert.ToInt32(dt1.Rows[0]["sumshuchu"]);
  159. sumshuchu = Convert.ToInt32(dt1.Rows[0]["sumshuchu"]);
  160. }
  161. if (sums == 0)
  162. {
  163. drNew["呼出通话占比"] = "0.00" + "%";
  164. }
  165. else
  166. {
  167. drNew["呼出通话占比"] = (sumshuchu / sums * 100).ToString("f2") + "%";
  168. }
  169. if (dt1.Rows[0]["sumshuru"] == null || dt1.Rows[0]["sumshuru"].ToString() == "")
  170. {
  171. drNew["呼入通话总时长"] = "0";
  172. }
  173. else
  174. {
  175. //drNew["呼入通话总时长"] = (Convert.ToDouble(dt1.Rows[0]["sumshuru"]) / 3600).ToString("0.0000");
  176. drNew["呼入通话总时长"] = CallCenter.Utility.DateTimeConvert.parseTimeSeconds(Convert.ToInt32(dt1.Rows[0]["sumshuru"]), 0);
  177. }
  178. sumshuru = 0;
  179. if (dt1.Rows[0]["sumshuru"] != null && dt1.Rows[0]["sumshuru"].ToString() != "")
  180. {
  181. zong3 += Convert.ToInt32(dt1.Rows[0]["sumshuru"]);
  182. sumshuru = Convert.ToInt32(dt1.Rows[0]["sumshuru"]);
  183. }
  184. if (sums == 0)
  185. {
  186. drNew["呼入通话占比"] = "0.00" + "%";
  187. }
  188. else
  189. {
  190. drNew["呼入通话占比"] = (sumshuru / sums * 100).ToString("f2") + "%";
  191. }
  192. if (day == 0)
  193. {
  194. drNew["平均日呼入通话时长"] = "0";
  195. drNew["平均日呼出通话时长"] = "0";
  196. }
  197. else
  198. {
  199. //drNew["平均日呼入通话时长"] = (sumshuru / day ).ToString("0.0000");
  200. //drNew["平均日呼出通话时长"] = (sumshuchu / day).ToString("0.0000");
  201. drNew["平均日呼入通话时长"] = CallCenter.Utility.DateTimeConvert.parseTimeSeconds(Convert.ToInt32(sumshuru / day), 0);
  202. drNew["平均日呼出通话时长"] = CallCenter.Utility.DateTimeConvert.parseTimeSeconds(Convert.ToInt32(sumshuchu / day), 0);
  203. }
  204. dtNew.Rows.Add(drNew);
  205. }
  206. DataRow drzj = dtNew.NewRow();
  207. drzj["坐席人员"] = "总计";
  208. //drzj["通话总时长"] = (zong1 / 3600).ToString("0.0000");
  209. //drzj["呼出通话总时长"] = (zong2 / 3600).ToString("0.0000");
  210. drzj["通话总时长"] = CallCenter.Utility.DateTimeConvert.parseTimeSeconds(Convert.ToInt32(zong1), 0);
  211. drzj["呼出通话总时长"] = CallCenter.Utility.DateTimeConvert.parseTimeSeconds(Convert.ToInt32(zong2), 0);
  212. if (zong1 == 0 || zong2 == 0)
  213. {
  214. drzj["呼出通话占比"] = "0.00" + "%";
  215. }
  216. else
  217. {
  218. drzj["呼出通话占比"] = (Convert.ToDouble(zong2 / zong1) * 100).ToString("f2") + "%";
  219. }
  220. //drzj["呼入通话总时长"] = (zong3 / 3600).ToString("0.0000");
  221. drzj["呼入通话总时长"] = CallCenter.Utility.DateTimeConvert.parseTimeSeconds(Convert.ToInt32(zong3), 0);
  222. if (zong1 == 0 || zong3 == 0)
  223. {
  224. drzj["呼入通话占比"] = "0.00" + "%";
  225. }
  226. else
  227. {
  228. drzj["呼入通话占比"] = (Convert.ToDouble(zong3 / zong1) * 100).ToString("f2") + "%";
  229. }
  230. if (day == 0)
  231. {
  232. drzj["平均日呼入通话时长"] = "0";
  233. drzj["平均日呼出通话时长"] = "0";
  234. }
  235. else
  236. {
  237. //drzj["平均日呼入通话时长"] = (zong3 / day / 3600).ToString("0.0000");
  238. //drzj["平均日呼出通话时长"] = (zong2 / day / 3600).ToString("0.0000");
  239. drzj["平均日呼入通话时长"] = CallCenter.Utility.DateTimeConvert.parseTimeSeconds(Convert.ToInt32(zong3 / day), 0);
  240. drzj["平均日呼出通话时长"] = CallCenter.Utility.DateTimeConvert.parseTimeSeconds(Convert.ToInt32(zong2 / day), 0);
  241. }
  242. dtNew.Rows.Add(drzj);
  243. return dtNew;
  244. }
  245. }
  246. }