From 4997e25cdc2fea30ff7fb436bc9e4d75fd446278 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E6=B7=B3?= Date: Tue, 27 Sep 2022 19:27:17 +0800 Subject: [PATCH] =?UTF-8?q?=E6=95=B0=E6=8D=AE=E6=A8=A1=E6=9D=BF=E5=AF=BC?= =?UTF-8?q?=E5=85=A5=E3=80=81=E6=95=B0=E6=8D=AE=E5=AF=BC=E5=87=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Config/SwaggerDoc.xml | 12 +++++ .../Controllers/UserController.cs | 44 +++++++++++++++++- .../Yi.Framework.ApiMicroservice.csproj | 1 + .../wwwroot/Excel/Excel_20211102231510.xlsx | Bin 3014 -> 0 bytes .../wwwroot/Excel/Excel_20211102232113.xlsx | Bin 3023 -> 0 bytes .../excel/UserEntity_DataTemplate.xlsx | Bin 0 -> 4026 bytes .../Yi.Framework.Common/Const/FileConst.cs | 14 ------ .../Yi.Framework.Common/Const/PathConst.cs | 15 ++++++ .../Yi.Framework.Common/Enum/PathEnum.cs | 16 +++++++ .../Yi.Framework.Common/Helper/ExcelHelper.cs | 23 +++++++-- Yi.Vue3.X.RuoYi/src/main.js | 2 +- Yi.Vue3.X.RuoYi/src/utils/ruoyi.js | 7 +++ .../src/views/system/user/index.vue | 7 +-- 13 files changed, 115 insertions(+), 26 deletions(-) delete mode 100644 Yi.Framework.Net6/Yi.Framework.ApiMicroservice/wwwroot/Excel/Excel_20211102231510.xlsx delete mode 100644 Yi.Framework.Net6/Yi.Framework.ApiMicroservice/wwwroot/Excel/Excel_20211102232113.xlsx create mode 100644 Yi.Framework.Net6/Yi.Framework.ApiMicroservice/wwwroot/excel/UserEntity_DataTemplate.xlsx delete mode 100644 Yi.Framework.Net6/Yi.Framework.Common/Const/FileConst.cs create mode 100644 Yi.Framework.Net6/Yi.Framework.Common/Const/PathConst.cs create mode 100644 Yi.Framework.Net6/Yi.Framework.Common/Enum/PathEnum.cs diff --git a/Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Config/SwaggerDoc.xml b/Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Config/SwaggerDoc.xml index d1495d5a..356fd6a0 100644 --- a/Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Config/SwaggerDoc.xml +++ b/Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Config/SwaggerDoc.xml @@ -465,6 +465,18 @@ 用户管理 + + + 下载模板 + + + + + + 导出数据 + + + 动态条件分页查询 diff --git a/Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Controllers/UserController.cs b/Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Controllers/UserController.cs index ad33aef3..bb96945d 100644 --- a/Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Controllers/UserController.cs +++ b/Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Controllers/UserController.cs @@ -5,6 +5,9 @@ using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; +using Yi.Framework.Common.Const; +using Yi.Framework.Common.Enum; +using Yi.Framework.Common.Helper; using Yi.Framework.Common.Models; using Yi.Framework.DTOModel; using Yi.Framework.Interface; @@ -25,11 +28,48 @@ namespace Yi.Framework.ApiMicroservice.Controllers public class UserController : BaseSimpleRdController { private IUserService _iUserService; + public UserController(ILogger logger, IUserService iUserService) : base(logger, iUserService) { _iUserService = iUserService; + } + /// + /// 下载模板 + /// + /// + [HttpGet] + [AllowAnonymous] + public IActionResult Template() + { + List users = new(); + var fileName = nameof(UserEntity) + PathConst.DataTemplate; + var path = ExcelHelper.DownloadImportTemplate(users, fileName, Path.Combine(PathConst.wwwroot, PathEnum.Excel.ToString())); + var file = System.IO.File.OpenRead(path); + return File(file, "text/plain", $"{DateTime.Now.ToString("yyyyMMddHHmmssffff") + fileName }.xlsx"); + } + + + /// + /// 导出数据 + /// + /// + [HttpGet] + [AllowAnonymous] + public async Task Export() + { + var users = await _iUserService._repository.GetListAsync(); + var fileName = DateTime.Now.ToString("yyyyMMddHHmmssffff") + nameof(UserEntity) + PathConst.DataExport; + var path = ExcelHelper.ExportExcel(users, fileName, Path.Combine(PathConst.wwwroot, PathEnum.Temp.ToString())); + var file = System.IO.File.OpenRead(path); + return File(file, "text/plain", $"{ fileName }.xlsx"); + } + + + + + /// /// 动态条件分页查询 /// @@ -39,7 +79,7 @@ namespace Yi.Framework.ApiMicroservice.Controllers /// [HttpGet] [Permission("system:user:query")] - public async Task PageList([FromQuery] UserEntity user, [FromQuery] PageParModel page,[FromQuery] long? deptId) + public async Task PageList([FromQuery] UserEntity user, [FromQuery] PageParModel page, [FromQuery] long? deptId) { return Result.Success().SetData(await _iUserService.SelctPageList(user, page, deptId)); } @@ -93,7 +133,7 @@ namespace Yi.Framework.ApiMicroservice.Controllers [Permission("system:user:edit")] public async Task Update(UserInfoDto userDto) { - if (await _iUserService._repository.IsAnyAsync(u => userDto.User.UserName.Equals(u.UserName)&&!userDto.User.Id.Equals(u.Id))) + if (await _iUserService._repository.IsAnyAsync(u => userDto.User.UserName.Equals(u.UserName) && !userDto.User.Id.Equals(u.Id))) { return Result.Error("用户名已存在,修改失败!"); } diff --git a/Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Yi.Framework.ApiMicroservice.csproj b/Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Yi.Framework.ApiMicroservice.csproj index 5858bda3..5a98ed12 100644 --- a/Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Yi.Framework.ApiMicroservice.csproj +++ b/Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Yi.Framework.ApiMicroservice.csproj @@ -25,6 +25,7 @@ + diff --git a/Yi.Framework.Net6/Yi.Framework.ApiMicroservice/wwwroot/Excel/Excel_20211102231510.xlsx b/Yi.Framework.Net6/Yi.Framework.ApiMicroservice/wwwroot/Excel/Excel_20211102231510.xlsx deleted file mode 100644 index f1634a6f788bb05251c615f28f2cfc453948c933..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3014 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 diff --git a/Yi.Framework.Net6/Yi.Framework.ApiMicroservice/wwwroot/Excel/Excel_20211102232113.xlsx b/Yi.Framework.Net6/Yi.Framework.ApiMicroservice/wwwroot/Excel/Excel_20211102232113.xlsx deleted file mode 100644 index 428fa1196412c9310c9e52bace461381f3bac677..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3023 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 BT)qGR literal 0 HcmV?d00001 diff --git a/Yi.Framework.Net6/Yi.Framework.Common/Const/FileConst.cs b/Yi.Framework.Net6/Yi.Framework.Common/Const/FileConst.cs deleted file mode 100644 index a7ae7119..00000000 --- a/Yi.Framework.Net6/Yi.Framework.Common/Const/FileConst.cs +++ /dev/null @@ -1,14 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace Yi.Framework.Common.Const -{ - public class FileConst - { - public const string Image = "Image"; - public const string File = "File"; - } -} diff --git a/Yi.Framework.Net6/Yi.Framework.Common/Const/PathConst.cs b/Yi.Framework.Net6/Yi.Framework.Common/Const/PathConst.cs new file mode 100644 index 00000000..4c00102a --- /dev/null +++ b/Yi.Framework.Net6/Yi.Framework.Common/Const/PathConst.cs @@ -0,0 +1,15 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Yi.Framework.Common.Const +{ + public class PathConst + { + public const string wwwroot = "wwwroot"; + public const string DataTemplate = "_DataTemplate"; + public const string DataExport = "_DataExport"; + } +} diff --git a/Yi.Framework.Net6/Yi.Framework.Common/Enum/PathEnum.cs b/Yi.Framework.Net6/Yi.Framework.Common/Enum/PathEnum.cs new file mode 100644 index 00000000..fd391c7a --- /dev/null +++ b/Yi.Framework.Net6/Yi.Framework.Common/Enum/PathEnum.cs @@ -0,0 +1,16 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Yi.Framework.Common.Enum +{ + public enum PathEnum + { + Excel, + File, + Image, + Temp + } +} diff --git a/Yi.Framework.Net6/Yi.Framework.Common/Helper/ExcelHelper.cs b/Yi.Framework.Net6/Yi.Framework.Common/Helper/ExcelHelper.cs index f3e31ae0..6ab6340f 100644 --- a/Yi.Framework.Net6/Yi.Framework.Common/Helper/ExcelHelper.cs +++ b/Yi.Framework.Net6/Yi.Framework.Common/Helper/ExcelHelper.cs @@ -7,6 +7,11 @@ using System.Reflection; using System.Text; using System.Threading.Tasks; + + +/// +/// 此处来源于ZrAdmin +/// namespace Yi.Framework.Common.Helper { public class ExcelHelper @@ -18,7 +23,7 @@ namespace Yi.Framework.Common.Helper /// /// /// - public static string ExportExcel(List list, string sheetName, string fileName,string path) + public static string ExportExcel(List list, string fileName,string path,string sheetName= "default") { string sFileName = $"{fileName}.xlsx"; string newFileName = Path.Combine(path, sFileName); @@ -47,16 +52,25 @@ namespace Yi.Framework.Common.Helper /// /// 下载文件名 /// - protected string DownloadImportTemplate(List list, Stream stream, string fileName,string path) + public static string DownloadImportTemplate(List list, string fileName,string path) { string sFileName = $"{fileName}.xlsx"; string newFileName = Path.Combine(path, sFileName); + + //如果文件存在,直接返回即可 + if (File.Exists(newFileName)) + { + return newFileName; + } //调试模式需要加上 ExcelPackage.LicenseContext = LicenseContext.NonCommercial; if (!Directory.Exists(newFileName)) { Directory.CreateDirectory(Path.GetDirectoryName(newFileName)!); } + + + Stream stream = new FileStream(newFileName, FileMode.OpenOrCreate); using (ExcelPackage package = new(new FileInfo(newFileName))) { // 添加worksheet @@ -67,8 +81,9 @@ namespace Yi.Framework.Common.Helper worksheet.Cells.LoadFromCollection(list, true, OfficeOpenXml.Table.TableStyles.Light13); package.SaveAs(stream); } - - return sFileName; + stream.Dispose(); + + return newFileName; } diff --git a/Yi.Vue3.X.RuoYi/src/main.js b/Yi.Vue3.X.RuoYi/src/main.js index 0ad578bd..a53f7cd0 100644 --- a/Yi.Vue3.X.RuoYi/src/main.js +++ b/Yi.Vue3.X.RuoYi/src/main.js @@ -15,7 +15,7 @@ import directive from './directive' // directive // 注册指令 import plugins from './plugins' // plugins -import { download } from '@/utils/request' +import { download } from '@/utils/ruoyi.js' // svg图标 import 'virtual:svg-icons-register' diff --git a/Yi.Vue3.X.RuoYi/src/utils/ruoyi.js b/Yi.Vue3.X.RuoYi/src/utils/ruoyi.js index e7993c1d..7bf12dbc 100644 --- a/Yi.Vue3.X.RuoYi/src/utils/ruoyi.js +++ b/Yi.Vue3.X.RuoYi/src/utils/ruoyi.js @@ -249,4 +249,11 @@ export async function blobValidate(data) { } catch (error) { return true; } +} + +// 通用下载方法 +export function download(url) { + // window.location.href = baseURL + "/common/download?fileName=" + encodeURI(fileName) + "&delete=" + true; + // window.open(baseURL + "/common/download?fileName=" + encodeURI(fileName) + "&delete=" + true) + window.open(import.meta.env.VITE_APP_BASE_API + url) } \ No newline at end of file diff --git a/Yi.Vue3.X.RuoYi/src/views/system/user/index.vue b/Yi.Vue3.X.RuoYi/src/views/system/user/index.vue index 1fc6b1c0..f3b8fd66 100644 --- a/Yi.Vue3.X.RuoYi/src/views/system/user/index.vue +++ b/Yi.Vue3.X.RuoYi/src/views/system/user/index.vue @@ -370,9 +370,7 @@ function handleDelete(row) { }; /** 导出按钮操作 */ function handleExport() { - proxy.download("system/user/export", { - ...queryParams.value, - }, `user_${new Date().getTime()}.xlsx`); + proxy.download("user/export"); }; /** 用户状态修改 */ function handleStatusChange(row) { @@ -430,8 +428,7 @@ function handleImport() { }; /** 下载模板操作 */ function importTemplate() { - proxy.download("system/user/importTemplate", { - }, `user_template_${new Date().getTime()}.xlsx`); + proxy.download("user/template"); }; /**文件上传中处理 */ const handleFileUploadProgress = (event, file, fileList) => {