From 5fea45398f0fa88fef4008e6ec9443eef3d515d2 Mon Sep 17 00:00:00 2001
From: 杜洪波 <1074825718@qq.com>
Date: 星期四, 19 六月 2025 13:51:28 +0800
Subject: [PATCH] 系统备份(日志版,读取最后次成功的日志时间,进行增量备份)

---
 src/main/java/com/product/system/backup/service/SystemBackupService.java |   55 +++++++++++++++++++++++++++++++++++++++++++------------
 1 files changed, 43 insertions(+), 12 deletions(-)

diff --git a/src/main/java/com/product/system/backup/service/SystemBackupService.java b/src/main/java/com/product/system/backup/service/SystemBackupService.java
index c307f31..b9cb749 100644
--- a/src/main/java/com/product/system/backup/service/SystemBackupService.java
+++ b/src/main/java/com/product/system/backup/service/SystemBackupService.java
@@ -71,22 +71,15 @@
 		// 鑾峰彇绯荤粺鏃堕棿
 		Date finalTime = new Date();
 		Date startTime = null;
-		// 鑾峰彇绯荤粺澶囦唤鍛ㄦ湡(鍒嗛挓)
-		int backupCycle = Integer.valueOf(Global.getSystemConfig("SYSTEM_BACK_CYCLE", "1440"));
 		// 鑾峰彇绯荤粺鏈�澶у浠芥椂闂�
 		StringBuilder sbSql = new StringBuilder();
-		sbSql.append("SELECT TIMESTAMPDIFF(MINUTE, end_time, ?) AS diff_minutes,end_time \n");
+		sbSql.append("SELECT end_time \n");
 		sbSql.append("FROM product_sys_backup_log \n");
 		sbSql.append("WHERE backup_status = 1 \n");
 		sbSql.append("ORDER BY end_time DESC \n");
 		sbSql.append("LIMIT 1 \n");
-		FieldSetEntity fseMaxLogTime = baseDao.getFieldSetEntityBySQL(sbSql.toString(), new Object[] {standardTimeFormat.format(finalTime)}, false);
-		if(fseMaxLogTime != null && !StringUtils.isEmpty(fseMaxLogTime.getString("diff_minutes"))) {
-			Integer diffMinutes = fseMaxLogTime.getInteger("diff_minutes");
-			if (diffMinutes < backupCycle) {
-				// 灏忎簬澶囦唤鍛ㄦ湡锛屼笉澶囦唤
-				return ;
-			}
+		FieldSetEntity fseMaxLogTime = baseDao.getFieldSetEntityBySQL(sbSql.toString(), new Object[] {}, false);
+		if(fseMaxLogTime != null && !StringUtils.isEmpty(fseMaxLogTime.getString("end_time"))) {
 			startTime = fseMaxLogTime.getDate("end_time");
 		}
 		// 鍒濆澶囦唤鏃ュ織鏁版嵁
@@ -104,6 +97,43 @@
 		// 淇濆瓨鏃ュ織
 		baseDao.saveFieldSetEntity(fseBackLog);
 	}
+//	public void systemBackupInit() {
+//		// 鑾峰彇绯荤粺鏃堕棿
+//		Date finalTime = new Date();
+//		Date startTime = null;
+//		// 鑾峰彇绯荤粺澶囦唤鍛ㄦ湡(鍒嗛挓)
+//		int backupCycle = Integer.valueOf(Global.getSystemConfig("SYSTEM_BACK_CYCLE", "1440"));
+//		// 鑾峰彇绯荤粺鏈�澶у浠芥椂闂�
+//		StringBuilder sbSql = new StringBuilder();
+//		sbSql.append("SELECT TIMESTAMPDIFF(MINUTE, end_time, ?) AS diff_minutes,end_time \n");
+//		sbSql.append("FROM product_sys_backup_log \n");
+//		sbSql.append("WHERE backup_status = 1 \n");
+//		sbSql.append("ORDER BY end_time DESC \n");
+//		sbSql.append("LIMIT 1 \n");
+//		FieldSetEntity fseMaxLogTime = baseDao.getFieldSetEntityBySQL(sbSql.toString(), new Object[] {standardTimeFormat.format(finalTime)}, false);
+//		if(fseMaxLogTime != null && !StringUtils.isEmpty(fseMaxLogTime.getString("diff_minutes"))) {
+//			Integer diffMinutes = fseMaxLogTime.getInteger("diff_minutes");
+//			if (diffMinutes < backupCycle) {
+//				// 灏忎簬澶囦唤鍛ㄦ湡锛屼笉澶囦唤
+//				return ;
+//			}
+//			startTime = fseMaxLogTime.getDate("end_time");
+//		}
+//		// 鍒濆澶囦唤鏃ュ織鏁版嵁
+//		FieldSetEntity fseBackLog = new FieldSetEntity("product_sys_backup_log");
+//		fseBackLog.setValue("start_time", startTime);
+//		fseBackLog.setValue("end_time", finalTime);
+//		
+//		// 鎵ц澶囦唤
+//		boolean flag = backupProcess(startTime, finalTime);
+//		if (flag) {
+//			fseBackLog.setValue("backup_status", 1);
+//		} else {
+//			fseBackLog.setValue("backup_status", 0);
+//		}
+//		// 淇濆瓨鏃ュ織
+//		baseDao.saveFieldSetEntity(fseBackLog);
+//	}
 	
 
 	/**
@@ -274,12 +304,13 @@
             } else {
                 log.writeInfo("銆愬浠芥暟鎹簱銆戞暟鎹簱澶囦唤澶辫触锛岄��鍑虹爜: " + exitCode, BackupLogger.ERROR_TYPE);
             }
+            return true;
         } catch (Exception e) {
             e.printStackTrace();
             log.writeInfo("銆愬浠芥暟鎹簱銆戞暟鎹簱澶囦唤澶辫触锛�" + e.getMessage(), BackupLogger.ERROR_TYPE);
+            backupFile.delete();
             return false;
-        }
-        return true;
+		}
 	}
 
 	/**

--
Gitblit v1.9.2