Compare commits
No commits in common. '3724da06cf3296010ad0c11cf82e804dfb4a049c' and 'be0f57881027cbe28a8fd50e76a1b769fc5b0049' have entirely different histories.
3724da06cf
...
be0f578810
7 changed files with 4 additions and 2621 deletions
@ -1,96 +0,0 @@ |
|||||||
package org.springblade.lims.Scheduled; |
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
|
||||||
import lombok.extern.slf4j.Slf4j; |
|
||||||
import org.springblade.lims.entry.Entrust; |
|
||||||
import org.springblade.lims.service.IEntrtrustService; |
|
||||||
import org.springblade.system.cache.DictBizCache; |
|
||||||
import org.springblade.system.enums.DictBizEnum; |
|
||||||
|
|
||||||
import org.springframework.scheduling.annotation.Scheduled; |
|
||||||
import org.springframework.stereotype.Component; |
|
||||||
|
|
||||||
import java.text.SimpleDateFormat; |
|
||||||
import java.time.LocalDateTime; |
|
||||||
import java.util.*; |
|
||||||
|
|
||||||
/** |
|
||||||
* @BelongsProject: project_husbandry_back |
|
||||||
* @BelongsPackage:org.springblade.lims.Scheduled |
|
||||||
* @Annotation:定时任务 |
|
||||||
* @Author:YangMaoFu |
|
||||||
* @date :Created in 2023/7/6 14:18 |
|
||||||
* @CreateTime: 2026-04-16 23:27 |
|
||||||
* @Description: TODO |
|
||||||
* @Version: 1.0 |
|
||||||
*/ |
|
||||||
|
|
||||||
@Slf4j |
|
||||||
@Component |
|
||||||
public class GlobalScheduledTasks { |
|
||||||
private final IEntrtrustService service; |
|
||||||
|
|
||||||
public GlobalScheduledTasks(IEntrtrustService service) { |
|
||||||
this.service = service; |
|
||||||
} |
|
||||||
|
|
||||||
/** |
|
||||||
* 每晚 00:00 执行报告自动生成 |
|
||||||
*/ |
|
||||||
@Scheduled(cron = "0 0 0 * * ?") |
|
||||||
public void downloadFileAtMidnight() { |
|
||||||
// ===================== 核心:开关判断 =====================
|
|
||||||
String enabled = DictBizCache.getKey(DictBizEnum.SCHEDULED_TASK.getName(), "openScheduled"); |
|
||||||
if ("1".equals(enabled)) { |
|
||||||
log.info("===== 报告生成任务已关闭,不执行 ====="); |
|
||||||
return; |
|
||||||
} |
|
||||||
log.info("===== 凌晨0点,开始执行报告生成任务 =====: {}" ,LocalDateTime.now()); |
|
||||||
try { |
|
||||||
int successCount = 0; |
|
||||||
int failCount = 0; |
|
||||||
List<String> failMessages = new ArrayList<>(); |
|
||||||
String startCreateTime = DictBizCache.getKey(DictBizEnum.SCHEDULED_TASK.getName(), "startCreateTime"); |
|
||||||
// 空值检查
|
|
||||||
if (startCreateTime == null || startCreateTime.trim().isEmpty()) { |
|
||||||
log.error("开始创建时间配置为空,无法执行报告生成任务"); |
|
||||||
return; |
|
||||||
} |
|
||||||
|
|
||||||
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); |
|
||||||
Date creatTime = sdf.parse(startCreateTime + " 00:00:00"); |
|
||||||
LambdaQueryWrapper<Entrust> wrapper = new LambdaQueryWrapper<>(); |
|
||||||
wrapper.in(Entrust::getEntrustStatus, Arrays.asList("7", "8")); |
|
||||||
wrapper.eq(Entrust::getIsGenreport, "1"); |
|
||||||
wrapper.eq(Entrust::getIsDeleted, "0"); |
|
||||||
wrapper.between(Entrust::getCreateTime, creatTime, new Date()); |
|
||||||
List<Entrust> entrustList = service.list(wrapper); |
|
||||||
String creatTimeStr = sdf.format(creatTime); |
|
||||||
log.info("开始时间: {}", creatTimeStr); |
|
||||||
log.info("查询到需要生成报告的委托单数量: {}", entrustList.size()); |
|
||||||
|
|
||||||
// 遍历生成报告
|
|
||||||
for (Entrust entrust : entrustList) { |
|
||||||
try { |
|
||||||
String fullPath = service.generReport(entrust); |
|
||||||
successCount++; |
|
||||||
log.info("报告生成成功: {}", entrust.getAcceptanceNum()); |
|
||||||
log.info("报告生成路径: {}", fullPath); |
|
||||||
} catch (Exception e) { |
|
||||||
failCount++; |
|
||||||
String errorMsg = "委托单ID:" + entrust.getId() + |
|
||||||
"- 编号:" + entrust.getAcceptanceNum() + |
|
||||||
"- 错误:" + e.getMessage(); |
|
||||||
failMessages.add(errorMsg); |
|
||||||
log.error("报告生成失败: {}", errorMsg, e); |
|
||||||
} |
|
||||||
} |
|
||||||
log.info("===== 报告生成任务完成 =====: {}, 成功: {}, 失败: {}" ,LocalDateTime.now(), successCount, failCount); |
|
||||||
if (!failMessages.isEmpty()) { |
|
||||||
log.error("失败的委托单列表: {}", failMessages); |
|
||||||
} |
|
||||||
} catch (Exception e) { |
|
||||||
log.error("===== 报告生成任务异常 =====: {}" ,LocalDateTime.now(), e); |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
||||||
File diff suppressed because it is too large
Load Diff
@ -1,66 +0,0 @@ |
|||||||
package org.springblade.lims.utils; |
|
||||||
|
|
||||||
import org.apache.commons.compress.archivers.zip.ZipArchiveEntry; |
|
||||||
import org.apache.commons.compress.archivers.zip.ZipArchiveOutputStream; |
|
||||||
import org.springblade.system.cache.DictBizCache; |
|
||||||
import org.springblade.system.enums.DictBizEnum; |
|
||||||
|
|
||||||
import java.io.File; |
|
||||||
import java.io.FileOutputStream; |
|
||||||
import java.util.Map; |
|
||||||
|
|
||||||
/** |
|
||||||
* @BelongsProject: project_husbandry_back |
|
||||||
* @BelongsPackage:org.springblade.lims.utils |
|
||||||
* @Annotation: ZIP压缩工具类 |
|
||||||
* @Author:YangMaoFu |
|
||||||
* @date :Created in 2023/7/6 14:18 |
|
||||||
* @CreateTime: 2026-04-14 23:14 |
|
||||||
* @Description: TODO |
|
||||||
* @Version: 1.0 |
|
||||||
*/ |
|
||||||
public class ZipUtils { |
|
||||||
|
|
||||||
/** |
|
||||||
* 将ZIP文件保存到服务器指定目录 |
|
||||||
* |
|
||||||
* @param fileMap 文件映射 |
|
||||||
* @param zipName ZIP文件名 |
|
||||||
* @return 完整文件路径 |
|
||||||
*/ |
|
||||||
public static String saveZipToServer(Map<String, byte[]> fileMap, String zipName) throws Exception { |
|
||||||
String saveDir = DictBizCache.getKey(DictBizEnum.SCHEDULED_TASK.getName(), "saveDirFile"); |
|
||||||
// 确保目录存在
|
|
||||||
File dir = new File(saveDir); |
|
||||||
if (!dir.exists()) { |
|
||||||
dir.mkdirs(); |
|
||||||
} |
|
||||||
|
|
||||||
// 生成完整路径
|
|
||||||
String fullPath = saveDir + File.separator + zipName; |
|
||||||
File zipFile = new File(fullPath); |
|
||||||
|
|
||||||
// 写入ZIP文件
|
|
||||||
try (FileOutputStream fos = new FileOutputStream(zipFile); |
|
||||||
ZipArchiveOutputStream zipOut = new ZipArchiveOutputStream(fos)) { |
|
||||||
|
|
||||||
// 写入所有文件
|
|
||||||
for (Map.Entry<String, byte[]> entry : fileMap.entrySet()) { |
|
||||||
String fileName = entry.getKey(); |
|
||||||
byte[] fileData = entry.getValue(); |
|
||||||
|
|
||||||
// 创建Zip条目
|
|
||||||
ZipArchiveEntry zipEntry = new ZipArchiveEntry(fileName); |
|
||||||
zipOut.putArchiveEntry(zipEntry); |
|
||||||
|
|
||||||
// 写入文件数据
|
|
||||||
zipOut.write(fileData); |
|
||||||
zipOut.closeArchiveEntry(); |
|
||||||
} |
|
||||||
|
|
||||||
zipOut.finish(); |
|
||||||
} |
|
||||||
|
|
||||||
return fullPath; |
|
||||||
} |
|
||||||
} |
|
||||||
Loading…
Reference in new issue