项目库-导出excel

This commit is contained in:
caozhen
2023-09-11 17:08:46 +08:00
parent ba9934b1ab
commit 7d597b7d52
2 changed files with 112 additions and 10 deletions
@@ -1,14 +1,27 @@
package com.jero.modules.projectLibrary.controller;
import java.io.OutputStream;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import cn.hutool.core.io.IoUtil;
import cn.hutool.poi.excel.ExcelUtil;
import cn.hutool.poi.excel.ExcelWriter;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.jero.common.api.vo.Result;
import com.jero.common.exception.JeroBootException;
import com.jero.common.system.query.QueryGenerator;
import com.jero.common.util.MessageUtils;
import com.jero.modules.laws.common.constant.ResultCommon;
import com.jero.modules.projectLibrary.entity.LawsProjectLibrary;
import com.jero.modules.projectLibrary.service.ILawsProjectLibraryService;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.jero.modules.system.entity.SysUser;
import com.jero.modules.system.service.ISysUserService;
import com.sun.deploy.net.URLEncoder;
import lombok.extern.slf4j.Slf4j;
import com.jero.common.system.base.controller.JeroController;
import org.springframework.beans.factory.annotation.Autowired;
@@ -35,6 +48,8 @@ import org.apache.poi.ss.formula.functions.T;
public class LawsProjectLibraryController extends JeroController<LawsProjectLibrary, ILawsProjectLibraryService> {
@Autowired
private ILawsProjectLibraryService lawsProjectLibraryService;
@Autowired
private ISysUserService sysUserService;
/**
* 分页列表查询
@@ -119,8 +134,102 @@ public class LawsProjectLibraryController extends JeroController<LawsProjectLibr
/**
* 导出excel
*/
@RequestMapping(value = "/exportXls")
public ModelAndView exportXls(HttpServletRequest request, LawsProjectLibrary lawsProjectLibrary) {
return super.exportXls(request, lawsProjectLibrary, LawsProjectLibrary.class, "项目库");
@AutoLog(value = "项目库-导出excel")
@ApiOperation(value="项目库-导出excel", notes="项目库-导出excel")
@PostMapping(value = "/exportXls")
public ModelAndView exportXls(HttpServletRequest request, LawsProjectLibrary lawsProjectLibrary, HttpServletResponse response) {
String outFileName = MessageUtils.getLanguage().equals("EN") ? "Internal Work Group Personnel Table" + System.currentTimeMillis() + ".xlsx" : "内部工作组人员表" + System.currentTimeMillis() + ".xlsx";
String ENCODING = "UTF-8";
ExcelWriter writer = ExcelUtil.getWriter(true);
// 通过工具类创建writer并且进行别名
assembleWriter(writer);
//获取数据
List<LawsProjectLibrary> dos = null;
String selections = request.getParameter("selections");
if (StringUtils.isNotBlank(selections)){
dos = lawsProjectLibraryService.listByIds(Arrays.asList(selections.split(",")));
}else {
lawsProjectLibrary.setDelFlag("0");
QueryWrapper<LawsProjectLibrary> queryWrapper = QueryGenerator.initQueryWrapper(lawsProjectLibrary, request.getParameterMap());
dos = lawsProjectLibraryService.list(queryWrapper);
}
this.translate(dos);
if (dos.isEmpty()){
throw new JeroBootException("请选择数据导出!");
}
//导出表头只保留别名中的字段
writer.setOnlyAlias(true);
//表格高度
writer.setDefaultRowHeight(18);
//表格宽度
writer.setColumnWidth(-1, 20);
//放入数据
writer.write(dos, true);
try {
// 获取我们的输出流
final OutputStream output = response.getOutputStream();
response.setContentType("application/vnd.ms-excel;charset=utf-8");
response.setHeader("Content-Disposition", "attachment;filename=" + outFileName + ";filename*=utf-8"
+ URLEncoder.encode(outFileName, ENCODING));
writer.flush(output, true);
writer.close();
// 这里可以自行关闭资源或者写一个关闭资源的工具类
IoUtil.close(output);
} catch (Exception e) {
log.error("导出失败:", e);
}
return null;
}
/**
* 翻译项目来源、项目负责人、项目健康状态
*/
private void translate(List<LawsProjectLibrary> dos){
for (LawsProjectLibrary aDo : dos) {
String projectSource = aDo.getProjectSource();
String projectHealth = aDo.getProjectHealth();
String projectLeader = aDo.getProjectLeader();
switch (projectSource) {
case "1":
aDo.setProjectSource("本地新增");
break;
case "2":
aDo.setProjectSource("PMS");
break;
default:
aDo.setProjectSource("");
}
switch (projectHealth) {
case "1":
aDo.setProjectHealth("预警");
break;
case "2":
aDo.setProjectHealth("风险");
break;
case "3":
aDo.setProjectHealth("正常");
break;
default:
aDo.setProjectHealth("");
}
if (StringUtils.isNotBlank(projectLeader)) {
SysUser sysUser = sysUserService.getById(projectLeader);
aDo.setProjectLeader(sysUser.getRealname() + "(" + sysUser.getWorkNo() + ")");
}
}
}
private void assembleWriter(ExcelWriter writer) {
writer.addHeaderAlias("projectSource", "项目来源");
writer.addHeaderAlias("projectName", "项目名称");
writer.addHeaderAlias("projectLeader", "项目负责人");
writer.addHeaderAlias("workNumber", "工作令编号");
writer.addHeaderAlias("projectHealth", "项目健康状态");
}
}
@@ -40,29 +40,24 @@ public class LawsProjectLibrary implements Serializable {
/**项目来源(1-本地新增、2-PMS)*/
@Dict(dicCode = "project_source")
@Excel(name = "项目来源(1-本地新增、2-PMS)", width = 15)
@ApiModelProperty(value = "项目来源(1-本地新增、2-PMS)")
private String projectSource;
/**项目名称*/
@NotBlank(message = "projectName not null")
@Excel(name = "项目名称", width = 15)
@ApiModelProperty(value = "项目名称")
private String projectName;
/**工作令编号*/
@Excel(name = "工作令编号", width = 15)
@ApiModelProperty(value = "工作令编号")
private String workNumber;
/**项目负责人*/
@Excel(name = "项目负责人", width = 15)
@ApiModelProperty(value = "项目负责人")
private String projectLeader;
/**项目健康度(1-预警、2-风险、3-正常)*/
@Dict(dicCode = "project_health")
@Excel(name = "项目健康度(1-预警、2-风险、3-正常)", width = 15)
@ApiModelProperty(value = "项目健康度(1-预警、2-风险、3-正常)")
private String projectHealth;
@@ -87,12 +82,10 @@ public class LawsProjectLibrary implements Serializable {
private Date updateTime;
/**所属部门*/
@Excel(name = "所属部门", width = 15)
@ApiModelProperty(value = "所属部门")
private String orgCode;
/**删除状态(0-正常,1-删除)*/
@Excel(name = "删除状态(0-正常,1-删除)", width = 15)
@ApiModelProperty(value = "删除状态(0-正常,1-删除)")
private String delFlag;
}