业务中常见的一个功能,前台附有多个筛选器,提供筛选过滤表单数据,然后点击导出按钮进行导出:
下面演示举例实例: 用户通过前端参数传参后,查询出一个表单数据,假设为表A,这个表A是一个问题单表,每个问题会对应有多个小问题单,比如ANo是该问题单号, 而subNo字段就是对应的多个小问题单字段,可能有多个小问题单,值就是用逗号隔开的形式 001,002,003 表示三个小问题单,那么最后用户想查询A表某个问题单对应的小问题单数据,进行导出,小问题单表作为B,后台也有一张对应的表
思路:
前端交互效果: 顶部筛选器,中间预警单表格,用户通过筛选器筛选后,点击查询,表格刷新,然后点击其中表格任一一个问题单数据,会弹出一个浮窗体,展示这个预警单号对应的多个小问题单号的表单数据,然后点击导出,从而实现导出表格数据
后台准备:
1.数据库表会有这两个问题表单,
2.设计接口查询出预警单号这一条数据的小问题单号,作为一个list集合,
3.然后再根据这个小问题单号查询出问题单表数据
4.最后把问题单记录存入一个excel表格,作为文件流返回给前端
实现步骤:
这里省略数据库建模过程
前端请求参数的参数实体类:ProdProblemWarnQueryParam
package xx;
import java.util.*;
import java.io.Serializable;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonProperty;
@JsonIgnoreProperties(ignoreUnknown = true)
public class ProdProblemWarnQueryParam implements Serializable {
private static final long serialVersionUID = 1L;
@JsonProperty("year")
private Integer year = null;
@JsonProperty("month")
private Integer month = null;
@JsonProperty("startDate")
private String startDate = null;
@JsonProperty("endDate")
private String endDate = null;
@JsonProperty("startPeriod")
private String startPeriod = null;
@JsonProperty("endPeriod")
private String endPeriod = null;
@JsonProperty("warnType")
private List warnType = new ArrayList();
@JsonProperty("page")
private Integer page = null;
@JsonProperty("pageSize")
private Integer pageSize = null;
@JsonProperty("supplier")
private List supplier = new ArrayList();
@JsonProperty("isEffective")
private List isEffective = new ArrayList();
@JsonProperty("product")
private List product = new ArrayList();
@JsonProperty("project")
private List project = new ArrayList();
@JsonProperty("category")
private List category = new ArrayList();
@JsonProperty("subCategory")
private List subCategory = new ArrayList();
@JsonProperty("failItems")
private List failItems = new ArrayList();
@JsonProperty("itemCode")
private List itemCode = new ArrayList();
@JsonProperty("warnNo")
private String warnNo = null;
@JsonProperty("warnStatus")
private List warnStatus = new ArrayList();
@JsonProperty("warnRea")
private List warnRea = new ArrayList();
@JsonProperty("warnLev")
private List warnLev = new ArrayList();
@JsonProperty("warnDesc")
private String warnDesc = null;
@JsonProperty("mesNo")
private List mesNo = new ArrayList();
@JsonProperty("toFilled")
private String toFilled = null;
@JsonProperty("codeType")
private String codeType = null;
@JsonProperty("filledFlag")
private String filledFlag = null;
@JsonProperty("nodeName")
private String nodeName = null;
@JsonProperty("po")
private String po = null;
@JsonProperty("feedBackName")
private String feedBackName = null;
@JsonProperty("issureProperty")
private String issureProperty = null;
@JsonProperty("issureDesc")
private String issureDesc = null;
@JsonProperty("chartList")
private Map chartList = null;
@JsonProperty("radioType")
private String radioType = null;
@JsonProperty("topProblem")
private List topProblem = new ArrayList();
@JsonProperty("analysisBy")
private List analysisBy = new ArrayList();
@JsonProperty("reviewBy")
private List reviewBy = new ArrayList();
public ProdProblemWarnQueryParam() {
super();
}
/**
* 年份
**/
public Integer getYear() {
return year;
}
public void setYear(Integer year) {
this.year = year;
}
/**
* 月份
**/
public Integer getMonth() {
return month;
}
public void setMonth(Integer month) {
this.month = month;
}
/**
* 开始时间(预警时间)
**/
public String getStartDate() {
return startDate;
}
public void setStartDate(String startDate) {
this.startDate = startDate;
}
/**
* 结束时间(预警时间)
**/
public String getEndDate() {
return endDate;
}
public void setEndDate(String endDate) {
this.endDate = endDate;
}
/**
* 开始时间(预警周期)
**/
public String getStartPeriod() {
return startPeriod;
}
public void setStartPeriod(String startPeriod) {
this.startPeriod = startPeriod;
}
/**
* 结束时间(预警周期)
**/
public String getEndPeriod() {
return endPeriod;
}
public void setEndPeriod(String endPeriod) {
this.endPeriod = endPeriod;
}
/**
* 预警类型
**/
public List getWarnType() {
return warnType;
}
public void setWarnType(List warnType) {
this.warnType = warnType;
}
/**
* 页码
**/
public Integer getPage() {
return page;
}
public void setPage(Integer page) {
this.page = page;
}
/**
* 分页数量
**/
public Integer getPageSize() {
return pageSize;
}
public void setPageSize(Integer pageSize) {
this.pageSize = pageSize;
}
/**
* 供应商
**/
public List getSupplier() {
return supplier;
}
public void setSupplier(List supplier) {
this.supplier = supplier;
}
/**
* 是否有效预警
**/
public List getIsEffective() {
return isEffective;
}
public void setIsEffective(List isEffective) {
this.isEffective = isEffective;
}
/**
* 产品
**/
public List getProduct() {
return product;
}
public void setProduct(List product) {
this.product = product;
}
/**
* 项目
**/
public List getProject() {
return project;
}
public void setProject(List project) {
this.project = project;
}
/**
* 品类
**/
public List getCategory() {
return category;
}
public void setCategory(List category) {
this.category = category;
}
/**
* 子品类
**/
public List getSubCategory() {
return subCategory;
}
public void setSubCategory(List subCategory) {
this.subCategory = subCategory;
}
/**
* 编码
**/
public List getFailItems() {
return failItems;
}
public void setFailItems(List failItems) {
this.failItems = failItems;
}
/**
* 产品编码
**/
public List getItemCode() {
return itemCode;
}
public void setItemCode(List itemCode) {
this.itemCode = itemCode;
}
/**
* 预警单号
**/
public String getWarnNo() {
return warnNo;
}
public void setWarnNo(String warnNo) {
this.warnNo = warnNo;
}
/**
* 预警状态
**/
public List getWarnStatus() {
return warnStatus;
}
public void setWarnStatus(List warnStatus) {
this.warnStatus = warnStatus;
}
/**
* 预警原因
**/
public List getWarnRea() {
return warnRea;
}
public void setWarnRea(List warnRea) {
this.warnRea = warnRea;
}
/**
* 预警级别
**/
public List getWarnLev() {
return warnLev;
}
public void setWarnLev(List warnLev) {
this.warnLev = warnLev;
}
/**
* 预警描述(模糊查询)
**/
public String getWarnDesc() {
return warnDesc;
}
public void setWarnDesc(String warnDesc) {
this.warnDesc = warnDesc;
}
/**
* mes+问题单号
**/
public List getMesNo() {
return mesNo;
}
public void setMesNo(List mesNo) {
this.mesNo = mesNo;
}
/**
* 涉及停线
**/
public String getToFilled() {
return toFilled;
}
public void setToFilled(String toFilled) {
this.toFilled = toFilled;
}
/**
* 编码类型
**/
public String getCodeType() {
return codeType;
}
public void setCodeType(String codeType) {
this.codeType = codeType;
}
/**
* 是否停线
**/
public String getFilledFlag() {
return filledFlag;
}
public void setFilledFlag(String filledFlag) {
this.filledFlag = filledFlag;
}
/**
* 当前节点
**/
public String getNodeName() {
return nodeName;
}
public void setNodeName(String nodeName) {
this.nodeName = nodeName;
}
/**
* 任务令
**/
public String getPo() {
return po;
}
public void setPo(String po) {
this.po = po;
}
/**
* 反馈工序
**/
public String getFeedBackName() {
return feedBackName;
}
public void setFeedBackName(String feedBackName) {
this.feedBackName = feedBackName;
}
/**
* 问题性质
**/
public String getIssureProperty()