using Cksoft.Data; using Cksoft.Data.Repository; using Cksoft.Unity; using DllEapCommon.Base; using DllEapCommon.NPOI; using DllUfpDal; using DllUfpEntity; using DllUfpEntity.Dto; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using System; using System.Collections.Generic; using System.Data; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; namespace DllUfpBll { [Route("ufp/api/[controller]/[action]")] [ApiController] public class VisitLogController : ControllerBase { [HttpPost] public UfpResponse LogInfo([FromBody] Dictionary dic) { string url = dic["url"]; // string usercode = Request.Headers["usercode"]; // string usercode = dic["userCode"]; var res = new UfpResponse { Code = 1, Msg = string.Empty }; var log = new VisitLogDto { Url = url, UserCode = usercode }; using (IDatabase db = DbFactory.Base("ufp")) { var dal = new VisitLogDal(db); db.BeginTrans(); if (dal.Log(log) > 0) { db.Commit(); } else { db.Rollback(); } return res; } } public EapResponse GetVisitLogsByDate(DateTime? startTime, DateTime? endTime) { using (IDatabase db = DbFactory.Base("ufp")) { var dal = new VisitLogDal(db); var dt = dal.GetVisitLogTable(startTime.Value, endTime.Value); return new EapResponse { Code = 1, Msg = string.Empty, Data = dt }; } } [HttpPost] public async Task ExportVisitLogsByDate(IDictionary filterInfo) { DateTime startTime=DateTime.Now.AddDays(-1), endTime=DateTime.Now; if (filterInfo.ContainsKey("startTime")) { startTime = Convert.ToDateTime(filterInfo["startTime"]); } if (filterInfo.ContainsKey("endTime")) { endTime = Convert.ToDateTime(filterInfo["endTime"]); } using (IDatabase db = DbFactory.Base("ufp")) { var dal = new VisitLogDal(db); var dt = dal.GetVisitLogTable(startTime, endTime); var book = DataExportHelper.ExportVisit(dt); MemoryStream ms = new MemoryStream(); ms.Position = 0; book.Write(ms); ms.Dispose(); ms.Close(); await Task.CompletedTask; return File(ms.ToArray(), "application/octet-stream"); } } public LayuiModel GetStaffVisitLogs(string filter, string subFilter, string sort, int pageIndex = 1, int pageSize = 20) { var sortField = "count"; var sortOrder = "descend"; if (!string.IsNullOrEmpty(sort)) { var arr = sort.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries); if (arr != null && arr.Length > 0) { sortField = arr[0]; sortOrder = arr[1]; } } if (sortOrder == "descend") { sortOrder = "desc"; } else { sortOrder = "asc"; } int start, end; start = (pageIndex - 1) * pageSize + 1; int total; using (IDatabase db = DbFactory.Base("ufp")) { var dal = new VisitLogDal(db); var list = dal.GetStaffVisitLog(filter, subFilter, start, pageSize, out total, sortField, sortOrder); var extra = dal.GetTotalInfo(filter, subFilter); return new LayuiModel { code = 0, count = total, data = list, extraObject = extra }; } } public LayuiModel GetReportVisitLogs(string filter, string subFilter, string sort, int pageIndex = 1, int pageSize = 20) { var sortField = "count"; var sortOrder = "descend"; if (!string.IsNullOrEmpty(sort)) { var arr = sort.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries); if (arr != null && arr.Length > 0) { sortField = arr[0]; sortOrder = arr[1]; } } if (sortOrder == "descend") { sortOrder = "desc"; } else { sortOrder = "asc"; } int start; start = (pageIndex - 1) * pageSize + 1; int total; using (IDatabase db = DbFactory.Base("ufp")) { var dal = new VisitLogDal(db); var list = dal.GetReportVisitLog(filter, subFilter, start, pageSize, out total, sortField, sortOrder); var extra = dal.GetReportTotalInfo(filter, subFilter); return new LayuiModel { code = 0, count = total, data = list, extraObject = extra }; } } public EapResponse GetStaffReportLogs(string filter, string subFilter) { using (IDatabase db = DbFactory.Base("ufp")) { var dal = new VisitLogDal(db); var dt = dal.GetStaffReportLogs(filter, subFilter); return new EapResponse { Code = 1, Data = dt }; } } [HttpPost] public IActionResult ExportReportLogs([FromBody] StExportModel exportModel) { string errorinfo = string.Empty; int total = 0; using (IDatabase db = DbFactory.Base("ufp")) { var dal = new VisitLogDal(db); var data = dal.GetReportVisitLog(exportModel.Filter, exportModel.SubFilter, 1, 100000, out total, "count", "desc"); if (data == null) { return null; } var sumData = dal.GetReportTotalInfo(exportModel.Filter, exportModel.SubFilter); var sumRow = new SumRow { ColSpan = 2, RowName = sumData.StaffName, RowValues = new string[] { sumData.Count.ToString() } }; var stSchema = exportModel.StSchema; stSchema.SumRow = sumRow; stSchema.ShowFooter = true; var buffer = DataExportHelper.EntityToExcel(stSchema, data, ref errorinfo); if (buffer == null) { return null; } MemoryStream ms = new MemoryStream(); ms.Position = 0; ms.Write(buffer, 0, buffer.Length); ms.Dispose(); ms.Close(); return File(buffer, "application/octet-stream"); } } [HttpPost] public IActionResult ExportStaffLogs([FromBody] StExportModel exportModel) { string errorinfo = string.Empty; int total = 0; using (IDatabase db = DbFactory.Base("ufp")) { var dal = new VisitLogDal(db); var data = dal.GetStaffVisitLog(exportModel.Filter, exportModel.SubFilter, 1, 100000, out total) .OrderByDescending(c => c.Count); if (data == null) { return null; } var sumData = dal.GetTotalInfo(exportModel.Filter, exportModel.SubFilter); var sumRow = new SumRow { ColSpan = 6, RowName = sumData.StaffName, RowValues = new string[] { sumData.Count.ToString() } }; var stSchema = exportModel.StSchema; stSchema.SumRow = sumRow; stSchema.ShowFooter = true; var buffer = DataExportHelper.EntityToExcel(stSchema, data, ref errorinfo); if (buffer == null) { return null; } MemoryStream ms = new MemoryStream(); ms.Position = 0; ms.Write(buffer, 0, buffer.Length); ms.Dispose(); ms.Close(); return File(buffer, "application/octet-stream"); } } [HttpPost] public IActionResult ExportStaffVisitLogs([FromBody] StExportModel exportModel) { string errorinfo = string.Empty; int total = 0; using (IDatabase db = DbFactory.Base("ufp")) { var dal = new VisitLogDal(db); var data = dal.GetStaffVisitLog(exportModel.Filter, exportModel.SubFilter, 1, 100000, out total, "count", "desc"); if (data == null) { return null; } var sumData = dal.GetTotalInfo(exportModel.Filter, exportModel.SubFilter); var sumRow = new SumRow { ColSpan = 3, RowName = sumData.StaffName, RowValues = new string[] { sumData.Count.ToString() } }; var stSchema = exportModel.StSchema; stSchema.SumRow = sumRow; stSchema.ShowFooter = true; var buffer = DataExportHelper.EntityToExcel(stSchema, data, ref errorinfo); if (buffer == null) { return null; } MemoryStream ms = new MemoryStream(); ms.Position = 0; ms.Write(buffer, 0, buffer.Length); ms.Dispose(); ms.Close(); return File(buffer, "application/octet-stream"); } } } }