feat 岗位增加导出功能

This commit is contained in:
damonyuan 2024-10-26 11:05:57 +08:00
parent bc2352b3de
commit 78786abb01
5 changed files with 191 additions and 4 deletions

View File

@ -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<PageResult<JobsVo>> list(@Validated PageValidate pageValidate,
public AjaxResult<Object> list(@Validated PageValidate pageValidate,
@Validated JobsSearchValidate searchValidate) {
PageResult<JobsVo> 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<JobsVo> list = iJobsService.list(pageValidate, searchValidate);
return AjaxResult.success(list);
}
}
@GetMapping("/detail")

View File

@ -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<JobsVo> 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<JobsExportVo> 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<JobsExportVo> getExcellist(boolean isAll, PageValidate pageValidate, JobsSearchValidate searchValidate) {
Integer page = pageValidate.getPage_no();
Integer limit = pageValidate.getPage_size();
QueryWrapper<Jobs> 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<Jobs> jobsList = new ArrayList<>();
if (isAll) {
jobsList = jobsMapper.selectList(queryWrapper);
} else {
IPage<Jobs> iPage = jobsMapper.selectPage(new Page<>(page, limit), queryWrapper);
jobsList = iPage.getRecords();
}
List<JobsExportVo> 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;
}
}

View File

@ -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);
}

View File

@ -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;
}

View File

@ -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;
}