commit
This commit is contained in:
+36
-71
@@ -1,5 +1,6 @@
|
||||
package io.v.nutz.trainSignUp.controller.statistics;
|
||||
|
||||
import cn.afterturn.easypoi.excel.ExcelExportUtil;
|
||||
import cn.afterturn.easypoi.excel.entity.ExportParams;
|
||||
import cn.afterturn.easypoi.excel.entity.enmus.ExcelType;
|
||||
import cn.afterturn.easypoi.excel.entity.params.ExcelExportEntity;
|
||||
@@ -148,89 +149,53 @@ public class TrainSignUpActivityStatisticsController {
|
||||
List<TrainSignUpCourse> courseList = dao.query(TrainSignUpCourse.class, Cnd.where("activityId", "=", activityId));
|
||||
Map<String, TrainSignUpCourse> courseMap = courseList.stream().collect(Collectors.toMap(o -> o.getId(), o -> o));
|
||||
|
||||
//按校区分组
|
||||
Map<String, List<NutMap>> campus = userList.stream().collect(Collectors.groupingBy(o -> o.getString("campus")));
|
||||
//按课程分组
|
||||
Map<String, List<NutMap>> userListMap = userList.stream().collect(Collectors.groupingBy(v -> v.getString("courseId")));
|
||||
Workbook workbook = new XSSFWorkbook();
|
||||
userListMap.forEach((k, v) -> {
|
||||
|
||||
String fileName = "报名人员";
|
||||
/**
|
||||
* 创建临时文件夹
|
||||
*/
|
||||
String tmpPath = "tmp/" + R.UU32();
|
||||
File tmpDir = new File(tmpPath + "/" + fileName);
|
||||
tmpDir.mkdirs();
|
||||
//查询课程
|
||||
TrainSignUpCourse course = courseMap.get(k);
|
||||
//查询课程类型
|
||||
TrainSignUpType trainSignUpType = dao.fetch(TrainSignUpType.class, Cnd.where("id", "=", course.getCourseType()));
|
||||
dao.fetchLinks(trainSignUpType, "^trainMobileSignColumnList$");
|
||||
|
||||
campus.forEach((key, value) -> {
|
||||
Map<String, List<NutMap>> userListMap = value.stream().collect(Collectors.groupingBy(v -> v.getString("courseId")));
|
||||
Workbook workbook = new XSSFWorkbook();
|
||||
userListMap.forEach((k, v) -> {
|
||||
ExcelExportService service = new ExcelExportService();
|
||||
ExportParams userExportParams = new ExportParams();
|
||||
userExportParams.setTitle(course.getCourseName());
|
||||
userExportParams.setSheetName(course.getCourseName());
|
||||
userExportParams.setType(ExcelType.XSSF);
|
||||
|
||||
//查询课程
|
||||
TrainSignUpCourse course = courseMap.get(k);
|
||||
//查询课程类型
|
||||
TrainSignUpType trainSignUpType = dao.fetch(TrainSignUpType.class, Cnd.where("id", "=", course.getCourseType()));
|
||||
dao.fetchLinks(trainSignUpType, "^trainMobileSignColumnList$");
|
||||
List<ExcelExportEntity> currentEntities = new ArrayList<>();
|
||||
currentEntities.addAll(excelCommonExportEntity);
|
||||
//将课程类型配置的移动端动态字段添加到excel列中
|
||||
List<TrainMobileSignColumn> trainMobileSignColumnList = trainSignUpType.getTrainMobileSignColumnList();
|
||||
if(trainMobileSignColumnList != null && trainMobileSignColumnList.size() > 0) {
|
||||
trainMobileSignColumnList.forEach(item -> {
|
||||
currentEntities.add(new ExcelExportEntity(item.getColumnName(), item.getColumnCode(), 20));
|
||||
});
|
||||
}
|
||||
|
||||
ExcelExportService service = new ExcelExportService();
|
||||
ExportParams userExportParams = new ExportParams();
|
||||
userExportParams.setTitle(course.getCourseName());
|
||||
userExportParams.setSheetName(course.getCourseName());
|
||||
userExportParams.setType(ExcelType.XSSF);
|
||||
|
||||
List<ExcelExportEntity> currentEntities = new ArrayList<>();
|
||||
currentEntities.addAll(excelCommonExportEntity);
|
||||
//将课程类型配置的移动端动态字段添加到excel列中
|
||||
List<TrainMobileSignColumn> trainMobileSignColumnList = trainSignUpType.getTrainMobileSignColumnList();
|
||||
if(trainMobileSignColumnList != null && trainMobileSignColumnList.size() > 0) {
|
||||
trainMobileSignColumnList.forEach(item -> {
|
||||
currentEntities.add(new ExcelExportEntity(item.getColumnName(), item.getColumnCode(), 20));
|
||||
});
|
||||
}
|
||||
|
||||
for (NutMap userSignData : v) {
|
||||
String mobileColumnsValueStr = userSignData.getString("mobileColumnsValue");
|
||||
if(StrUtil.isNotBlank(mobileColumnsValueStr)){
|
||||
List<NutMap> mobileColumnsValue = Json.fromJsonAsList(NutMap.class,mobileColumnsValueStr);
|
||||
for (NutMap cv : mobileColumnsValue) {
|
||||
if(cv.getString("columnFormType") != null && !cv.getString("columnFormType").equals("FILE")){
|
||||
userSignData.addv(cv.getString("columnCode"), cv.getString("columnValue"));
|
||||
}
|
||||
for (NutMap userSignData : v) {
|
||||
String mobileColumnsValueStr = userSignData.getString("mobileColumnsValue");
|
||||
if(StrUtil.isNotBlank(mobileColumnsValueStr)){
|
||||
List<NutMap> mobileColumnsValue = Json.fromJsonAsList(NutMap.class,mobileColumnsValueStr);
|
||||
for (NutMap cv : mobileColumnsValue) {
|
||||
if(cv.getString("columnFormType") != null && !cv.getString("columnFormType").equals("FILE")){
|
||||
userSignData.addv(cv.getString("columnCode"), cv.getString("columnValue"));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
service.createSheetForMap(workbook, userExportParams, currentEntities, v);
|
||||
});
|
||||
FileOutputStream outputStream = null;
|
||||
try {
|
||||
outputStream = new FileOutputStream(tmpDir.getPath() + "/" + key + "报名人员.xlsx");
|
||||
workbook.write(outputStream);
|
||||
outputStream.close();
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
service.createSheetForMap(workbook, userExportParams, currentEntities, v);
|
||||
});
|
||||
try {
|
||||
|
||||
String aimsDir = "zipTmp/" + R.UU32();
|
||||
String aimsName = fileName + ".zip";
|
||||
String aimsPath = aimsDir + "/" + aimsName;
|
||||
FileUtil.compressToZip(tmpDir.getPath(), aimsDir, aimsName);
|
||||
|
||||
response.setHeader("content-disposition", "attachment;filename="
|
||||
+ URLEncoder.encode(aimsName, "UTF-8"));
|
||||
|
||||
File aimsFile = new File(aimsPath);
|
||||
FileInputStream inputStream = new FileInputStream(aimsFile);
|
||||
IOUtils.copy(inputStream, response.getOutputStream());
|
||||
inputStream.close();
|
||||
aimsFile.delete();
|
||||
|
||||
FileUtil.deleteDir(new File(tmpPath));
|
||||
FileUtil.deleteDir(new File(aimsDir));
|
||||
response.setContentType("application/octet-stream");
|
||||
response.setHeader("Content-Disposition", "attachment;filename=" + new String((activity.getActivityName() + "报名人员名单.xlsx").getBytes("utf-8"), "ISO8859-1"));
|
||||
workbook.write(response.getOutputStream());
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user