diff --git a/src/main/java/com/xydl/cac/controller/IcdConfigController.java b/src/main/java/com/xydl/cac/controller/IcdConfigController.java index 6db638c..b2a0fb7 100644 --- a/src/main/java/com/xydl/cac/controller/IcdConfigController.java +++ b/src/main/java/com/xydl/cac/controller/IcdConfigController.java @@ -1,6 +1,7 @@ package com.xydl.cac.controller; import com.xydl.cac.entity.IcdConfigType; +import com.xydl.cac.entity.IcdFile; import com.xydl.cac.exception.BusinessException; import com.xydl.cac.model.ColumnModel; import com.xydl.cac.model.IcdAttUpdateModel; @@ -35,14 +36,22 @@ public class IcdConfigController extends BasicController { @ApiOperation("处理icd文件") public Response upload(@RequestParam("file") MultipartFile file) throws Exception { if (file != null && file.getInputStream() != null) { + String filename = file.getOriginalFilename(); String content = IOUtils.toString(file.getInputStream(), Charset.forName("UTF-8")); - configService.upload(content); + configService.upload(content, filename); return Response.success("OK"); } else { return Response.fail("缺少上传文件"); } } + @GetMapping("listFile") + @ApiOperation("查询icd文件列表") + public Response> listFile() throws Exception { + List result = configService.listFile(); + return Response.success(result); + } + @GetMapping("list") @ApiOperation("查询全部类型列表") public Response> list(String iedName) throws Exception { diff --git a/src/main/java/com/xydl/cac/controller/IecServerController.java b/src/main/java/com/xydl/cac/controller/IecServerController.java index 7ca6914..b4ecb6d 100644 --- a/src/main/java/com/xydl/cac/controller/IecServerController.java +++ b/src/main/java/com/xydl/cac/controller/IecServerController.java @@ -6,11 +6,14 @@ import com.xydl.cac.model.Response; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; +import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; +import javax.validation.constraints.NotNull; import java.util.HashMap; @RestController @@ -24,15 +27,15 @@ public class IecServerController extends BasicController { @Resource RealTimeDataService realTimeDataService; - @GetMapping("start") + @PostMapping("start") @ApiOperation("启动IEC服务端") - public Response start() throws Exception { - iecServerService.startServer(); + public Response start(@Validated @NotNull(message = "fileId不能为空!") Integer fileId) throws Exception { + iecServerService.startServer(fileId); realTimeDataService.start(); return Response.success("OK"); } - @GetMapping("stop") + @PostMapping("stop") @ApiOperation("停止IEC服务端") public Response stop() throws Exception { realTimeDataService.stop(); diff --git a/src/main/java/com/xydl/cac/entity/IcdFile.java b/src/main/java/com/xydl/cac/entity/IcdFile.java index d74bb0a..a0507c1 100644 --- a/src/main/java/com/xydl/cac/entity/IcdFile.java +++ b/src/main/java/com/xydl/cac/entity/IcdFile.java @@ -30,6 +30,10 @@ public class IcdFile { @Column(name = "md5") private String md5; + @ApiModelProperty(name = "filename") + @Column(name = "filename") + private String filename; + @ApiModelProperty(name = "xml") @Column(name = "xml") private String xml; diff --git a/src/main/java/com/xydl/cac/iec/IecServer.java b/src/main/java/com/xydl/cac/iec/IecServer.java index d0d13d3..d663977 100644 --- a/src/main/java/com/xydl/cac/iec/IecServer.java +++ b/src/main/java/com/xydl/cac/iec/IecServer.java @@ -14,6 +14,7 @@ public class IecServer implements ServerEventListener { ServerSap serverSap = null; ServerModel serversServerModel = null; public boolean started = false; + public String filename = null; public void start(String xml, int port) throws Exception { if (!started) { @@ -34,6 +35,7 @@ public class IecServer implements ServerEventListener { log.info("已停止IEC61850服务端."); } started = false; + filename = null; } public void updateBda(BasicDataAttribute bda) { diff --git a/src/main/java/com/xydl/cac/iec/IecServerService.java b/src/main/java/com/xydl/cac/iec/IecServerService.java index 6627f4b..7ec5347 100644 --- a/src/main/java/com/xydl/cac/iec/IecServerService.java +++ b/src/main/java/com/xydl/cac/iec/IecServerService.java @@ -4,12 +4,11 @@ import com.xydl.cac.entity.IcdFile; import com.xydl.cac.repository.IcdFileRepository; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; -import org.springframework.util.CollectionUtils; import javax.annotation.PreDestroy; import javax.annotation.Resource; import java.util.HashMap; -import java.util.List; +import java.util.Optional; @Service @Slf4j @@ -20,12 +19,13 @@ public class IecServerService { IecServer iecServer = new IecServer(); - public void startServer() { - List icdFileList = fileRepository.findAll(); - if (!CollectionUtils.isEmpty(icdFileList)) { - IcdFile icdFile = icdFileList.get(0); + public void startServer(Integer fileId) { + Optional optional = fileRepository.findById(fileId); + if (optional.isPresent()) { + IcdFile icdFile = optional.get(); try { iecServer.start(icdFile.getXml(), 102); + iecServer.filename = icdFile.getFilename(); RealTimeDataService.iecServer = iecServer; } catch (Exception e) { log.error("启动IEC61850服务端异常.", e); @@ -45,6 +45,7 @@ public class IecServerService { HashMap map = new HashMap<>(); map.put("port", 102); map.put("started", iecServer.started); + map.put("filename", iecServer.filename); return map; } } diff --git a/src/main/java/com/xydl/cac/service/IcdFileConfigService.java b/src/main/java/com/xydl/cac/service/IcdFileConfigService.java index 218f127..288dee5 100644 --- a/src/main/java/com/xydl/cac/service/IcdFileConfigService.java +++ b/src/main/java/com/xydl/cac/service/IcdFileConfigService.java @@ -1,13 +1,16 @@ package com.xydl.cac.service; import com.xydl.cac.entity.IcdConfigType; +import com.xydl.cac.entity.IcdFile; import com.xydl.cac.model.IcdAttUpdateModel; import java.util.List; public interface IcdFileConfigService { - void upload(String xml) throws Exception; + void upload(String xml, String filename) throws Exception; + + List listFile(); List iedList(); diff --git a/src/main/java/com/xydl/cac/service/impl/IcdFileConfigServiceImpl.java b/src/main/java/com/xydl/cac/service/impl/IcdFileConfigServiceImpl.java index d21c2b3..daee9e4 100644 --- a/src/main/java/com/xydl/cac/service/impl/IcdFileConfigServiceImpl.java +++ b/src/main/java/com/xydl/cac/service/impl/IcdFileConfigServiceImpl.java @@ -41,7 +41,7 @@ public class IcdFileConfigServiceImpl implements IcdFileConfigService { DataService dataService; @Override - public void upload(String xml) throws Exception { + public void upload(String xml, String filename) throws Exception { String md5 = Md5.getMD5Code(xml); List files = fileRepository.findByMd5(md5); if (!CollectionUtils.isEmpty(files)) { @@ -50,6 +50,7 @@ public class IcdFileConfigServiceImpl implements IcdFileConfigService { IcdFile icdFile = IcdXmlUtil.loadIcdType(xml); icdFile.setMd5(md5); + icdFile.setFilename(filename); fileRepository.save(icdFile); for (IcdIed ied : icdFile.getIedList()) { ied.setIcdFileId(icdFile.getId()); @@ -83,6 +84,15 @@ public class IcdFileConfigServiceImpl implements IcdFileConfigService { } } + @Override + public List listFile() { + List files = fileRepository.findAll(); + for (IcdFile file : files) { + file.setXml(null); + } + return files; + } + private IcdIed findIcdIed(List list, String name) { for (IcdIed ied : list) { if (ied.getName().equalsIgnoreCase(name)) {