|
|
@ -1,5 +1,6 @@
|
|
|
|
package me.zhengjie.modules.mailtask.service.impl;
|
|
|
|
package me.zhengjie.modules.mailtask.service.impl;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
|
|
import cn.hutool.core.util.RandomUtil;
|
|
|
|
import cn.hutool.core.util.RandomUtil;
|
|
|
|
import cn.hutool.core.util.ZipUtil;
|
|
|
|
import cn.hutool.core.util.ZipUtil;
|
|
|
|
import cn.hutool.poi.excel.ExcelUtil;
|
|
|
|
import cn.hutool.poi.excel.ExcelUtil;
|
|
|
@ -27,6 +28,7 @@ import javax.servlet.http.HttpServletResponse;
|
|
|
|
import java.io.File;
|
|
|
|
import java.io.File;
|
|
|
|
import java.io.IOException;
|
|
|
|
import java.io.IOException;
|
|
|
|
import java.nio.file.Paths;
|
|
|
|
import java.nio.file.Paths;
|
|
|
|
|
|
|
|
import java.sql.Timestamp;
|
|
|
|
import java.util.List;
|
|
|
|
import java.util.List;
|
|
|
|
import java.util.Objects;
|
|
|
|
import java.util.Objects;
|
|
|
|
|
|
|
|
|
|
|
@ -117,7 +119,9 @@ public class MailTaskServiceImpl implements MailTaskService {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
// 任务记录
|
|
|
|
// 任务记录
|
|
|
|
TempFileRecord tempFileRecord = new TempFileRecord();
|
|
|
|
TempFileRecord tempFileRecord = new TempFileRecord(); // 增加生成时间字段
|
|
|
|
|
|
|
|
// 增加生成时间字段
|
|
|
|
|
|
|
|
tempFileRecord.setGmtCreate(new Timestamp(System.currentTimeMillis()));
|
|
|
|
// 保存当次任务生成的所有日志地址,然后保存在一次,用逗号分隔
|
|
|
|
// 保存当次任务生成的所有日志地址,然后保存在一次,用逗号分隔
|
|
|
|
tempFileRecord.setFilePaths(pathBuilder.toString().substring(0, pathBuilder.length() - 1));
|
|
|
|
tempFileRecord.setFilePaths(pathBuilder.toString().substring(0, pathBuilder.length() - 1));
|
|
|
|
// 默认保存7天
|
|
|
|
// 默认保存7天
|
|
|
@ -169,11 +173,13 @@ public class MailTaskServiceImpl implements MailTaskService {
|
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
|
public void downloadFilesByRandCode(String rand, HttpServletResponse response,HttpServletRequest request) {
|
|
|
|
public void downloadFilesByRandCode(String rand, HttpServletResponse response,HttpServletRequest request) {
|
|
|
|
// 根据验证码查出需要的信息
|
|
|
|
// 根据验证码查出需要的信息
|
|
|
|
TempFileRecord tempFileRecord = tempFileRecordService.findByVerificationCode(rand.trim(), FINISH_BUILD_FILE_STATUS_CODE);
|
|
|
|
TempFileRecord tempFileRecord = tempFileRecordService.findByVerificationCode(rand.trim());
|
|
|
|
// 切分需要的文件地址
|
|
|
|
// 切分需要的文件地址
|
|
|
|
if (tempFileRecord!= null){
|
|
|
|
if (ObjectUtil.isNotEmpty(tempFileRecord)){
|
|
|
|
String filePaths = tempFileRecord.getFilePaths();
|
|
|
|
String filePaths = tempFileRecord.getFilePaths();
|
|
|
|
if (StringUtils.isNotBlank(filePaths)){
|
|
|
|
Integer fileStatus = tempFileRecord.getFileStatus();
|
|
|
|
|
|
|
|
// fixme 进行临时性修复, 目前无法进行判断是否成功下载, 所以做下2次下载容错, 然后用定时任务自动关闭下载后的结果
|
|
|
|
|
|
|
|
if (StringUtils.isNotBlank(filePaths) && fileStatus <= 2){
|
|
|
|
String[] split = filePaths.split(FILE_PATH_SPLIT);
|
|
|
|
String[] split = filePaths.split(FILE_PATH_SPLIT);
|
|
|
|
if (split.length > 0 && StringUtils.isNotBlank(split[0])){
|
|
|
|
if (split.length > 0 && StringUtils.isNotBlank(split[0])){
|
|
|
|
String tempPath = StringUtils.substringBeforeLast(split[0], File.separator);
|
|
|
|
String tempPath = StringUtils.substringBeforeLast(split[0], File.separator);
|
|
|
@ -182,7 +188,8 @@ public class MailTaskServiceImpl implements MailTaskService {
|
|
|
|
// ZipUtil.zip(tempPath, zipPath);
|
|
|
|
// ZipUtil.zip(tempPath, zipPath);
|
|
|
|
FileUtil.downloadFile(request, response, new File(zipPath), true);
|
|
|
|
FileUtil.downloadFile(request, response, new File(zipPath), true);
|
|
|
|
// 更新下载结果
|
|
|
|
// 更新下载结果
|
|
|
|
tempFileRecord.setFileStatus(FINISH_DOWNLOAD_FILE_STATUS_CODE);
|
|
|
|
// tempFileRecord.setFileStatus(FINISH_DOWNLOAD_FILE_STATUS_CODE);
|
|
|
|
|
|
|
|
tempFileRecord.setFileStatus(fileStatus + 1);
|
|
|
|
tempFileRecordService.update(tempFileRecord);
|
|
|
|
tempFileRecordService.update(tempFileRecord);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -195,6 +202,8 @@ public class MailTaskServiceImpl implements MailTaskService {
|
|
|
|
public String buildOnceLinkFromServer(String filePath) {
|
|
|
|
public String buildOnceLinkFromServer(String filePath) {
|
|
|
|
// 任务记录
|
|
|
|
// 任务记录
|
|
|
|
TempFileRecord tempFileRecord = new TempFileRecord();
|
|
|
|
TempFileRecord tempFileRecord = new TempFileRecord();
|
|
|
|
|
|
|
|
// 增加生成时间字段
|
|
|
|
|
|
|
|
tempFileRecord.setGmtCreate(new Timestamp(System.currentTimeMillis()));
|
|
|
|
// 保存当次任务生成的所有日志地址,然后保存在一次,用逗号分隔
|
|
|
|
// 保存当次任务生成的所有日志地址,然后保存在一次,用逗号分隔
|
|
|
|
tempFileRecord.setFilePaths(filePath);
|
|
|
|
tempFileRecord.setFilePaths(filePath);
|
|
|
|
// 默认保存7天
|
|
|
|
// 默认保存7天
|
|
|
|