|
@@ -0,0 +1,322 @@
|
|
|
+package com.dc.datachange.networkGroup.controller;
|
|
|
+
|
|
|
+import com.dc.datachange.core.entity.platformInfo.InterferPlatform;
|
|
|
+import com.dc.datachange.core.entity.platformInfo.Platform;
|
|
|
+import com.dc.datachange.core.entity.platformInfo.RadarPlatform;
|
|
|
+import com.dc.datachange.core.exchange.DataManager;
|
|
|
+import com.dc.datachange.exception.IllegalTypeException;
|
|
|
+import com.dc.datachange.exception.NameDuplicatedException;
|
|
|
+import com.dc.datachange.exception.NetworkCreateException;
|
|
|
+import com.dc.datachange.exception.PlatUsedException;
|
|
|
+import com.dc.datachange.networkGroup.entity.*;
|
|
|
+import com.dc.datachange.utils.PageUtils;
|
|
|
+import com.dc.datachange.utils.R;
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.web.bind.annotation.*;
|
|
|
+
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.HashSet;
|
|
|
+import java.util.List;
|
|
|
+import java.util.Set;
|
|
|
+import java.util.stream.Collectors;
|
|
|
+
|
|
|
+@RestController
|
|
|
+@Slf4j
|
|
|
+@RequestMapping("/network")
|
|
|
+public class NetworkController {
|
|
|
+ @Autowired
|
|
|
+ private DataManager dataManager;
|
|
|
+
|
|
|
+ @GetMapping("allGroup")
|
|
|
+ public R getAllGroup() {
|
|
|
+ return R.ok().put("data", dataManager.getAllData(NetworkGroup.class));
|
|
|
+ }
|
|
|
+
|
|
|
+ @GetMapping("list")
|
|
|
+ public R getList(@RequestParam(defaultValue = "1") int page,
|
|
|
+ @RequestParam(defaultValue = "10") int limit) {
|
|
|
+
|
|
|
+ // 计算总记录数
|
|
|
+ int totalCount = dataManager.getCount(NetworkGroup.class);
|
|
|
+ // 计算分页数据
|
|
|
+ List<NetworkGroup> paginatedList = dataManager.getList(NetworkGroup.class, page, limit);
|
|
|
+ // 创建 PageUtils 实例
|
|
|
+ PageUtils pageUtils = new PageUtils(paginatedList, totalCount, limit, page);
|
|
|
+
|
|
|
+ return R.ok().put("page", pageUtils);
|
|
|
+ }
|
|
|
+
|
|
|
+ @PostMapping("add")
|
|
|
+ public R addNetworkGroup(@RequestBody RawGroup rawGroup) {
|
|
|
+ try {
|
|
|
+ NetworkGroup group = new NetworkGroup(rawGroup);
|
|
|
+ dataManager.addData(group.getId(), group);
|
|
|
+ return R.ok();
|
|
|
+ } catch (NameDuplicatedException e) {
|
|
|
+ return R.error(e.getMessage());
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @PostMapping("update")
|
|
|
+ public R updateNetworkGroup(@RequestBody NetworkGroup group) {
|
|
|
+ NetworkGroup oldGroup = dataManager.getData(group.getClass(), group.getId());
|
|
|
+ if (oldGroup != null) {
|
|
|
+ try {
|
|
|
+ oldGroup.update(group);
|
|
|
+ return R.ok();
|
|
|
+ } catch (NetworkCreateException e) {
|
|
|
+ return R.error(e.getMessage());
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ return R.error("原有平台不存在");
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @GetMapping("delete")
|
|
|
+ public R deleteNetworkGroup(@RequestParam Integer id) {
|
|
|
+ if (dataManager.deleteData(NetworkGroup.class, id)) {
|
|
|
+ return R.ok();
|
|
|
+ } else {
|
|
|
+ return R.error();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @GetMapping("/listParams")
|
|
|
+ public R getParamsList(@RequestParam(defaultValue = "1") int page,
|
|
|
+ @RequestParam(defaultValue = "10") int limit) {
|
|
|
+ // 计算总记录数
|
|
|
+ int totalCount = dataManager.getCount(NetworkGroup.class);
|
|
|
+ // 计算分页数据
|
|
|
+ List<NetworkParams> paramsList = dataManager.getList(NetworkGroup.class, page, limit).stream()
|
|
|
+ .map(NetworkParams::new).collect(Collectors.toList());
|
|
|
+ // 创建 PageUtils 实例
|
|
|
+ PageUtils pageUtils = new PageUtils(paramsList, totalCount, limit, page);
|
|
|
+
|
|
|
+ return R.ok().put("page", pageUtils);
|
|
|
+ }
|
|
|
+
|
|
|
+ @PostMapping("/updateParam")
|
|
|
+ public R updateNetworkParams(@RequestBody NetworkParams networkParams) {
|
|
|
+ NetworkGroup networkGroup = dataManager.getData(NetworkGroup.class, networkParams.getId());
|
|
|
+ if (networkGroup != null) {
|
|
|
+ String oldParams = networkGroup.getParams();
|
|
|
+ networkGroup.setParams(networkParams.getParams());
|
|
|
+ if (networkParams.getPlatformSet() != null) {
|
|
|
+ try {
|
|
|
+ Set<Platform> collect = networkParams.getPlatformSet().stream()
|
|
|
+ .map(x -> dataManager.getData(networkGroup.getTypeClass(), x))
|
|
|
+ .peek(x ->{
|
|
|
+ if(x.isGrouped() && !networkGroup.inSet(x.getId())){
|
|
|
+ throw new PlatUsedException();
|
|
|
+ }
|
|
|
+ })
|
|
|
+ .collect(Collectors.toSet());
|
|
|
+ if(collect.size()==networkParams.getPlatformSet().size() && !collect.contains(null)) {
|
|
|
+ networkGroup.getPlatformSet().forEach(x->x.grouped(null));
|
|
|
+ networkGroup.setPlatformSet(collect);
|
|
|
+ collect.forEach(x->x.grouped(networkGroup.getId()));
|
|
|
+ return R.ok();
|
|
|
+ }
|
|
|
+ else{
|
|
|
+ networkGroup.setParams(oldParams);
|
|
|
+ return R.error("存在错误类型的平台,修改已取消");
|
|
|
+ }
|
|
|
+ } catch (IllegalTypeException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ return R.error(e.getMessage());
|
|
|
+ } catch (PlatUsedException e){
|
|
|
+ return R.error(e.getMessage());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return R.ok();
|
|
|
+ } else return R.error("目标网络组不存在");
|
|
|
+ }
|
|
|
+
|
|
|
+ @GetMapping("/deleteParam")
|
|
|
+ public R deleteNetworkParams(@RequestParam Integer id){
|
|
|
+ NetworkGroup networkGroup = dataManager.getData(NetworkGroup.class, id);
|
|
|
+ networkGroup.setParams(null);
|
|
|
+ networkGroup.getPlatformSet().forEach(x->x.grouped(null));
|
|
|
+ networkGroup.setPlatformSet(new HashSet<>());
|
|
|
+ return R.ok();
|
|
|
+ }
|
|
|
+
|
|
|
+ //其实这两个方法应该合并为一个,然后在Controller层根据输入的Type判断用哪一个,在Service层进行具体实现
|
|
|
+ //但是没有Service,就懒得多写方法了
|
|
|
+ @GetMapping("/getRadarStations")
|
|
|
+ public R getRadarStations(){
|
|
|
+ return R.ok().put("data",dataManager.getAllData(RadarPlatform.class).stream()
|
|
|
+ .map(x-> new StationVo(x.getId(),x.isGrouped()))
|
|
|
+ .collect(Collectors.toList()));
|
|
|
+ }
|
|
|
+ @GetMapping("/getInterferStations")
|
|
|
+ public R getInterperStations(){
|
|
|
+ return R.ok().put("data",dataManager.getAllData(InterferPlatform.class).stream()
|
|
|
+ .map(x-> new StationVo(x.getId(),x.isGrouped()))
|
|
|
+ .collect(Collectors.toList()));
|
|
|
+ }
|
|
|
+ @GetMapping("/getInterferChartInfo")
|
|
|
+ public R getInterferChartInfo(){
|
|
|
+ List<NodeVo> nodes = dataManager.getInterferPlatforms().stream()
|
|
|
+ .map(x -> new NodeVo(x.getId(), x.getId()))
|
|
|
+ .collect(Collectors.toList());
|
|
|
+
|
|
|
+ List<EdgeVo> edgeList =new ArrayList<>();
|
|
|
+ for(NetworkGroup networkGroup: dataManager.getNetworkGroups()){
|
|
|
+ if(networkGroup.getType().equals("interference")) {
|
|
|
+ getEdgesFromGroup(edgeList, networkGroup);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return R.ok().put("nodes",nodes).put("edges",edgeList);
|
|
|
+ }
|
|
|
+ @GetMapping("/getRadarChartInfo")
|
|
|
+ public R getRadarChartInfo(){
|
|
|
+ List<NodeVo> nodes = dataManager.getRadarPlatforms().stream()
|
|
|
+ .map(x -> new NodeVo(x.getId(), x.getId()))
|
|
|
+ .collect(Collectors.toList());
|
|
|
+
|
|
|
+ List<EdgeVo> edgeList =new ArrayList<>();
|
|
|
+ for(NetworkGroup networkGroup: dataManager.getNetworkGroups()){
|
|
|
+ if(networkGroup.getType().equals("radar")) {
|
|
|
+ getEdgesFromGroup(edgeList, networkGroup);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return R.ok().put("nodes",nodes).put("edges",edgeList);
|
|
|
+ }
|
|
|
+
|
|
|
+ private void getEdgesFromGroup(List<EdgeVo> edgeList, NetworkGroup networkGroup) {
|
|
|
+ List<Platform> list = new ArrayList<>(networkGroup.getPlatformSet());
|
|
|
+ int size = list.size();
|
|
|
+ for(int i=0;i<size-1;i++){
|
|
|
+ for(int j=i+1;j<size;j++){
|
|
|
+ edgeList.add(new EdgeVo(list.get(i).getId(),list.get(j).getId()));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+//
|
|
|
+// @PostMapping("update")
|
|
|
+// public R updateNetworkGroup(@RequestParam Map<String, Object> params){
|
|
|
+// String name = params.get("name").toString();
|
|
|
+// String type = params.get("type").toString();
|
|
|
+// String mainStation = params.get("mainStation").toString();
|
|
|
+// String communication = params.get("communication").toString();
|
|
|
+// // 修改列表中的对象
|
|
|
+// for (NetworkGroup networkGroup: networkGroupList){
|
|
|
+// if(networkGroup.getName().equals(name) && networkGroup.getType().equals(type)){
|
|
|
+// networkGroup.setMainStation(mainStation);
|
|
|
+// networkGroup.setCommunication(communication);
|
|
|
+// //获取station数组,用于配置参数的链路设置,如果更新为enable,就加入list中
|
|
|
+// addStation(type, communication, mainStation, name);
|
|
|
+// }
|
|
|
+// }
|
|
|
+// return R.ok();
|
|
|
+// }
|
|
|
+//
|
|
|
+// @PostMapping("delete")
|
|
|
+// public R deleteNetworkGroup(@RequestBody NetworkGroup networkGroup){
|
|
|
+// networkGroupList.removeIf(group -> group.getId() == networkGroup.getId());
|
|
|
+// idList.removeIf(map -> map.get("value").equals(networkGroup.getId()));
|
|
|
+// radarStationList.removeIf(sourceStation -> sourceStation.get("name").equals(networkGroup.getMainStation()));
|
|
|
+// interferenceStationList.removeIf(targetStation -> targetStation.get("name").equals(networkGroup.getMainStation()));
|
|
|
+// return R.ok();
|
|
|
+// }
|
|
|
+//
|
|
|
+// @GetMapping("paramsList")
|
|
|
+// public R paramsList(@RequestParam(defaultValue = "1") int page,
|
|
|
+// @RequestParam(defaultValue = "10") int limit){
|
|
|
+//
|
|
|
+// System.out.println("networkParamsList" + networkParamsList);
|
|
|
+// // 计算总记录数
|
|
|
+// int totalCount = networkParamsList.size();
|
|
|
+//
|
|
|
+// // 计算分页数据
|
|
|
+// int fromIndex = (page - 1) * limit;
|
|
|
+// int toIndex = Math.min(fromIndex + limit, totalCount);
|
|
|
+// List<NetworkParams> paginatedList = networkParamsList.subList(fromIndex, toIndex);
|
|
|
+//
|
|
|
+// // 创建 PageUtils 实例
|
|
|
+// PageUtils page1 = new PageUtils(paginatedList, totalCount, limit, page);
|
|
|
+//
|
|
|
+// return R.ok().put("page", page1);
|
|
|
+// }
|
|
|
+// @PostMapping("addParam")
|
|
|
+// public R addNetworkParam(@RequestParam Map<String, Object> params){
|
|
|
+// String link = params.get("link").toString();
|
|
|
+// int groupId = Integer.parseInt(params.get("groupId").toString());
|
|
|
+// String parameter = params.get("parameter").toString();
|
|
|
+// String sourceStation = params.get("sourceStation").toString();
|
|
|
+// String targetStation = params.get("targetStation").toString();
|
|
|
+// for (NetworkParams networkParam: networkParamsList){
|
|
|
+// if(networkParam.getLink().equals(link) && networkParam.getGroupId() == groupId){
|
|
|
+// return R.error("链路已存在");
|
|
|
+// }
|
|
|
+// }
|
|
|
+//
|
|
|
+// NetworkParams networkParam = new NetworkParams();
|
|
|
+// networkParam.setGroupId(groupId);
|
|
|
+// networkParam.setLink(link);
|
|
|
+// networkParam.setParameter(parameter);
|
|
|
+// networkParam.setSourceStation(sourceStation);
|
|
|
+// networkParam.setTargetStation(targetStation);
|
|
|
+// networkParamsList.add(networkParam);
|
|
|
+// return R.ok();
|
|
|
+// }
|
|
|
+//
|
|
|
+// @PostMapping("updateParam")
|
|
|
+// public R updateNetworkParam(@RequestParam Map<String, Object> params){
|
|
|
+// String link = params.get("link").toString();
|
|
|
+// int groupId = Integer.parseInt(params.get("groupId").toString());
|
|
|
+// String parameter = params.get("parameter").toString();
|
|
|
+// String sourceStation = params.get("sourceStation").toString();
|
|
|
+// String targetStation = params.get("targetStation").toString();
|
|
|
+// // 修改列表中的对象
|
|
|
+// for (NetworkParams networkParam: networkParamsList){
|
|
|
+// if(networkParam.getLink().equals(link) && networkParam.getGroupId() == groupId){
|
|
|
+// return R.error("链路已存在");
|
|
|
+// }
|
|
|
+// if(networkParam.getGroupId() == groupId){
|
|
|
+// networkParam.setLink(link);
|
|
|
+// networkParam.setParameter(parameter);
|
|
|
+// networkParam.setSourceStation(sourceStation);
|
|
|
+// networkParam.setTargetStation(targetStation);
|
|
|
+// }
|
|
|
+// }
|
|
|
+// return R.ok();
|
|
|
+// }
|
|
|
+//
|
|
|
+// @PostMapping("deleteParam")
|
|
|
+// public R deleteNetworkParam(@RequestBody int id){
|
|
|
+// networkParamsList.removeIf(networkParams -> networkParams.getId() == id);
|
|
|
+// return R.ok();
|
|
|
+// }
|
|
|
+//
|
|
|
+// //添加主站
|
|
|
+// private void addStation(String type, String communication, String mainStation, String groupName) {
|
|
|
+// // 检查 communication 是否为 "enabled"
|
|
|
+// if ("enabled".equals(communication)) {
|
|
|
+// Map<String, Object> stationMap = new HashMap<>();
|
|
|
+// stationMap.put("name", mainStation);
|
|
|
+// stationMap.put("groupName", groupName);
|
|
|
+//
|
|
|
+// // 根据 type 将 stationMap 添加到相应的列表中
|
|
|
+// if ("radar".equals(type)) {
|
|
|
+// // 检查是否已存在于 radarStationList 中
|
|
|
+// if (!isStationExists(radarStationList, mainStation)) {
|
|
|
+// radarStationList.add(stationMap);
|
|
|
+// }
|
|
|
+// } else if ("interference".equals(type)) {
|
|
|
+// // 检查是否已存在于 interferenceStationList 中
|
|
|
+// if (!isStationExists(interferenceStationList, mainStation)) {
|
|
|
+// interferenceStationList.add(stationMap);
|
|
|
+// }
|
|
|
+// }
|
|
|
+// }
|
|
|
+// }
|
|
|
+//
|
|
|
+// // 辅助方法:检查站点是否已存在
|
|
|
+// private boolean isStationExists(List<Map<String, Object>> stationList, String mainStation) {
|
|
|
+// return stationList.stream()
|
|
|
+// .anyMatch(station -> mainStation.equals(station.get("name")));
|
|
|
+// }
|
|
|
+}
|