在很多时候我们都会碰到关于文件上传和下载的问题,本项目中我们使用的是minIO。
在此之前我们需先导入这两个依赖,hutool是给后面做压缩文件下载准备的。
<dependency>
<groupId>com.kotei.framework</groupId>
<artifactId>minio-client</artifactId>
<version>0.0.2-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.7.4</version>
</dependency>
先将数据从数据库读取出来,我们这里使用的是map根据每条线路的不同,分多个sheet去填充数据的,resolveDbDataToExcelDataUtils类中就是处理数据库数据到excel填充实体类之间的一个转换,如果你数据库里的字段和excel填充实体类中的一致,那也可以不用写,我这里是需要做一个转换的。
/** 获取每条路线对应数据 */
public Map<String, List<VerticalCurveElementExcelDataVo>> toVerticalCurveData(List<KProjectRouteEntity> routes) {
// 储存多个路线的数据
Map<String, List<VerticalCurveElementEntity>> map = new HashMap<>(10);
Map<String, List<VerticalCurveElementExcelDataVo>> excelMap = new HashMap<>(16);
for (KProjectRouteEntity route : routes) {
List<VerticalCurveElementEntity> list = verticalCurveElementService
.list(new QueryWrapper<VerticalCurveElementEntity>().eq("route_id", route.getId()).orderByAsc("bp_stake"));
map.put(route.getRouteName(), list);
}
// 处理每一个sheet的数据
for (Map.Entry<String, List<VerticalCurveElementEntity>> entry : map.entrySet()) {
List<VerticalCurveElementExcelDataVo> excelDataList = new ArrayList<>();
List<VerticalCurveElementEntity> list = entry.getValue();
int i = 1;
for (VerticalC