|
@@ -102,7 +102,6 @@ public class OpcDaFrequencyTask extends TimerTask {
|
|
|
public void run() {
|
|
|
Integer id = itemGroup.getId();
|
|
|
Integer dataSourceId = dataSource.getId();
|
|
|
- itemGroupDao.stopItemGroupById(id, ConstantStr.START_UP);
|
|
|
Server server = OpcDaUtil.createServer(dataSource);
|
|
|
Long index = 0L;
|
|
|
AutoReconnectController autoReconnectController = new AutoReconnectController(server);
|
|
@@ -113,6 +112,7 @@ public class OpcDaFrequencyTask extends TimerTask {
|
|
|
@Override
|
|
|
public void stateChanged(AutoReconnectState state) {
|
|
|
if (state.equals(AutoReconnectState.CONNECTED)) {
|
|
|
+ redisUtil.set(ConstantStr.ITEM_GROUP + ConstantStr.CONNECT_STATE + id, true);
|
|
|
if (trueCount != 0) {
|
|
|
messageNoticeDao.addMessageNotice(new MessageNotice(itemGroup.getUserId(),
|
|
|
itemGroup.getGroupName() + DateUtil.dateChangeStrYmdhms(new Date()) + "服务重新连接成功",
|
|
@@ -131,10 +131,18 @@ public class OpcDaFrequencyTask extends TimerTask {
|
|
|
}
|
|
|
if (flage) {
|
|
|
if (flaseCount != 0) {
|
|
|
- messageNoticeDao.addMessageNotice(new MessageNotice(itemGroup.getUserId(),
|
|
|
- itemGroup.getGroupName() + DateUtil.dateChangeStrYmdhms(new Date()) + "服务断开",
|
|
|
- "服务断开,马上进行重新连接",
|
|
|
- ConstantStr.NO_READ));
|
|
|
+ //通过redis控制不要一直添加报警消息
|
|
|
+ Boolean connectFlage = (Boolean) redisUtil.get(ConstantStr.ITEM_GROUP + ConstantStr.CONNECT_STATE + id);
|
|
|
+ if (Blank.isEmpty(connectFlage)) {
|
|
|
+ connectFlage = false;
|
|
|
+ }
|
|
|
+ if (connectFlage) {
|
|
|
+ messageNoticeDao.addMessageNotice(new MessageNotice(itemGroup.getUserId(),
|
|
|
+ itemGroup.getGroupName() + DateUtil.dateChangeStrYmdhms(new Date()) + "服务断开",
|
|
|
+ "服务断开,马上进行重新连接",
|
|
|
+ ConstantStr.NO_READ));
|
|
|
+ redisUtil.set(ConstantStr.ITEM_GROUP + ConstantStr.CONNECT_STATE + id, false);
|
|
|
+ }
|
|
|
//通过传入的数据组id,将同一数据源的所有数据组,都设置为一样的状态
|
|
|
opcAsyncTask.changeSameDataSourceState(id, ConstantStr.EXCEPT_STOP_UP);
|
|
|
// itemGroupDao.stopItemGroupById(id, ConstantStr.EXCEPT_STOP_UP);
|
|
@@ -187,13 +195,13 @@ public class OpcDaFrequencyTask extends TimerTask {
|
|
|
ex.printStackTrace();
|
|
|
}
|
|
|
}
|
|
|
- if (Blank.isNotEmpty(server)) {
|
|
|
- server.dispose();
|
|
|
- }
|
|
|
if (Blank.isNotEmpty(autoReconnectController)) {
|
|
|
autoReconnectController.removeListener(listener);
|
|
|
autoReconnectController.disconnect();
|
|
|
}
|
|
|
+ if (Blank.isNotEmpty(server)) {
|
|
|
+ server.dispose();
|
|
|
+ }
|
|
|
itemGroupDao.stopItemGroupById(itemGroup.getId(), ConstantStr.STOP_IT);
|
|
|
cronTaskRegister.removeCronTask(cronId);
|
|
|
redisUtil.del(ConstantStr.ITEM_GROUP + id);
|
|
@@ -223,6 +231,11 @@ public class OpcDaFrequencyTask extends TimerTask {
|
|
|
opcAsyncTask.packageRawDataList(itemList, dataSourceId, sqlCurrentYmdh);
|
|
|
}
|
|
|
redisUtil.del(ConstantStr.VALUE_BELONG_TIME + id);
|
|
|
+ //重连服务摧毁,必须在server之前,不然server摧毁时,会被监听器执行一次
|
|
|
+ if (Blank.isNotEmpty(autoReconnectController)) {
|
|
|
+ autoReconnectController.removeListener(listener);
|
|
|
+ autoReconnectController.disconnect();
|
|
|
+ }
|
|
|
if (Blank.isNotEmpty(server)) {
|
|
|
try {
|
|
|
server.removeGroup(group, true);
|
|
@@ -232,10 +245,6 @@ public class OpcDaFrequencyTask extends TimerTask {
|
|
|
}
|
|
|
server.dispose();
|
|
|
}
|
|
|
- if (Blank.isNotEmpty(autoReconnectController)) {
|
|
|
- autoReconnectController.removeListener(listener);
|
|
|
- autoReconnectController.disconnect();
|
|
|
- }
|
|
|
itemGroupDao.stopItemGroupById(itemGroup.getId(), ConstantStr.STOP_IT);
|
|
|
cronTaskRegister.removeCronTask(cronId);
|
|
|
redisUtil.del(ConstantStr.ITEM_GROUP + id);
|
|
@@ -249,6 +258,10 @@ public class OpcDaFrequencyTask extends TimerTask {
|
|
|
opcAsyncTask.packageRawDataList(itemList, dataSourceId, sqlCurrentYmdh);
|
|
|
}
|
|
|
redisUtil.del(ConstantStr.VALUE_BELONG_TIME + id);
|
|
|
+ if (Blank.isNotEmpty(autoReconnectController)) {
|
|
|
+ autoReconnectController.removeListener(listener);
|
|
|
+ autoReconnectController.disconnect();
|
|
|
+ }
|
|
|
if (Blank.isNotEmpty(server)) {
|
|
|
try {
|
|
|
server.removeGroup(group, true);
|
|
@@ -258,10 +271,6 @@ public class OpcDaFrequencyTask extends TimerTask {
|
|
|
}
|
|
|
server.dispose();
|
|
|
}
|
|
|
- if (Blank.isNotEmpty(autoReconnectController)) {
|
|
|
- autoReconnectController.removeListener(listener);
|
|
|
- autoReconnectController.disconnect();
|
|
|
- }
|
|
|
timer.cancel();
|
|
|
break;
|
|
|
}
|
|
@@ -354,6 +363,10 @@ public class OpcDaFrequencyTask extends TimerTask {
|
|
|
sqlCurrentYmdh = String.valueOf(redisUtil.get(ConstantStr.VALUE_BELONG_TIME + id));
|
|
|
opcAsyncTask.packageRawDataList(itemList, dataSourceId, sqlCurrentYmdh);
|
|
|
redisUtil.del(ConstantStr.VALUE_BELONG_TIME + id);
|
|
|
+ if (Blank.isNotEmpty(autoReconnectController)) {
|
|
|
+ autoReconnectController.removeListener(listener);
|
|
|
+ autoReconnectController.disconnect();
|
|
|
+ }
|
|
|
if (Blank.isNotEmpty(server)) {
|
|
|
try {
|
|
|
server.removeGroup(group, true);
|
|
@@ -363,10 +376,6 @@ public class OpcDaFrequencyTask extends TimerTask {
|
|
|
}
|
|
|
server.dispose();
|
|
|
}
|
|
|
- if (Blank.isNotEmpty(autoReconnectController)) {
|
|
|
- autoReconnectController.removeListener(listener);
|
|
|
- autoReconnectController.disconnect();
|
|
|
- }
|
|
|
itemGroupDao.stopItemGroupById(itemGroup.getId(), ConstantStr.STOP_IT);
|
|
|
cronTaskRegister.removeCronTask(cronId);
|
|
|
redisUtil.del(ConstantStr.ITEM_GROUP + id);
|