diff --git a/OpenAuth.App/ServiceApp/FmFireSiteManage/FmFireSiteApp.cs b/OpenAuth.App/ServiceApp/FmFireSiteManage/FmFireSiteApp.cs index 5d0542e..3c07a51 100644 --- a/OpenAuth.App/ServiceApp/FmFireSiteManage/FmFireSiteApp.cs +++ b/OpenAuth.App/ServiceApp/FmFireSiteManage/FmFireSiteApp.cs @@ -1,11 +1,16 @@ using DocumentFormat.OpenXml.Office2021.DocumentTasks; using DocumentFormat.OpenXml.Spreadsheet; +using DocumentFormat.OpenXml.Wordprocessing; using Infrastructure; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Options; +using NPOI.HSSF.UserModel; +using NPOI.SS.Formula.Functions; +using NPOI.SS.UserModel; using NPOI.XSSF.UserModel; using OpenAuth.App.BaseApp.Base; using OpenAuth.App.Common; +using OpenAuth.App.FormModule; using OpenAuth.App.Interface; using OpenAuth.App.Response; using OpenAuth.App.ServiceApp.FireManagement.Response; @@ -53,14 +58,14 @@ namespace OpenAuth.App.ServiceApp.FmFireSiteManage /// /// /// - public async Task>>> LoadAllSite(string siteName, int pageIndex, int pageSize, int state) + public async Task>>> LoadAllSite(string siteName, int pageIndex, int pageSize, int? state) { var currentUser = _auth.GetCurrentUser(); using (var db = base.UnitWork.CreateContext()) { RefAsync totalNumber = 0; var list = await db.FmSiteInfo.AsQueryable() - .WhereIF(state != 3, (a) => a.State == state) + .WhereIF(state != null, (a) => a.State == state) .WhereIF(!string.IsNullOrEmpty(siteName), (a) => a.SiteName.Contains(siteName)) .Select((a) => new FmSiteInfo { @@ -78,65 +83,124 @@ namespace OpenAuth.App.ServiceApp.FmFireSiteManage /// 导出所有站点 /// /// - public MemoryStream ExportSite(int state) + public Response ExportSite(int? state) { var currentUser = _auth.GetCurrentUser(); - using (var db = base.UnitWork.CreateContext()) + Response response = new Response(); + try { - List list = new List(); + HSSFWorkbook workbook = new HSSFWorkbook(); + #region 内容样式 + + IFont font1 = workbook.CreateFont(); //创建一个字体样式对象 + font1.FontName = "Microsoft YaHei"; //和excel里面的字体对应 + //font1.Boldweight = short.MaxValue;//字体加粗 + font1.FontHeightInPoints = 12; //字体大小 + ICellStyle style = workbook.CreateCellStyle(); //创建样式对象 + style.BorderBottom = BorderStyle.Thin; + style.BorderLeft = BorderStyle.Thin; + style.BorderRight = BorderStyle.Thin; + style.BorderTop = BorderStyle.Thin; + style.Alignment = NPOI.SS.UserModel.HorizontalAlignment.Center; + style.VerticalAlignment = VerticalAlignment.Center; + style.SetFont(font1); //将字体样式赋给样式对象 + style.WrapText = true; + + #endregion + + #region 标题样式 + + IFont font = workbook.CreateFont(); //创建一个字体样式对象 + font.FontName = "Microsoft YaHei"; //和excel里面的字体对应 + font.Boldweight = (short)FontBoldWeight.Bold; //字体加粗 + font.FontHeightInPoints = 12; //字体大小 + ICellStyle style1 = workbook.CreateCellStyle(); //创建样式对象 + style1.BorderBottom = BorderStyle.Thin; + style1.BorderLeft = BorderStyle.Thin; + style1.BorderRight = BorderStyle.Thin; + style1.BorderTop = BorderStyle.Thin; + style1.Alignment = NPOI.SS.UserModel.HorizontalAlignment.Center; + style1.VerticalAlignment = VerticalAlignment.Center; + style1.SetFont(font); //将字体样式赋给样式对象 + + #endregion + + + using (var db = base.UnitWork.CreateContext()) + { + List list = new List(); list = db.FmSiteInfo.AsQueryable() - .WhereIF(state != 3, (a) => a.State == state) + .WhereIF(state != null, (a) => a.State == state) .Select((a) => new FmSiteInfo { Id = a.Id.SelectAll(), }) .OrderByDescending(a => a.CreateTime) .ToList(); - - //根目录 - var root = AppDomain.CurrentDomain.BaseDirectory; - //Execl 文件 - var execlPath = "ExportFiles/ExportInterphoneInfo.xlsx"; - using (FileStream fs = new FileStream($"{root}{execlPath}", FileMode.Open, FileAccess.Read)) - { - var workBook = new XSSFWorkbook(fs); - - #region - - var sheet = workBook.GetSheetAt(0); - - var columnWidth = 20 * 256; // 一个字符等于 256 个单位 - for (int i = 0; i < list.Count; i++) + #region 创建表头 + int m = list.Count / 60000 + 1; + for (int k = 0; k < m; k++) { - sheet.SetColumnWidth(i, columnWidth); - } - var row1 = sheet.CreateRow(0); - row1.Height = 30 * 20; - row1.CreateCell(0).SetCellValue("站点名称"); - row1.CreateCell(1).SetCellValue("站点地址"); - row1.CreateCell(2).SetCellValue("审核状态"); - row1.CreateCell(3).SetCellValue("负责人"); - row1.CreateCell(4).SetCellValue("负责人电话"); + ISheet sheet = workbook.CreateSheet("Sheet" + k.ToString()); + IRow rowHeader = sheet.CreateRow(0); + rowHeader.Height = 20 * 30; + for (int i = 0; i < 5; i++) + { + //ModuleColumn header = headers[i]; + rowHeader.CreateCell(i); + rowHeader.Cells[i].CellStyle = style1; + sheet.SetColumnWidth(i, 20 * 350); + } + rowHeader.Cells[0].SetCellValue("站点名称"); + rowHeader.Cells[1].SetCellValue("站点地址"); + rowHeader.Cells[2].SetCellValue("审核状态"); + rowHeader.Cells[3].SetCellValue("负责人"); + rowHeader.Cells[4].SetCellValue("负责人电话"); + #endregion - for (int i = 0; i < list.Count; i++) - { - var num = i + 1; - var row = sheet.CreateRow(num); - row.Height = 30 * 20; - row.CreateCell(0).SetCellValue(list[i].SiteName == null ? "" : list[i].SiteName); - row.CreateCell(1).SetCellValue(list[i].SiteAddress == null ? "" : list[i].SiteAddress); - row.CreateCell(2).SetCellValue(list[i].State == 0 ? "未审核" : (list[i].State == 1 ? "审核通过" : "审核未通过")); - row.CreateCell(3).SetCellValue(list[i].Director == null ? "" : list[i].Director); - row.CreateCell(4).SetCellValue(list[i].Phone == null ? "" : list[i].Phone); + #region 填充数据 + var val = (k + 1) * 60000; + var num = 60000; + if (val > list.Count) + { + num = list.Count - k * 60000; + } + for (int i = 0; i < num; i++) //循环数据 + { + var item = list[k * 60000 + i]; //获取数据 + IRow dataRow = sheet.CreateRow(i + 1); //创建行 + for (int j = 0; j < 5; j++) //循环表头 + { + //创建单元格 + dataRow.CreateCell(j); + dataRow.Cells[j].CellStyle = style; //添加单元格样式 + } + dataRow.Cells[0].SetCellValue(list[i].SiteName == null ? "" : list[i].SiteName); + dataRow.Cells[1].SetCellValue(list[i].SiteAddress == null ? "" : list[i].SiteAddress); + dataRow.Cells[2].SetCellValue(list[i].State == 0 ? "未审核" : (list[i].State == 1 ? "审核通过" : "审核未通过")); + dataRow.Cells[3].SetCellValue(list[i].Director == null ? "" : list[i].Director); + dataRow.Cells[4].SetCellValue(list[i].Phone == null ? "" : list[i].Phone); + } } + #endregion - MemoryStream ms = new MemoryStream(); - - workBook.Write(ms); - return ms; + #endregion + response.Result = new MemoryStream(); + workbook.Write(response.Result); + workbook = null; + response.Result.Close(); + response.Result.Dispose(); + response.Code = 200; + response.Message = "获取成功"; } } + catch (Exception ex) + { + response.Code = 500; + response.Message = ex.Message; + } + return response; } /// /// 站点审核 @@ -171,7 +235,6 @@ namespace OpenAuth.App.ServiceApp.FmFireSiteManage } } } - #endregion #region 站点管理 /// @@ -181,7 +244,7 @@ namespace OpenAuth.App.ServiceApp.FmFireSiteManage /// /// /// - public async Task>>> LoadSiteUser(long siteId, long roleid, int pageIndex, int pageSize) + public async Task>>> LoadSiteUser(long siteId, long? roleid, int pageIndex, int pageSize) { using (var db = base.UnitWork.CreateContext()) { @@ -189,7 +252,8 @@ namespace OpenAuth.App.ServiceApp.FmFireSiteManage var list = await db.FmSiteUser.AsQueryable() .LeftJoin((a, b) => a.SiteUserId == b.Id.ToString()) .LeftJoin((a, b, c) => a.SiteUserId == c.UserId.ToString()) - .Where((a, b, c) => c.RoleId == roleid && a.SiteId == siteId) + .Where((a, b, c) => a.SiteId == siteId) + .WhereIF(roleid!=null, (a, b, c) => c.RoleId == roleid) .Select((a, b) => new SiteUserRes() { Id = a.Id, @@ -214,60 +278,56 @@ namespace OpenAuth.App.ServiceApp.FmFireSiteManage /// /// /// - public TableData LoadSiteAllUser(long roleid, int pageIndex, int pageSize) + public async Task>>> LoadSiteAllUser(long roleid, int pageIndex, int pageSize) { TableData data = new TableData(); using (var db = base.UnitWork.CreateContext()) { - int totalCount = 0; - var list = db.User.AsQueryable() + RefAsync totalNumber = 0; + var list = await db.User.AsQueryable() .LeftJoin((a, r) => a.Id == r.UserId) .Where((a, r) => r.RoleId == roleid) - .Select((a) => (dynamic)new + .Select((a, r) => (dynamic)new { a.Id, a.Name, a.Account }) - .ToPageList(pageIndex, pageSize, ref totalCount); - data.data = list; - data.count = totalCount; - data.code = 200; - data.msg = "请求成功"; + .ToPageListAsync(pageIndex, pageSize, totalNumber); + return new Response>> + { + Result = new PageInfo> { Items = list, Total = totalNumber } + }; } - return data; } /// /// 获取站点列表 /// /// /// - public TableData LoadSiteByUserId(string userId, int pageIndex, int pageSize) + public async Task>>> LoadSiteByUserId(string userId, int pageIndex, int pageSize) { TableData data = new TableData(); using (var db = base.UnitWork.CreateContext()) { + RefAsync totalNumber = 0; //查询user的所有场地 var siteids = db.FmSiteUser.AsQueryable().Where(a => a.SiteUserId == userId).Select(a => a.SiteId).ToList(); var startTime = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd 00:00:00")); var endTime = DateTime.Now; - int totalCount = 0; - var list = db.FmSiteInfo.AsQueryable() - //.LeftJoin((a, b) => a.Id == b.SiteId) + + var list = await db.FmSiteInfo.AsQueryable() .Where((a) => siteids.Contains(a.Id)) - //.Where((a, b) => b.InTime >= startTime && b.InTime <= endTime) - //.GroupBy((a, b) => a.Id) .Select((a) => (dynamic)new { Id = a.Id.SelectAll(), incount = SqlFunc.Subqueryable().Where(r => r.SiteId == a.Id && r.InTime >= startTime && r.InTime <= endTime).Count(), - }).ToPageList(pageIndex, pageSize, ref totalCount); - data.data = list; - data.count = totalCount; - data.code = 200; - data.msg = "请求成功"; + }).ToPageListAsync(pageIndex, pageSize, totalNumber); + return new Response>> + { + Result = new PageInfo> { Items = list, Total = totalNumber } + }; } - return data; } /// @@ -280,7 +340,7 @@ namespace OpenAuth.App.ServiceApp.FmFireSiteManage if (fmSite != null) { fmSite.CreateTime = DateTime.Now; - fmSite.State = 0; + fmSite.State = 0; using (var db = base.UnitWork.CreateContext()) { if (db.FmSiteInfo.AsQueryable().Any(a => a.SiteName == fmSite.SiteName)) diff --git a/OpenAuth.Repository/Domain/FireManagement/FmSiteInfo.cs b/OpenAuth.Repository/Domain/FireManagement/FmSiteInfo.cs index 001ac71..c6772f6 100644 --- a/OpenAuth.Repository/Domain/FireManagement/FmSiteInfo.cs +++ b/OpenAuth.Repository/Domain/FireManagement/FmSiteInfo.cs @@ -18,7 +18,7 @@ namespace OpenAuth.Repository.Domain.FireManagement /// Default: /// Nullable:False /// - [SugarColumn(IsPrimaryKey = true, IsIdentity = true)] + [SugarColumn(IsPrimaryKey = true)] public long Id { get; set; } /// @@ -120,7 +120,7 @@ namespace OpenAuth.Repository.Domain.FireManagement /// /// 站点相关人员 /// - //[SugarColumn(IsIgnore = true)] + [SugarColumn(IsIgnore = true)] //public List SiteUser { get; set; } = new List(); [Navigate(NavigateType.OneToMany, nameof(FmSiteUser.SiteId))] public List SiteUser { get; set; } diff --git a/OpenAuth.WebApi/Controllers/ServiceControllers/FireManagement/FmFireSiteController.cs b/OpenAuth.WebApi/Controllers/ServiceControllers/FireManagement/FmFireSiteController.cs index ee41ff4..f859a30 100644 --- a/OpenAuth.WebApi/Controllers/ServiceControllers/FireManagement/FmFireSiteController.cs +++ b/OpenAuth.WebApi/Controllers/ServiceControllers/FireManagement/FmFireSiteController.cs @@ -34,7 +34,7 @@ namespace OpenAuth.WebApi.Controllers.ServiceControllers.FireManagement /// 状态(0-未审核,1-审核通过,2-未通过) /// [HttpGet] - public async Task>>> LoadAllSite(string siteName, int pageIndex, int pageSize, int state) + public async Task>>> LoadAllSite(string siteName, int pageIndex, int pageSize, int? state) { Response>> response = new Response>>(); try @@ -53,12 +53,22 @@ namespace OpenAuth.WebApi.Controllers.ServiceControllers.FireManagement /// /// [HttpGet] - public IActionResult ExportSite(int state) + public IActionResult ExportSite(int? state) { - var ms = _app.ExportSite(state); - ms.Position = 0; - return File(ms, "application/octet-stream", - $"站点{DateTime.Now.ToString("yyyyMMddHHmmss")}.xlsx"); + var res = new Response(); + var excelRes = _app.ExportSite(state); + if (excelRes.Code == 200) + { + return File(excelRes.Result.ToArray(), + "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", + "数据导出" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".xls"); + } + else + { + res.Code = excelRes.Code; + res.Message = "导出失败"; + } + return Ok(res); } /// @@ -93,7 +103,7 @@ namespace OpenAuth.WebApi.Controllers.ServiceControllers.FireManagement /// 页面大小 /// [HttpGet] - public async Task>>> LoadSiteUser(long siteId, long roleid, int pageIndex, int pageSize) + public async Task>>> LoadSiteUser(long siteId, long? roleid, int pageIndex, int pageSize) { Response>> response = new Response>>(); try @@ -117,9 +127,19 @@ namespace OpenAuth.WebApi.Controllers.ServiceControllers.FireManagement /// [HttpGet] [AllowAnonymous] - public TableData LoadSiteAllUser(long roleid, int pageIndex, int pageSize) + public async Task>>> LoadSiteAllUser(long roleid, int pageIndex, int pageSize) { - return _app.LoadSiteAllUser(roleid,pageIndex, pageSize); + Response>> response = new Response>>(); + try + { + return await _app.LoadSiteAllUser(roleid,pageIndex, pageSize); + } + catch (Exception ex) + { + response.Code = 500; + response.Message = ex.InnerException?.Message ?? ex.Message; + } + return response; } /// @@ -131,9 +151,19 @@ namespace OpenAuth.WebApi.Controllers.ServiceControllers.FireManagement /// [HttpGet] [AllowAnonymous] - public TableData LoadSiteByUserId(string userId, int pageIndex, int pageSize) + public async Task>>> LoadSiteByUserId(string userId, int pageIndex, int pageSize) { - return _app.LoadSiteByUserId(userId, pageIndex, pageSize); + Response>> response = new Response>>(); + try + { + return await _app.LoadSiteByUserId(userId, pageIndex, pageSize); + } + catch (Exception ex) + { + response.Code = 500; + response.Message = ex.InnerException?.Message ?? ex.Message; + } + return response; } ///