diff --git a/src/main/java/com/xydl/cac/iec/IecServerService.java b/src/main/java/com/xydl/cac/iec/IecServerService.java index 68bdf2c..2cfa9fe 100644 --- a/src/main/java/com/xydl/cac/iec/IecServerService.java +++ b/src/main/java/com/xydl/cac/iec/IecServerService.java @@ -71,6 +71,7 @@ public class IecServerService { @PreDestroy private void stop() { + log.info("关闭IecServer服务."); RealTimeDataService.iecServer = null; iecServer.close(); } diff --git a/src/main/java/com/xydl/cac/iec/RealTimeDataService.java b/src/main/java/com/xydl/cac/iec/RealTimeDataService.java index 61c157f..84b5a1f 100644 --- a/src/main/java/com/xydl/cac/iec/RealTimeDataService.java +++ b/src/main/java/com/xydl/cac/iec/RealTimeDataService.java @@ -83,11 +83,13 @@ public class RealTimeDataService { IcdIed ied = optional.get(); ied.setStart(Constants.FALSE); iedRepository.save(ied); + log.info("61850停止订阅, ied=" + ied.getName() + ", ip=" + ied.getIp()); } } @PreDestroy private void stop() { + log.info("关闭61850订阅服务."); Iterator it = clientMap.keySet().iterator(); while (it.hasNext()) { Integer key = it.next(); diff --git a/src/main/java/com/xydl/cac/task/AmpliDownloadTask.java b/src/main/java/com/xydl/cac/task/AmpliDownloadTask.java index 6be6785..64c4e09 100644 --- a/src/main/java/com/xydl/cac/task/AmpliDownloadTask.java +++ b/src/main/java/com/xydl/cac/task/AmpliDownloadTask.java @@ -15,6 +15,7 @@ import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; +import javax.annotation.PreDestroy; import javax.annotation.Resource; import java.io.File; import java.util.Date; @@ -39,6 +40,13 @@ public class AmpliDownloadTask { @Resource WebSocketServer webSocketServer; + int shutdown = 0; + + @PreDestroy + private void preDestroy() { + shutdown = 1; + } + @Scheduled(cron = "0 10 * * * ?") public void downloadAll() { List configList = configService.listAll(); @@ -60,6 +68,9 @@ public class AmpliDownloadTask { // 下载一个远端服务器 private void downloadServer(RemoteConfig config) throws Exception { + if (shutdown == 1) { + return; + } if (config.getActive() == null || config.getActive().intValue() == Constants.FALSE) { return; } @@ -86,6 +97,9 @@ public class AmpliDownloadTask { } private void downloadPath(String remotePath, RemoteConfig config, SFTPTool sftpTool) throws Exception { + if (shutdown == 1) { + return; + } String str = "abcd" + remotePath.replaceAll("/", "").replaceAll("\\\\", ""); str = str.substring(str.length() - 4); String localPath = folder + "/" + config.getIp() + "/" + str; @@ -100,6 +114,9 @@ public class AmpliDownloadTask { private void downloadFile(String remotePath, String filename, String localPath, RemoteConfig config, SFTPTool sftpTool) throws Exception { + if (shutdown == 1) { + return; + } if (StringUtils.isBlank(config.getSuffix()) || filename.toLowerCase().endsWith(config.getSuffix().toLowerCase())) { RemoteDownload item = new RemoteDownload(); item.setConfigId(config.getId()); diff --git a/src/main/java/com/xydl/cac/task/Client61850Task.java b/src/main/java/com/xydl/cac/task/Client61850Task.java index 9e5f71d..408f31d 100644 --- a/src/main/java/com/xydl/cac/task/Client61850Task.java +++ b/src/main/java/com/xydl/cac/task/Client61850Task.java @@ -9,6 +9,7 @@ import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; +import javax.annotation.PreDestroy; import javax.annotation.Resource; import java.util.ArrayList; import java.util.Calendar; @@ -33,6 +34,13 @@ public class Client61850Task { @Resource NSensorRepository sensorRepository; + int shutdown = 0; + + @PreDestroy + private void preDestroy() { + shutdown = 1; + } + @Scheduled(cron = "0 * * * * ?") public void collectAll() { if (!enable) { @@ -84,6 +92,9 @@ public class Client61850Task { } private void collectIcdFile(IcdFile icdFile, List rptList) { + if (shutdown == 1) { + return; + } List iedList = iedRepository.findByIcdFileId(icdFile.getId()); if (!CollectionUtils.isEmpty(iedList)) { for (IcdIed ied : iedList) { diff --git a/src/main/java/com/xydl/cac/task/I2syncTask.java b/src/main/java/com/xydl/cac/task/I2syncTask.java index d717728..9e9617b 100644 --- a/src/main/java/com/xydl/cac/task/I2syncTask.java +++ b/src/main/java/com/xydl/cac/task/I2syncTask.java @@ -15,6 +15,7 @@ import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; +import javax.annotation.PreDestroy; import javax.annotation.Resource; import java.util.ArrayList; import java.util.List; @@ -38,6 +39,13 @@ public class I2syncTask { @Resource WebSocketServer webSocketServer; + int shutdown = 0; + + @PreDestroy + private void preDestroy() { + shutdown = 1; + } + @Scheduled(initialDelay = 60 * 1000, fixedDelay = 30 * 60 * 1000) public void syncAll() { List configList = i2syncService.listConfig(); @@ -55,7 +63,7 @@ public class I2syncTask { } catch (Exception e) { log.error("I2syncTask.syncAll error.", e); String str = "i2同步导出数据异常: " + e.getMessage(); - webSocketServer.sendMessage(str , null); + webSocketServer.sendMessage(str, null); dingTalkPushUtil.pushText(str); } } @@ -63,7 +71,10 @@ public class I2syncTask { // 同步一个类型 private void syncOneConfig(I2syncConfig config) throws Exception { - log.info("I2syncTask.syncOneConfig " + config.getTypeName()); + if (shutdown == 1) { + return; + } + log.info("I2syncTask 同步一个类型 " + config.getTypeName()); List fieldList = i2syncService.listFieldConfig(config.getTableName()); if (CollectionUtils.isEmpty(fieldList)) { log.info("该类型未配置同步字段."); @@ -89,6 +100,9 @@ public class I2syncTask { // 同步一个装置 private void syncOneSensor(NSensor sensor, I2syncConfig config, List fieldList, List points) throws Exception { + if (shutdown == 1) { + return; + } I2syncRecord record; List recordList = recordRepository.findByEqmid(sensor.getDevId()); if (CollectionUtils.isEmpty(recordList)) { diff --git a/src/main/java/com/xydl/cac/task/RuleCheckTask.java b/src/main/java/com/xydl/cac/task/RuleCheckTask.java index 2afd2dd..f8c80d6 100644 --- a/src/main/java/com/xydl/cac/task/RuleCheckTask.java +++ b/src/main/java/com/xydl/cac/task/RuleCheckTask.java @@ -15,6 +15,7 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Service; +import javax.annotation.PreDestroy; import javax.annotation.Resource; import java.util.*; @@ -32,6 +33,13 @@ public class RuleCheckTask { @Resource WebSocketServer webSocketServer; + int shutdown = 0; + + @PreDestroy + private void preDestroy() { + shutdown = 1; + } + @Scheduled(initialDelay = 60 * 1000, fixedDelay = 3 * 60 * 1000) private void checkAll() { try { @@ -49,6 +57,9 @@ public class RuleCheckTask { } private void ruleCheck(WarnRule rule) { + if (shutdown == 1) { + return; + } try { NSensor sensor = rule.getNSensor(); ModevTypePoint typePoint = rule.getTypePoint(); @@ -68,6 +79,9 @@ public class RuleCheckTask { } private void sendWarning(WarnRule rule, TriggerModel model) throws Exception { + if (shutdown == 1) { + return; + } NSensor sensor = rule.getNSensor(); ModevTypePoint typePoint = rule.getTypePoint(); Warning warning = Warning.builder() @@ -96,7 +110,7 @@ public class RuleCheckTask { str = str + ", 最后采集时间:" + DateUtil.format(model.getLastDTime()); } log.warn("触发规则告警: " + str); - webSocketServer.sendMessage(str , warning.getId()); + webSocketServer.sendMessage(str, warning.getId()); dingTalkPushUtil.pushText(str); } diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml index 97478c5..4146bf8 100644 --- a/src/main/resources/application-dev.yml +++ b/src/main/resources/application-dev.yml @@ -2,6 +2,7 @@ server: port: 8099 servlet: context-path: / + shutdown: graceful spring: jackson: diff --git a/src/main/resources/application-prod.yml b/src/main/resources/application-prod.yml index c2b7fdf..9484958 100644 --- a/src/main/resources/application-prod.yml +++ b/src/main/resources/application-prod.yml @@ -2,6 +2,7 @@ server: port: 8099 servlet: context-path: / + shutdown: graceful spring: jackson: