feat: 增加循环测试ied连接状态功能

main
huangfeng 6 months ago
parent a01bbba2fd
commit 21b6dce980

@ -10,6 +10,7 @@ import com.xydl.cac.iec.RealTimeDataService;
import com.xydl.cac.model.ColumnModel;
import com.xydl.cac.model.IcdAttUpdateModel;
import com.xydl.cac.model.Response;
import com.xydl.cac.model.StaticVariable;
import com.xydl.cac.repository.IcdIedRepository;
import com.xydl.cac.service.DataService;
import com.xydl.cac.service.IcdFileConfigService;
@ -87,6 +88,12 @@ public class IcdConfigController extends BasicController {
return Response.success(result);
}
@GetMapping("testIed")
@ApiOperation("查询IED连接状态")
public Response<List<IcdIed>> testIed() {
return Response.success(StaticVariable.iedTestList);
}
@PostMapping("update")
@ApiOperation("更新ICD类型配置")
public Response<String> update(@RequestBody IcdConfigType item) throws Exception {

@ -1,11 +1,7 @@
package com.xydl.cac.model;
import com.fazecast.jSerialComm.SerialPort;
import com.beanit.iec61850bean.BasicDataAttribute;
import com.xydl.cac.entity.Jg;
import com.xydl.cac.entity.ModevType;
import com.xydl.cac.entity.WarnRule;
import com.xydl.cac.entity.Zsb;
import com.xydl.cac.entity.*;
import com.xydl.cac.iec.IecClient;
import com.xydl.cac.iec.IecServer;
import com.xydl.cac.util.DateUtil;
@ -20,6 +16,7 @@ public class StaticVariable {
public static HashMap<String, String> paramRelationMap = new HashMap<>();
public static HashMap<String, String> doneWarnMap = new HashMap<>();
public static HashMap<Integer, IecClient> realTimeClientMap = new HashMap<>();
public static List<IcdIed> iedTestList = new ArrayList<>();
public static int shutdown = 0;
public static HashMap<String, String> rptFromActiveMap = new HashMap<>();
public static HashMap<String, String> rptToActiveMap = new HashMap<>();
@ -31,16 +28,6 @@ public class StaticVariable {
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();

@ -1,6 +1,8 @@
package com.xydl.cac.task;
import com.xydl.cac.entity.*;
import com.xydl.cac.iec.IecClient;
import com.xydl.cac.model.StaticVariable;
import com.xydl.cac.repository.*;
import com.xydl.cac.service.ModevTypeService;
import lombok.extern.slf4j.Slf4j;
@ -106,4 +108,44 @@ public class Client61850Task {
}
}
@Scheduled(initialDelay = 60 * 1000, fixedDelay = 60 * 1000)
private void testAll() {
List<IcdIed> iedTestList = new ArrayList<>();
List<IcdFile> icdFileList = fileRepository.findAll();
if (!CollectionUtils.isEmpty(icdFileList)) {
for (IcdFile icdFile : icdFileList) {
this.testOneFile(icdFile, iedTestList);
}
}
StaticVariable.iedTestList = iedTestList;
}
private void testOneFile(IcdFile icdFile, List<IcdIed> iedTestList) {
if (shutdown == 1) {
return;
}
List<IcdIed> iedList = iedRepository.findByIcdFileId(icdFile.getId());
if (!CollectionUtils.isEmpty(iedList)) {
for (IcdIed ied : iedList) {
this.testOneIed(icdFile.getXml(), ied);
iedTestList.add(ied);
}
}
}
private void testOneIed(String xml, IcdIed ied) {
if (shutdown == 1) {
return;
}
IecClient iecClient = new IecClient();
try {
iecClient.init(ied, xml);
iecClient.connect();
ied.setConnected(true);
} catch (Exception ex) {
ied.setConnected(false);
} finally {
iecClient.disconnect();
}
}
}

Loading…
Cancel
Save