当下许多业务都需对列表进行导出,而且还需对于列表中所有列表选择几项进行导出。
在项目中,我们使用swagger完成接口的文档定义,通过注解完成数据列的列名与字段名,以及枚举类型(字典表)配置,完成相应的后,只需前端在对应列上赋上展示顺序就可以完成定制列的列表导出。
前端接口对应类定义:
package com.bean.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@ApiModel(description = "导出对象")
@Data
@AllArgsConstructor
@NoArgsConstructor
public class ExpQuery extends Query {
@ApiModelProperty(name = "expCols", value = "导出列")
private ExpVo expCols;
}
导出对象类继承列表的查询类,完成列表查询条件的不变。增加expCols属性来完成导出列的配置。
package com.bean.vo;
import com.alibaba.fastjson.annotation.JSONField;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.jfinger.cloud.annotation.Dict;
import java.math.BigDecimal;
import java.util.Date;
@ApiModel(description = "导出设置表")
@Data
@AllArgsConstructor
@NoArgsConstructor
public class ExpVo {
@ApiModelProperty(name = "expCols.applyNo", value = "申报编号")
private Integer applyNo;
@ApiModelProperty(name="expCols.recordProjectCode",value="备案项目代码")
private Integer recordProjectCode;
@Dict(dicCode = "common_yes_no")
@ApiModelProperty(name="expCols.creditLossFlag",value="是否失信企业")
private Integer creditLossFlag;
}
通过注解ApiModelProperty完成属性与列名对配置,通过注解Dict完成字典表的对应。前端调用时相应的值进行排序。
导出设置表所属应与导出对象一一对应。
接口实现类示例:
@ApiOperation(value = "导出列表", notes = "liyw@导出列表")
@GetMapping("/exportList")
public void exportList(Query query, HttpServletResponse response) throws Exception {
query.setPageSize(10000);
//取1万条数据
IPage<GovList> pageInfo = service.listGovPage(query);
List<ExportColSet&g