【业务功能篇01】Springboot+mybatis-plus+POI实现表单数据导出Excel

业务中常见的一个功能,前台附有多个筛选器,提供筛选过滤表单数据,然后点击导出按钮进行导出:

下面演示举例实例: 用户通过前端参数传参后,查询出一个表单数据,假设为表A,这个表A是一个问题单表,每个问题会对应有多个小问题单,比如ANo是该问题单号, 而subNo字段就是对应的多个小问题单字段,可能有多个小问题单,值就是用逗号隔开的形式 001,002,003 表示三个小问题单,那么最后用户想查询A表某个问题单对应的小问题单数据,进行导出,小问题单表作为B,后台也有一张对应的表

思路:

前端交互效果:  顶部筛选器,中间预警单表格,用户通过筛选器筛选后,点击查询,表格刷新,然后点击其中表格任一一个问题单数据,会弹出一个浮窗体,展示这个预警单号对应的多个小问题单号的表单数据,然后点击导出,从而实现导出表格数据

后台准备:

1.数据库表会有这两个问题表单,

2.设计接口查询出预警单号这一条数据的小问题单号,作为一个list集合,

3.然后再根据这个小问题单号查询出问题单表数据

4.最后把问题单记录存入一个excel表格,作为文件流返回给前端

 实现步骤:

  • 首先设计好表单数据,后台数据库建模,
  • 然后抽象出controller接口,提供接口文档给前端
  • 先保证接口抽象,以协同开发。接着再实现service接口和dao接口

 这里省略数据库建模过程

一:定义实体类POJO   一个是用于前端请求参数的一个参数实体类,两个是用于数据库映射的表实体类

前端请求参数的参数实体类: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() 

你可能感兴趣的:(Java,Spring,boot,业务场景实例问题,spring,boot,mybatis,java,mybatis-plus,POI,excel表格下载)