VisitLogController.cs 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293
  1. using Cksoft.Data;
  2. using Cksoft.Data.Repository;
  3. using Cksoft.Unity;
  4. using DllEapCommon.Base;
  5. using DllEapCommon.NPOI;
  6. using DllUfpDal;
  7. using DllUfpEntity;
  8. using DllUfpEntity.Dto;
  9. using Microsoft.AspNetCore.Authorization;
  10. using Microsoft.AspNetCore.Mvc;
  11. using System;
  12. using System.Collections.Generic;
  13. using System.Data;
  14. using System.IO;
  15. using System.Linq;
  16. using System.Text;
  17. using System.Threading.Tasks;
  18. namespace DllUfpBll
  19. {
  20. [Route("ufp/api/[controller]/[action]")]
  21. [ApiController]
  22. public class VisitLogController : ControllerBase
  23. {
  24. [HttpPost]
  25. public UfpResponse<int> LogInfo([FromBody] Dictionary<string, string> dic)
  26. {
  27. string url = dic["url"];
  28. // string usercode = Request.Headers["usercode"]; //
  29. string usercode = dic["userCode"];
  30. var res = new UfpResponse<int> { Code = 1, Msg = string.Empty };
  31. var log = new VisitLogDto
  32. {
  33. Url = url,
  34. UserCode = usercode
  35. };
  36. using (IDatabase db = DbFactory.Base("ufp"))
  37. {
  38. var dal = new VisitLogDal(db);
  39. db.BeginTrans();
  40. if (dal.Log(log) > 0)
  41. {
  42. db.Commit();
  43. }
  44. else
  45. {
  46. db.Rollback();
  47. }
  48. return res;
  49. }
  50. }
  51. public EapResponse GetVisitLogsByDate(DateTime? startTime, DateTime? endTime)
  52. {
  53. using (IDatabase db = DbFactory.Base("ufp"))
  54. {
  55. var dal = new VisitLogDal(db);
  56. var dt = dal.GetVisitLogTable(startTime.Value, endTime.Value);
  57. return new EapResponse
  58. {
  59. Code = 1,
  60. Msg = string.Empty,
  61. Data = dt
  62. };
  63. }
  64. }
  65. [HttpPost]
  66. public async Task<IActionResult> ExportVisitLogsByDate(IDictionary<string, string> filterInfo)
  67. {
  68. DateTime startTime=DateTime.Now.AddDays(-1), endTime=DateTime.Now;
  69. if (filterInfo.ContainsKey("startTime"))
  70. {
  71. startTime = Convert.ToDateTime(filterInfo["startTime"]);
  72. }
  73. if (filterInfo.ContainsKey("endTime"))
  74. {
  75. endTime = Convert.ToDateTime(filterInfo["endTime"]);
  76. }
  77. using (IDatabase db = DbFactory.Base("ufp"))
  78. {
  79. var dal = new VisitLogDal(db);
  80. var dt = dal.GetVisitLogTable(startTime, endTime);
  81. var book = DataExportHelper.ExportVisit(dt);
  82. MemoryStream ms = new MemoryStream();
  83. ms.Position = 0;
  84. book.Write(ms);
  85. ms.Dispose();
  86. ms.Close();
  87. await Task.CompletedTask;
  88. return File(ms.ToArray(), "application/octet-stream");
  89. }
  90. }
  91. public LayuiModel<VisitLogAnalysisDto> GetStaffVisitLogs(string filter, string subFilter,
  92. string sort, int pageIndex = 1, int pageSize = 20)
  93. {
  94. var sortField = "count";
  95. var sortOrder = "descend";
  96. if (!string.IsNullOrEmpty(sort))
  97. {
  98. var arr = sort.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
  99. if (arr != null && arr.Length > 0)
  100. {
  101. sortField = arr[0];
  102. sortOrder = arr[1];
  103. }
  104. }
  105. if (sortOrder == "descend")
  106. {
  107. sortOrder = "desc";
  108. }
  109. else
  110. {
  111. sortOrder = "asc";
  112. }
  113. int start, end;
  114. start = (pageIndex - 1) * pageSize + 1;
  115. int total;
  116. using (IDatabase db = DbFactory.Base("ufp"))
  117. {
  118. var dal = new VisitLogDal(db);
  119. var list = dal.GetStaffVisitLog(filter, subFilter, start, pageSize, out total,
  120. sortField, sortOrder);
  121. var extra = dal.GetTotalInfo(filter, subFilter);
  122. return new LayuiModel<VisitLogAnalysisDto>
  123. {
  124. code = 0,
  125. count = total,
  126. data = list,
  127. extraObject = extra
  128. };
  129. }
  130. }
  131. public LayuiModel<VisitLogAnalysisDto> GetReportVisitLogs(string filter, string subFilter,
  132. string sort, int pageIndex = 1, int pageSize = 20)
  133. {
  134. var sortField = "count";
  135. var sortOrder = "descend";
  136. if (!string.IsNullOrEmpty(sort))
  137. {
  138. var arr = sort.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
  139. if (arr != null && arr.Length > 0)
  140. {
  141. sortField = arr[0];
  142. sortOrder = arr[1];
  143. }
  144. }
  145. if (sortOrder == "descend")
  146. {
  147. sortOrder = "desc";
  148. }
  149. else
  150. {
  151. sortOrder = "asc";
  152. }
  153. int start;
  154. start = (pageIndex - 1) * pageSize + 1;
  155. int total;
  156. using (IDatabase db = DbFactory.Base("ufp"))
  157. {
  158. var dal = new VisitLogDal(db);
  159. var list = dal.GetReportVisitLog(filter, subFilter, start, pageSize, out total,
  160. sortField, sortOrder);
  161. var extra = dal.GetReportTotalInfo(filter, subFilter);
  162. return new LayuiModel<VisitLogAnalysisDto>
  163. {
  164. code = 0,
  165. count = total,
  166. data = list,
  167. extraObject = extra
  168. };
  169. }
  170. }
  171. public EapResponse GetStaffReportLogs(string filter, string subFilter)
  172. {
  173. using (IDatabase db = DbFactory.Base("ufp"))
  174. {
  175. var dal = new VisitLogDal(db);
  176. var dt = dal.GetStaffReportLogs(filter, subFilter);
  177. return new EapResponse
  178. {
  179. Code = 1,
  180. Data = dt
  181. };
  182. }
  183. }
  184. [HttpPost]
  185. public IActionResult ExportReportLogs([FromBody] StExportModel exportModel)
  186. {
  187. string errorinfo = string.Empty;
  188. int total = 0;
  189. using (IDatabase db = DbFactory.Base("ufp"))
  190. {
  191. var dal = new VisitLogDal(db);
  192. var data = dal.GetReportVisitLog(exportModel.Filter, exportModel.SubFilter, 1, 100000, out total, "count", "desc");
  193. if (data == null)
  194. {
  195. return null;
  196. }
  197. var sumData = dal.GetReportTotalInfo(exportModel.Filter, exportModel.SubFilter);
  198. var sumRow = new SumRow { ColSpan = 2, RowName = sumData.StaffName, RowValues = new string[] { sumData.Count.ToString() } };
  199. var stSchema = exportModel.StSchema;
  200. stSchema.SumRow = sumRow;
  201. stSchema.ShowFooter = true;
  202. var buffer = DataExportHelper.EntityToExcel(stSchema,
  203. data, ref errorinfo);
  204. if (buffer == null)
  205. {
  206. return null;
  207. }
  208. MemoryStream ms = new MemoryStream();
  209. ms.Position = 0;
  210. ms.Write(buffer, 0, buffer.Length);
  211. ms.Dispose();
  212. ms.Close();
  213. return File(buffer, "application/octet-stream");
  214. }
  215. }
  216. [HttpPost]
  217. public IActionResult ExportStaffLogs([FromBody] StExportModel exportModel)
  218. {
  219. string errorinfo = string.Empty;
  220. int total = 0;
  221. using (IDatabase db = DbFactory.Base("ufp"))
  222. {
  223. var dal = new VisitLogDal(db);
  224. var data = dal.GetStaffVisitLog(exportModel.Filter, exportModel.SubFilter, 1, 100000, out total)
  225. .OrderByDescending(c => c.Count);
  226. if (data == null)
  227. {
  228. return null;
  229. }
  230. var sumData = dal.GetTotalInfo(exportModel.Filter, exportModel.SubFilter);
  231. var sumRow = new SumRow { ColSpan = 6, RowName = sumData.StaffName, RowValues = new string[] { sumData.Count.ToString() } };
  232. var stSchema = exportModel.StSchema;
  233. stSchema.SumRow = sumRow;
  234. stSchema.ShowFooter = true;
  235. var buffer = DataExportHelper.EntityToExcel(stSchema,
  236. data, ref errorinfo);
  237. if (buffer == null)
  238. {
  239. return null;
  240. }
  241. MemoryStream ms = new MemoryStream();
  242. ms.Position = 0;
  243. ms.Write(buffer, 0, buffer.Length);
  244. ms.Dispose();
  245. ms.Close();
  246. return File(buffer, "application/octet-stream");
  247. }
  248. }
  249. [HttpPost]
  250. public IActionResult ExportStaffVisitLogs([FromBody] StExportModel exportModel)
  251. {
  252. string errorinfo = string.Empty;
  253. int total = 0;
  254. using (IDatabase db = DbFactory.Base("ufp"))
  255. {
  256. var dal = new VisitLogDal(db);
  257. var data = dal.GetStaffVisitLog(exportModel.Filter, exportModel.SubFilter, 1, 100000, out total, "count", "desc");
  258. if (data == null)
  259. {
  260. return null;
  261. }
  262. var sumData = dal.GetTotalInfo(exportModel.Filter, exportModel.SubFilter);
  263. var sumRow = new SumRow { ColSpan = 3, RowName = sumData.StaffName, RowValues = new string[] { sumData.Count.ToString() } };
  264. var stSchema = exportModel.StSchema;
  265. stSchema.SumRow = sumRow;
  266. stSchema.ShowFooter = true;
  267. var buffer = DataExportHelper.EntityToExcel(stSchema,
  268. data, ref errorinfo);
  269. if (buffer == null)
  270. {
  271. return null;
  272. }
  273. MemoryStream ms = new MemoryStream();
  274. ms.Position = 0;
  275. ms.Write(buffer, 0, buffer.Length);
  276. ms.Dispose();
  277. ms.Close();
  278. return File(buffer, "application/octet-stream");
  279. }
  280. }
  281. }
  282. }