Commit c3df5bc62fb7f42e78deffedbb30ccb6518418dc
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 | 54 | // 导出字典数据 |
| 55 | 55 | export function exportData(query) { |
| 56 | 56 | return request({ |
| 57 | - url: '/system/dict/data/export', | |
| 57 | + url: '/system/dict-data/export', | |
| 58 | 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
ruoyi-ui/src/api/system/role.js
ruoyi-ui/src/views/system/dict/data.vue
ruoyi-ui/src/views/system/dict/index.vue
| ... | ... | @@ -304,7 +304,10 @@ export default { |
| 304 | 304 | }, |
| 305 | 305 | /** 导出按钮操作 */ |
| 306 | 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 | 311 | this.$confirm('是否确认导出所有类型数据项?', "警告", { |
| 309 | 312 | confirmButtonText: "确定", |
| 310 | 313 | cancelButtonText: "取消", |
| ... | ... | @@ -312,7 +315,7 @@ export default { |
| 312 | 315 | }).then(function() { |
| 313 | 316 | return exportType(queryParams); |
| 314 | 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
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 | 10 | |
| 11 | 11 | /** |
| 12 | 12 | * Excel 工具类 |
| 13 | + * | |
| 14 | + * @author 芋道源码 | |
| 13 | 15 | */ |
| 14 | 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 | 31 | // 输出 Excel |
| 22 | 32 | EasyExcel.write(response.getOutputStream(), head) |
| 33 | + .autoCloseStream(false) // 不要自动关闭,交给 Servlet 自己处理 | |
| 23 | 34 | .registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()) // 基于 column 长度,自动适配。最大 255 宽度 |
| 24 | 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 | 89 | // @PreAuthorize("@ss.hasPermi('system:post:export')") |
| 90 | 90 | public void export(HttpServletResponse response, @Validated SysPostExportReqVO reqVO) throws IOException { |
| 91 | 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 | 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 | 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 | 3 | import com.alibaba.excel.annotation.ExcelProperty; |
| 6 | 4 | import lombok.Data; |
| 7 | 5 | |
| 8 | -import static cn.iocoder.dashboard.modules.system.enums.dict.DictTypeEnum.SYS_COMMON_STATUS; | |
| 9 | - | |
| 10 | 6 | /** |
| 11 | 7 | * 岗位 Excel 导出响应 VO |
| 12 | 8 | */ |
| ... | ... | @@ -25,8 +21,9 @@ public class SysPostExcelVO { |
| 25 | 21 | @ExcelProperty("岗位排序") |
| 26 | 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 | 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 | 2 | |
| 3 | 3 | import cn.iocoder.dashboard.common.pojo.CommonResult; |
| 4 | 4 | import cn.iocoder.dashboard.common.pojo.PageResult; |
| 5 | +import cn.iocoder.dashboard.framework.excel.core.util.ExcelUtils; | |
| 5 | 6 | import cn.iocoder.dashboard.modules.system.controller.dict.vo.data.*; |
| 6 | 7 | import cn.iocoder.dashboard.modules.system.convert.dict.SysDictDataConvert; |
| 7 | 8 | import cn.iocoder.dashboard.modules.system.dal.mysql.dataobject.dict.SysDictDataDO; |
| ... | ... | @@ -13,6 +14,8 @@ import org.springframework.validation.annotation.Validated; |
| 13 | 14 | import org.springframework.web.bind.annotation.*; |
| 14 | 15 | |
| 15 | 16 | import javax.annotation.Resource; |
| 17 | +import javax.servlet.http.HttpServletResponse; | |
| 18 | +import java.io.IOException; | |
| 16 | 19 | import java.util.List; |
| 17 | 20 | |
| 18 | 21 | import static cn.iocoder.dashboard.common.pojo.CommonResult.success; |
| ... | ... | @@ -25,8 +28,8 @@ public class SysDictDataController { |
| 25 | 28 | @Resource |
| 26 | 29 | private SysDictDataService dictDataService; |
| 27 | 30 | |
| 28 | - @GetMapping("/list-all-simple") | |
| 29 | 31 | @ApiOperation(value = "获得全部字典数据列表", notes = "一般用于管理后台缓存字典数据在本地") |
| 32 | + @GetMapping("/list-all-simple") | |
| 30 | 33 | // 无需添加权限认证,因为前端全局都需要 |
| 31 | 34 | public CommonResult<List<SysDictDataSimpleVO>> listSimpleDictDatas() { |
| 32 | 35 | List<SysDictDataDO> list = dictDataService.listDictDatas(); |
| ... | ... | @@ -75,14 +78,16 @@ public class SysDictDataController { |
| 75 | 78 | return success(true); |
| 76 | 79 | } |
| 77 | 80 | |
| 78 | - | |
| 81 | + @ApiOperation("导出字典数据") | |
| 82 | + @GetMapping("/export") | |
| 79 | 83 | // @Log(title = "字典类型", businessType = BusinessType.EXPORT) |
| 80 | 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 | 2 | |
| 3 | 3 | import cn.iocoder.dashboard.common.pojo.CommonResult; |
| 4 | 4 | import cn.iocoder.dashboard.common.pojo.PageResult; |
| 5 | +import cn.iocoder.dashboard.framework.excel.core.util.ExcelUtils; | |
| 5 | 6 | import cn.iocoder.dashboard.modules.system.controller.dict.vo.type.*; |
| 6 | 7 | import cn.iocoder.dashboard.modules.system.convert.dict.SysDictTypeConvert; |
| 7 | 8 | import cn.iocoder.dashboard.modules.system.dal.mysql.dataobject.dict.SysDictTypeDO; |
| ... | ... | @@ -13,6 +14,8 @@ import org.springframework.validation.annotation.Validated; |
| 13 | 14 | import org.springframework.web.bind.annotation.*; |
| 14 | 15 | |
| 15 | 16 | import javax.annotation.Resource; |
| 17 | +import javax.servlet.http.HttpServletResponse; | |
| 18 | +import java.io.IOException; | |
| 16 | 19 | import java.util.List; |
| 17 | 20 | |
| 18 | 21 | import static cn.iocoder.dashboard.common.pojo.CommonResult.success; |
| ... | ... | @@ -76,14 +79,16 @@ public class SysDictTypeController { |
| 76 | 79 | return success(SysDictTypeConvert.INSTANCE.convertList(list)); |
| 77 | 80 | } |
| 78 | 81 | |
| 79 | - // | |
| 82 | + @ApiOperation("导出数据类型") | |
| 83 | + @GetMapping("/export") | |
| 80 | 84 | // @Log(title = "字典类型", businessType = BusinessType.EXPORT) |
| 81 | 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 | 4 | import io.swagger.annotations.ApiModel; |
| 5 | 5 | import io.swagger.annotations.ApiModelProperty; |
| 6 | 6 | import lombok.Data; |
| 7 | +import lombok.EqualsAndHashCode; | |
| 7 | 8 | import org.springframework.format.annotation.DateTimeFormat; |
| 8 | 9 | |
| 9 | 10 | import javax.validation.constraints.Size; |
| ... | ... | @@ -13,6 +14,7 @@ import static cn.iocoder.dashboard.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOU |
| 13 | 14 | |
| 14 | 15 | @ApiModel("字典类型分页列表 Request VO") |
| 15 | 16 | @Data |
| 17 | +@EqualsAndHashCode(callSuper = true) | |
| 16 | 18 | public class SysDictTypePageReqVO extends PageParam { |
| 17 | 19 | |
| 18 | 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 | 3 | import cn.iocoder.dashboard.common.enums.CommonStatusEnum; |
| 4 | 4 | import cn.iocoder.dashboard.common.pojo.CommonResult; |
| 5 | 5 | import cn.iocoder.dashboard.common.pojo.PageResult; |
| 6 | +import cn.iocoder.dashboard.framework.excel.core.util.ExcelUtils; | |
| 6 | 7 | import cn.iocoder.dashboard.modules.system.controller.permission.vo.role.*; |
| 7 | 8 | import cn.iocoder.dashboard.modules.system.convert.permission.SysRoleConvert; |
| 8 | 9 | import cn.iocoder.dashboard.modules.system.dal.mysql.dataobject.permission.SysRoleDO; |
| ... | ... | @@ -14,6 +15,8 @@ import org.springframework.validation.annotation.Validated; |
| 14 | 15 | import org.springframework.web.bind.annotation.*; |
| 15 | 16 | |
| 16 | 17 | import javax.annotation.Resource; |
| 18 | +import javax.servlet.http.HttpServletResponse; | |
| 19 | +import java.io.IOException; | |
| 17 | 20 | import java.util.Collections; |
| 18 | 21 | import java.util.Comparator; |
| 19 | 22 | import java.util.List; |
| ... | ... | @@ -80,16 +83,6 @@ public class SysRoleController { |
| 80 | 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 | 86 | @ApiOperation("修改角色状态") |
| 94 | 87 | @PostMapping("/update-status") |
| 95 | 88 | // @PreAuthorize("@ss.hasPermi('system:role:edit')") |
| ... | ... | @@ -99,4 +92,15 @@ public class SysRoleController { |
| 99 | 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 | 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 | 7 | import lombok.Data; |
| 5 | 8 | |
| 6 | 9 | /** |
| 7 | 10 | * 角色 Excel 导出响应 VO |
| 8 | 11 | */ |
| 9 | 12 | @Data |
| 10 | -public class SysRoleExcelRespVO { | |
| 13 | +public class SysRoleExcelVO { | |
| 11 | 14 | |
| 12 | - @Excel(name = "角色序号", cellType = Excel.ColumnType.NUMERIC) | |
| 15 | + @ExcelProperty("角色序号") | |
| 13 | 16 | private Long id; |
| 14 | 17 | |
| 15 | - @Excel(name = "角色名称") | |
| 18 | + @ExcelProperty("角色名称") | |
| 16 | 19 | private String name; |
| 17 | 20 | |
| 18 | - @Excel(name = "角色标志") | |
| 21 | + @ExcelProperty("角色标志") | |
| 19 | 22 | private String code; |
| 20 | 23 | |
| 21 | - @Excel(name = "角色排序") | |
| 24 | + @ExcelProperty("角色排序") | |
| 22 | 25 | private Integer sort; |
| 23 | 26 | |
| 24 | - @Excel(name = "数据范围", readConverterExp = "1=所有数据权限,2=自定义数据权限,3=本部门数据权限,4=本部门及以下数据权限") | |
| 27 | + @ExcelProperty("数据范围") | |
| 25 | 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 | 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 | 1 | package cn.iocoder.dashboard.modules.system.convert.dict; |
| 2 | 2 | |
| 3 | 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 | 5 | import cn.iocoder.dashboard.modules.system.dal.mysql.dataobject.dict.SysDictDataDO; |
| 9 | 6 | import com.baomidou.mybatisplus.core.metadata.IPage; |
| 10 | 7 | import org.mapstruct.Mapper; |
| ... | ... | @@ -31,4 +28,6 @@ public interface SysDictDataConvert { |
| 31 | 28 | @Mapping(source = "records", target = "list") |
| 32 | 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 | 1 | package cn.iocoder.dashboard.modules.system.convert.dict; |
| 2 | 2 | |
| 3 | 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 | 5 | import cn.iocoder.dashboard.modules.system.dal.mysql.dataobject.dict.SysDictTypeDO; |
| 9 | 6 | import com.baomidou.mybatisplus.core.metadata.IPage; |
| 10 | 7 | import org.mapstruct.Mapper; |
| ... | ... | @@ -31,4 +28,6 @@ public interface SysDictTypeConvert { |
| 31 | 28 | |
| 32 | 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 | 1 | package cn.iocoder.dashboard.modules.system.convert.permission; |
| 2 | 2 | |
| 3 | 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 | 5 | import cn.iocoder.dashboard.modules.system.dal.mysql.dataobject.permission.SysRoleDO; |
| 9 | 6 | import com.baomidou.mybatisplus.core.metadata.IPage; |
| 10 | 7 | import org.mapstruct.Mapper; |
| ... | ... | @@ -29,4 +26,6 @@ public interface SysRoleConvert { |
| 29 | 26 | |
| 30 | 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 | 2 | |
| 3 | 3 | import cn.iocoder.dashboard.framework.mybatis.core.query.QueryWrapperX; |
| 4 | 4 | import cn.iocoder.dashboard.framework.mybatis.core.util.MyBatisUtils; |
| 5 | +import cn.iocoder.dashboard.modules.system.controller.dict.vo.data.SysDictDataExportReqVO; | |
| 5 | 6 | import cn.iocoder.dashboard.modules.system.controller.dict.vo.data.SysDictDataPageReqVO; |
| 6 | 7 | import cn.iocoder.dashboard.modules.system.dal.mysql.dataobject.dict.SysDictDataDO; |
| 7 | 8 | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| ... | ... | @@ -36,4 +37,9 @@ public interface SysDictDataMapper extends BaseMapper<SysDictDataDO> { |
| 36 | 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 | 2 | |
| 3 | 3 | import cn.iocoder.dashboard.framework.mybatis.core.query.QueryWrapperX; |
| 4 | 4 | import cn.iocoder.dashboard.framework.mybatis.core.util.MyBatisUtils; |
| 5 | +import cn.iocoder.dashboard.modules.system.controller.dict.vo.type.SysDictTypeExportReqVO; | |
| 5 | 6 | import cn.iocoder.dashboard.modules.system.controller.dict.vo.type.SysDictTypePageReqVO; |
| 6 | 7 | import cn.iocoder.dashboard.modules.system.dal.mysql.dataobject.dict.SysDictTypeDO; |
| 7 | 8 | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| ... | ... | @@ -22,6 +23,13 @@ public interface SysDictTypeMapper extends BaseMapper<SysDictTypeDO> { |
| 22 | 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 | 33 | default SysDictTypeDO selectByType(String type) { |
| 26 | 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 | 2 | |
| 3 | 3 | import cn.iocoder.dashboard.framework.mybatis.core.query.QueryWrapperX; |
| 4 | 4 | import cn.iocoder.dashboard.framework.mybatis.core.util.MyBatisUtils; |
| 5 | +import cn.iocoder.dashboard.modules.system.controller.permission.vo.role.SysRoleExportReqVO; | |
| 5 | 6 | import cn.iocoder.dashboard.modules.system.controller.permission.vo.role.SysRolePageReqVO; |
| 6 | 7 | import cn.iocoder.dashboard.modules.system.dal.mysql.dataobject.permission.SysRoleDO; |
| 7 | 8 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| ... | ... | @@ -18,9 +19,16 @@ public interface SysRoleMapper extends BaseMapper<SysRoleDO> { |
| 18 | 19 | default IPage<SysRoleDO> selectPage(SysRolePageReqVO reqVO) { |
| 19 | 20 | return selectPage(MyBatisUtils.buildPage(reqVO), |
| 20 | 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 | 34 | default SysRoleDO selectByName(String name) { |
| ... | ... | @@ -34,4 +42,5 @@ public interface SysRoleMapper extends BaseMapper<SysRoleDO> { |
| 34 | 42 | default List<SysRoleDO> selectListByStatus(@Nullable Collection<Integer> statuses) { |
| 35 | 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 | 3 | import cn.iocoder.dashboard.common.pojo.PageResult; |
| 4 | 4 | import cn.iocoder.dashboard.framework.dict.core.service.DictDataFrameworkService; |
| 5 | 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 | 7 | import cn.iocoder.dashboard.modules.system.controller.dict.vo.data.SysDictDataPageReqVO; |
| 7 | 8 | import cn.iocoder.dashboard.modules.system.controller.dict.vo.data.SysDictDataUpdateReqVO; |
| 8 | 9 | import cn.iocoder.dashboard.modules.system.dal.mysql.dataobject.dict.SysDictDataDO; |
| ... | ... | @@ -37,6 +38,14 @@ public interface SysDictDataService extends DictDataFrameworkService { |
| 37 | 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 | 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 | 2 | |
| 3 | 3 | import cn.iocoder.dashboard.common.pojo.PageResult; |
| 4 | 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 | 6 | import cn.iocoder.dashboard.modules.system.controller.dict.vo.type.SysDictTypePageReqVO; |
| 6 | 7 | import cn.iocoder.dashboard.modules.system.controller.dict.vo.type.SysDictTypeUpdateReqVO; |
| 7 | 8 | import cn.iocoder.dashboard.modules.system.dal.mysql.dataobject.dict.SysDictTypeDO; |
| ... | ... | @@ -24,6 +25,14 @@ public interface SysDictTypeService { |
| 24 | 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 | 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 | 4 | import cn.iocoder.dashboard.common.exception.util.ServiceExceptionUtil; |
| 5 | 5 | import cn.iocoder.dashboard.common.pojo.PageResult; |
| 6 | 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 | 8 | import cn.iocoder.dashboard.modules.system.controller.dict.vo.data.SysDictDataPageReqVO; |
| 8 | 9 | import cn.iocoder.dashboard.modules.system.controller.dict.vo.data.SysDictDataUpdateReqVO; |
| 9 | 10 | import cn.iocoder.dashboard.modules.system.convert.dict.SysDictDataConvert; |
| ... | ... | @@ -85,6 +86,13 @@ public class SysDictDataServiceImpl implements SysDictDataService { |
| 85 | 86 | } |
| 86 | 87 | |
| 87 | 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 | 96 | public SysDictDataDO getDictData(Long id) { |
| 89 | 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 | 3 | import cn.iocoder.dashboard.common.exception.util.ServiceExceptionUtil; |
| 4 | 4 | import cn.iocoder.dashboard.common.pojo.PageResult; |
| 5 | 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 | 7 | import cn.iocoder.dashboard.modules.system.controller.dict.vo.type.SysDictTypePageReqVO; |
| 7 | 8 | import cn.iocoder.dashboard.modules.system.controller.dict.vo.type.SysDictTypeUpdateReqVO; |
| 8 | 9 | import cn.iocoder.dashboard.modules.system.convert.dict.SysDictTypeConvert; |
| ... | ... | @@ -41,6 +42,11 @@ public class SysDictTypeServiceImpl implements SysDictTypeService { |
| 41 | 42 | } |
| 42 | 43 | |
| 43 | 44 | @Override |
| 45 | + public List<SysDictTypeDO> listDictTypes(SysDictTypeExportReqVO reqVO) { | |
| 46 | + return dictTypeMapper.selectList(reqVO); | |
| 47 | + } | |
| 48 | + | |
| 49 | + @Override | |
| 44 | 50 | public SysDictTypeDO getDictType(Long id) { |
| 45 | 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 | 2 | |
| 3 | 3 | import cn.iocoder.dashboard.common.pojo.PageResult; |
| 4 | 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 | 6 | import cn.iocoder.dashboard.modules.system.controller.permission.vo.role.SysRolePageReqVO; |
| 6 | 7 | import cn.iocoder.dashboard.modules.system.controller.permission.vo.role.SysRoleUpdateReqVO; |
| 7 | 8 | import cn.iocoder.dashboard.modules.system.dal.mysql.dataobject.permission.SysRoleDO; |
| ... | ... | @@ -94,6 +95,14 @@ public interface SysRoleService { |
| 94 | 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 | 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 | 5 | import cn.iocoder.dashboard.common.exception.util.ServiceExceptionUtil; |
| 6 | 6 | import cn.iocoder.dashboard.common.pojo.PageResult; |
| 7 | 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 | 9 | import cn.iocoder.dashboard.modules.system.controller.permission.vo.role.SysRolePageReqVO; |
| 9 | 10 | import cn.iocoder.dashboard.modules.system.controller.permission.vo.role.SysRoleUpdateReqVO; |
| 10 | 11 | import cn.iocoder.dashboard.modules.system.convert.permission.SysRoleConvert; |
| ... | ... | @@ -141,6 +142,11 @@ public class SysRoleServiceImpl implements SysRoleService { |
| 141 | 142 | } |
| 142 | 143 | |
| 143 | 144 | @Override |
| 145 | + public List<SysRoleDO> listRoles(SysRoleExportReqVO reqVO) { | |
| 146 | + return roleMapper.listRoles(reqVO); | |
| 147 | + } | |
| 148 | + | |
| 149 | + @Override | |
| 144 | 150 | public void updateRoleStatus(Long id, Integer status) { |
| 145 | 151 | // 校验是否可以更新 |
| 146 | 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 | 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 | } | ... | ... |