app
This commit is contained in:
parent
be007a8d52
commit
0ba7826693
6
pom.xml
6
pom.xml
|
|
@ -17,6 +17,12 @@
|
|||
<java.version>1.8</java.version>
|
||||
</properties>
|
||||
<dependencies>
|
||||
<!-- 负载均衡定时任务执行一次 -->
|
||||
<dependency>
|
||||
<groupId>net.javacrumbs.shedlock</groupId>
|
||||
<artifactId>shedlock-spring</artifactId>
|
||||
<version>2.2.1</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-freemarker</artifactId>
|
||||
|
|
|
|||
|
|
@ -11,10 +11,7 @@ import com.bonus.aqgqj.app.service.PrimaryDataAppService;
|
|||
import com.bonus.aqgqj.basis.entity.dto.ParamsDto;
|
||||
import com.bonus.aqgqj.basis.entity.vo.*;
|
||||
import com.bonus.aqgqj.system.vo.EncryptedReq;
|
||||
import com.bonus.aqgqj.utils.ExcelStyleUtil;
|
||||
import com.bonus.aqgqj.utils.FileUtil;
|
||||
import com.bonus.aqgqj.utils.ServerResponse;
|
||||
import com.bonus.aqgqj.utils.SystemUtils;
|
||||
import com.bonus.aqgqj.utils.*;
|
||||
import com.github.pagehelper.PageHelper;
|
||||
import com.github.pagehelper.PageInfo;
|
||||
import io.swagger.annotations.Api;
|
||||
|
|
@ -169,7 +166,7 @@ public class PrimaryDataAppController {
|
|||
public ServerResponse downLoadExcelZip(HttpServletRequest request, HttpServletResponse response, EncryptedReq<ParamsDto> dto) {
|
||||
List<File> fileList = new ArrayList();
|
||||
List<String> fileNameList = new ArrayList();
|
||||
String fileNames="检测原始记录_" + System.currentTimeMillis()+".zip";
|
||||
String fileNames= DateTimeHelper.getNowDate()+ "/检测原始记录_" + System.currentTimeMillis()+".zip";
|
||||
String outputZipFilePath = SystemUtils.getUploadPath()+ fileNames;
|
||||
try {
|
||||
Long[] ids = dto.getData().getIds();
|
||||
|
|
@ -181,7 +178,6 @@ public class PrimaryDataAppController {
|
|||
fileNameList.add(excelModelPath);
|
||||
}
|
||||
}
|
||||
// downloadZip(response, fileList);
|
||||
zipFiles(fileList, outputZipFilePath);
|
||||
}
|
||||
return ServerResponse.createSuccess("statics/"+fileNames);
|
||||
|
|
@ -252,31 +248,11 @@ public class PrimaryDataAppController {
|
|||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public void downloadZip(HttpServletResponse response, List<File> filesToZip) throws IOException {
|
||||
// 设置响应头信息,指定下载的文件名为"files.zip"
|
||||
response.setContentType("application/zip");
|
||||
response.setHeader("Content-Disposition", "attachment; filename=files.zip");
|
||||
response.setHeader("code","200");
|
||||
try (ZipOutputStream zos = new ZipOutputStream(response.getOutputStream())) {
|
||||
for (File file : filesToZip) {
|
||||
try (FileInputStream fis = new FileInputStream(file)) {
|
||||
ZipEntry zipEntry = new ZipEntry(file.getName());
|
||||
zos.putNextEntry(zipEntry);
|
||||
byte[] buffer = new byte[1024];
|
||||
int len;
|
||||
while ((len = fis.read(buffer)) > 0) {
|
||||
zos.write(buffer, 0, len);
|
||||
}
|
||||
}
|
||||
}
|
||||
} catch (IOException e) {
|
||||
log.error("文件压缩异常");
|
||||
}
|
||||
}
|
||||
|
||||
public void zipFiles(List<File> filesToZip, String outputZipFilePath) throws IOException {
|
||||
File outputFile = new File(outputZipFilePath);
|
||||
if (!outputFile.getParentFile().exists()) {
|
||||
outputFile.getParentFile().mkdirs();
|
||||
}
|
||||
try (ZipOutputStream zos = new ZipOutputStream(new FileOutputStream(outputFile))) {
|
||||
for (File file : filesToZip) {
|
||||
try (FileInputStream fis = new FileInputStream(file)) {
|
||||
|
|
|
|||
|
|
@ -229,7 +229,7 @@ public class TestReportManageAppServiceImpl implements TestReportManageAppServic
|
|||
List<File> fileList = new ArrayList();
|
||||
JSONArray jsonArray = JSONObject.parseArray(data.getParamsList());
|
||||
List<TestReportManageAppVo> list = jsonArray.toJavaList(TestReportManageAppVo.class);
|
||||
String fileNames="检测报告_" + System.currentTimeMillis()+".zip";
|
||||
String fileNames=DateTimeHelper.getNowDate()+ "/检测报告_" + System.currentTimeMillis()+".zip";
|
||||
String outputZipFilePath = SystemUtils.getUploadPath()+ fileNames;
|
||||
if (list != null && list.size() > 0) {
|
||||
try {
|
||||
|
|
@ -247,7 +247,6 @@ public class TestReportManageAppServiceImpl implements TestReportManageAppServic
|
|||
}
|
||||
}
|
||||
}
|
||||
// downloadZip(response, fileList);
|
||||
zipFiles(fileList, outputZipFilePath);
|
||||
return ServerResponse.createSuccess("statics/"+fileNames);
|
||||
}catch (Exception e){
|
||||
|
|
@ -691,32 +690,11 @@ public class TestReportManageAppServiceImpl implements TestReportManageAppServic
|
|||
String code = nowDate + customerCode;
|
||||
return code;
|
||||
}
|
||||
|
||||
|
||||
public void downloadZip(HttpServletResponse response, List<File> filesToZip) throws IOException {
|
||||
// 设置响应头信息,指定下载的文件名为"files.zip"
|
||||
response.setContentType("application/zip");
|
||||
response.setHeader("Content-Disposition", "attachment; filename=files.zip");
|
||||
try (ZipOutputStream zos = new ZipOutputStream(response.getOutputStream())) {
|
||||
for (File file : filesToZip) {
|
||||
try (FileInputStream fis = new FileInputStream(file)) {
|
||||
ZipEntry zipEntry = new ZipEntry(file.getName());
|
||||
zos.putNextEntry(zipEntry);
|
||||
byte[] buffer = new byte[1024];
|
||||
int len;
|
||||
while ((len = fis.read(buffer)) > 0) {
|
||||
zos.write(buffer, 0, len);
|
||||
}
|
||||
}
|
||||
}
|
||||
} catch (IOException e) {
|
||||
log.error("文件压缩异常");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public void zipFiles(List<File> filesToZip, String outputZipFilePath) throws IOException {
|
||||
File outputFile = new File(outputZipFilePath);
|
||||
if (!outputFile.getParentFile().exists()) {
|
||||
outputFile.getParentFile().mkdirs();
|
||||
}
|
||||
try (ZipOutputStream zos = new ZipOutputStream(new FileOutputStream(outputFile))) {
|
||||
for (File file : filesToZip) {
|
||||
try (FileInputStream fis = new FileInputStream(file)) {
|
||||
|
|
|
|||
|
|
@ -0,0 +1,112 @@
|
|||
package com.bonus.aqgqj.task;
|
||||
|
||||
import com.bonus.aqgqj.utils.DateTimeHelper;
|
||||
import com.bonus.aqgqj.utils.FileUtil;
|
||||
import com.bonus.aqgqj.utils.SystemUtils;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import net.javacrumbs.shedlock.core.SchedulerLock;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.scheduling.annotation.Async;
|
||||
import org.springframework.scheduling.annotation.EnableAsync;
|
||||
import org.springframework.scheduling.annotation.EnableScheduling;
|
||||
import org.springframework.scheduling.annotation.Scheduled;
|
||||
|
||||
import java.io.File;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.attribute.BasicFileAttributes;
|
||||
import java.text.ParseException;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.time.LocalDate;
|
||||
import java.time.YearMonth;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @description 删除原始记录、检测报告等文件定时任务
|
||||
* @author hay
|
||||
* @date 2024/8/21 10:14
|
||||
*/
|
||||
@Configuration
|
||||
@EnableScheduling
|
||||
@Slf4j
|
||||
@EnableAsync
|
||||
public class DeleteFileTask {
|
||||
private static final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
|
||||
|
||||
/**
|
||||
* lockAtMostFor属性:
|
||||
* 设置锁的最大持有时间;
|
||||
*/
|
||||
private static final int SCHEDULER_LOCK_MAX = 10 * 60 * 1000;
|
||||
/**
|
||||
* lockAtLeastFor属性:
|
||||
* 指定保留锁的最短时间。
|
||||
*/
|
||||
private static final int SCHEDULER_LOCK_MIN = 5 * 60 * 1000;
|
||||
|
||||
/**
|
||||
* 删除原始记录、检测报告等文件定时任务
|
||||
* 使用 cron 表达式指定每天23点,执行一次
|
||||
*/
|
||||
@Scheduled(cron = "0 0 23 * * *")
|
||||
@SchedulerLock(name = "StationMonthTask", lockAtMostFor = SCHEDULER_LOCK_MAX, lockAtLeastFor = SCHEDULER_LOCK_MIN)
|
||||
@Async
|
||||
public void getHomeCacheTask() {
|
||||
log.info("--------删除原始记录、检测报告等文件定时任务开启------");
|
||||
// 当前日期
|
||||
String nowDate = DateTimeHelper.getNowDate();
|
||||
// 删除该日期之前的文件夹
|
||||
deleteFoldersBeforeDate(nowDate);
|
||||
log.info("--------删除原始记录、检测报告等文件定时任务执行完毕------");
|
||||
}
|
||||
|
||||
// 删除指定目录下所有在当前日期之前的文件夹
|
||||
public static void deleteFoldersBeforeDate(String nowDate) {
|
||||
File dir = new File(SystemUtils.getUploadPath());
|
||||
if (!dir.exists() || !dir.isDirectory()) {
|
||||
log.warn("指定的目录不存在或不是一个目录:" + SystemUtils.getUploadPath());
|
||||
return;
|
||||
}
|
||||
|
||||
File[] files = dir.listFiles();
|
||||
if (files != null) {
|
||||
for (File file : files) {
|
||||
if (file.isDirectory()) {
|
||||
try {
|
||||
// 假设文件夹名符合日期格式(yyyy-MM-dd)
|
||||
String folderName = file.getName();
|
||||
Date folderDate = sdf.parse(folderName);
|
||||
Date currentDate = sdf.parse(nowDate);
|
||||
|
||||
if (folderDate.before(currentDate)) {
|
||||
deleteDirectory(file);
|
||||
}
|
||||
} catch (ParseException e) {
|
||||
log.error("日期解析失败,文件夹名称可能不符合预期格式:" + file.getName(), e);
|
||||
} catch (Exception e) {
|
||||
log.error("处理文件夹时发生异常:" + file.getName(), e);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 递归删除文件夹
|
||||
public static void deleteDirectory(File dir) {
|
||||
File[] files = dir.listFiles();
|
||||
if (files != null) {
|
||||
for (File file : files) {
|
||||
if (file.isDirectory()) {
|
||||
deleteDirectory(file);
|
||||
} else {
|
||||
if (!file.delete()) {
|
||||
log.warn("文件删除失败:" + file.getAbsolutePath());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!dir.delete()) {
|
||||
log.warn("目录删除失败:" + dir.getAbsolutePath());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -47,7 +47,11 @@
|
|||
<select id="getCertificateData" resultType="com.bonus.aqgqj.app.entity.SamplesManageAppVo">
|
||||
SELECT
|
||||
ted.id,
|
||||
ts.custom_id as customId,
|
||||
tsd.department_id as departmentId,
|
||||
tcs.custom_name as sampleDepartment,
|
||||
te.submit_location as submitLocation,
|
||||
sd.id as sampleToolsId,
|
||||
tsd.dev_type_name as sampleTools,
|
||||
tsd.dev_module as devModule,
|
||||
ted.dev_code as devCode,
|
||||
|
|
@ -64,8 +68,10 @@
|
|||
LEFT JOIN tb_sample_device tsd on ted.dev_id=tsd.id and tsd.del_falg=0
|
||||
LEFT JOIN tb_sample ts on ts.id=tsd.sample_id and ts.del_flag=0
|
||||
LEFT JOIN tb_custom tc on tc.id=ts.custom_id and tc.del_flag=0
|
||||
LEFT JOIN tb_custom tcs on tcs.id=tsd.department_id and tcs.del_flag=0
|
||||
LEFT JOIN tb_exper te on te.id=ted.exper_id
|
||||
LEFT JOIN sys_user su on su.id=te.create_user and su.del_flag=0
|
||||
LEFT JOIN sys_distinct sd on sd.dict_name=tsd.dev_type_name and sd.del_flag=0
|
||||
WHERE
|
||||
tsd.dev_type_name is not null
|
||||
and te.`status`=4
|
||||
|
|
|
|||
Loading…
Reference in New Issue