Browse Source

Fix 在线实时表定时删除重建

Yue 2 years ago
parent
commit
e06b7c357f

+ 210 - 208
VB_DSM_V2.1/vbdsm-data-upload/vbdsm-acquis-ws/src/main/java/cn/vbdsm/acquis/timer/RebuildTableTimer.java

@@ -1,10 +1,9 @@
 package cn.vbdsm.acquis.timer;
 
-import java.util.Map;
-
-import javax.annotation.Resource;
-import javax.sql.DataSource;
-
+import cn.vbdsm.acquis.dao.*;
+import cn.vbdsm.common.constants.CronExpression;
+import cn.vbdsm.core.plugin.queue.QueuePlugin;
+import cn.vbdsm.core.plugin.queue.model.QueueItem;
 import org.apache.log4j.Logger;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.jdbc.core.JdbcTemplate;
@@ -12,218 +11,221 @@ import org.springframework.scheduling.annotation.Async;
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Component;
 
-import cn.vbdsm.acquis.dao.AnalDateAvgDao;
-import cn.vbdsm.acquis.dao.AnalDateFgpDao;
-import cn.vbdsm.acquis.dao.AnalDateMaxDao;
-import cn.vbdsm.acquis.dao.AnalDateMinDao;
-import cn.vbdsm.acquis.dao.OnlineDataEnergyDao;
-import cn.vbdsm.acquis.dao.OnlineDataHarmonicIDao;
-import cn.vbdsm.acquis.dao.OnlineDataHarmonicUDao;
-import cn.vbdsm.acquis.dao.OnlineDataPowerDao;
-import cn.vbdsm.acquis.dao.OnlineDataQtyDao;
-import cn.vbdsm.common.constants.CronExpression;
-import cn.vbdsm.core.plugin.queue.QueuePlugin;
-import cn.vbdsm.core.plugin.queue.model.QueueItem;
+import javax.annotation.Resource;
+import javax.sql.DataSource;
+import java.util.Map;
 
 @Component
 public class RebuildTableTimer {
 
-	
-	private Logger LOG = Logger.getLogger(this.getClass());
-	private QueuePlugin queuePlugin = new QueuePlugin() {
-		protected void process(QueueItem item) {}
-	};
-	
-	
+
+    private final Logger LOG = Logger.getLogger(this.getClass());
+    private final QueuePlugin queuePlugin = new QueuePlugin() {
+        protected void process(QueueItem item) {
+        }
+    };
+
+
 //	@Autowired private AnalData24hEnergyDao analData24hEnergyDao;
-	
-	@Autowired private AnalDateAvgDao analDateAvgDao;
-	@Autowired private AnalDateFgpDao analDateFgpDao;
-	@Autowired private AnalDateMaxDao analDateMaxDao;
-	@Autowired private AnalDateMinDao analDateMinDao;
-	@Autowired private OnlineDataEnergyDao onlineDataEnergyDao;
-	@Autowired private OnlineDataHarmonicIDao onlineDataHarmonicIDao;
-	@Autowired private OnlineDataHarmonicUDao onlineDataHarmonicUDao;
-	@Autowired private OnlineDataPowerDao onlineDataPowerDao;
-	@Autowired private OnlineDataQtyDao onlineDataQtyDao;
-	
-	
-	private JdbcTemplate jdbc;
+
+    @Autowired
+    private AnalDateAvgDao analDateAvgDao;
+    @Autowired
+    private AnalDateFgpDao analDateFgpDao;
+    @Autowired
+    private AnalDateMaxDao analDateMaxDao;
+    @Autowired
+    private AnalDateMinDao analDateMinDao;
+    @Autowired
+    private OnlineDataEnergyDao onlineDataEnergyDao;
+    @Autowired
+    private OnlineDataHarmonicIDao onlineDataHarmonicIDao;
+    @Autowired
+    private OnlineDataHarmonicUDao onlineDataHarmonicUDao;
+    @Autowired
+    private OnlineDataPowerDao onlineDataPowerDao;
+    @Autowired
+    private OnlineDataQtyDao onlineDataQtyDao;
+
+
+    private JdbcTemplate jdbc;
 //	private DynamicDataSourceEntry dynamicDataSourceEntry;
- 	
-	/**
-	 * 设定数据源
-	 * @param dataSource
-	 */
-	@Resource(name="dynamicDataSource")
-	public void setDataSource(DataSource dataSource){
+
+    /**
+     * 设定数据源
+     *
+     * @param dataSource
+     */
+    @Resource(name = "dynamicDataSource")
+    public void setDataSource(DataSource dataSource) {
 //		dynamicDataSourceEntry = ((DynamicDataSource) dataSource).getDataSourceEntry();
-		jdbc = new JdbcTemplate(dataSource);
-	}
-	
-	
-	/**
-	 * 重建数据库表
-	 * @param tableName
-	 * @return
-	 */
-	private boolean rebuildTable(String tableName){
-		String renameTable = tableName + "_bak";
-		
-		String dropSql = "DROP TABLE IF EXISTS " + renameTable;
-		
-		String renameSql = "RENAME TABLE " + tableName + " TO " + renameTable;
-		
-		String getCreateSql = "SHOW CREATE TABLE " + tableName;
-		
-		//获取重建表结构的执行SQL
-		String rebuildSql = null;
-		try {
-			Map<String,Object> r = jdbc.queryForMap(getCreateSql);
-			rebuildSql = r.get("Create Table").toString();
-		}catch(Exception e){
-			LOG.error("获取表结构信息失败" + e.getStackTrace());
-			return false;
-		}
-		//重置自增长值
-		rebuildSql = rebuildSql.replaceFirst("AUTO_INCREMENT=\\d+ ","");
-		
-		try{
-			//判断重命名后的表存不存在,如果存在则先将其删掉
-			jdbc.update(dropSql);
-			//开始重命名表
-			jdbc.update(renameSql);
-			//然后重建表
-			jdbc.update(rebuildSql.toString());
-		}catch(Exception e){
-			LOG.error("执行失败" + e.getStackTrace());
-			return false;
-		}
-		return true;
-	}
-	
-	
-	/**
-	 * 删除表
-	 * @param tableName
-	 * @return
-	 */
-	private boolean dropTable(String tableName){
-		String renameTable = tableName + "_bak";
-		String dropSql = "DROP TABLE IF EXISTS " + renameTable;
-		try{
-			//删除重命名以后的表
-			jdbc.update(dropSql);
-		}catch(Exception e){
-			return false;
-		}
-		return true;
-	}
-	
-	
-	
-	
-	@Async
-	@Scheduled(cron=CronExpression.TIME_0_HOUR_0_MINUTE_30_SECOND)
-	public void rebuildTables(){
-		
-		//暂停分配任务
-		LOG.info("暂停任务分配...");
-		queuePlugin.pause();
-		
-		
+        jdbc = new JdbcTemplate(dataSource);
+    }
+
+
+    /**
+     * 重建数据库表
+     *
+     * @param tableName
+     * @return
+     */
+    private boolean rebuildTable(String tableName) {
+        String renameTable = tableName + "_bak";
+
+        String dropSql = "DROP TABLE IF EXISTS " + renameTable;
+
+        String renameSql = "RENAME TABLE " + tableName + " TO " + renameTable;
+
+        String getCreateSql = "SHOW CREATE TABLE " + tableName;
+
+        //获取重建表结构的执行SQL
+        String rebuildSql = null;
+        try {
+            Map<String, Object> r = jdbc.queryForMap(getCreateSql);
+            rebuildSql = r.get("Create Table").toString();
+        } catch (Exception e) {
+            LOG.error("获取表结构信息失败" + e.getStackTrace());
+            return false;
+        }
+        rebuildSql = rebuildSql.replaceFirst("PRIMARY (.*) USING BTREE", "PRIMARY $1, $1 USING BTREE");
+        //重置自增长值
+        rebuildSql = rebuildSql.replaceFirst("AUTO_INCREMENT=\\d+ ", "");
+
+        try {
+            //判断重命名后的表存不存在,如果存在则先将其删掉
+            jdbc.update(dropSql);
+            //开始重命名表
+            jdbc.update(renameSql);
+            //然后重建表
+            jdbc.update(rebuildSql);
+        } catch (Exception e) {
+            LOG.error("执行失败" + e.getStackTrace());
+            return false;
+        }
+        return true;
+    }
+
+
+    /**
+     * 删除表
+     *
+     * @param tableName
+     * @return
+     */
+    private boolean dropTable(String tableName) {
+        String renameTable = tableName + "_bak";
+        String dropSql = "DROP TABLE IF EXISTS " + renameTable;
+        try {
+            //删除重命名以后的表
+            jdbc.update(dropSql);
+        } catch (Exception e) {
+            return false;
+        }
+        return true;
+    }
+
+
+    @Async
+    @Scheduled(cron = CronExpression.TIME_0_HOUR_0_MINUTE_30_SECOND)
+    public void rebuildTables() {
+
+        //暂停分配任务
+        LOG.info("暂停任务分配...");
+        queuePlugin.pause();
+
+
 //		String t1 = analData24hEnergyDao.getTableName();
 //		LOG.warn("开始重建" + t1 + "表...");
 //		boolean r1 = rebuildTable(t1);
 //		LOG.warn("重建完成,执行结果:" + r1);
-	
-		String t2 = analDateAvgDao.getTableName();
-		LOG.info("开始重建" + t2 + "表...");
-		boolean r2 = rebuildTable(t2);
-		LOG.info("重建完成,执行结果:" + r2);
-	
-		String t3 = analDateFgpDao.getTableName();
-		LOG.info("开始重建" + t3 + "表...");
-		boolean r3 = rebuildTable(t3);
-		LOG.info("重建完成,执行结果:" + r3);
-		
-		String t4 = analDateMaxDao.getTableName();
-		LOG.info("开始重建" + t4 + "表...");
-		boolean r4 = rebuildTable(t4);
-		LOG.info("重建完成,执行结果:" + r4);
-		
-		String t5 = analDateMinDao.getTableName();
-		LOG.info("开始重建" + t5 + "表...");
-		boolean r5 = rebuildTable(t5);
-		LOG.info("重建完成,执行结果:" + r5);
-		
-		String t6 = onlineDataEnergyDao.getTableName();
-		LOG.info("开始重建" + t6 + "表...");
-		boolean r6 = rebuildTable(t6);
-		LOG.info("重建完成,执行结果:" + r6);
-		
-		String t7 = onlineDataHarmonicIDao.getTableName();
-		LOG.info("开始重建" + t7 + "表...");
-		boolean r7 = rebuildTable(t7);
-		LOG.info("重建完成,执行结果:" + r7);
-		
-		String t8 = onlineDataHarmonicUDao.getTableName();
-		LOG.info("开始重建" + t8 + "表...");
-		boolean r8 = rebuildTable(t8);
-		LOG.info("重建完成,执行结果:" + r8);
-		
-		String t9 = onlineDataPowerDao.getTableName();
-		LOG.info("开始重建" + t9 + "表...");
-		boolean r9 = rebuildTable(t9);
-		LOG.info("重建完成,执行结果:" + r9);
-		
-		String t10 = onlineDataQtyDao.getTableName();
-		LOG.info("开始重建" + t10 + "表...");
-		boolean r10 = rebuildTable(t10);
-		LOG.info("重建完成,执行结果:" + r10);
-			
-		//恢复任务分配
-		LOG.info("恢复任务分配...");
-		queuePlugin.resume();
-		
-		
-		LOG.info("开始删除" + t2 + "表的备份...");
-		r2 = dropTable(t2);
-		LOG.info("删除完成,执行结果:" + r2);
-		
-		LOG.info("开始删除" + t3 + "表的备份...");
-		r3 = dropTable(t3);
-		LOG.info("删除完成,执行结果:" + r3);
-		
-		LOG.info("开始删除" + t4 + "表的备份...");
-		r4 = dropTable(t4);
-		LOG.info("删除完成,执行结果:" + r4);
-		
-		LOG.info("开始删除" + t5 + "表的备份...");
-		r5 = dropTable(t5);
-		LOG.info("删除完成,执行结果:" + r5);
-		
-		LOG.info("开始删除" + t6 + "表的备份...");
-		r6 = dropTable(t6);
-		LOG.info("删除完成,执行结果:" + r6);
-		
-		LOG.info("开始删除" + t7 + "表的备份...");
-		r7 = dropTable(t7);
-		LOG.info("删除完成,执行结果:" + r7);
-		
-		LOG.info("开始删除" + t8 + "表的备份...");
-		r8 = dropTable(t8);
-		LOG.info("删除完成,执行结果:" + r8);
-		
-		LOG.info("开始删除" + t9 + "表的备份...");
-		r9 = dropTable(t9);
-		LOG.info("删除完成,执行结果:" + r9);
-		
-		LOG.info("开始删除" + t10 + "表的备份...");
-		r10 = dropTable(t10);
-		LOG.info("删除完成,执行结果:" + r10);
-		
-		
-	}
-	
+
+        String t2 = analDateAvgDao.getTableName();
+        LOG.info("开始重建" + t2 + "表...");
+        boolean r2 = rebuildTable(t2);
+        LOG.info("重建完成,执行结果:" + r2);
+
+        String t3 = analDateFgpDao.getTableName();
+        LOG.info("开始重建" + t3 + "表...");
+        boolean r3 = rebuildTable(t3);
+        LOG.info("重建完成,执行结果:" + r3);
+
+        String t4 = analDateMaxDao.getTableName();
+        LOG.info("开始重建" + t4 + "表...");
+        boolean r4 = rebuildTable(t4);
+        LOG.info("重建完成,执行结果:" + r4);
+
+        String t5 = analDateMinDao.getTableName();
+        LOG.info("开始重建" + t5 + "表...");
+        boolean r5 = rebuildTable(t5);
+        LOG.info("重建完成,执行结果:" + r5);
+
+        String t6 = onlineDataEnergyDao.getTableName();
+        LOG.info("开始重建" + t6 + "表...");
+        boolean r6 = rebuildTable(t6);
+        LOG.info("重建完成,执行结果:" + r6);
+
+        String t7 = onlineDataHarmonicIDao.getTableName();
+        LOG.info("开始重建" + t7 + "表...");
+        boolean r7 = rebuildTable(t7);
+        LOG.info("重建完成,执行结果:" + r7);
+
+        String t8 = onlineDataHarmonicUDao.getTableName();
+        LOG.info("开始重建" + t8 + "表...");
+        boolean r8 = rebuildTable(t8);
+        LOG.info("重建完成,执行结果:" + r8);
+
+        String t9 = onlineDataPowerDao.getTableName();
+        LOG.info("开始重建" + t9 + "表...");
+        boolean r9 = rebuildTable(t9);
+        LOG.info("重建完成,执行结果:" + r9);
+
+        String t10 = onlineDataQtyDao.getTableName();
+        LOG.info("开始重建" + t10 + "表...");
+        boolean r10 = rebuildTable(t10);
+        LOG.info("重建完成,执行结果:" + r10);
+
+        //恢复任务分配
+        LOG.info("恢复任务分配...");
+        queuePlugin.resume();
+
+
+        LOG.info("开始删除" + t2 + "表的备份...");
+        r2 = dropTable(t2);
+        LOG.info("删除完成,执行结果:" + r2);
+
+        LOG.info("开始删除" + t3 + "表的备份...");
+        r3 = dropTable(t3);
+        LOG.info("删除完成,执行结果:" + r3);
+
+        LOG.info("开始删除" + t4 + "表的备份...");
+        r4 = dropTable(t4);
+        LOG.info("删除完成,执行结果:" + r4);
+
+        LOG.info("开始删除" + t5 + "表的备份...");
+        r5 = dropTable(t5);
+        LOG.info("删除完成,执行结果:" + r5);
+
+        LOG.info("开始删除" + t6 + "表的备份...");
+        r6 = dropTable(t6);
+        LOG.info("删除完成,执行结果:" + r6);
+
+        LOG.info("开始删除" + t7 + "表的备份...");
+        r7 = dropTable(t7);
+        LOG.info("删除完成,执行结果:" + r7);
+
+        LOG.info("开始删除" + t8 + "表的备份...");
+        r8 = dropTable(t8);
+        LOG.info("删除完成,执行结果:" + r8);
+
+        LOG.info("开始删除" + t9 + "表的备份...");
+        r9 = dropTable(t9);
+        LOG.info("删除完成,执行结果:" + r9);
+
+        LOG.info("开始删除" + t10 + "表的备份...");
+        r10 = dropTable(t10);
+        LOG.info("删除完成,执行结果:" + r10);
+
+
+    }
+
 }

+ 2 - 2
VB_DSM_V2.1/vbdsm-data-upload/vbdsm-acquis-ws/src/main/resources/local/schedule.xml

@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<timers> 
+<timers>
     <timer>clearLogsTimer.clearHistroyLog</timer>
-    <timer>rebuildTableTimer.rebuildTables</timer>
+    <!--    <timer>rebuildTableTimer.rebuildTables</timer>-->
 </timers>

+ 2 - 2
VB_DSM_V2.1/vbdsm-data-upload/vbdsm-acquis-ws/src/main/resources/product/schedule.xml

@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<timers> 
+<timers>
     <timer>clearLogsTimer.clearHistroyLog</timer>
-    <timer>rebuildTableTimer.rebuildTables</timer>
+    <!--    <timer>rebuildTableTimer.rebuildTables</timer>-->
 </timers>

+ 5 - 5
VB_DSM_V2.1/vbdsm-data-upload/vbdsm-acquis-ws/src/main/resources/test/schedule.xml

@@ -1,8 +1,8 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<timers> 
-    		
+<timers>
+
     <timer>clearLogsTimer.clearHistroyLog</timer>
-    <timer>rebuildTableTimer.rebuildTables</timer>
-   
-   	
+    <!--    <timer>rebuildTableTimer.rebuildTables</timer>-->
+
+
 </timers>

+ 195 - 195
VB_DSM_V2.1/vbdsm-statistics/vbdsm-analysis/src/main/java/cn/vbdsm/analysis/timer/impl/RebuildTableTimer.java

@@ -1,10 +1,8 @@
 package cn.vbdsm.analysis.timer.impl;
 
-import java.util.Map;
-
-import javax.annotation.Resource;
-import javax.sql.DataSource;
-
+import cn.vbdsm.analysis.dao.*;
+import cn.vbdsm.common.annotation.Comment;
+import cn.vbdsm.common.constants.CronExpression;
 import org.apache.log4j.Logger;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.jdbc.core.JdbcTemplate;
@@ -12,205 +10,207 @@ import org.springframework.scheduling.annotation.Async;
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Component;
 
-import cn.vbdsm.analysis.dao.AnalDateAvgDao;
-import cn.vbdsm.analysis.dao.AnalDateFgpDao;
-import cn.vbdsm.analysis.dao.AnalDateMaxDao;
-import cn.vbdsm.analysis.dao.AnalDateMinDao;
-import cn.vbdsm.analysis.dao.OnlineDataEnergyDao;
-import cn.vbdsm.analysis.dao.OnlineDataHarmonicIDao;
-import cn.vbdsm.analysis.dao.OnlineDataHarmonicUDao;
-import cn.vbdsm.analysis.dao.OnlineDataPowerDao;
-import cn.vbdsm.analysis.dao.OnlineDataQtyDao;
-import cn.vbdsm.common.annotation.Comment;
-import cn.vbdsm.common.constants.CronExpression;
+import javax.annotation.Resource;
+import javax.sql.DataSource;
+import java.util.Map;
 
 
 @Component
 public class RebuildTableTimer {
 
-	private Logger LOG = Logger.getLogger(this.getClass());
-	
-	@Autowired private AnalDateAvgDao analDateAvgDao;
-	@Autowired private AnalDateFgpDao analDateFgpDao;
-	@Autowired private AnalDateMaxDao analDateMaxDao;
-	@Autowired private AnalDateMinDao analDateMinDao;
-	@Autowired private OnlineDataEnergyDao onlineDataEnergyDao;
-	@Autowired private OnlineDataHarmonicIDao onlineDataHarmonicIDao;
-	@Autowired private OnlineDataHarmonicUDao onlineDataHarmonicUDao;
-	@Autowired private OnlineDataPowerDao onlineDataPowerDao;
-	@Autowired private OnlineDataQtyDao onlineDataQtyDao;
-	
-	
-	private JdbcTemplate jdbc;
+    private final Logger LOG = Logger.getLogger(this.getClass());
+
+    @Autowired
+    private AnalDateAvgDao analDateAvgDao;
+    @Autowired
+    private AnalDateFgpDao analDateFgpDao;
+    @Autowired
+    private AnalDateMaxDao analDateMaxDao;
+    @Autowired
+    private AnalDateMinDao analDateMinDao;
+    @Autowired
+    private OnlineDataEnergyDao onlineDataEnergyDao;
+    @Autowired
+    private OnlineDataHarmonicIDao onlineDataHarmonicIDao;
+    @Autowired
+    private OnlineDataHarmonicUDao onlineDataHarmonicUDao;
+    @Autowired
+    private OnlineDataPowerDao onlineDataPowerDao;
+    @Autowired
+    private OnlineDataQtyDao onlineDataQtyDao;
+
+
+    private JdbcTemplate jdbc;
 //	private DynamicDataSourceEntry dynamicDataSourceEntry;
- 	
-	/**
-	 * 设定数据源
-	 * @param dataSource
-	 */
-	@Resource(name="dynamicDataSource")
-	public void setDataSource(DataSource dataSource){
+
+    /**
+     * 设定数据源
+     *
+     * @param dataSource
+     */
+    @Resource(name = "dynamicDataSource")
+    public void setDataSource(DataSource dataSource) {
 //		dynamicDataSourceEntry = ((DynamicDataSource) dataSource).getDataSourceEntry();
-		jdbc = new JdbcTemplate(dataSource);
-	}
-	
-	
-	/**
-	 * 重建数据库表
-	 * @param tableName
-	 * @return
-	 */
-	private boolean rebuildTable(String tableName){
-		String renameTable = tableName + "_bak";
-		
-		String dropSql = "DROP TABLE IF EXISTS " + renameTable;
-		
-		String renameSql = "RENAME TABLE " + tableName + " TO " + renameTable;
-		
-		String getCreateSql = "SHOW CREATE TABLE " + tableName;
-		
-		//获取重建表结构的执行SQL
-		String rebuildSql = null;
-		try {
-			Map<String,Object> r = jdbc.queryForMap(getCreateSql);
-			rebuildSql = r.get("Create Table").toString();
-		}catch(Exception e){
-			LOG.error("获取表结构信息失败" + e.getStackTrace());
-			return false;
-		}
-		//重置自增长值
-		rebuildSql = rebuildSql.replaceFirst("AUTO_INCREMENT=\\d+ ","");
-		
-		try{
-			//判断重命名后的表存不存在,如果存在则先将其删掉
-			jdbc.update(dropSql);
-			//开始重命名表
-			jdbc.update(renameSql);
-			//然后重建表
-			jdbc.update(rebuildSql.toString());
-		}catch(Exception e){
-			LOG.error("执行失败" + e.getStackTrace());
-			return false;
-		}
-		return true;
-	}
-	
-	
-	/**
-	 * 删除表
-	 * @param tableName
-	 * @return
-	 */
-	private boolean dropTable(String tableName){
-		String renameTable = tableName + "_bak";
-		String dropSql = "DROP TABLE IF EXISTS " + renameTable;
-		try{
-			//删除重命名以后的表
-			jdbc.update(dropSql);
-		}catch(Exception e){
-			return false;
-		}
-		return true;
-	}
-	
-	
-	
-	
-	@Async
-	@Scheduled(cron=CronExpression.TIME_0_HOUR_0_MINUTE_30_SECOND)
-	@Comment("清除实时表中的历史数据")
-	public void rebuildTables(){
-		
-		
+        jdbc = new JdbcTemplate(dataSource);
+    }
+
+
+    /**
+     * 重建数据库表
+     *
+     * @param tableName
+     * @return
+     */
+    private boolean rebuildTable(String tableName) {
+        String renameTable = tableName + "_bak";
+
+        String dropSql = "DROP TABLE IF EXISTS " + renameTable;
+
+        String renameSql = "RENAME TABLE " + tableName + " TO " + renameTable;
+
+        String getCreateSql = "SHOW CREATE TABLE " + tableName;
+
+        //获取重建表结构的执行SQL
+        String rebuildSql = null;
+        try {
+            Map<String, Object> r = jdbc.queryForMap(getCreateSql);
+            rebuildSql = r.get("Create Table").toString();
+        } catch (Exception e) {
+            LOG.error("获取表结构信息失败" + e.getStackTrace());
+            return false;
+        }
+        rebuildSql = rebuildSql.replaceFirst("PRIMARY (.*) USING BTREE", "PRIMARY $1, $1 USING BTREE");
+        //重置自增长值
+        rebuildSql = rebuildSql.replaceFirst("AUTO_INCREMENT=\\d+ ", "");
+
+        try {
+            //判断重命名后的表存不存在,如果存在则先将其删掉
+            jdbc.update(dropSql);
+            //开始重命名表
+            jdbc.update(renameSql);
+            //然后重建表
+            jdbc.update(rebuildSql);
+        } catch (Exception e) {
+            LOG.error("执行失败" + e.getStackTrace());
+            return false;
+        }
+        return true;
+    }
+
+
+    /**
+     * 删除表
+     *
+     * @param tableName
+     * @return
+     */
+    private boolean dropTable(String tableName) {
+        String renameTable = tableName + "_bak";
+        String dropSql = "DROP TABLE IF EXISTS " + renameTable;
+        try {
+            //删除重命名以后的表
+            jdbc.update(dropSql);
+        } catch (Exception e) {
+            return false;
+        }
+        return true;
+    }
+
+
+    @Async
+    @Scheduled(cron = CronExpression.TIME_0_HOUR_0_MINUTE_30_SECOND)
+    @Comment("清除实时表中的历史数据")
+    public void rebuildTables() {
+
+
 //		String t1 = analData24hEnergyDao.getTableName();
 //		LOG.warn("开始重建" + t1 + "表...");
 //		boolean r1 = rebuildTable(t1);
 //		LOG.warn("重建完成,执行结果:" + r1);
-	
-		String t2 = analDateAvgDao.getTableName();
-		LOG.info("开始重建" + t2 + "表...");
-		boolean r2 = rebuildTable(t2);
-		LOG.info("重建完成,执行结果:" + r2);
-	
-		String t3 = analDateFgpDao.getTableName();
-		LOG.info("开始重建" + t3 + "表...");
-		boolean r3 = rebuildTable(t3);
-		LOG.info("重建完成,执行结果:" + r3);
-		
-		String t4 = analDateMaxDao.getTableName();
-		LOG.info("开始重建" + t4 + "表...");
-		boolean r4 = rebuildTable(t4);
-		LOG.info("重建完成,执行结果:" + r4);
-		
-		String t5 = analDateMinDao.getTableName();
-		LOG.info("开始重建" + t5 + "表...");
-		boolean r5 = rebuildTable(t5);
-		LOG.info("重建完成,执行结果:" + r5);
-		
-		String t6 = onlineDataEnergyDao.getTableName();
-		LOG.info("开始重建" + t6 + "表...");
-		boolean r6 = rebuildTable(t6);
-		LOG.info("重建完成,执行结果:" + r6);
-		
-		String t7 = onlineDataHarmonicIDao.getTableName();
-		LOG.info("开始重建" + t7 + "表...");
-		boolean r7 = rebuildTable(t7);
-		LOG.info("重建完成,执行结果:" + r7);
-		
-		String t8 = onlineDataHarmonicUDao.getTableName();
-		LOG.info("开始重建" + t8 + "表...");
-		boolean r8 = rebuildTable(t8);
-		LOG.info("重建完成,执行结果:" + r8);
-		
-		String t9 = onlineDataPowerDao.getTableName();
-		LOG.info("开始重建" + t9 + "表...");
-		boolean r9 = rebuildTable(t9);
-		LOG.info("重建完成,执行结果:" + r9);
-		
-		String t10 = onlineDataQtyDao.getTableName();
-		LOG.info("开始重建" + t10 + "表...");
-		boolean r10 = rebuildTable(t10);
-		LOG.info("重建完成,执行结果:" + r10);
-			
-		
-		
-		LOG.info("开始删除" + t2 + "表的备份...");
-		r2 = dropTable(t2);
-		LOG.info("删除完成,执行结果:" + r2);
-		
-		LOG.info("开始删除" + t3 + "表的备份...");
-		r3 = dropTable(t3);
-		LOG.info("删除完成,执行结果:" + r3);
-		
-		LOG.info("开始删除" + t4 + "表的备份...");
-		r4 = dropTable(t4);
-		LOG.info("删除完成,执行结果:" + r4);
-		
-		LOG.info("开始删除" + t5 + "表的备份...");
-		r5 = dropTable(t5);
-		LOG.info("删除完成,执行结果:" + r5);
-		
-		LOG.info("开始删除" + t6 + "表的备份...");
-		r6 = dropTable(t6);
-		LOG.info("删除完成,执行结果:" + r6);
-		
-		LOG.info("开始删除" + t7 + "表的备份...");
-		r7 = dropTable(t7);
-		LOG.info("删除完成,执行结果:" + r7);
-		
-		LOG.info("开始删除" + t8 + "表的备份...");
-		r8 = dropTable(t8);
-		LOG.info("删除完成,执行结果:" + r8);
-		
-		LOG.info("开始删除" + t9 + "表的备份...");
-		r9 = dropTable(t9);
-		LOG.info("删除完成,执行结果:" + r9);
-		
-		LOG.info("开始删除" + t10 + "表的备份...");
-		r10 = dropTable(t10);
-		LOG.info("删除完成,执行结果:" + r10);
-		
-		
-	}
-	
+
+        String t2 = analDateAvgDao.getTableName();
+        LOG.info("开始重建" + t2 + "表...");
+        boolean r2 = rebuildTable(t2);
+        LOG.info("重建完成,执行结果:" + r2);
+
+        String t3 = analDateFgpDao.getTableName();
+        LOG.info("开始重建" + t3 + "表...");
+        boolean r3 = rebuildTable(t3);
+        LOG.info("重建完成,执行结果:" + r3);
+
+        String t4 = analDateMaxDao.getTableName();
+        LOG.info("开始重建" + t4 + "表...");
+        boolean r4 = rebuildTable(t4);
+        LOG.info("重建完成,执行结果:" + r4);
+
+        String t5 = analDateMinDao.getTableName();
+        LOG.info("开始重建" + t5 + "表...");
+        boolean r5 = rebuildTable(t5);
+        LOG.info("重建完成,执行结果:" + r5);
+
+        String t6 = onlineDataEnergyDao.getTableName();
+        LOG.info("开始重建" + t6 + "表...");
+        boolean r6 = rebuildTable(t6);
+        LOG.info("重建完成,执行结果:" + r6);
+
+        String t7 = onlineDataHarmonicIDao.getTableName();
+        LOG.info("开始重建" + t7 + "表...");
+        boolean r7 = rebuildTable(t7);
+        LOG.info("重建完成,执行结果:" + r7);
+
+        String t8 = onlineDataHarmonicUDao.getTableName();
+        LOG.info("开始重建" + t8 + "表...");
+        boolean r8 = rebuildTable(t8);
+        LOG.info("重建完成,执行结果:" + r8);
+
+        String t9 = onlineDataPowerDao.getTableName();
+        LOG.info("开始重建" + t9 + "表...");
+        boolean r9 = rebuildTable(t9);
+        LOG.info("重建完成,执行结果:" + r9);
+
+        String t10 = onlineDataQtyDao.getTableName();
+        LOG.info("开始重建" + t10 + "表...");
+        boolean r10 = rebuildTable(t10);
+        LOG.info("重建完成,执行结果:" + r10);
+
+
+        LOG.info("开始删除" + t2 + "表的备份...");
+        r2 = dropTable(t2);
+        LOG.info("删除完成,执行结果:" + r2);
+
+        LOG.info("开始删除" + t3 + "表的备份...");
+        r3 = dropTable(t3);
+        LOG.info("删除完成,执行结果:" + r3);
+
+        LOG.info("开始删除" + t4 + "表的备份...");
+        r4 = dropTable(t4);
+        LOG.info("删除完成,执行结果:" + r4);
+
+        LOG.info("开始删除" + t5 + "表的备份...");
+        r5 = dropTable(t5);
+        LOG.info("删除完成,执行结果:" + r5);
+
+        LOG.info("开始删除" + t6 + "表的备份...");
+        r6 = dropTable(t6);
+        LOG.info("删除完成,执行结果:" + r6);
+
+        LOG.info("开始删除" + t7 + "表的备份...");
+        r7 = dropTable(t7);
+        LOG.info("删除完成,执行结果:" + r7);
+
+        LOG.info("开始删除" + t8 + "表的备份...");
+        r8 = dropTable(t8);
+        LOG.info("删除完成,执行结果:" + r8);
+
+        LOG.info("开始删除" + t9 + "表的备份...");
+        r9 = dropTable(t9);
+        LOG.info("删除完成,执行结果:" + r9);
+
+        LOG.info("开始删除" + t10 + "表的备份...");
+        r10 = dropTable(t10);
+        LOG.info("删除完成,执行结果:" + r10);
+
+
+    }
+
 }

+ 5 - 5
VB_DSM_V2.1/vbdsm-statistics/vbdsm-analysis/src/main/resources/local/db.properties

@@ -1,25 +1,25 @@
 #sysbase database mysql config
 sysbase.mysql.jdbc.driverClassName=com.mysql.cj.jdbc.Driver
-sysbase.mysql.jdbc.url=jdbc:mysql://47.112.30.247:13306/vbdsm_sysbase?characterEncoding=UTF-8&serverTimezone=UTC&useSSL=false&useSSL=false
+sysbase.mysql.jdbc.url=jdbc:mysql://47.112.30.247:23306/vbdsm_sysbase?characterEncoding=UTF-8&serverTimezone=UTC&useSSL=false&useSSL=false
 sysbase.mysql.jdbc.username=root
 sysbase.mysql.jdbc.password=123456
 #gov database mysql config
 gov.mysql.jdbc.driverClassName=com.mysql.cj.jdbc.Driver
-gov.mysql.jdbc.url=jdbc:mysql://47.112.30.247:13306/vbdsm_powergov?characterEncoding=UTF-8&serverTimezone=UTC&useSSL=false&useSSL=false
+gov.mysql.jdbc.url=jdbc:mysql://47.112.30.247:23306/vbdsm_powergov?characterEncoding=UTF-8&serverTimezone=UTC&useSSL=false&useSSL=false
 gov.mysql.jdbc.username=root
 gov.mysql.jdbc.password=123456
 #curr database mysql config
 curr.mysql.jdbc.driverClassName=com.mysql.cj.jdbc.Driver
-curr.mysql.jdbc.url=jdbc:mysql://47.112.30.247:13306/vbdsm?characterEncoding=UTF-8&serverTimezone=UTC&useSSL=false&useSSL=false
+curr.mysql.jdbc.url=jdbc:mysql://47.112.30.247:23306/vbdsm?characterEncoding=UTF-8&serverTimezone=UTC&useSSL=false&useSSL=false
 curr.mysql.jdbc.username=root
 curr.mysql.jdbc.password=123456
 #business database config
 db2023.mysql.jdbc.driverClassName=com.mysql.cj.jdbc.Driver
-db2023.mysql.jdbc.url=jdbc:mysql://47.112.30.247:13306/vbdsm_2023?characterEncoding=UTF-8&serverTimezone=UTC&useSSL=false&useSSL=false
+db2023.mysql.jdbc.url=jdbc:mysql://47.112.30.247:23306/vbdsm_2023?characterEncoding=UTF-8&serverTimezone=UTC&useSSL=false&useSSL=false
 db2023.mysql.jdbc.username=root
 db2023.mysql.jdbc.password=123456
 db2024.mysql.jdbc.driverClassName=com.mysql.cj.jdbc.Driver
-db2024.mysql.jdbc.url=jdbc:mysql://47.112.30.247:13306/vbdsm_2024?characterEncoding=UTF-8&serverTimezone=UTC&useSSL=false&useSSL=false
+db2024.mysql.jdbc.url=jdbc:mysql://47.112.30.247:23306/vbdsm_2024?characterEncoding=UTF-8&serverTimezone=UTC&useSSL=false&useSSL=false
 db2024.mysql.jdbc.username=root
 db2024.mysql.jdbc.password=123456
 #alibaba druid config

+ 14 - 14
VB_DSM_V2.1/vbdsm-statistics/vbdsm-analysis/src/main/resources/local/schedule.xml

@@ -1,39 +1,39 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<timers> 
-	
+<timers>
+
    	<timer>clearLogsTimer.clearHistroyLog</timer>
    	<timer>clearBibleWaringInfoTimer.clearHistroy</timer>
    	<!-- <timer>energyPriceTimer.energyPrice</timer> -->
-   	
+
    	<timer>fgpTimer.companyFgp</timer>
    	<timer>fgpTimer.companyFgpForLastDate</timer>
    	<timer>fgpTimer.companyFgpFor7DaysAgo</timer>
    	<!-- <timer>fgpTimer.companyFgpForYestDayDate</timer> -->
-   	
+
    	<timer>fgpTimer.monitorFgpForEvery</timer>
    	<timer>fgpTimer.monitorFgpForLastDate</timer>
    	<timer>fgpTimer.monitorFgpFor7DaysAgo</timer>
    	<!-- <timer>fgpTimer.monitorFgpForYestDayDate</timer> -->
-   	
+
    	<timer>monitorLimitTimer.monitorDateTimer</timer>
    	<timer>monitorLimitTimer.monitorLastDateTimer</timer>
    	<timer>monitorLimitTimer.monitorMonthAndYearTimer</timer>
    	<timer>monitorLimitTimer.monitorLastYearTimer</timer>
-   	
+
     <timer>divisionLimitTimer.divisionDateTimer</timer>
    	<timer>divisionLimitTimer.divisionMonthTimer</timer>
-   	
+
    	<timer>powerOnlineTimer.powerTimer</timer>
    	<timer>powerOnlineTimer.powerDayTimer</timer>
-   	
+
    	<timer>shiftsEnergyTimer.today</timer>
    	<timer>shiftsEnergyTimer.yesterAndBefore</timer>
-   	
+
    	<timer>stationEnergyTimer.today</timer>
    	<timer>stationEnergyTimer.yesterAndBefore</timer>
-   	
+
    	<timer>enterpriseStateTimer.EnterpriseStateTimingTask</timer>
-   	
+
    	<timer>powerFactorAlarmTimer.powerFactorAlarm</timer>
    	<timer>voltageMessageAlarmTimer.voltageMessageAlarm</timer>
    	<timer>threePhaseUnbalanceTimer.threePhaseUnbalanceAlarm</timer>
@@ -42,14 +42,14 @@
    	<timer>zeroSequenceCurrentTimer.allCommand</timer>
    	<timer>phaseFaultTimer.allCommand</timer>
    	<timer>basicElectricityChargeTimer.allCommand</timer>
-   	
+
    	<timer>monitorOnlineTimer.updateMonitorOnline</timer>
-   	
+
    	<timer>waterGasHeatStatisticsTimer.integralPoint</timer>
    	<timer>waterGasHeatStatisticsTimer.dayMaximum</timer>
    	<timer>waterGasHeatStatisticsTimer.monthMaximum</timer>
    	<timer>waterGasHeatStatisticsTimer.yearMaximum</timer>
    	<timer>waterGasHeatStatisticsTimer.otherEnergydailyDosage</timer>
-   	
+
    	<timer>overWarnTimer.warnningInfoTimer</timer>
 </timers>