feat: 增加icdTransform的实时路径数据

dev
huangfeng 8 months ago
parent 372790169d
commit 309760166d

@ -9,6 +9,7 @@ import com.xydl.cac.iec.IecServerService;
import com.xydl.cac.model.Response; import com.xydl.cac.model.Response;
import com.xydl.cac.service.IcdFileConfigService; import com.xydl.cac.service.IcdFileConfigService;
import com.xydl.cac.service.IcdTransformService; import com.xydl.cac.service.IcdTransformService;
import com.xydl.cac.service.impl.IcdTransformServiceImpl;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
@ -115,6 +116,14 @@ public class IecServerController extends BasicController {
@ApiOperation("listTransform") @ApiOperation("listTransform")
public Response<List<IcdTransform>> listTransform() throws Exception { public Response<List<IcdTransform>> listTransform() throws Exception {
List<IcdTransform> result = transformService.listTransform(); List<IcdTransform> result = transformService.listTransform();
for (IcdTransform item : result) {
if (IcdTransformServiceImpl.rptFromActiveMap.containsKey(item.getRptFrom())) {
item.setFromActive(true);
}
if (IcdTransformServiceImpl.rptToActiveMap.containsKey(item.getRptTo())) {
item.setToActive(true);
}
}
return Response.success(result); return Response.success(result);
} }

@ -32,4 +32,9 @@ public class IcdTransform {
@ApiModelProperty(name = "rpt_to") @ApiModelProperty(name = "rpt_to")
@Column(name = "rpt_to") @Column(name = "rpt_to")
private String rptTo; private String rptTo;
@Transient
private boolean fromActive;
@Transient
private boolean toActive;
} }

@ -3,6 +3,7 @@ package com.xydl.cac.iec;
import com.beanit.iec61850bean.*; import com.beanit.iec61850bean.*;
import com.xydl.cac.entity.IcdTransform; import com.xydl.cac.entity.IcdTransform;
import com.xydl.cac.service.IcdTransformService; import com.xydl.cac.service.IcdTransformService;
import com.xydl.cac.service.impl.IcdTransformServiceImpl;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.io.IOUtils; import org.apache.commons.io.IOUtils;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
@ -49,10 +50,13 @@ public class IecServer implements ServerEventListener {
public void updateBda(BasicDataAttribute bda) { public void updateBda(BasicDataAttribute bda) {
String ref = bda.getReference().toString(); String ref = bda.getReference().toString();
List<IcdTransform> list = _transformService.listTransform(); List<IcdTransform> list = _transformService.listTransform();
String rptTo = "";
if (!CollectionUtils.isEmpty(list)) { if (!CollectionUtils.isEmpty(list)) {
for (IcdTransform item : list) { for (IcdTransform item : list) {
if (ref.startsWith(item.getRptFrom())) { if (ref.startsWith(item.getRptFrom())) {
ref = ref.replace(item.getRptFrom(), item.getRptTo()); ref = ref.replace(item.getRptFrom(), item.getRptTo());
rptTo = item.getRptTo();
IcdTransformServiceImpl.rptFromActiveMap.put(item.getRptFrom(), "1");
break; break;
} }
} }
@ -62,6 +66,7 @@ public class IecServer implements ServerEventListener {
node.setValueFrom(bda); node.setValueFrom(bda);
List<BasicDataAttribute> bdas = new ArrayList<>(); List<BasicDataAttribute> bdas = new ArrayList<>();
bdas.add(node); bdas.add(node);
IcdTransformServiceImpl.rptToActiveMap.put(rptTo, "1");
serverSap.setValues(bdas); serverSap.setValues(bdas);
} }
} }

@ -12,6 +12,7 @@ import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.Collections; import java.util.Collections;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Optional; import java.util.Optional;
@ -23,6 +24,9 @@ public class IcdTransformServiceImpl implements IcdTransformService {
@Resource @Resource
IcdTransformRepository transformRepository; IcdTransformRepository transformRepository;
public static HashMap<String, String> rptFromActiveMap = new HashMap<>();
public static HashMap<String, String> rptToActiveMap = new HashMap<>();
@Override @Override
@CacheEvict(cacheNames = {"listTransform"}, allEntries = true) @CacheEvict(cacheNames = {"listTransform"}, allEntries = true)
public IcdTransform addTransform(IcdTransform icdTransform) throws Exception { public IcdTransform addTransform(IcdTransform icdTransform) throws Exception {
@ -33,7 +37,7 @@ public class IcdTransformServiceImpl implements IcdTransformService {
} }
List<IcdTransform> byRptTo = transformRepository.findByRptTo(icdTransform.getRptTo()); List<IcdTransform> byRptTo = transformRepository.findByRptTo(icdTransform.getRptTo());
if (!byRptTo.isEmpty()) { if (!byRptTo.isEmpty()) {
throw new BusinessException("To "+ icdTransform.getRptTo() +" 已经存在!"); throw new BusinessException("To " + icdTransform.getRptTo() + " 已经存在!");
} }
IcdTransform save = transformRepository.save(icdTransform); IcdTransform save = transformRepository.save(icdTransform);
return save; return save;

Loading…
Cancel
Save