|
@@ -1,36 +1,31 @@
|
|
|
package com.ym.mec.web.controller;
|
|
|
|
|
|
-import com.alibaba.excel.EasyExcel;
|
|
|
-import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy;
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
import com.microsvc.toolkit.common.response.paging.PageInfo;
|
|
|
import com.microsvc.toolkit.common.response.paging.QueryInfo;
|
|
|
-import com.microsvc.toolkit.common.response.template.R;
|
|
|
-import com.microsvc.toolkit.common.tools.DownloadManager;
|
|
|
-import com.microsvc.toolkit.middleware.oss.OssPluginContext;
|
|
|
-import com.microsvc.toolkit.middleware.oss.impl.TencentOssPlugin;
|
|
|
import com.ym.mec.biz.dal.entity.TempDirectorTrainingCamp;
|
|
|
import com.ym.mec.biz.dal.wrapper.TempDirectorTrainingCampDetailWrapper;
|
|
|
import com.ym.mec.biz.service.TempDirectorTrainingCampDetailService;
|
|
|
import com.ym.mec.biz.service.TempDirectorTrainingCampService;
|
|
|
import com.ym.mec.common.controller.BaseController;
|
|
|
import com.ym.mec.common.entity.HttpResponseResult;
|
|
|
+import com.ym.mec.common.exception.BizException;
|
|
|
import com.ym.mec.util.date.DateUtil;
|
|
|
+import com.ym.mec.util.excel.POIUtil;
|
|
|
import io.swagger.annotations.Api;
|
|
|
import io.swagger.annotations.ApiOperation;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
-import org.apache.commons.lang3.StringUtils;
|
|
|
-import org.joda.time.DateTime;
|
|
|
-import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
|
|
|
import org.springframework.web.bind.annotation.PostMapping;
|
|
|
import org.springframework.web.bind.annotation.RequestBody;
|
|
|
import org.springframework.web.bind.annotation.RequestMapping;
|
|
|
import org.springframework.web.bind.annotation.RestController;
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
|
-import java.io.File;
|
|
|
-import java.text.MessageFormat;
|
|
|
+import javax.servlet.http.HttpServletResponse;
|
|
|
+import java.io.IOException;
|
|
|
+import java.io.OutputStream;
|
|
|
import java.util.Date;
|
|
|
import java.util.List;
|
|
|
|
|
@@ -39,17 +34,9 @@ import java.util.List;
|
|
|
@Slf4j
|
|
|
@RequestMapping("${app-config.url.web:}/tempDirectorTrainingDetailCamp")
|
|
|
public class TempDirectorTrainingCampDetailController extends BaseController {
|
|
|
- /**
|
|
|
- * 服务对象
|
|
|
- */
|
|
|
@Resource
|
|
|
private TempDirectorTrainingCampDetailService tempDirectorTrainingCampDetailService;
|
|
|
-
|
|
|
- @Autowired
|
|
|
- private OssPluginContext ossPluginContext;
|
|
|
-
|
|
|
-
|
|
|
- @Autowired
|
|
|
+ @Resource
|
|
|
private TempDirectorTrainingCampService tempDirectorTrainingCampService;
|
|
|
|
|
|
|
|
@@ -68,22 +55,47 @@ public class TempDirectorTrainingCampDetailController extends BaseController {
|
|
|
|
|
|
@ApiOperation(value = "导出")
|
|
|
@PostMapping("/export")
|
|
|
- public HttpResponseResult<TempDirectorTrainingCampDetailWrapper.DownloadInfo> export(@RequestBody TempDirectorTrainingCampDetailWrapper.TempDirectorTrainingCampDetailQuery queryInfo){
|
|
|
+ public void export(HttpServletResponse response, @RequestBody TempDirectorTrainingCampDetailWrapper.TempDirectorTrainingCampDetailQuery queryInfo) throws IOException {
|
|
|
if (queryInfo.getTempDirectorTrainingCampId()==null) {
|
|
|
- return failed("训练营编号不能为空");
|
|
|
+ throw new BizException("训练营编号不能为空");
|
|
|
+ }
|
|
|
+ TempDirectorTrainingCamp trainingCamp = tempDirectorTrainingCampService.lambdaQuery()
|
|
|
+ .eq(TempDirectorTrainingCamp::getId, queryInfo.getTempDirectorTrainingCampId())
|
|
|
+ .eq(TempDirectorTrainingCamp::getDelFlag, false)
|
|
|
+ .last("LIMIT 1").one();
|
|
|
+ if (trainingCamp==null) {
|
|
|
+ throw new BizException("训练营不存在");
|
|
|
}
|
|
|
-
|
|
|
-
|
|
|
IPage<TempDirectorTrainingCampDetailWrapper.TempDirectorTrainingCampDetail> tempDirectorTrainingCampIPage = tempDirectorTrainingCampDetailService.queryPage(new Page<>(1,-1), queryInfo);
|
|
|
List<TempDirectorTrainingCampDetailWrapper.TempDirectorTrainingCampDetail> records = tempDirectorTrainingCampIPage.getRecords();
|
|
|
if (records.size()==0) {
|
|
|
- return failed("没有可导出数据");
|
|
|
+ throw new BizException("没有可导出数据");
|
|
|
+ }
|
|
|
+ OutputStream outputStream = response.getOutputStream();
|
|
|
+ try {
|
|
|
+ HSSFWorkbook workbook = POIUtil.exportExcel(new String[]{"姓名", "联系电话", "身份证号", "所在城市", "缴费状态", "缴费金额", "缴费时间", "目前从事职业"
|
|
|
+ , "第一主专业", "之前乐队指导学习基础", "目标效果", "需求或建议"}, new String[]{
|
|
|
+ "username", "mobile", "cardNo", "cityInfo", "paymentStatusName", "paymentAmount", "paymentDateStr",
|
|
|
+ "job", "subjectName", "study"
|
|
|
+ , "studyTarget", "suggestion"}, records);
|
|
|
+ response.setContentType("application/octet-stream");
|
|
|
+ response.setHeader("Content-Disposition", "attac:wq" +
|
|
|
+ "hment;filename=乐队指导训练营-" + DateUtil.getDate(new Date()) + ".xls");
|
|
|
+
|
|
|
+ outputStream = response.getOutputStream();
|
|
|
+ workbook.write(outputStream);
|
|
|
+ outputStream.flush();
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ } finally {
|
|
|
+ if (outputStream != null) {
|
|
|
+ try {
|
|
|
+ outputStream.close();
|
|
|
+ } catch (IOException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
- TempDirectorTrainingCamp trainingCamp = tempDirectorTrainingCampService.getById(queryInfo.getTempDirectorTrainingCampId());
|
|
|
-
|
|
|
-
|
|
|
- TempDirectorTrainingCampDetailWrapper.DownloadInfo downloadInfo = generateExportExcelFile(records, TempDirectorTrainingCampDetailWrapper.TempDirectorTrainingCampDetail.class, trainingCamp.getName()+"导出", trainingCamp.getName()+"导出");
|
|
|
- return succeed(downloadInfo);
|
|
|
}
|
|
|
|
|
|
@ApiOperation(value = "统计")
|
|
@@ -95,44 +107,5 @@ public class TempDirectorTrainingCampDetailController extends BaseController {
|
|
|
return succeed(tempDirectorTrainingCampDetailService.queryPageStat(queryInfo));
|
|
|
}
|
|
|
|
|
|
-
|
|
|
- private TempDirectorTrainingCampDetailWrapper.DownloadInfo generateExportExcelFile(List<?> orderExports, Class<?> clazz, String fileName, String sheetName) {
|
|
|
-
|
|
|
- // OSS上传文件目录
|
|
|
- String uploadOssPath = MessageFormat.format("excel-download/{0}", DateTime.now().toString("yyyy-MM"));
|
|
|
-
|
|
|
- // 文件上传下载地址
|
|
|
- String uploadPath = MessageFormat.format("{0}/{1}-{2}.xlsx", uploadOssPath, fileName, DateTime.now().toString("MMddHHmmss"));
|
|
|
-
|
|
|
- // 本地文件地址
|
|
|
- String localPath = DownloadManager.getInstance().path(uploadPath);
|
|
|
-// log.debug("pageExport localPath={}", localPath);
|
|
|
-
|
|
|
- // 模板文件保存在springboot项目的resources/static下
|
|
|
- // Resource resource = new ClassPathResource("static/预报名模板导出.xlsx");
|
|
|
-
|
|
|
- EasyExcel
|
|
|
- .write(localPath, clazz)
|
|
|
- .registerWriteHandler(new LongestMatchColumnWidthStyleStrategy())
|
|
|
- //.withTemplate(resource.getStream()) // 利用模板的输出流
|
|
|
- .sheet(0, sheetName)
|
|
|
- .doWrite(orderExports);
|
|
|
-
|
|
|
- // 上传本地文件到OSS服务器
|
|
|
- String downloadPath = ossPluginContext.getPluginService(TencentOssPlugin.PLUGIN_NAME)
|
|
|
- .uploadFile(uploadOssPath, new File(localPath));
|
|
|
- log.debug("pageExport downloadPath={}", downloadPath);
|
|
|
-
|
|
|
- // 删除本地缓存文件
|
|
|
- DownloadManager.getInstance().deleteOnExit(localPath);
|
|
|
-
|
|
|
- // 学生统计下载
|
|
|
- return TempDirectorTrainingCampDetailWrapper.DownloadInfo
|
|
|
- .builder()
|
|
|
- .fileName(MessageFormat.format("{0}.xlsx", fileName))
|
|
|
- .downloadPath(downloadPath)
|
|
|
- .build();
|
|
|
- }
|
|
|
-
|
|
|
}
|
|
|
|