Commit c3df5bc62fb7f42e78deffedbb30ccb6518418dc

Authored by YunaiV
1 parent d8a52a8c

1. 完成所有导出的功能

Showing 34 changed files with 304 additions and 308 deletions
ruoyi-ui/src/api/system/dict/data.js
@@ -54,9 +54,10 @@ export function delData(dictCode) { @@ -54,9 +54,10 @@ export function delData(dictCode) {
54 // 导出字典数据 54 // 导出字典数据
55 export function exportData(query) { 55 export function exportData(query) {
56 return request({ 56 return request({
57 - url: '/system/dict/data/export', 57 + url: '/system/dict-data/export',
58 method: 'get', 58 method: 'get',
59 - params: query 59 + params: query,
  60 + responseType: 'blob'
60 }) 61 })
61 } 62 }
62 63
ruoyi-ui/src/api/system/dict/type.js
@@ -48,7 +48,8 @@ export function exportType(query) { @@ -48,7 +48,8 @@ export function exportType(query) {
48 return request({ 48 return request({
49 url: '/system/dict-type/export', 49 url: '/system/dict-type/export',
50 method: 'get', 50 method: 'get',
51 - params: query 51 + params: query,
  52 + responseType: 'blob'
52 }) 53 })
53 } 54 }
54 55
ruoyi-ui/src/api/system/role.js
@@ -69,6 +69,7 @@ export function exportRole(query) { @@ -69,6 +69,7 @@ export function exportRole(query) {
69 return request({ 69 return request({
70 url: '/system/role/export', 70 url: '/system/role/export',
71 method: 'get', 71 method: 'get',
72 - params: query 72 + params: query,
  73 + responseType: 'blob'
73 }) 74 })
74 } 75 }
ruoyi-ui/src/views/system/dict/data.vue
@@ -314,7 +314,7 @@ export default { @@ -314,7 +314,7 @@ export default {
314 }).then(function() { 314 }).then(function() {
315 return exportData(queryParams); 315 return exportData(queryParams);
316 }).then(response => { 316 }).then(response => {
317 - this.download(response.msg); 317 + this.downloadExcel(response, '字典数据.xls');
318 }) 318 })
319 } 319 }
320 } 320 }
ruoyi-ui/src/views/system/dict/index.vue
@@ -304,7 +304,10 @@ export default { @@ -304,7 +304,10 @@ export default {
304 }, 304 },
305 /** 导出按钮操作 */ 305 /** 导出按钮操作 */
306 handleExport() { 306 handleExport() {
307 - const queryParams = this.queryParams; 307 + const queryParams = this.addDateRange(this.queryParams, [
  308 + this.dateRange[0] ? this.dateRange[0] + ' 00:00:00' : undefined,
  309 + this.dateRange[1] ? this.dateRange[1] + ' 23:59:59' : undefined,
  310 + ]);
308 this.$confirm('是否确认导出所有类型数据项?', "警告", { 311 this.$confirm('是否确认导出所有类型数据项?', "警告", {
309 confirmButtonText: "确定", 312 confirmButtonText: "确定",
310 cancelButtonText: "取消", 313 cancelButtonText: "取消",
@@ -312,7 +315,7 @@ export default { @@ -312,7 +315,7 @@ export default {
312 }).then(function() { 315 }).then(function() {
313 return exportType(queryParams); 316 return exportType(queryParams);
314 }).then(response => { 317 }).then(response => {
315 - this.download(response.msg); 318 + this.downloadExcel(response, '数据类型.xls');
316 }) 319 })
317 } 320 }
318 } 321 }
ruoyi-ui/src/views/system/role/index.vue
@@ -568,7 +568,7 @@ export default { @@ -568,7 +568,7 @@ export default {
568 }).then(function() { 568 }).then(function() {
569 return exportRole(queryParams); 569 return exportRole(queryParams);
570 }).then(response => { 570 }).then(response => {
571 - this.download(response.msg); 571 + this.downloadExcel(response, '角色数据.xls');
572 }) 572 })
573 } 573 }
574 } 574 }
src/main/java/cn/iocoder/dashboard/framework/excel/Excel.java deleted
1 -package cn.iocoder.dashboard.framework.excel;  
2 -  
3 -import java.lang.annotation.ElementType;  
4 -import java.lang.annotation.Retention;  
5 -import java.lang.annotation.RetentionPolicy;  
6 -import java.lang.annotation.Target;  
7 -import java.math.BigDecimal;  
8 -  
9 -/**  
10 - * 自定义导出Excel数据注解  
11 - *  
12 - * @author ruoyi  
13 - */  
14 -@Deprecated  
15 -@Retention(RetentionPolicy.RUNTIME)  
16 -@Target(ElementType.FIELD)  
17 -public @interface Excel {  
18 -  
19 - /**  
20 - * 导出时在excel中排序  
21 - */  
22 - int sort() default Integer.MAX_VALUE;  
23 -  
24 - /**  
25 - * 导出到Excel中的名字.  
26 - */  
27 - String name() default "";  
28 -  
29 - /**  
30 - * 日期格式, 如: yyyy-MM-dd  
31 - */  
32 - String dateFormat() default "";  
33 -  
34 - /**  
35 - * 如果是字典类型,请设置字典的type值 (如: sys_user_sex)  
36 - */  
37 - String dictType() default "";  
38 -  
39 - /**  
40 - * 读取内容转表达式 (如: 0=男,1=女,2=未知)  
41 - */  
42 - public String readConverterExp() default "";  
43 -  
44 - /**  
45 - * 分隔符,读取字符串组内容  
46 - */  
47 - public String separator() default ",";  
48 -  
49 - /**  
50 - * BigDecimal 精度 默认:-1(默认不开启BigDecimal格式化)  
51 - */  
52 - public int scale() default -1;  
53 -  
54 - /**  
55 - * BigDecimal 舍入规则 默认:BigDecimal.ROUND_HALF_EVEN  
56 - */  
57 - public int roundingMode() default BigDecimal.ROUND_HALF_EVEN;  
58 -  
59 - /**  
60 - * 导出类型(0数字 1字符串)  
61 - */  
62 - public ColumnType cellType() default ColumnType.STRING;  
63 -  
64 - /**  
65 - * 导出时在excel中每个列的高度 单位为字符  
66 - */  
67 - public double height() default 14;  
68 -  
69 - /**  
70 - * 导出时在excel中每个列的宽 单位为字符  
71 - */  
72 - public double width() default 16;  
73 -  
74 - /**  
75 - * 文字后缀,如% 90 变成90%  
76 - */  
77 - String suffix() default "";  
78 -  
79 - /**  
80 - * 当值为空时,字段的默认值  
81 - */  
82 - String defaultValue() default "";  
83 -  
84 - /**  
85 - * 提示信息  
86 - */  
87 - String prompt() default "";  
88 -  
89 - /**  
90 - * 设置只能选择不能输入的列内容.  
91 - */  
92 - String[] combo() default {};  
93 -  
94 - /**  
95 - * 是否导出数据,应对需求:有时我们需要导出一份模板,这是标题需要但内容需要用户手工填写.  
96 - */  
97 - boolean isExport() default true;  
98 -  
99 - /**  
100 - * 另一个类中的属性名称,支持多级获取,以小数点隔开  
101 - */  
102 - String targetAttr() default "";  
103 -  
104 - /**  
105 - * 是否自动统计数据,在最后追加一行统计数据总和  
106 - */  
107 - boolean isStatistics() default false;  
108 -  
109 - /**  
110 - * 导出字段对齐方式(0:默认;1:靠左;2:居中;3:靠右)  
111 - */  
112 - Align align() default Align.AUTO;  
113 -  
114 - enum Align {  
115 - AUTO(0), LEFT(1), CENTER(2), RIGHT(3);  
116 - private final int value;  
117 -  
118 - Align(int value) {  
119 - this.value = value;  
120 - }  
121 -  
122 - public int value() {  
123 - return this.value;  
124 - }  
125 - }  
126 -  
127 - /**  
128 - * 字段类型(0:导出导入;1:仅导出;2:仅导入)  
129 - */  
130 - Type type() default Type.ALL;  
131 -  
132 - enum Type {  
133 - ALL(0), EXPORT(1), IMPORT(2);  
134 - private final int value;  
135 -  
136 - Type(int value) {  
137 - this.value = value;  
138 - }  
139 -  
140 - public int value() {  
141 - return this.value;  
142 - }  
143 - }  
144 -  
145 - enum ColumnType {  
146 - NUMERIC(0), STRING(1), IMAGE(2);  
147 - private final int value;  
148 -  
149 - ColumnType(int value) {  
150 - this.value = value;  
151 - }  
152 -  
153 - public int value() {  
154 - return this.value;  
155 - }  
156 - }  
157 -}  
src/main/java/cn/iocoder/dashboard/framework/excel/Excels.java deleted
1 -package cn.iocoder.dashboard.framework.excel;  
2 -  
3 -import java.lang.annotation.ElementType;  
4 -import java.lang.annotation.Retention;  
5 -import java.lang.annotation.RetentionPolicy;  
6 -import java.lang.annotation.Target;  
7 -  
8 -/**  
9 - * Excel注解集  
10 - *  
11 - * @author ruoyi  
12 - */  
13 -@Deprecated  
14 -@Target(ElementType.FIELD)  
15 -@Retention(RetentionPolicy.RUNTIME)  
16 -public @interface Excels  
17 -{  
18 - Excel[] value();  
19 -}  
src/main/java/cn/iocoder/dashboard/framework/excel/core/util/ExcelUtils.java
@@ -10,18 +10,32 @@ import java.util.List; @@ -10,18 +10,32 @@ import java.util.List;
10 10
11 /** 11 /**
12 * Excel 工具类 12 * Excel 工具类
  13 + *
  14 + * @author 芋道源码
13 */ 15 */
14 public class ExcelUtils { 16 public class ExcelUtils {
15 17
16 - public static void write(HttpServletResponse response, String filename, String sheetName,  
17 - Class<?> head, List<?> data) throws IOException {  
18 - // 设置 header 和 contentType  
19 - response.addHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(filename, "UTF-8"));  
20 - response.setContentType("application/vnd.ms-excel;charset=UTF-8"); 18 + /**
  19 + * 将列表以 Excel 响应给前端
  20 + *
  21 + * @param response 响应
  22 + * @param filename 文件名
  23 + * @param sheetName Excel sheet 名
  24 + * @param head Excel head 头
  25 + * @param data 数据列表哦
  26 + * @param <T> 泛型,保证 head 和 data 类型的一致性
  27 + * @throws IOException 写入失败的情况
  28 + */
  29 + public static <T> void write(HttpServletResponse response, String filename, String sheetName,
  30 + Class<T> head, List<T> data) throws IOException {
21 // 输出 Excel 31 // 输出 Excel
22 EasyExcel.write(response.getOutputStream(), head) 32 EasyExcel.write(response.getOutputStream(), head)
  33 + .autoCloseStream(false) // 不要自动关闭,交给 Servlet 自己处理
23 .registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()) // 基于 column 长度,自动适配。最大 255 宽度 34 .registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()) // 基于 column 长度,自动适配。最大 255 宽度
24 .sheet(sheetName).doWrite(data); 35 .sheet(sheetName).doWrite(data);
  36 + // 设置 header 和 contentType。写在最后的原因是,避免报错时,响应 contentType 已经被修改了
  37 + response.addHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(filename, "UTF-8"));
  38 + response.setContentType("application/vnd.ms-excel;charset=UTF-8");
25 } 39 }
26 40
27 } 41 }
src/main/java/cn/iocoder/dashboard/modules/system/controller/dept/SysPostController.java
@@ -89,10 +89,10 @@ public class SysPostController { @@ -89,10 +89,10 @@ public class SysPostController {
89 // @PreAuthorize("@ss.hasPermi('system:post:export')") 89 // @PreAuthorize("@ss.hasPermi('system:post:export')")
90 public void export(HttpServletResponse response, @Validated SysPostExportReqVO reqVO) throws IOException { 90 public void export(HttpServletResponse response, @Validated SysPostExportReqVO reqVO) throws IOException {
91 List<SysPostDO> posts = postService.listPosts(reqVO); 91 List<SysPostDO> posts = postService.listPosts(reqVO);
92 - List<SysPostExcelVO> excelPosts = SysPostConvert.INSTANCE.convertList03(posts); 92 + List<SysPostExcelVO> excelDataList = SysPostConvert.INSTANCE.convertList03(posts);
93 // 输出 93 // 输出
94 ExcelUtils.write(response, "岗位数据.xls", "岗位列表", 94 ExcelUtils.write(response, "岗位数据.xls", "岗位列表",
95 - SysPostExcelVO.class, excelPosts); 95 + SysPostExcelVO.class, excelDataList);
96 } 96 }
97 97
98 } 98 }
src/main/java/cn/iocoder/dashboard/modules/system/controller/dept/vo/post/SysPostExcelVO.java
1 package cn.iocoder.dashboard.modules.system.controller.dept.vo.post; 1 package cn.iocoder.dashboard.modules.system.controller.dept.vo.post;
2 2
3 -import cn.iocoder.dashboard.framework.excel.core.annotations.DictFormat;  
4 -import cn.iocoder.dashboard.framework.excel.core.convert.DictConvert;  
5 import com.alibaba.excel.annotation.ExcelProperty; 3 import com.alibaba.excel.annotation.ExcelProperty;
6 import lombok.Data; 4 import lombok.Data;
7 5
8 -import static cn.iocoder.dashboard.modules.system.enums.dict.DictTypeEnum.SYS_COMMON_STATUS;  
9 -  
10 /** 6 /**
11 * 岗位 Excel 导出响应 VO 7 * 岗位 Excel 导出响应 VO
12 */ 8 */
@@ -25,8 +21,9 @@ public class SysPostExcelVO { @@ -25,8 +21,9 @@ public class SysPostExcelVO {
25 @ExcelProperty("岗位排序") 21 @ExcelProperty("岗位排序")
26 private String sort; 22 private String sort;
27 23
28 - @ExcelProperty(value = "状态", converter = DictConvert.class)  
29 - @DictFormat(SYS_COMMON_STATUS) 24 +// @ExcelProperty(value = "状态", converter = DictConvert.class)
  25 +// @DictFormat(SYS_COMMON_STATUS)
  26 + @ExcelProperty(value = "状态")
30 private String status; 27 private String status;
31 28
32 } 29 }
src/main/java/cn/iocoder/dashboard/modules/system/controller/dict/SysDictDataController.java
@@ -2,6 +2,7 @@ package cn.iocoder.dashboard.modules.system.controller.dict; @@ -2,6 +2,7 @@ package cn.iocoder.dashboard.modules.system.controller.dict;
2 2
3 import cn.iocoder.dashboard.common.pojo.CommonResult; 3 import cn.iocoder.dashboard.common.pojo.CommonResult;
4 import cn.iocoder.dashboard.common.pojo.PageResult; 4 import cn.iocoder.dashboard.common.pojo.PageResult;
  5 +import cn.iocoder.dashboard.framework.excel.core.util.ExcelUtils;
5 import cn.iocoder.dashboard.modules.system.controller.dict.vo.data.*; 6 import cn.iocoder.dashboard.modules.system.controller.dict.vo.data.*;
6 import cn.iocoder.dashboard.modules.system.convert.dict.SysDictDataConvert; 7 import cn.iocoder.dashboard.modules.system.convert.dict.SysDictDataConvert;
7 import cn.iocoder.dashboard.modules.system.dal.mysql.dataobject.dict.SysDictDataDO; 8 import cn.iocoder.dashboard.modules.system.dal.mysql.dataobject.dict.SysDictDataDO;
@@ -13,6 +14,8 @@ import org.springframework.validation.annotation.Validated; @@ -13,6 +14,8 @@ import org.springframework.validation.annotation.Validated;
13 import org.springframework.web.bind.annotation.*; 14 import org.springframework.web.bind.annotation.*;
14 15
15 import javax.annotation.Resource; 16 import javax.annotation.Resource;
  17 +import javax.servlet.http.HttpServletResponse;
  18 +import java.io.IOException;
16 import java.util.List; 19 import java.util.List;
17 20
18 import static cn.iocoder.dashboard.common.pojo.CommonResult.success; 21 import static cn.iocoder.dashboard.common.pojo.CommonResult.success;
@@ -25,8 +28,8 @@ public class SysDictDataController { @@ -25,8 +28,8 @@ public class SysDictDataController {
25 @Resource 28 @Resource
26 private SysDictDataService dictDataService; 29 private SysDictDataService dictDataService;
27 30
28 - @GetMapping("/list-all-simple")  
29 @ApiOperation(value = "获得全部字典数据列表", notes = "一般用于管理后台缓存字典数据在本地") 31 @ApiOperation(value = "获得全部字典数据列表", notes = "一般用于管理后台缓存字典数据在本地")
  32 + @GetMapping("/list-all-simple")
30 // 无需添加权限认证,因为前端全局都需要 33 // 无需添加权限认证,因为前端全局都需要
31 public CommonResult<List<SysDictDataSimpleVO>> listSimpleDictDatas() { 34 public CommonResult<List<SysDictDataSimpleVO>> listSimpleDictDatas() {
32 List<SysDictDataDO> list = dictDataService.listDictDatas(); 35 List<SysDictDataDO> list = dictDataService.listDictDatas();
@@ -75,14 +78,16 @@ public class SysDictDataController { @@ -75,14 +78,16 @@ public class SysDictDataController {
75 return success(true); 78 return success(true);
76 } 79 }
77 80
78 - 81 + @ApiOperation("导出字典数据")
  82 + @GetMapping("/export")
79 // @Log(title = "字典类型", businessType = BusinessType.EXPORT) 83 // @Log(title = "字典类型", businessType = BusinessType.EXPORT)
80 // @PreAuthorize("@ss.hasPermi('system:dict:export')") 84 // @PreAuthorize("@ss.hasPermi('system:dict:export')")
81 -// @GetMapping("/export")  
82 -// public AjaxResult export(SysDictType dictType) {  
83 -// List<SysDictType> list = dictTypeService.selectDictTypeList(dictType);  
84 -// ExcelUtil<SysDictType> util = new ExcelUtil<SysDictType>(SysDictType.class);  
85 -// return util.exportExcel(list, "字典类型");  
86 -// } 85 + public void export(HttpServletResponse response, @Validated SysDictDataExportReqVO reqVO) throws IOException {
  86 + List<SysDictDataDO> list = dictDataService.listDictDatas(reqVO);
  87 + List<SysDictDataExcelVO> excelDataList = SysDictDataConvert.INSTANCE.convertList02(list);
  88 + // 输出
  89 + ExcelUtils.write(response, "字典数据.xls", "数据列表",
  90 + SysDictDataExcelVO.class, excelDataList);
  91 + }
87 92
88 } 93 }
src/main/java/cn/iocoder/dashboard/modules/system/controller/dict/SysDictTypeController.java
@@ -2,6 +2,7 @@ package cn.iocoder.dashboard.modules.system.controller.dict; @@ -2,6 +2,7 @@ package cn.iocoder.dashboard.modules.system.controller.dict;
2 2
3 import cn.iocoder.dashboard.common.pojo.CommonResult; 3 import cn.iocoder.dashboard.common.pojo.CommonResult;
4 import cn.iocoder.dashboard.common.pojo.PageResult; 4 import cn.iocoder.dashboard.common.pojo.PageResult;
  5 +import cn.iocoder.dashboard.framework.excel.core.util.ExcelUtils;
5 import cn.iocoder.dashboard.modules.system.controller.dict.vo.type.*; 6 import cn.iocoder.dashboard.modules.system.controller.dict.vo.type.*;
6 import cn.iocoder.dashboard.modules.system.convert.dict.SysDictTypeConvert; 7 import cn.iocoder.dashboard.modules.system.convert.dict.SysDictTypeConvert;
7 import cn.iocoder.dashboard.modules.system.dal.mysql.dataobject.dict.SysDictTypeDO; 8 import cn.iocoder.dashboard.modules.system.dal.mysql.dataobject.dict.SysDictTypeDO;
@@ -13,6 +14,8 @@ import org.springframework.validation.annotation.Validated; @@ -13,6 +14,8 @@ import org.springframework.validation.annotation.Validated;
13 import org.springframework.web.bind.annotation.*; 14 import org.springframework.web.bind.annotation.*;
14 15
15 import javax.annotation.Resource; 16 import javax.annotation.Resource;
  17 +import javax.servlet.http.HttpServletResponse;
  18 +import java.io.IOException;
16 import java.util.List; 19 import java.util.List;
17 20
18 import static cn.iocoder.dashboard.common.pojo.CommonResult.success; 21 import static cn.iocoder.dashboard.common.pojo.CommonResult.success;
@@ -76,14 +79,16 @@ public class SysDictTypeController { @@ -76,14 +79,16 @@ public class SysDictTypeController {
76 return success(SysDictTypeConvert.INSTANCE.convertList(list)); 79 return success(SysDictTypeConvert.INSTANCE.convertList(list));
77 } 80 }
78 81
79 - // 82 + @ApiOperation("导出数据类型")
  83 + @GetMapping("/export")
80 // @Log(title = "字典类型", businessType = BusinessType.EXPORT) 84 // @Log(title = "字典类型", businessType = BusinessType.EXPORT)
81 // @PreAuthorize("@ss.hasPermi('system:dict:export')") 85 // @PreAuthorize("@ss.hasPermi('system:dict:export')")
82 -// @GetMapping("/export")  
83 -// public AjaxResult export(SysDictType dictType) {  
84 -// List<SysDictType> list = dictTypeService.selectDictTypeList(dictType);  
85 -// ExcelUtil<SysDictType> util = new ExcelUtil<SysDictType>(SysDictType.class);  
86 -// return util.exportExcel(list, "字典类型");  
87 -// } 86 + public void export(HttpServletResponse response, @Validated SysDictTypeExportReqVO reqVO) throws IOException {
  87 + List<SysDictTypeDO> list = dictTypeService.listDictTypes(reqVO);
  88 + List<SysDictTypeExcelVO> excelTypeList = SysDictTypeConvert.INSTANCE.convertList02(list);
  89 + // 输出
  90 + ExcelUtils.write(response, "字典类型.xls", "类型列表",
  91 + SysDictTypeExcelVO.class, excelTypeList);
  92 + }
88 93
89 } 94 }
src/main/java/cn/iocoder/dashboard/modules/system/controller/dict/vo/data/SysDictDataExportReqVO.java 0 → 100644
  1 +package cn.iocoder.dashboard.modules.system.controller.dict.vo.data;
  2 +
  3 +import io.swagger.annotations.ApiModel;
  4 +import io.swagger.annotations.ApiModelProperty;
  5 +import lombok.Data;
  6 +
  7 +import javax.validation.constraints.Size;
  8 +
  9 +@ApiModel("字典类型导出 Request VO")
  10 +@Data
  11 +public class SysDictDataExportReqVO {
  12 +
  13 + @ApiModelProperty(value = "字典标签", example = "芋道")
  14 + @Size(max = 100, message = "字典标签长度不能超过100个字符")
  15 + private String label;
  16 +
  17 + @ApiModelProperty(value = "字典类型", example = "sys_common_sex", notes = "模糊匹配")
  18 + @Size(max = 100, message = "字典类型类型长度不能超过100个字符")
  19 + private String dictType;
  20 +
  21 + @ApiModelProperty(value = "展示状态", example = "1", notes = "参见 SysCommonStatusEnum 枚举类")
  22 + private Integer status;
  23 +
  24 +}
src/main/java/cn/iocoder/dashboard/modules/system/controller/dict/vo/type/SysDictTypeExportReqVO.java 0 → 100644
  1 +package cn.iocoder.dashboard.modules.system.controller.dict.vo.type;
  2 +
  3 +import io.swagger.annotations.ApiModel;
  4 +import io.swagger.annotations.ApiModelProperty;
  5 +import lombok.Data;
  6 +import org.springframework.format.annotation.DateTimeFormat;
  7 +
  8 +import javax.validation.constraints.Size;
  9 +import java.util.Date;
  10 +
  11 +import static cn.iocoder.dashboard.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
  12 +
  13 +@ApiModel("字典类型分页列表 Request VO")
  14 +@Data
  15 +public class SysDictTypeExportReqVO {
  16 +
  17 + @ApiModelProperty(value = "字典类型名称", example = "芋道", notes = "模糊匹配")
  18 + private String name;
  19 +
  20 + @ApiModelProperty(value = "字典类型", example = "sys_common_sex", notes = "模糊匹配")
  21 + @Size(max = 100, message = "字典类型类型长度不能超过100个字符")
  22 + private String type;
  23 +
  24 + @ApiModelProperty(value = "展示状态", example = "1", notes = "参见 SysCommonStatusEnum 枚举类")
  25 + private Integer status;
  26 +
  27 + @ApiModelProperty(value = "开始时间", example = "2020-10-24")
  28 + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
  29 + private Date beginTime;
  30 +
  31 + @ApiModelProperty(value = "结束时间", example = "2020-10-24")
  32 + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
  33 + private Date endTime;
  34 +
  35 +}
src/main/java/cn/iocoder/dashboard/modules/system/controller/dict/vo/type/SysDictTypePageReqVO.java
@@ -4,6 +4,7 @@ import cn.iocoder.dashboard.common.pojo.PageParam; @@ -4,6 +4,7 @@ import cn.iocoder.dashboard.common.pojo.PageParam;
4 import io.swagger.annotations.ApiModel; 4 import io.swagger.annotations.ApiModel;
5 import io.swagger.annotations.ApiModelProperty; 5 import io.swagger.annotations.ApiModelProperty;
6 import lombok.Data; 6 import lombok.Data;
  7 +import lombok.EqualsAndHashCode;
7 import org.springframework.format.annotation.DateTimeFormat; 8 import org.springframework.format.annotation.DateTimeFormat;
8 9
9 import javax.validation.constraints.Size; 10 import javax.validation.constraints.Size;
@@ -13,6 +14,7 @@ import static cn.iocoder.dashboard.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOU @@ -13,6 +14,7 @@ import static cn.iocoder.dashboard.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOU
13 14
14 @ApiModel("字典类型分页列表 Request VO") 15 @ApiModel("字典类型分页列表 Request VO")
15 @Data 16 @Data
  17 +@EqualsAndHashCode(callSuper = true)
16 public class SysDictTypePageReqVO extends PageParam { 18 public class SysDictTypePageReqVO extends PageParam {
17 19
18 @ApiModelProperty(value = "字典类型名称", example = "芋道", notes = "模糊匹配") 20 @ApiModelProperty(value = "字典类型名称", example = "芋道", notes = "模糊匹配")
src/main/java/cn/iocoder/dashboard/modules/system/controller/permission/SysRoleController.java
@@ -3,6 +3,7 @@ package cn.iocoder.dashboard.modules.system.controller.permission; @@ -3,6 +3,7 @@ package cn.iocoder.dashboard.modules.system.controller.permission;
3 import cn.iocoder.dashboard.common.enums.CommonStatusEnum; 3 import cn.iocoder.dashboard.common.enums.CommonStatusEnum;
4 import cn.iocoder.dashboard.common.pojo.CommonResult; 4 import cn.iocoder.dashboard.common.pojo.CommonResult;
5 import cn.iocoder.dashboard.common.pojo.PageResult; 5 import cn.iocoder.dashboard.common.pojo.PageResult;
  6 +import cn.iocoder.dashboard.framework.excel.core.util.ExcelUtils;
6 import cn.iocoder.dashboard.modules.system.controller.permission.vo.role.*; 7 import cn.iocoder.dashboard.modules.system.controller.permission.vo.role.*;
7 import cn.iocoder.dashboard.modules.system.convert.permission.SysRoleConvert; 8 import cn.iocoder.dashboard.modules.system.convert.permission.SysRoleConvert;
8 import cn.iocoder.dashboard.modules.system.dal.mysql.dataobject.permission.SysRoleDO; 9 import cn.iocoder.dashboard.modules.system.dal.mysql.dataobject.permission.SysRoleDO;
@@ -14,6 +15,8 @@ import org.springframework.validation.annotation.Validated; @@ -14,6 +15,8 @@ import org.springframework.validation.annotation.Validated;
14 import org.springframework.web.bind.annotation.*; 15 import org.springframework.web.bind.annotation.*;
15 16
16 import javax.annotation.Resource; 17 import javax.annotation.Resource;
  18 +import javax.servlet.http.HttpServletResponse;
  19 +import java.io.IOException;
17 import java.util.Collections; 20 import java.util.Collections;
18 import java.util.Comparator; 21 import java.util.Comparator;
19 import java.util.List; 22 import java.util.List;
@@ -80,16 +83,6 @@ public class SysRoleController { @@ -80,16 +83,6 @@ public class SysRoleController {
80 return success(SysRoleConvert.INSTANCE.convert(role)); 83 return success(SysRoleConvert.INSTANCE.convert(role));
81 } 84 }
82 85
83 -// @Log(title = "角色管理", businessType = BusinessType.EXPORT)  
84 -// @PreAuthorize("@ss.hasPermi('system:role:export')")  
85 -// @GetMapping("/export")  
86 -// public AjaxResult export(SysRole role)  
87 -// {  
88 -// List<SysRole> list = roleService.selectRoleList(role);  
89 -// ExcelUtil<SysRole> util = new ExcelUtil<SysRole>(SysRole.class);  
90 -// return util.exportExcel(list, "角色数据");  
91 -// }  
92 -  
93 @ApiOperation("修改角色状态") 86 @ApiOperation("修改角色状态")
94 @PostMapping("/update-status") 87 @PostMapping("/update-status")
95 // @PreAuthorize("@ss.hasPermi('system:role:edit')") 88 // @PreAuthorize("@ss.hasPermi('system:role:edit')")
@@ -99,4 +92,15 @@ public class SysRoleController { @@ -99,4 +92,15 @@ public class SysRoleController {
99 return success(true); 92 return success(true);
100 } 93 }
101 94
  95 + @GetMapping("/export")
  96 +// @Log(title = "角色管理", businessType = BusinessType.EXPORT)
  97 +// @PreAuthorize("@ss.hasPermi('system:role:export')")
  98 + public void export(HttpServletResponse response, @Validated SysRoleExportReqVO reqVO) throws IOException {
  99 + List<SysRoleDO> list = roleService.listRoles(reqVO);
  100 + List<SysRoleExcelVO> excelDataList = SysRoleConvert.INSTANCE.convertList03(list);
  101 + // 输出
  102 + ExcelUtils.write(response, "角色数据.xls", "角色列表",
  103 + SysRoleExcelVO.class, excelDataList);
  104 + }
  105 +
102 } 106 }
src/main/java/cn/iocoder/dashboard/modules/system/controller/permission/vo/role/SysRoleExcelRespVO.java renamed to src/main/java/cn/iocoder/dashboard/modules/system/controller/permission/vo/role/SysRoleExcelVO.java
1 package cn.iocoder.dashboard.modules.system.controller.permission.vo.role; 1 package cn.iocoder.dashboard.modules.system.controller.permission.vo.role;
2 2
3 -import cn.iocoder.dashboard.framework.excel.Excel; 3 +import cn.iocoder.dashboard.framework.excel.core.annotations.DictFormat;
  4 +import cn.iocoder.dashboard.framework.excel.core.convert.DictConvert;
  5 +import cn.iocoder.dashboard.modules.system.enums.dict.DictTypeEnum;
  6 +import com.alibaba.excel.annotation.ExcelProperty;
4 import lombok.Data; 7 import lombok.Data;
5 8
6 /** 9 /**
7 * 角色 Excel 导出响应 VO 10 * 角色 Excel 导出响应 VO
8 */ 11 */
9 @Data 12 @Data
10 -public class SysRoleExcelRespVO { 13 +public class SysRoleExcelVO {
11 14
12 - @Excel(name = "角色序号", cellType = Excel.ColumnType.NUMERIC) 15 + @ExcelProperty("角色序号")
13 private Long id; 16 private Long id;
14 17
15 - @Excel(name = "角色名称") 18 + @ExcelProperty("角色名称")
16 private String name; 19 private String name;
17 20
18 - @Excel(name = "角色标志") 21 + @ExcelProperty("角色标志")
19 private String code; 22 private String code;
20 23
21 - @Excel(name = "角色排序") 24 + @ExcelProperty("角色排序")
22 private Integer sort; 25 private Integer sort;
23 26
24 - @Excel(name = "数据范围", readConverterExp = "1=所有数据权限,2=自定义数据权限,3=本部门数据权限,4=本部门及以下数据权限") 27 + @ExcelProperty("数据范围")
25 private Integer dataScope; 28 private Integer dataScope;
26 29
27 - @Excel(name = "角色状态", readConverterExp = "0=正常,1=停用") 30 + @ExcelProperty(value = "角色状态", converter = DictConvert.class)
  31 + @DictFormat(DictTypeEnum.SYS_COMMON_STATUS)
28 private String status; 32 private String status;
29 33
30 } 34 }
src/main/java/cn/iocoder/dashboard/modules/system/controller/permission/vo/role/SysRoleExportReqVO.java 0 → 100644
  1 +package cn.iocoder.dashboard.modules.system.controller.permission.vo.role;
  2 +
  3 +import io.swagger.annotations.ApiModel;
  4 +import io.swagger.annotations.ApiModelProperty;
  5 +import lombok.Data;
  6 +import lombok.EqualsAndHashCode;
  7 +import org.springframework.format.annotation.DateTimeFormat;
  8 +
  9 +import java.util.Date;
  10 +
  11 +import static cn.iocoder.dashboard.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
  12 +
  13 +@ApiModel("角色分页 Request VO")
  14 +@Data
  15 +public class SysRoleExportReqVO {
  16 +
  17 + @ApiModelProperty(value = "角色名称", example = "芋道", notes = "模糊匹配")
  18 + private String name;
  19 +
  20 + @ApiModelProperty(value = "角色标识", example = "yudao", notes = "模糊匹配")
  21 + private String code;
  22 +
  23 + @ApiModelProperty(value = "展示状态", example = "1", notes = "参见 SysCommonStatusEnum 枚举类")
  24 + private Integer status;
  25 +
  26 + @ApiModelProperty(value = "开始时间", example = "2020-10-24")
  27 + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
  28 + private Date beginTime;
  29 +
  30 + @ApiModelProperty(value = "结束时间", example = "2020-10-24")
  31 + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
  32 + private Date endTime;
  33 +
  34 +}
src/main/java/cn/iocoder/dashboard/modules/system/controller/user/vo/user/SysUserExcelRespBackVO.java deleted
1 -package cn.iocoder.dashboard.modules.system.controller.user.vo.user;  
2 -  
3 -import cn.iocoder.dashboard.framework.excel.Excel;  
4 -import cn.iocoder.dashboard.framework.excel.Excels;  
5 -import cn.iocoder.dashboard.modules.system.dal.mysql.dataobject.dept.SysDeptDO;  
6 -import lombok.Data;  
7 -  
8 -import java.util.Date;  
9 -  
10 -/**  
11 - * 用户 Excel 导出响应 VO  
12 - */  
13 -@Data  
14 -public class SysUserExcelRespBackVO {  
15 -  
16 - @Excel(name = "用户序号", cellType = Excel.ColumnType.NUMERIC, prompt = "用户编号")  
17 - private Long id;  
18 -  
19 - @Excel(name = "登录名称")  
20 - private String username;  
21 -  
22 - @Excel(name = "用户名称")  
23 - private String nickname;  
24 -  
25 - @Excel(name = "部门编号", type = Excel.Type.IMPORT)  
26 - private Long deptId;  
27 -  
28 - @Excel(name = "用户邮箱")  
29 - private String email;  
30 -  
31 - @Excel(name = "手机号码")  
32 - private String mobile;  
33 -  
34 - @Excel(name = "用户性别", readConverterExp = "0=男,1=女,2=未知")  
35 - private String sex;  
36 -  
37 - @Excel(name = "帐号状态", readConverterExp = "0=正常,1=停用")  
38 - private Integer status;  
39 -  
40 - @Excel(name = "最后登录IP", type = Excel.Type.EXPORT)  
41 - private String loginIp;  
42 -  
43 - @Excel(name = "最后登录时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss", type = Excel.Type.EXPORT)  
44 - private Date loginDate;  
45 -  
46 - @Excels({  
47 - @Excel(name = "部门名称", targetAttr = "deptName", type = Excel.Type.EXPORT),  
48 - @Excel(name = "部门负责人", targetAttr = "leader", type = Excel.Type.EXPORT)  
49 - })  
50 - private SysDeptDO dept;  
51 -  
52 -}  
src/main/java/cn/iocoder/dashboard/modules/system/controller/user/vo/user/SysUserImportExcelVO.java 0 → 100644
  1 +package cn.iocoder.dashboard.modules.system.controller.user.vo.user;
  2 +
  3 +import cn.iocoder.dashboard.framework.excel.core.annotations.DictFormat;
  4 +import cn.iocoder.dashboard.framework.excel.core.convert.DictConvert;
  5 +import cn.iocoder.dashboard.modules.system.enums.dict.DictTypeEnum;
  6 +import com.alibaba.excel.annotation.ExcelProperty;
  7 +import lombok.Data;
  8 +
  9 +/**
  10 + * 用户 Excel 导入 VO
  11 + */
  12 +@Data
  13 +public class SysUserImportExcelVO {
  14 +
  15 + @ExcelProperty("登录名称")
  16 + private String username;
  17 +
  18 + @ExcelProperty("用户名称")
  19 + private String nickname;
  20 +
  21 + @ExcelProperty("部门编号")
  22 + private Long deptId;
  23 +
  24 + @ExcelProperty("用户邮箱")
  25 + private String email;
  26 +
  27 + @ExcelProperty("手机号码")
  28 + private String mobile;
  29 +
  30 + @ExcelProperty(value = "用户性别", converter = DictConvert.class)
  31 + @DictFormat(DictTypeEnum.SYS_USER_SEX)
  32 + private String sex;
  33 +
  34 + @ExcelProperty(value = "账号状态", converter = DictConvert.class)
  35 + @DictFormat(DictTypeEnum.SYS_COMMON_STATUS)
  36 + private Integer status;
  37 +
  38 +}
src/main/java/cn/iocoder/dashboard/modules/system/convert/dict/SysDictDataConvert.java
1 package cn.iocoder.dashboard.modules.system.convert.dict; 1 package cn.iocoder.dashboard.modules.system.convert.dict;
2 2
3 import cn.iocoder.dashboard.common.pojo.PageResult; 3 import cn.iocoder.dashboard.common.pojo.PageResult;
4 -import cn.iocoder.dashboard.modules.system.controller.dict.vo.data.SysDictDataCreateReqVO;  
5 -import cn.iocoder.dashboard.modules.system.controller.dict.vo.data.SysDictDataRespVO;  
6 -import cn.iocoder.dashboard.modules.system.controller.dict.vo.data.SysDictDataSimpleVO;  
7 -import cn.iocoder.dashboard.modules.system.controller.dict.vo.data.SysDictDataUpdateReqVO; 4 +import cn.iocoder.dashboard.modules.system.controller.dict.vo.data.*;
8 import cn.iocoder.dashboard.modules.system.dal.mysql.dataobject.dict.SysDictDataDO; 5 import cn.iocoder.dashboard.modules.system.dal.mysql.dataobject.dict.SysDictDataDO;
9 import com.baomidou.mybatisplus.core.metadata.IPage; 6 import com.baomidou.mybatisplus.core.metadata.IPage;
10 import org.mapstruct.Mapper; 7 import org.mapstruct.Mapper;
@@ -31,4 +28,6 @@ public interface SysDictDataConvert { @@ -31,4 +28,6 @@ public interface SysDictDataConvert {
31 @Mapping(source = "records", target = "list") 28 @Mapping(source = "records", target = "list")
32 PageResult<SysDictDataDO> convertPage02(IPage<SysDictDataDO> page); 29 PageResult<SysDictDataDO> convertPage02(IPage<SysDictDataDO> page);
33 30
  31 + List<SysDictDataExcelVO> convertList02(List<SysDictDataDO> bean);
  32 +
34 } 33 }
src/main/java/cn/iocoder/dashboard/modules/system/convert/dict/SysDictTypeConvert.java
1 package cn.iocoder.dashboard.modules.system.convert.dict; 1 package cn.iocoder.dashboard.modules.system.convert.dict;
2 2
3 import cn.iocoder.dashboard.common.pojo.PageResult; 3 import cn.iocoder.dashboard.common.pojo.PageResult;
4 -import cn.iocoder.dashboard.modules.system.controller.dict.vo.type.SysDictTypeCreateReqVO;  
5 -import cn.iocoder.dashboard.modules.system.controller.dict.vo.type.SysDictTypeRespVO;  
6 -import cn.iocoder.dashboard.modules.system.controller.dict.vo.type.SysDictTypeSimpleRespVO;  
7 -import cn.iocoder.dashboard.modules.system.controller.dict.vo.type.SysDictTypeUpdateReqVO; 4 +import cn.iocoder.dashboard.modules.system.controller.dict.vo.type.*;
8 import cn.iocoder.dashboard.modules.system.dal.mysql.dataobject.dict.SysDictTypeDO; 5 import cn.iocoder.dashboard.modules.system.dal.mysql.dataobject.dict.SysDictTypeDO;
9 import com.baomidou.mybatisplus.core.metadata.IPage; 6 import com.baomidou.mybatisplus.core.metadata.IPage;
10 import org.mapstruct.Mapper; 7 import org.mapstruct.Mapper;
@@ -31,4 +28,6 @@ public interface SysDictTypeConvert { @@ -31,4 +28,6 @@ public interface SysDictTypeConvert {
31 28
32 List<SysDictTypeSimpleRespVO> convertList(List<SysDictTypeDO> list); 29 List<SysDictTypeSimpleRespVO> convertList(List<SysDictTypeDO> list);
33 30
  31 + List<SysDictTypeExcelVO> convertList02(List<SysDictTypeDO> list);
  32 +
34 } 33 }
src/main/java/cn/iocoder/dashboard/modules/system/convert/permission/SysRoleConvert.java
1 package cn.iocoder.dashboard.modules.system.convert.permission; 1 package cn.iocoder.dashboard.modules.system.convert.permission;
2 2
3 import cn.iocoder.dashboard.common.pojo.PageResult; 3 import cn.iocoder.dashboard.common.pojo.PageResult;
4 -import cn.iocoder.dashboard.modules.system.controller.permission.vo.role.SysRoleCreateReqVO;  
5 -import cn.iocoder.dashboard.modules.system.controller.permission.vo.role.SysRoleRespVO;  
6 -import cn.iocoder.dashboard.modules.system.controller.permission.vo.role.SysRoleSimpleRespVO;  
7 -import cn.iocoder.dashboard.modules.system.controller.permission.vo.role.SysRoleUpdateReqVO; 4 +import cn.iocoder.dashboard.modules.system.controller.permission.vo.role.*;
8 import cn.iocoder.dashboard.modules.system.dal.mysql.dataobject.permission.SysRoleDO; 5 import cn.iocoder.dashboard.modules.system.dal.mysql.dataobject.permission.SysRoleDO;
9 import com.baomidou.mybatisplus.core.metadata.IPage; 6 import com.baomidou.mybatisplus.core.metadata.IPage;
10 import org.mapstruct.Mapper; 7 import org.mapstruct.Mapper;
@@ -29,4 +26,6 @@ public interface SysRoleConvert { @@ -29,4 +26,6 @@ public interface SysRoleConvert {
29 26
30 List<SysRoleSimpleRespVO> convertList02(List<SysRoleDO> list); 27 List<SysRoleSimpleRespVO> convertList02(List<SysRoleDO> list);
31 28
  29 + List<SysRoleExcelVO> convertList03(List<SysRoleDO> list);
  30 +
32 } 31 }
src/main/java/cn/iocoder/dashboard/modules/system/dal/mysql/dao/dict/SysDictDataMapper.java
@@ -2,6 +2,7 @@ package cn.iocoder.dashboard.modules.system.dal.mysql.dao.dict; @@ -2,6 +2,7 @@ package cn.iocoder.dashboard.modules.system.dal.mysql.dao.dict;
2 2
3 import cn.iocoder.dashboard.framework.mybatis.core.query.QueryWrapperX; 3 import cn.iocoder.dashboard.framework.mybatis.core.query.QueryWrapperX;
4 import cn.iocoder.dashboard.framework.mybatis.core.util.MyBatisUtils; 4 import cn.iocoder.dashboard.framework.mybatis.core.util.MyBatisUtils;
  5 +import cn.iocoder.dashboard.modules.system.controller.dict.vo.data.SysDictDataExportReqVO;
5 import cn.iocoder.dashboard.modules.system.controller.dict.vo.data.SysDictDataPageReqVO; 6 import cn.iocoder.dashboard.modules.system.controller.dict.vo.data.SysDictDataPageReqVO;
6 import cn.iocoder.dashboard.modules.system.dal.mysql.dataobject.dict.SysDictDataDO; 7 import cn.iocoder.dashboard.modules.system.dal.mysql.dataobject.dict.SysDictDataDO;
7 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; 8 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -36,4 +37,9 @@ public interface SysDictDataMapper extends BaseMapper&lt;SysDictDataDO&gt; { @@ -36,4 +37,9 @@ public interface SysDictDataMapper extends BaseMapper&lt;SysDictDataDO&gt; {
36 return selectList(new QueryWrapper<>()); 37 return selectList(new QueryWrapper<>());
37 } 38 }
38 39
  40 + default List<SysDictDataDO> selectList(SysDictDataExportReqVO reqVO) {
  41 + return selectList(new QueryWrapperX<SysDictDataDO>().likeIfPresent("label", reqVO.getLabel())
  42 + .likeIfPresent("dict_type", reqVO.getDictType())
  43 + .eqIfPresent("status", reqVO.getStatus()));
  44 + }
39 } 45 }
src/main/java/cn/iocoder/dashboard/modules/system/dal/mysql/dao/dict/SysDictTypeMapper.java
@@ -2,6 +2,7 @@ package cn.iocoder.dashboard.modules.system.dal.mysql.dao.dict; @@ -2,6 +2,7 @@ package cn.iocoder.dashboard.modules.system.dal.mysql.dao.dict;
2 2
3 import cn.iocoder.dashboard.framework.mybatis.core.query.QueryWrapperX; 3 import cn.iocoder.dashboard.framework.mybatis.core.query.QueryWrapperX;
4 import cn.iocoder.dashboard.framework.mybatis.core.util.MyBatisUtils; 4 import cn.iocoder.dashboard.framework.mybatis.core.util.MyBatisUtils;
  5 +import cn.iocoder.dashboard.modules.system.controller.dict.vo.type.SysDictTypeExportReqVO;
5 import cn.iocoder.dashboard.modules.system.controller.dict.vo.type.SysDictTypePageReqVO; 6 import cn.iocoder.dashboard.modules.system.controller.dict.vo.type.SysDictTypePageReqVO;
6 import cn.iocoder.dashboard.modules.system.dal.mysql.dataobject.dict.SysDictTypeDO; 7 import cn.iocoder.dashboard.modules.system.dal.mysql.dataobject.dict.SysDictTypeDO;
7 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; 8 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -22,6 +23,13 @@ public interface SysDictTypeMapper extends BaseMapper&lt;SysDictTypeDO&gt; { @@ -22,6 +23,13 @@ public interface SysDictTypeMapper extends BaseMapper&lt;SysDictTypeDO&gt; {
22 .betweenIfPresent("create_time", reqVO.getBeginTime(), reqVO.getEndTime())); 23 .betweenIfPresent("create_time", reqVO.getBeginTime(), reqVO.getEndTime()));
23 } 24 }
24 25
  26 + default List<SysDictTypeDO> selectList(SysDictTypeExportReqVO reqVO) {
  27 + return selectList(new QueryWrapperX<SysDictTypeDO>().likeIfPresent("name", reqVO.getName())
  28 + .likeIfPresent("dict_type", reqVO.getType())
  29 + .eqIfPresent("status", reqVO.getStatus())
  30 + .betweenIfPresent("create_time", reqVO.getBeginTime(), reqVO.getEndTime()));
  31 + }
  32 +
25 default SysDictTypeDO selectByType(String type) { 33 default SysDictTypeDO selectByType(String type) {
26 return selectOne(new QueryWrapperX<SysDictTypeDO>().eq("dict_type", type)); 34 return selectOne(new QueryWrapperX<SysDictTypeDO>().eq("dict_type", type));
27 } 35 }
src/main/java/cn/iocoder/dashboard/modules/system/dal/mysql/dao/permission/SysRoleMapper.java
@@ -2,6 +2,7 @@ package cn.iocoder.dashboard.modules.system.dal.mysql.dao.permission; @@ -2,6 +2,7 @@ package cn.iocoder.dashboard.modules.system.dal.mysql.dao.permission;
2 2
3 import cn.iocoder.dashboard.framework.mybatis.core.query.QueryWrapperX; 3 import cn.iocoder.dashboard.framework.mybatis.core.query.QueryWrapperX;
4 import cn.iocoder.dashboard.framework.mybatis.core.util.MyBatisUtils; 4 import cn.iocoder.dashboard.framework.mybatis.core.util.MyBatisUtils;
  5 +import cn.iocoder.dashboard.modules.system.controller.permission.vo.role.SysRoleExportReqVO;
5 import cn.iocoder.dashboard.modules.system.controller.permission.vo.role.SysRolePageReqVO; 6 import cn.iocoder.dashboard.modules.system.controller.permission.vo.role.SysRolePageReqVO;
6 import cn.iocoder.dashboard.modules.system.dal.mysql.dataobject.permission.SysRoleDO; 7 import cn.iocoder.dashboard.modules.system.dal.mysql.dataobject.permission.SysRoleDO;
7 import com.baomidou.mybatisplus.core.mapper.BaseMapper; 8 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
@@ -18,9 +19,16 @@ public interface SysRoleMapper extends BaseMapper&lt;SysRoleDO&gt; { @@ -18,9 +19,16 @@ public interface SysRoleMapper extends BaseMapper&lt;SysRoleDO&gt; {
18 default IPage<SysRoleDO> selectPage(SysRolePageReqVO reqVO) { 19 default IPage<SysRoleDO> selectPage(SysRolePageReqVO reqVO) {
19 return selectPage(MyBatisUtils.buildPage(reqVO), 20 return selectPage(MyBatisUtils.buildPage(reqVO),
20 new QueryWrapperX<SysRoleDO>().likeIfPresent("name", reqVO.getName()) 21 new QueryWrapperX<SysRoleDO>().likeIfPresent("name", reqVO.getName())
21 - .likeIfPresent("code", reqVO.getCode())  
22 - .eqIfPresent("status", reqVO.getStatus())  
23 - .betweenIfPresent("create_time", reqVO.getBeginTime(), reqVO.getEndTime())); 22 + .likeIfPresent("code", reqVO.getCode())
  23 + .eqIfPresent("status", reqVO.getStatus())
  24 + .betweenIfPresent("create_time", reqVO.getBeginTime(), reqVO.getEndTime()));
  25 + }
  26 +
  27 + default List<SysRoleDO> listRoles(SysRoleExportReqVO reqVO) {
  28 + return selectList(new QueryWrapperX<SysRoleDO>().likeIfPresent("name", reqVO.getName())
  29 + .likeIfPresent("code", reqVO.getCode())
  30 + .eqIfPresent("status", reqVO.getStatus())
  31 + .betweenIfPresent("create_time", reqVO.getBeginTime(), reqVO.getEndTime()));
24 } 32 }
25 33
26 default SysRoleDO selectByName(String name) { 34 default SysRoleDO selectByName(String name) {
@@ -34,4 +42,5 @@ public interface SysRoleMapper extends BaseMapper&lt;SysRoleDO&gt; { @@ -34,4 +42,5 @@ public interface SysRoleMapper extends BaseMapper&lt;SysRoleDO&gt; {
34 default List<SysRoleDO> selectListByStatus(@Nullable Collection<Integer> statuses) { 42 default List<SysRoleDO> selectListByStatus(@Nullable Collection<Integer> statuses) {
35 return selectList(new QueryWrapperX<SysRoleDO>().in("status", statuses)); 43 return selectList(new QueryWrapperX<SysRoleDO>().in("status", statuses));
36 } 44 }
  45 +
37 } 46 }
src/main/java/cn/iocoder/dashboard/modules/system/service/dict/SysDictDataService.java
@@ -3,6 +3,7 @@ package cn.iocoder.dashboard.modules.system.service.dict; @@ -3,6 +3,7 @@ package cn.iocoder.dashboard.modules.system.service.dict;
3 import cn.iocoder.dashboard.common.pojo.PageResult; 3 import cn.iocoder.dashboard.common.pojo.PageResult;
4 import cn.iocoder.dashboard.framework.dict.core.service.DictDataFrameworkService; 4 import cn.iocoder.dashboard.framework.dict.core.service.DictDataFrameworkService;
5 import cn.iocoder.dashboard.modules.system.controller.dict.vo.data.SysDictDataCreateReqVO; 5 import cn.iocoder.dashboard.modules.system.controller.dict.vo.data.SysDictDataCreateReqVO;
  6 +import cn.iocoder.dashboard.modules.system.controller.dict.vo.data.SysDictDataExportReqVO;
6 import cn.iocoder.dashboard.modules.system.controller.dict.vo.data.SysDictDataPageReqVO; 7 import cn.iocoder.dashboard.modules.system.controller.dict.vo.data.SysDictDataPageReqVO;
7 import cn.iocoder.dashboard.modules.system.controller.dict.vo.data.SysDictDataUpdateReqVO; 8 import cn.iocoder.dashboard.modules.system.controller.dict.vo.data.SysDictDataUpdateReqVO;
8 import cn.iocoder.dashboard.modules.system.dal.mysql.dataobject.dict.SysDictDataDO; 9 import cn.iocoder.dashboard.modules.system.dal.mysql.dataobject.dict.SysDictDataDO;
@@ -37,6 +38,14 @@ public interface SysDictDataService extends DictDataFrameworkService { @@ -37,6 +38,14 @@ public interface SysDictDataService extends DictDataFrameworkService {
37 PageResult<SysDictDataDO> pageDictDatas(SysDictDataPageReqVO reqVO); 38 PageResult<SysDictDataDO> pageDictDatas(SysDictDataPageReqVO reqVO);
38 39
39 /** 40 /**
  41 + * 获得字典数据列表
  42 + *
  43 + * @param reqVO 列表请求
  44 + * @return 字典数据列表
  45 + */
  46 + List<SysDictDataDO> listDictDatas(SysDictDataExportReqVO reqVO);
  47 +
  48 + /**
40 * 获得字典数据详情 49 * 获得字典数据详情
41 * 50 *
42 * @param id 字典数据编号 51 * @param id 字典数据编号
src/main/java/cn/iocoder/dashboard/modules/system/service/dict/SysDictTypeService.java
@@ -2,6 +2,7 @@ package cn.iocoder.dashboard.modules.system.service.dict; @@ -2,6 +2,7 @@ package cn.iocoder.dashboard.modules.system.service.dict;
2 2
3 import cn.iocoder.dashboard.common.pojo.PageResult; 3 import cn.iocoder.dashboard.common.pojo.PageResult;
4 import cn.iocoder.dashboard.modules.system.controller.dict.vo.type.SysDictTypeCreateReqVO; 4 import cn.iocoder.dashboard.modules.system.controller.dict.vo.type.SysDictTypeCreateReqVO;
  5 +import cn.iocoder.dashboard.modules.system.controller.dict.vo.type.SysDictTypeExportReqVO;
5 import cn.iocoder.dashboard.modules.system.controller.dict.vo.type.SysDictTypePageReqVO; 6 import cn.iocoder.dashboard.modules.system.controller.dict.vo.type.SysDictTypePageReqVO;
6 import cn.iocoder.dashboard.modules.system.controller.dict.vo.type.SysDictTypeUpdateReqVO; 7 import cn.iocoder.dashboard.modules.system.controller.dict.vo.type.SysDictTypeUpdateReqVO;
7 import cn.iocoder.dashboard.modules.system.dal.mysql.dataobject.dict.SysDictTypeDO; 8 import cn.iocoder.dashboard.modules.system.dal.mysql.dataobject.dict.SysDictTypeDO;
@@ -24,6 +25,14 @@ public interface SysDictTypeService { @@ -24,6 +25,14 @@ public interface SysDictTypeService {
24 PageResult<SysDictTypeDO> pageDictTypes(SysDictTypePageReqVO reqVO); 25 PageResult<SysDictTypeDO> pageDictTypes(SysDictTypePageReqVO reqVO);
25 26
26 /** 27 /**
  28 + * 获得字典类型列表
  29 + *
  30 + * @param reqVO 列表请求
  31 + * @return 字典类型列表
  32 + */
  33 + List<SysDictTypeDO> listDictTypes(SysDictTypeExportReqVO reqVO);
  34 +
  35 + /**
27 * 获得字典类型详情 36 * 获得字典类型详情
28 * 37 *
29 * @param id 字典类型编号 38 * @param id 字典类型编号
src/main/java/cn/iocoder/dashboard/modules/system/service/dict/impl/SysDictDataServiceImpl.java
@@ -4,6 +4,7 @@ import cn.iocoder.dashboard.common.enums.CommonStatusEnum; @@ -4,6 +4,7 @@ import cn.iocoder.dashboard.common.enums.CommonStatusEnum;
4 import cn.iocoder.dashboard.common.exception.util.ServiceExceptionUtil; 4 import cn.iocoder.dashboard.common.exception.util.ServiceExceptionUtil;
5 import cn.iocoder.dashboard.common.pojo.PageResult; 5 import cn.iocoder.dashboard.common.pojo.PageResult;
6 import cn.iocoder.dashboard.modules.system.controller.dict.vo.data.SysDictDataCreateReqVO; 6 import cn.iocoder.dashboard.modules.system.controller.dict.vo.data.SysDictDataCreateReqVO;
  7 +import cn.iocoder.dashboard.modules.system.controller.dict.vo.data.SysDictDataExportReqVO;
7 import cn.iocoder.dashboard.modules.system.controller.dict.vo.data.SysDictDataPageReqVO; 8 import cn.iocoder.dashboard.modules.system.controller.dict.vo.data.SysDictDataPageReqVO;
8 import cn.iocoder.dashboard.modules.system.controller.dict.vo.data.SysDictDataUpdateReqVO; 9 import cn.iocoder.dashboard.modules.system.controller.dict.vo.data.SysDictDataUpdateReqVO;
9 import cn.iocoder.dashboard.modules.system.convert.dict.SysDictDataConvert; 10 import cn.iocoder.dashboard.modules.system.convert.dict.SysDictDataConvert;
@@ -85,6 +86,13 @@ public class SysDictDataServiceImpl implements SysDictDataService { @@ -85,6 +86,13 @@ public class SysDictDataServiceImpl implements SysDictDataService {
85 } 86 }
86 87
87 @Override 88 @Override
  89 + public List<SysDictDataDO> listDictDatas(SysDictDataExportReqVO reqVO) {
  90 + List<SysDictDataDO> list = dictDataMapper.selectList(reqVO);
  91 + list.sort(COMPARATOR_TYPE_AND_SORT);
  92 + return list;
  93 + }
  94 +
  95 + @Override
88 public SysDictDataDO getDictData(Long id) { 96 public SysDictDataDO getDictData(Long id) {
89 return dictDataMapper.selectById(id); 97 return dictDataMapper.selectById(id);
90 } 98 }
src/main/java/cn/iocoder/dashboard/modules/system/service/dict/impl/SysDictTypeServiceImpl.java
@@ -3,6 +3,7 @@ package cn.iocoder.dashboard.modules.system.service.dict.impl; @@ -3,6 +3,7 @@ package cn.iocoder.dashboard.modules.system.service.dict.impl;
3 import cn.iocoder.dashboard.common.exception.util.ServiceExceptionUtil; 3 import cn.iocoder.dashboard.common.exception.util.ServiceExceptionUtil;
4 import cn.iocoder.dashboard.common.pojo.PageResult; 4 import cn.iocoder.dashboard.common.pojo.PageResult;
5 import cn.iocoder.dashboard.modules.system.controller.dict.vo.type.SysDictTypeCreateReqVO; 5 import cn.iocoder.dashboard.modules.system.controller.dict.vo.type.SysDictTypeCreateReqVO;
  6 +import cn.iocoder.dashboard.modules.system.controller.dict.vo.type.SysDictTypeExportReqVO;
6 import cn.iocoder.dashboard.modules.system.controller.dict.vo.type.SysDictTypePageReqVO; 7 import cn.iocoder.dashboard.modules.system.controller.dict.vo.type.SysDictTypePageReqVO;
7 import cn.iocoder.dashboard.modules.system.controller.dict.vo.type.SysDictTypeUpdateReqVO; 8 import cn.iocoder.dashboard.modules.system.controller.dict.vo.type.SysDictTypeUpdateReqVO;
8 import cn.iocoder.dashboard.modules.system.convert.dict.SysDictTypeConvert; 9 import cn.iocoder.dashboard.modules.system.convert.dict.SysDictTypeConvert;
@@ -41,6 +42,11 @@ public class SysDictTypeServiceImpl implements SysDictTypeService { @@ -41,6 +42,11 @@ public class SysDictTypeServiceImpl implements SysDictTypeService {
41 } 42 }
42 43
43 @Override 44 @Override
  45 + public List<SysDictTypeDO> listDictTypes(SysDictTypeExportReqVO reqVO) {
  46 + return dictTypeMapper.selectList(reqVO);
  47 + }
  48 +
  49 + @Override
44 public SysDictTypeDO getDictType(Long id) { 50 public SysDictTypeDO getDictType(Long id) {
45 return dictTypeMapper.selectById(id); 51 return dictTypeMapper.selectById(id);
46 } 52 }
src/main/java/cn/iocoder/dashboard/modules/system/service/permission/SysRoleService.java
@@ -2,6 +2,7 @@ package cn.iocoder.dashboard.modules.system.service.permission; @@ -2,6 +2,7 @@ package cn.iocoder.dashboard.modules.system.service.permission;
2 2
3 import cn.iocoder.dashboard.common.pojo.PageResult; 3 import cn.iocoder.dashboard.common.pojo.PageResult;
4 import cn.iocoder.dashboard.modules.system.controller.permission.vo.role.SysRoleCreateReqVO; 4 import cn.iocoder.dashboard.modules.system.controller.permission.vo.role.SysRoleCreateReqVO;
  5 +import cn.iocoder.dashboard.modules.system.controller.permission.vo.role.SysRoleExportReqVO;
5 import cn.iocoder.dashboard.modules.system.controller.permission.vo.role.SysRolePageReqVO; 6 import cn.iocoder.dashboard.modules.system.controller.permission.vo.role.SysRolePageReqVO;
6 import cn.iocoder.dashboard.modules.system.controller.permission.vo.role.SysRoleUpdateReqVO; 7 import cn.iocoder.dashboard.modules.system.controller.permission.vo.role.SysRoleUpdateReqVO;
7 import cn.iocoder.dashboard.modules.system.dal.mysql.dataobject.permission.SysRoleDO; 8 import cn.iocoder.dashboard.modules.system.dal.mysql.dataobject.permission.SysRoleDO;
@@ -94,6 +95,14 @@ public interface SysRoleService { @@ -94,6 +95,14 @@ public interface SysRoleService {
94 PageResult<SysRoleDO> pageRole(SysRolePageReqVO reqVO); 95 PageResult<SysRoleDO> pageRole(SysRolePageReqVO reqVO);
95 96
96 /** 97 /**
  98 + * 获得角色列表
  99 + *
  100 + * @param reqVO 列表查询
  101 + * @return 角色列表
  102 + */
  103 + List<SysRoleDO> listRoles(SysRoleExportReqVO reqVO);
  104 +
  105 + /**
97 * 更新角色状态 106 * 更新角色状态
98 * 107 *
99 * @param id 角色编号 108 * @param id 角色编号
src/main/java/cn/iocoder/dashboard/modules/system/service/permission/impl/SysRoleServiceImpl.java
@@ -5,6 +5,7 @@ import cn.iocoder.dashboard.common.enums.CommonStatusEnum; @@ -5,6 +5,7 @@ import cn.iocoder.dashboard.common.enums.CommonStatusEnum;
5 import cn.iocoder.dashboard.common.exception.util.ServiceExceptionUtil; 5 import cn.iocoder.dashboard.common.exception.util.ServiceExceptionUtil;
6 import cn.iocoder.dashboard.common.pojo.PageResult; 6 import cn.iocoder.dashboard.common.pojo.PageResult;
7 import cn.iocoder.dashboard.modules.system.controller.permission.vo.role.SysRoleCreateReqVO; 7 import cn.iocoder.dashboard.modules.system.controller.permission.vo.role.SysRoleCreateReqVO;
  8 +import cn.iocoder.dashboard.modules.system.controller.permission.vo.role.SysRoleExportReqVO;
8 import cn.iocoder.dashboard.modules.system.controller.permission.vo.role.SysRolePageReqVO; 9 import cn.iocoder.dashboard.modules.system.controller.permission.vo.role.SysRolePageReqVO;
9 import cn.iocoder.dashboard.modules.system.controller.permission.vo.role.SysRoleUpdateReqVO; 10 import cn.iocoder.dashboard.modules.system.controller.permission.vo.role.SysRoleUpdateReqVO;
10 import cn.iocoder.dashboard.modules.system.convert.permission.SysRoleConvert; 11 import cn.iocoder.dashboard.modules.system.convert.permission.SysRoleConvert;
@@ -141,6 +142,11 @@ public class SysRoleServiceImpl implements SysRoleService { @@ -141,6 +142,11 @@ public class SysRoleServiceImpl implements SysRoleService {
141 } 142 }
142 143
143 @Override 144 @Override
  145 + public List<SysRoleDO> listRoles(SysRoleExportReqVO reqVO) {
  146 + return roleMapper.listRoles(reqVO);
  147 + }
  148 +
  149 + @Override
144 public void updateRoleStatus(Long id, Integer status) { 150 public void updateRoleStatus(Long id, Integer status) {
145 // 校验是否可以更新 151 // 校验是否可以更新
146 this.checkUpdateRole(id); 152 this.checkUpdateRole(id);
src/main/java/cn/iocoder/dashboard/modules/system/service/user/SysUserServiceImpl.java
@@ -335,15 +335,4 @@ public class SysUserServiceImpl implements SysUserService { @@ -335,15 +335,4 @@ public class SysUserServiceImpl implements SysUserService {
335 // return successMsg.toString(); 335 // return successMsg.toString();
336 // } 336 // }
337 337
338 -// /**  
339 -// * 根据条件分页查询用户列表  
340 -// *  
341 -// * @param user 用户信息  
342 -// * @return 用户信息集合信息  
343 -// */  
344 -// @Override  
345 -// @DataScope(deptAlias = "d", userAlias = "u")  
346 -// public List<SysUser> selectUserList(SysUser user) {  
347 -// return userMapper.selectUserList(user);  
348 -// }  
349 } 338 }