From 78786abb0121371420fe767edc5dbce695cad52a Mon Sep 17 00:00:00 2001 From: damonyuan <404054358@qq.com> Date: Sat, 26 Oct 2024 11:05:57 +0800 Subject: [PATCH] =?UTF-8?q?feat=20=E5=B2=97=E4=BD=8D=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E5=AF=BC=E5=87=BA=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/system/JobsController.java | 18 +++- .../service/impl/system/JobsServiceImpl.java | 87 ++++++++++++++++++- .../admin/service/system/IJobsService.java | 11 +++ .../validate/system/JobsSearchValidate.java | 17 ++++ .../com/mdd/admin/vo/system/JobsExportVo.java | 62 +++++++++++++ 5 files changed, 191 insertions(+), 4 deletions(-) create mode 100644 server/like-admin/src/main/java/com/mdd/admin/vo/system/JobsExportVo.java diff --git a/server/like-admin/src/main/java/com/mdd/admin/controller/system/JobsController.java b/server/like-admin/src/main/java/com/mdd/admin/controller/system/JobsController.java index 841d2a93..65c7cfe8 100644 --- a/server/like-admin/src/main/java/com/mdd/admin/controller/system/JobsController.java +++ b/server/like-admin/src/main/java/com/mdd/admin/controller/system/JobsController.java @@ -1,5 +1,6 @@ package com.mdd.admin.controller.system; +import com.alibaba.fastjson2.JSONObject; import com.mdd.admin.service.system.IJobsService; import com.mdd.common.aop.NotPower; import com.mdd.admin.validate.commons.IdValidate; @@ -10,6 +11,7 @@ import com.mdd.admin.validate.system.JobsUpdateValidate; import com.mdd.admin.vo.system.JobsVo; import com.mdd.common.core.AjaxResult; import com.mdd.common.core.PageResult; +import com.mdd.common.util.StringUtils; import com.mdd.common.validator.annotation.IDMust; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -37,10 +39,20 @@ public class JobsController { @GetMapping("/lists") @ApiOperation(value="岗位列表") - public AjaxResult> list(@Validated PageValidate pageValidate, + public AjaxResult list(@Validated PageValidate pageValidate, @Validated JobsSearchValidate searchValidate) { - PageResult list = iJobsService.list(pageValidate, searchValidate); - return AjaxResult.success(list); + if (StringUtils.isNotNull(searchValidate.getExport()) && searchValidate.getExport().equals(1)) { + JSONObject ret = iJobsService.getExportData(pageValidate, searchValidate); + return AjaxResult.success(ret); + } else if (StringUtils.isNotNull(searchValidate.getExport()) && searchValidate.getExport().equals(2)) { + String path = iJobsService.export(searchValidate); + return AjaxResult.success(new JSONObject() {{ + put("url", path); + }}); + } else { + PageResult list = iJobsService.list(pageValidate, searchValidate); + return AjaxResult.success(list); + } } @GetMapping("/detail") diff --git a/server/like-admin/src/main/java/com/mdd/admin/service/impl/system/JobsServiceImpl.java b/server/like-admin/src/main/java/com/mdd/admin/service/impl/system/JobsServiceImpl.java index c5925755..d28f1b08 100644 --- a/server/like-admin/src/main/java/com/mdd/admin/service/impl/system/JobsServiceImpl.java +++ b/server/like-admin/src/main/java/com/mdd/admin/service/impl/system/JobsServiceImpl.java @@ -1,5 +1,8 @@ package com.mdd.admin.service.impl.system; +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.support.ExcelTypeEnum; +import com.alibaba.fastjson2.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Assert; @@ -9,17 +12,23 @@ import com.mdd.admin.validate.commons.PageValidate; import com.mdd.admin.validate.system.JobsCreateValidate; import com.mdd.admin.validate.system.JobsSearchValidate; import com.mdd.admin.validate.system.JobsUpdateValidate; +import com.mdd.admin.validate.user.UserSearchValidate; +import com.mdd.admin.vo.system.JobsExportVo; import com.mdd.admin.vo.system.JobsVo; +import com.mdd.admin.vo.user.UserListExportVo; +import com.mdd.admin.vo.user.UserVo; import com.mdd.common.core.PageResult; import com.mdd.common.entity.admin.Admin; import com.mdd.common.entity.system.Jobs; +import com.mdd.common.exception.OperateException; import com.mdd.common.mapper.admin.AdminMapper; import com.mdd.common.mapper.admin.JobsMapper; -import com.mdd.common.util.TimeUtils; +import com.mdd.common.util.*; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import javax.annotation.Resource; +import java.io.File; import java.util.ArrayList; import java.util.Arrays; import java.util.List; @@ -214,4 +223,80 @@ public class JobsServiceImpl implements IJobsService { jobsMapper.updateById(model); } + @Override + public JSONObject getExportData(PageValidate pageValidate, JobsSearchValidate searchValidate) { + Integer page = pageValidate.getPage_no(); + Integer limit = pageValidate.getPage_size(); + PageResult userVoPageResult = this.list(pageValidate, searchValidate); + JSONObject ret = ToolUtils.getExportData(userVoPageResult.getCount(), limit, searchValidate.getPage_start(), searchValidate.getPage_end(),"岗位记录列表"); + return ret; + } + + @Override + public String export(JobsSearchValidate searchValidate) { + PageValidate pageValidate = new PageValidate(); + if (StringUtils.isNotNull(searchValidate.getPage_start())) { + pageValidate.setPage_no(searchValidate.getPage_start()); + } else { + pageValidate.setPage_no(1); + } + + if (StringUtils.isNotNull(searchValidate.getPage_end()) && StringUtils.isNotNull(searchValidate.getPage_size())) { + pageValidate.setPage_size(searchValidate.getPage_end() * searchValidate.getPage_size()); + } else { + pageValidate.setPage_size(20); + } + Boolean isAll = StringUtils.isNull(searchValidate.getPage_type()) || searchValidate.getPage_type().equals(0) ? true : false; + List excellist = this.getExcellist(isAll, pageValidate, searchValidate); + String fileName = StringUtils.isNull(searchValidate.getFile_name()) ? ToolUtils.makeUUID() : searchValidate.getFile_name(); + String folderPath = "/excel/export/"+ TimeUtils.timestampToDay(System.currentTimeMillis() / 1000) +"/" ; + String path = folderPath + fileName +".xlsx"; + String filePath = YmlUtils.get("like.upload-directory") + path; + File folder = new File(YmlUtils.get("like.upload-directory") + folderPath); + if (!folder.exists()) { + if (!folder.mkdirs()) { + throw new OperateException("创建文件夹失败"); + } + } + EasyExcel.write(filePath) + .head(JobsExportVo.class) + .excelType(ExcelTypeEnum.XLSX) + .sheet("用户记录") + .doWrite(excellist); + return UrlUtils.toAbsoluteUrl(path); + } + private List getExcellist(boolean isAll, PageValidate pageValidate, JobsSearchValidate searchValidate) { + Integer page = pageValidate.getPage_no(); + Integer limit = pageValidate.getPage_size(); + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.select(Jobs.class, info-> + !info.getColumn().equals("delete_time")) + .isNull("delete_time") + .orderByDesc(Arrays.asList("sort", "id")); + + jobsMapper.setSearch(queryWrapper, searchValidate, new String[]{ + "like:code:str", + "like:name:str", + "=:status@status:int" + }); + List jobsList = new ArrayList<>(); + if (isAll) { + jobsList = jobsMapper.selectList(queryWrapper); + } else { + IPage iPage = jobsMapper.selectPage(new Page<>(page, limit), queryWrapper); + jobsList = iPage.getRecords(); + } + + List list = new ArrayList<>(); + for (Jobs job : jobsList) { + JobsExportVo vo = new JobsExportVo(); + BeanUtils.copyProperties(job, vo); + vo.setStatusDesc(job.getStatus() != null && job.getStatus().intValue() == 1 ? "正常" : "停用"); + vo.setCreateTime(TimeUtils.timestampToDate(job.getCreateTime())); + vo.setUpdateTime(TimeUtils.timestampToDate(job.getUpdateTime())); + list.add(vo); + } + return list; + } } diff --git a/server/like-admin/src/main/java/com/mdd/admin/service/system/IJobsService.java b/server/like-admin/src/main/java/com/mdd/admin/service/system/IJobsService.java index 7edca4fa..7f0e4d42 100644 --- a/server/like-admin/src/main/java/com/mdd/admin/service/system/IJobsService.java +++ b/server/like-admin/src/main/java/com/mdd/admin/service/system/IJobsService.java @@ -1,5 +1,6 @@ package com.mdd.admin.service.system; +import com.alibaba.fastjson2.JSONObject; import com.mdd.admin.validate.commons.PageValidate; import com.mdd.admin.validate.system.JobsCreateValidate; import com.mdd.admin.validate.system.JobsSearchValidate; @@ -65,4 +66,14 @@ public interface IJobsService { */ void del(Integer id); + /** + * 返回导出格式 + * @return + */ + JSONObject getExportData(PageValidate pageValidate, JobsSearchValidate searchValidate); + + /** + * 导出 + */ + String export(JobsSearchValidate searchValidate); } diff --git a/server/like-admin/src/main/java/com/mdd/admin/validate/system/JobsSearchValidate.java b/server/like-admin/src/main/java/com/mdd/admin/validate/system/JobsSearchValidate.java index 08ba5698..eba163e8 100644 --- a/server/like-admin/src/main/java/com/mdd/admin/validate/system/JobsSearchValidate.java +++ b/server/like-admin/src/main/java/com/mdd/admin/validate/system/JobsSearchValidate.java @@ -21,4 +21,21 @@ public class JobsSearchValidate implements Serializable { @ApiModelProperty(value = "是否停用") private Integer status; + @ApiModelProperty(value = "导出信息") + private Integer export; + @ApiModelProperty(value = "file_name") + private String file_name; + + @ApiModelProperty(value = "page_start") + private Integer page_start; + + @ApiModelProperty(value = "page_end") + private Integer page_end; + + @ApiModelProperty(value = "page_size") + private Integer page_size; + + @ApiModelProperty(value = "page_type") + private Integer page_type; + } diff --git a/server/like-admin/src/main/java/com/mdd/admin/vo/system/JobsExportVo.java b/server/like-admin/src/main/java/com/mdd/admin/vo/system/JobsExportVo.java new file mode 100644 index 00000000..40757ae4 --- /dev/null +++ b/server/like-admin/src/main/java/com/mdd/admin/vo/system/JobsExportVo.java @@ -0,0 +1,62 @@ +package com.mdd.admin.vo.system; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +@Data +@ApiModel("系统岗位Vo") +public class JobsExportVo implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键") + @ExcelProperty("ID") + @ColumnWidth(50) + private Integer id; + + @ApiModelProperty(value = "岗位编号") + @ExcelProperty("岗位编号") + @ColumnWidth(50) + private String code; + + @ApiModelProperty(value = "岗位名称") + @ExcelProperty("岗位名称") + @ColumnWidth(50) + private String name; + + @ApiModelProperty(value = "岗位备注") + @ExcelProperty("岗位备注") + @ColumnWidth(50) + private String remark; + + @ApiModelProperty(value = "岗位排序") + @ExcelProperty("岗位排序") + @ColumnWidth(50) + private Integer sort; + + @ApiModelProperty(value = "是否停用: [0=否, 1=是]") + @ExcelProperty("是否停用: [0=否, 1=是]") + @ColumnWidth(50) + private Integer status; + + @ApiModelProperty(value = "状态描述") + @ExcelProperty("状态描述") + @ColumnWidth(50) + private String statusDesc; + + @ApiModelProperty(value = "创建时间") + @ExcelProperty("创建时间") + @ColumnWidth(50) + private String createTime; + + @ApiModelProperty(value = "更新时间") + @ExcelProperty("更新时间") + @ColumnWidth(50) + private String updateTime; + +}