perf: 增加显示连接状态和重连次数

main
huangfeng 6 months ago
parent 7acb7e4d9c
commit c107970bef

@ -179,7 +179,7 @@ public class IcdConfigController extends BasicController {
realTimeDataService.stopCollect(ied.getId());
ied.setStart(Constants.FALSE);
iedRepository.save(ied);
throw ex;
return Response.fail(ex.getMessage());
}
}

@ -46,4 +46,9 @@ public class IcdIed {
@ApiModelProperty(name = "端口")
@Column(name = "port")
private Integer port;
@Transient
private boolean connected;
@Transient
private int retry;
}

@ -34,6 +34,7 @@ public class IecClient implements ClientEventListener {
private WebSocketServer webSocketServer;
public int retry = 0;
public int seconds = 0;
private boolean inRetry = false;
public Date lastReportTime;
public IecClient() {
@ -184,7 +185,8 @@ public class IecClient implements ClientEventListener {
@Override
public void associationClosed(IOException e) {
if (keep) {
if (keep && !inRetry) {
inRetry = true;
retry = 0;
seconds = 0;
this.disableReporting();
@ -207,6 +209,7 @@ public class IecClient implements ClientEventListener {
}
}
}
inRetry = false;
}
}

@ -83,6 +83,7 @@ public class IecServerService {
@PreDestroy
private void stop() {
StaticVariable.shutdown = 1;
Iterator<Integer> it = StaticVariable.iecServerMap.keySet().iterator();
while (it.hasNext()) {
Integer key = it.next();

@ -60,7 +60,6 @@ public class RealTimeDataService {
} catch (Exception ex) {
String err = "61850订阅异常, ied=" + ied.getName() + ", ip=" + ied.getIp() + ", port=" + ied.getPort();
log.error(err, ex);
iecClient.associationClosed(null);
throw new BusinessException(err);
} finally {
inDoing = false;

@ -31,15 +31,6 @@ public class StaticVariable {
public static List<Zsb> zsb_Cache = null;
public static ConcurrentHashMap<Integer, WarnRule> rule_Cache = new ConcurrentHashMap<>();
public static void wait(int seconds) throws InterruptedException {
for (int i = 0; i < seconds; i++) {
if (shutdown == 1) {
break;
}
Thread.sleep(1000);
}
}
// 更新服务端
public static void updateServerNodeValue(BasicDataAttribute bda) {
Iterator<Integer> it = StaticVariable.iecServerMap.keySet().iterator();

@ -3,7 +3,9 @@ package com.xydl.cac.service.impl;
import com.xydl.cac.entity.*;
import com.xydl.cac.entity.constants.Constants;
import com.xydl.cac.exception.BusinessException;
import com.xydl.cac.iec.IecClient;
import com.xydl.cac.model.IcdAttUpdateModel;
import com.xydl.cac.model.StaticVariable;
import com.xydl.cac.repository.*;
import com.xydl.cac.service.DataService;
import com.xydl.cac.service.IcdFileConfigService;
@ -108,6 +110,13 @@ public class IcdFileConfigServiceImpl implements IcdFileConfigService {
List<IcdIed> iedList = iedRepository.findByIcdFileId(icdFile.getId());
for (IcdIed ied : iedList) {
if (StringUtils.isNotBlank(ied.getIp())) {
ied.setConnected(false);
ied.setRetry(0);
IecClient iecClient = StaticVariable.realTimeClientMap.get(ied.getId());
if (iecClient != null) {
ied.setRetry(iecClient.retry);
ied.setConnected(iecClient.connected);
}
result.add(ied);
}
}

Loading…
Cancel
Save