Geen omschrijving

TotalCallController.cs 13KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284
  1. using CallCenter.Utility;
  2. using CallCenterApi.Interface.Controllers.Base;
  3. using System;
  4. using System.Collections;
  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 TotalCallController : BaseController
  14. {
  15. BLL.T_Call_CallRecords bll = new BLL.T_Call_CallRecords();
  16. //总呼叫量统计
  17. //获取表头
  18. public ActionResult GetColumnList()
  19. {
  20. ActionResult res = NoToken("未知错误,请重新登录");
  21. if (Request.IsAuthenticated)
  22. {
  23. String[] str = { "月份", "日期", "总数" };
  24. res = Success("获取总呼叫量统计表头成功", str);
  25. }
  26. return res;
  27. }
  28. //获取数据
  29. public ActionResult GetDataList(string years, string dpt)
  30. {
  31. ActionResult res = NoToken("未知错误,请重新登录");
  32. if (Request.IsAuthenticated)
  33. {
  34. DataTable dtNew = new DataTable();
  35. #region
  36. DataColumn dc1 = new DataColumn("月份", Type.GetType("System.String"));
  37. DataColumn dc2 = new DataColumn("日期", Type.GetType("System.String"));
  38. DataColumn dc3 = new DataColumn("总数", Type.GetType("System.String"));
  39. DataColumn dc4 = new DataColumn("Count", Type.GetType("System.String"));
  40. dtNew.Columns.Add(dc1);
  41. dtNew.Columns.Add(dc2);
  42. dtNew.Columns.Add(dc3);
  43. dtNew.Columns.Add(dc4);
  44. #endregion
  45. var sql = "";
  46. if (dpt != null && dpt.Trim() != "")
  47. {
  48. sql += $" AND UserCode IN (SELECT F_UserCode FROM dbo.T_Sys_UserAccount WHERE F_DeptId = {dpt} AND f_seatFlag=1 and F_WorkNumber!='') ";
  49. }
  50. //DataTable dt = new BLL.T_Call_CallRecords().GetList("1=1").Tables[0];
  51. var list = bll.DataTableToList(bll.GetList($" 1=1 {sql} ").Tables[0]);
  52. DateTime dtNow;
  53. int Count = 0;
  54. int DayCount = 0;
  55. if (string.IsNullOrEmpty(years))
  56. {
  57. dtNow = DateTime.Now;
  58. }
  59. else
  60. {
  61. dtNow = DateTime.Parse(years + "年");
  62. }
  63. int monthcount = 0;
  64. for (int i = 1; i <= 12; i++)
  65. {
  66. DataRow drNew = dtNew.NewRow();
  67. DateTime beginTime = Convert.ToDateTime(dtNow.Year + "-" + i + "-01 00:00:00");
  68. int days = DateTime.DaysInMonth(dtNow.Year, beginTime.Month);
  69. //DataRow[] dtRow = dt.Select("begintime >='" + beginTime.ToString() + "' and beginTime<'" + beginTime.AddDays(days).AddSeconds(-1) + "'");
  70. var listByTime = list.Where(x => x.BeginTime >= Convert.ToDateTime(beginTime.ToString()) && x.BeginTime < beginTime.AddDays(days).AddSeconds(-1));
  71. //if (dtRow.Length > 0)
  72. if(listByTime.Count()>0)
  73. {
  74. //Count += dtRow.Length;
  75. Count += listByTime.Count();
  76. for (int j = 1; j <= days; j++)
  77. {
  78. DataRow dr1 = dtNew.NewRow();
  79. //if (dtRow.CopyToDataTable().Select("begintime >='" + beginTime.AddDays(j - 1) + "' and beginTime<'" + beginTime.AddDays(j).AddSeconds(-1) + "'").Length > 0)
  80. if(listByTime.Where(x=>x.BeginTime>=beginTime.AddDays(j-1) && x.BeginTime<beginTime.AddDays(j).AddSeconds(-1)).Count()>0)
  81. {
  82. DayCount += 1;
  83. dr1["月份"] = beginTime.Month + "月";
  84. dr1["日期"] = beginTime.AddDays(j - 1).ToShortDateString();
  85. // dr1["总数"] = dtRow.CopyToDataTable().Select("begintime >='" + beginTime.AddDays(j - 1) + "' and beginTime<'" + beginTime.AddDays(j).AddSeconds(-1) + "'").Length;
  86. dr1["总数"] = listByTime.Where(x => x.BeginTime >= beginTime.AddDays(j - 1) && x.BeginTime < beginTime.AddDays(j).AddSeconds(-1)).Count();
  87. dr1["Count"] = "1";
  88. dtNew.Rows.Add(dr1);
  89. }
  90. }
  91. if (DayCount != 0)
  92. {
  93. drNew["月份"] = beginTime.Month + "月";
  94. drNew["日期"] = "总计";
  95. //drNew["总数"] = dtRow.Length;
  96. drNew["总数"] = listByTime.Count();
  97. drNew["Count"] = DayCount.ToString();
  98. dtNew.Rows.Add(drNew);
  99. }
  100. DayCount = 0;
  101. monthcount += 1;
  102. }
  103. }
  104. if (monthcount != 0)
  105. {
  106. DataRow drzj = dtNew.NewRow();
  107. drzj["月份"] = dtNow.Year + "年";
  108. drzj["日期"] = "总计";
  109. drzj["总数"] = Count;
  110. drzj["Count"] = monthcount.ToString();
  111. dtNew.Rows.Add(drzj);
  112. }
  113. res = Success("获取呼叫量数据成功", dtNew);
  114. }
  115. return res;
  116. }
  117. private DataTable GetData(string years, string dpt)
  118. {
  119. DataTable dtNew = new DataTable();
  120. try {
  121. #region
  122. DataColumn dc1 = new DataColumn("月份", Type.GetType("System.String"));
  123. DataColumn dc2 = new DataColumn("日期", Type.GetType("System.String"));
  124. DataColumn dc3 = new DataColumn("总数", Type.GetType("System.String"));
  125. dtNew.Columns.Add(dc1);
  126. dtNew.Columns.Add(dc2);
  127. dtNew.Columns.Add(dc3);
  128. #endregion
  129. var sql = "";
  130. if (dpt != null && dpt.Trim() != "")
  131. {
  132. sql += $" AND UserCode IN (SELECT F_UserCode FROM dbo.T_Sys_UserAccount WHERE F_DeptId = {dpt} AND f_seatFlag=1 and F_WorkNumber!='') ";
  133. }
  134. //DataTable dt = new BLL.T_Call_CallRecords().GetList("1=1").Tables[0];
  135. var list = bll.DataTableToList(bll.GetList($" 1=1 {sql} ").Tables[0]);
  136. DateTime dtNow;
  137. int Count = 0;
  138. int DayCount = 0;
  139. if (string.IsNullOrEmpty(years))
  140. {
  141. dtNow = DateTime.Now;
  142. }
  143. else
  144. {
  145. dtNow = DateTime.Parse(years + "年");
  146. }
  147. int monthcount = 0;
  148. for (int i = 1; i <= 12; i++)
  149. {
  150. DataRow drNew = dtNew.NewRow();
  151. DateTime beginTime = Convert.ToDateTime(dtNow.Year + "-" + i + "-01 00:00:00");
  152. int days = DateTime.DaysInMonth(dtNow.Year, beginTime.Month);
  153. //DataRow[] dtRow = dt.Select("begintime >='" + beginTime.ToString() + "' and beginTime<'" + beginTime.AddDays(days).AddSeconds(-1) + "'");
  154. var listByTime = list.Where(x => x.BeginTime >= Convert.ToDateTime(beginTime.ToString()) && x.BeginTime < beginTime.AddDays(days).AddSeconds(-1));
  155. //if (dtRow.Length > 0)
  156. if (listByTime.Count() > 0)
  157. {
  158. //Count += dtRow.Length;
  159. Count += listByTime.Count();
  160. for (int j = 1; j <= days; j++)
  161. {
  162. DataRow dr1 = dtNew.NewRow();
  163. //if (dtRow.CopyToDataTable().Select("begintime >='" + beginTime.AddDays(j - 1) + "' and beginTime<'" + beginTime.AddDays(j).AddSeconds(-1) + "'").Length > 0)
  164. if (listByTime.Where(x => x.BeginTime >= beginTime.AddDays(j - 1) && x.BeginTime < beginTime.AddDays(j).AddSeconds(-1)).Count() > 0)
  165. {
  166. DayCount += 1;
  167. dr1["月份"] = beginTime.Month + "月";
  168. dr1["日期"] = beginTime.AddDays(j - 1).ToShortDateString();
  169. //dr1["总数"] = dtRow.CopyToDataTable().Select("begintime >='" + beginTime.AddDays(j - 1) + "' and beginTime<'" + beginTime.AddDays(j).AddSeconds(-1) + "'").Length;
  170. dr1["总数"] = listByTime.Where(x => x.BeginTime >= beginTime.AddDays(j - 1) && x.BeginTime < beginTime.AddDays(j).AddSeconds(-1)).Count();
  171. dtNew.Rows.Add(dr1);
  172. }
  173. }
  174. if (DayCount != 0)
  175. {
  176. drNew["月份"] = beginTime.Month + "月";
  177. drNew["日期"] = "总计";
  178. //drNew["总数"] = dtRow.Length;
  179. drNew["总数"] = listByTime.Count();
  180. dtNew.Rows.Add(drNew);
  181. }
  182. DayCount = 0;
  183. monthcount += 1;
  184. }
  185. }
  186. if (monthcount != 0)
  187. {
  188. DataRow drzj = dtNew.NewRow();
  189. drzj["月份"] = dtNow.Year + "年";
  190. drzj["日期"] = "总计";
  191. drzj["总数"] = Count;
  192. dtNew.Rows.Add(drzj);
  193. }
  194. }
  195. catch (Exception ex)
  196. { }
  197. return dtNew;
  198. }
  199. public ActionResult ExptList(string years, string dpt)
  200. {
  201. ActionResult res = NoToken("未知错误,请重新登录");
  202. if (Request.IsAuthenticated)
  203. {
  204. NPOIHelper npoi = new NPOIHelper();
  205. DataTable dt = GetData(years, dpt);
  206. if (npoi.ExportToExcel("总呼叫量数据", dt) == "")
  207. {
  208. return Success("导出成功");
  209. }
  210. else
  211. {
  212. return Error("导出失败");
  213. }
  214. }
  215. return res;
  216. }
  217. //获取图形数据
  218. public ActionResult GetChartData(string years, string dpt)
  219. {
  220. ActionResult res = NoToken("未知错误,请重新登录");
  221. if (Request.IsAuthenticated)
  222. {
  223. string[] arr=new string[12];
  224. var sql = "";
  225. if (dpt != null && dpt.Trim() != "")
  226. {
  227. sql += $" AND UserCode IN (SELECT F_UserCode FROM dbo.T_Sys_UserAccount WHERE F_DeptId = {dpt} AND f_seatFlag=1 and F_WorkNumber!='') ";
  228. }
  229. //DataTable dt = new BLL.T_Call_CallRecords().GetList("1=1").Tables[0];
  230. var list = bll.DataTableToList(bll.GetList($" 1=1 {sql} ").Tables[0]);
  231. DateTime dtNow;
  232. if (string.IsNullOrEmpty(years))
  233. {
  234. dtNow = DateTime.Now;
  235. }
  236. else
  237. {
  238. dtNow = DateTime.Parse(years + "年");
  239. }
  240. for (int i = 1; i <= 12; i++)
  241. {
  242. DateTime beginTime = Convert.ToDateTime(dtNow.Year + "-" + i + "-01 00:00:00");
  243. int days = DateTime.DaysInMonth(dtNow.Year, beginTime.Month);
  244. //DataRow[] dtRow = dt.Select("begintime >='" + beginTime.ToString() + "' and beginTime<'" + beginTime.AddDays(days).AddSeconds(-1) + "'");
  245. var listByTime = list.Where(x => x.BeginTime >= Convert.ToDateTime(beginTime.ToString()) && x.BeginTime < beginTime.AddDays(days).AddSeconds(-1));
  246. //if (dtRow.Length > 0)
  247. if (listByTime.Count() > 0)
  248. {
  249. //arr[i-1] = dtRow.Length.ToString();
  250. arr[i-1] = listByTime.Count().ToString();
  251. }
  252. else
  253. {
  254. arr[i-1] = "0";
  255. }
  256. }
  257. res = Success("获取呼叫量图形数据成功", arr);
  258. }
  259. return res;
  260. }
  261. }
  262. }