diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/Application.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/Application.java index facd78e..5b2a4a0 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/Application.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/Application.java @@ -2,8 +2,10 @@ package com.electromagnetic.industry.software.manage; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.scheduling.annotation.EnableScheduling; @SpringBootApplication +@EnableScheduling public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/tasks/BackupTask.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/tasks/BackupTask.java index a7b21ec..88b5265 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/tasks/BackupTask.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/tasks/BackupTask.java @@ -22,6 +22,7 @@ import com.electromagnetic.industry.software.manage.pojo.models.FileBackupLog; import com.electromagnetic.industry.software.manage.pojo.models.UserAccessLog; import com.electromagnetic.industry.software.manage.service.FileSystemService; import com.electromagnetic.industry.software.manage.service.serviceimpl.CommonService; +import lombok.extern.slf4j.Slf4j; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; @@ -33,6 +34,7 @@ import java.util.List; import java.util.stream.Collectors; @Component +@Slf4j public class BackupTask { @Resource @@ -50,7 +52,7 @@ public class BackupTask { @Resource private BackupHandler backupHandler; - @Scheduled(cron = "0 0 1 * * ?") + @Scheduled(cron = "0 0 * * * ?") public void backup() { // 首先查看备份失败的文件 @@ -158,59 +160,62 @@ public class BackupTask { @Scheduled(cron = "0 0 * * * ?") public void backupSql() { - String sqlDirs = elePropertyConfig.getSqlDirs(); - File[] files = new File(sqlDirs).listFiles((file, name) -> name.endsWith(".sql")); - File maxModifyTimeFile = null; - long tmp = 0; - if (ArrayUtil.isEmpty(files)) { - return; - } - for (File file : files) { - if (file.lastModified() > tmp) { - tmp = file.lastModified(); - maxModifyTimeFile = file; + try { + String sqlDirs = elePropertyConfig.getSqlDirs(); + File[] files = new File(sqlDirs).listFiles((file, name) -> name.endsWith(".sql")); + File maxModifyTimeFile = null; + long tmp = 0; + if (ArrayUtil.isEmpty(files)) { + return; } - } - - if (maxModifyTimeFile == null) { - return; - } - String fileName = maxModifyTimeFile.getName(); - List fileBackupLogs = fileBackupLogMapper.selectList(Wrappers.lambdaQuery() - .eq(FileBackupLog::getFileName, fileName) - .eq(FileBackupLog::getSource, FileBackupSource.SQL.code)); - List successBacks = fileBackupLogs.stream().filter(FileBackupLog::isBackupSuccess).collect(Collectors.toList()); - if (CollUtil.isNotEmpty(successBacks)) { - return; - } - long startTime = System.currentTimeMillis(); - BackupFileResLog resLog = backupHandler.backupSql(maxModifyTimeFile.getAbsolutePath()); - long endTime = System.currentTimeMillis(); - List failBacks = fileBackupLogs.stream().filter(FileBackupLog::isBackupSuccess).collect(Collectors.toList()); - if (CollUtil.isEmpty(failBacks)) { - FileBackupLog backupLog = new FileBackupLog() - .setId(IdWorker.getSnowFlakeIdString()) - .setFileId(Base64.encode(fileName)) - .setFileCode(Base64.encode(fileName)) - .setBackupSuccess(resLog.getBackupSuccess()) - .setCreateTime(new Date()) - .setStartTime(startTime) - .setEndTime(endTime) - .setDuration(endTime - startTime) - .setFailInfoDetail(resLog.getFailInfoDetail()) - .setFileTime(FileUtil.lastModifiedTime(maxModifyTimeFile).getTime()) - .setFileName(fileName) - .setFileCreateTime(FileUtil.lastModifiedTime(maxModifyTimeFile)) - .setSource(FileBackupSource.SQL.code); - fileBackupLogMapper.insert(backupLog); - } else { - fileBackupLogMapper.update(new FileBackupLog(), Wrappers.lambdaUpdate() - .eq(FileBackupLog::getSource, FileBackupSource.SQL.code) + for (File file : files) { + if (file.lastModified() > tmp) { + tmp = file.lastModified(); + maxModifyTimeFile = file; + } + } + if (maxModifyTimeFile == null) { + return; + } + String fileName = maxModifyTimeFile.getName(); + List fileBackupLogs = fileBackupLogMapper.selectList(Wrappers.lambdaQuery() .eq(FileBackupLog::getFileName, fileName) - .set(FileBackupLog::getFailInfoDetail, resLog.getFailInfoDetail()) - .set(FileBackupLog::isBackupSuccess, resLog.getBackupSuccess())); - } + .eq(FileBackupLog::getSource, FileBackupSource.SQL.code)); + List successBacks = fileBackupLogs.stream().filter(FileBackupLog::isBackupSuccess).collect(Collectors.toList()); + if (CollUtil.isNotEmpty(successBacks)) { + return; + } + long startTime = System.currentTimeMillis(); + BackupFileResLog resLog = backupHandler.backupSql(maxModifyTimeFile.getAbsolutePath()); + long endTime = System.currentTimeMillis(); + List failBacks = fileBackupLogs.stream().filter(FileBackupLog::isBackupSuccess).collect(Collectors.toList()); + if (CollUtil.isEmpty(failBacks)) { + FileBackupLog backupLog = new FileBackupLog() + .setId(IdWorker.getSnowFlakeIdString()) + .setFileId(Base64.encode(fileName)) + .setFileCode(Base64.encode(fileName)) + .setBackupSuccess(resLog.getBackupSuccess()) + .setCreateTime(new Date()) + .setStartTime(startTime) + .setEndTime(endTime) + .setDuration(endTime - startTime) + .setFailInfoDetail(resLog.getFailInfoDetail()) + .setFileTime(FileUtil.lastModifiedTime(maxModifyTimeFile).getTime()) + .setFileName(fileName) + .setFileCreateTime(FileUtil.lastModifiedTime(maxModifyTimeFile)) + .setSource(FileBackupSource.SQL.code); + fileBackupLogMapper.insert(backupLog); + } else { + fileBackupLogMapper.update(new FileBackupLog(), Wrappers.lambdaUpdate() + .eq(FileBackupLog::getSource, FileBackupSource.SQL.code) + .eq(FileBackupLog::getFileName, fileName) + .set(FileBackupLog::getFailInfoDetail, resLog.getFailInfoDetail()) + .set(FileBackupLog::isBackupSuccess, resLog.getBackupSuccess())); + } + } catch (Exception e) { + log.error("备份SQL文件异常,原因 {}", e.getMessage(), e); + } } }