feat: 增加查询服务端和客户端paramindex的接口

dev
huangfeng 8 months ago
parent c8227f623b
commit 7de8d2b406

@ -1,6 +1,7 @@
package com.xydl.cac.controller; package com.xydl.cac.controller;
import com.xydl.cac.entity.IcdConfigType; import com.xydl.cac.entity.IcdConfigType;
import com.xydl.cac.entity.IcdConfigTypeInst;
import com.xydl.cac.entity.IcdFile; import com.xydl.cac.entity.IcdFile;
import com.xydl.cac.entity.IcdIed; import com.xydl.cac.entity.IcdIed;
import com.xydl.cac.entity.constants.Constants; import com.xydl.cac.entity.constants.Constants;
@ -15,6 +16,7 @@ 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;
import org.apache.commons.io.IOUtils; import org.apache.commons.io.IOUtils;
import org.springframework.data.repository.query.Param;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
@ -143,6 +145,12 @@ public class IcdConfigController extends BasicController {
return Response.success("OK"); return Response.success("OK");
} }
@GetMapping("listParamindex")
@ApiOperation("查询该IED下的paramindex数据")
public Response<List<IcdConfigTypeInst>> listParamindex(@Validated @NotNull(message = "iedName不能为空!") @Param("iedName") String iedName) throws Exception {
List<IcdConfigTypeInst> result = configService.listParamindex(iedName);
return Response.success(result);
}
@PostMapping("startCollect") @PostMapping("startCollect")
@ApiOperation("开始实时采集转发") @ApiOperation("开始实时采集转发")

@ -1,5 +1,6 @@
package com.xydl.cac.controller; package com.xydl.cac.controller;
import com.xydl.cac.entity.IcdConfigTypeInst;
import com.xydl.cac.entity.IcdFile; import com.xydl.cac.entity.IcdFile;
import com.xydl.cac.entity.IcdTransform; import com.xydl.cac.entity.IcdTransform;
import com.xydl.cac.entity.constants.Constants; import com.xydl.cac.entity.constants.Constants;
@ -79,6 +80,13 @@ public class IecServerController extends BasicController {
return Response.success(map); return Response.success(map);
} }
@GetMapping("listParamindex")
@ApiOperation("查询该IED下的paramindex数据")
public Response<List<IcdConfigTypeInst>> listParamindex(@Validated @NotNull(message = "fileId不能为空!") Integer fileId) throws Exception {
List<IcdConfigTypeInst> result = iecServerService.listParamindex(fileId);
return Response.success(result);
}
@PostMapping("addTransform") @PostMapping("addTransform")
@ApiOperation("addTransform") @ApiOperation("addTransform")
public Response<IcdTransform> addTransform(@Validated @RequestBody IcdTransform icdTransform) throws Exception { public Response<IcdTransform> addTransform(@Validated @RequestBody IcdTransform icdTransform) throws Exception {

@ -9,6 +9,8 @@ import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import javax.persistence.*; import javax.persistence.*;
import java.util.ArrayList;
import java.util.List;
@JsonInclude(JsonInclude.Include.NON_NULL) @JsonInclude(JsonInclude.Include.NON_NULL)
@Data @Data
@ -36,4 +38,16 @@ public class IcdConfigTypeInst {
@Transient @Transient
private String paramIndex; private String paramIndex;
@Transient
private List<String> attList;
public void addAtt(String att) {
if (attList == null) {
attList = new ArrayList<>();
}
if (!attList.contains(att)) {
attList.add(att);
}
}
} }

@ -1,9 +1,10 @@
package com.xydl.cac.iec; package com.xydl.cac.iec;
import com.xydl.cac.entity.IcdFile; import com.xydl.cac.entity.*;
import com.xydl.cac.entity.constants.Constants; import com.xydl.cac.entity.constants.Constants;
import com.xydl.cac.exception.BusinessException; import com.xydl.cac.exception.BusinessException;
import com.xydl.cac.repository.IcdFileRepository; import com.xydl.cac.repository.IcdFileRepository;
import com.xydl.cac.util.IcdXmlUtil;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
@ -11,9 +12,7 @@ import org.springframework.util.CollectionUtils;
import javax.annotation.PostConstruct; import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy; import javax.annotation.PreDestroy;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.HashMap; import java.util.*;
import java.util.List;
import java.util.Optional;
@Service @Service
@Slf4j @Slf4j
@ -84,4 +83,32 @@ public class IecServerService {
map.put("fileId", iecServer.fileId); map.put("fileId", iecServer.fileId);
return map; return map;
} }
public List<IcdConfigTypeInst> listParamindex(Integer fileId) throws Exception {
Optional<IcdFile> optional = fileRepository.findById(fileId);
if (!optional.isPresent()) {
throw new BusinessException("未找到该文件");
}
List<IcdConfigTypeInst> result = new ArrayList<>();
IcdFile icdFile = IcdXmlUtil.loadIcdType(optional.get().getXml());
for (IcdConfigType config : icdFile.getConfigList()) {
if (config.getAttMap() != null && config.getInstMap() != null) {
Collection<IcdConfigTypeInst> instList = config.getInstMap().values();
Collection<IcdConfigTypeAtt> attList = config.getAttMap().values();
for (IcdConfigTypeInst inst : instList) {
String param = config.getIedName() + config.getLdeviceInst() + "/" + config.getLnClass()
+ inst.getInst();
inst.setParamIndex(param);
for (IcdConfigTypeAtt att : attList) {
if (att.containInst(inst.getInst())) {
String paramindex = param + "$" + att.getDoName();
inst.addAtt(paramindex);
}
}
}
result.addAll(instList);
}
}
return result;
}
} }

@ -1,6 +1,7 @@
package com.xydl.cac.service; package com.xydl.cac.service;
import com.xydl.cac.entity.IcdConfigType; import com.xydl.cac.entity.IcdConfigType;
import com.xydl.cac.entity.IcdConfigTypeInst;
import com.xydl.cac.entity.IcdFile; import com.xydl.cac.entity.IcdFile;
import com.xydl.cac.entity.IcdIed; import com.xydl.cac.entity.IcdIed;
import com.xydl.cac.model.IcdAttUpdateModel; import com.xydl.cac.model.IcdAttUpdateModel;
@ -32,4 +33,6 @@ public interface IcdFileConfigService {
List<String> compare61850(); List<String> compare61850();
void generateParamindex() throws Exception; void generateParamindex() throws Exception;
List<IcdConfigTypeInst> listParamindex(String iedName);
} }

@ -274,4 +274,27 @@ public class IcdFileConfigServiceImpl implements IcdFileConfigService {
} }
} }
@Override
public List<IcdConfigTypeInst> listParamindex(String iedName) {
List<IcdConfigTypeInst> result = new ArrayList<>();
List<IcdConfigType> typeList = configRepository.findByIedName(iedName);
for (IcdConfigType type : typeList) {
List<IcdConfigTypeInst> instList = instRepository.findByIcdConfigTypeId(type.getId());
List<IcdConfigTypeAtt> attList = attRepository.findByIcdConfigTypeId(type.getId());
for (IcdConfigTypeInst inst : instList) {
String param = type.getIedName() + type.getLdeviceInst() + "/" + type.getLnClass()
+ inst.getInst();
inst.setParamIndex(param);
for (IcdConfigTypeAtt att : attList) {
if (att.containInst(inst.getInst())) {
String paramindex = param + "$" + att.getDoName();
inst.addAtt(paramindex);
}
}
}
result.addAll(instList);
}
return result;
}
} }

Loading…
Cancel
Save