Commit a26ffd3b authored by 单奇雲's avatar 单奇雲

1.修改TOPO查询保存接口,2.新增删除功能

parent 3287f94c
......@@ -29,7 +29,7 @@ public class TopographyNodeDetail extends BusinessEntity{
/**
*
*/
@Column(name = "nodeid", columnDefinition = "varchar(32) COMMENT '节点id'")
@Column(name = "nodeid", columnDefinition = "varchar(36) COMMENT '节点id'")
private String nodeid;
/**
*
......@@ -37,6 +37,9 @@ public class TopographyNodeDetail extends BusinessEntity{
@Column(name = "nodeDetail", columnDefinition = "text COMMENT '详情'")
private String nodeDetail;
@Column(name = "nodekey", columnDefinition = "varchar(32) COMMENT '节点key'")
private String nodekey;
public String getId() {
return id;
}
......@@ -55,4 +58,10 @@ public class TopographyNodeDetail extends BusinessEntity{
public void setNodeDetail(String nodeDetail) {
this.nodeDetail = nodeDetail;
}
public String getNodekey() {
return nodekey;
}
public void setNodekey(String nodekey) {
this.nodekey = nodekey;
}
}
package com.yeejoin.amos.fas.business.controller;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
......@@ -57,14 +60,62 @@ public class TopographyController {
*/
@PostMapping(value = "/updateTopo", produces = "application/json;charset=UTF-8")
@ApiOperation(value = "保存拓扑图", notes = "保存拓扑图")
public CommonResponse savedonghuanNodes(@ApiParam(value = "", required = false) @RequestBody JSONObject topography) {
JSONArray nodes = topography.getJSONArray("nodeData");
public CommonResponse savedonghuanNodes(@ApiParam(value = "", required = false) @RequestBody JSONObject topographyParam) {
String appId = topographyParam.getString("appId");
//节点
JSONArray nodes = topographyParam.getJSONArray("nodeData");
List<TopographyNode> nodeData = JSON.parseArray(JSON.toJSONString(nodes), TopographyNode.class);
HashMap<String, String> convertKeyMap = new HashMap<>();
int curSize = nodeData.stream().filter(e -> Integer.parseInt(e.getKey()) > 0).collect(Collectors.toList()).size();
for(TopographyNode e:nodeData){
if(Integer.valueOf(e.getKey()) < 0) {
curSize = curSize + 1 ;
String newKey = String.format("%05d", curSize);
convertKeyMap.put(e.getKey(), newKey);
e.setKey(newKey);
e.setAppId(appId);
e.setGroup("");
}
};
//线
JSONArray links = topographyParam.getJSONArray("linkData");
List<TopographyLine> lineData = JSON.parseArray(JSON.toJSONString(links), TopographyLine.class);
lineData.forEach(l -> {
if(Integer.parseInt(l.getFrom()) < 0) {
l.setFrom(convertKeyMap.get(l.getFrom()));
}
if(Integer.parseInt(l.getTo()) < 0) {
l.setTo(convertKeyMap.get(l.getTo()));
}
if(l.getAppId() == null) {
l.setAppId(appId);
}
});
nodeService.saveNodes(nodeData);
return CommonResponseUtil.success();
lineService.saveLines(lineData);
//节点详情
JSONObject nodeDetailJson = topographyParam.getJSONObject("nodeDetail");
if(nodeDetailJson != null) {
TopographyNodeDetail nodeDetail = JSON.parseObject(JSON.toJSONString(nodeDetailJson), TopographyNodeDetail.class);
String nodekey = nodeDetail.getNodekey();
if(nodekey != null && Integer.parseInt(nodekey) < 0) {
TopographyNode node = nodeService.queryByKeyAndAppId(convertKeyMap.get(nodekey),appId);
nodeDetail.setNodeid(node.getId());
}
nodeService.saveNodeDetail(nodeDetail);
}
List<TopographyNode> newNodes = nodeService.getNodesByAppId(appId);
List<TopographyLine> newLinks = lineService.getLinksByAppId(appId);
Map<String,Object> results = new HashMap<>();
results.put("nodeData", newNodes);
results.put("linkData", newLinks);
return CommonResponseUtil.success(results);
}
@ApiOperation(value = "根据nodeid查询节点详情", notes = "根据nodeid查询节点详情")
@ApiOperation(value = "根据nodeid查询节点详情", notes = "根据nodeid查询节点详情")
@GetMapping(value = "/detail/{nodeid}")
public CommonResponse getNodeDatilByNodeId(@PathVariable(value = "nodeid") String nodeid) {
TopographyNodeDetail detail = nodeService.getNodeDetailById(nodeid);
......@@ -86,4 +137,15 @@ public class TopographyController {
}
}
@ApiOperation(value = "删除节点/线", notes = "删除节点/线")
@DeleteMapping(value = "/{type}/{id}")
public CommonResponse deleteTopo(@PathVariable("type") String type,@PathVariable("id") String id) {
if("Link".equals(type)) {
lineService.deleteLine(id);
}else {
nodeService.deleteNode(id);
}
return CommonResponseUtil.success();
}
}
......@@ -2,6 +2,7 @@ package com.yeejoin.amos.fas.business.dao.repository;
import java.util.List;
import org.springframework.data.jpa.repository.Query;
import org.springframework.stereotype.Repository;
import com.yeejoin.amos.fas.dao.entity.TopographyLine;
......@@ -11,4 +12,9 @@ public interface ITopographyLineDao extends BaseDao<TopographyLine, Long> {
List<TopographyLine> findByAppId(String appId);
TopographyLine findById(String id);
@Query(value = "select * from f_topography_line " + " where `from` = (?1) or `to` = (?1)",nativeQuery = true)
List<TopographyLine> findByKey(String key);
}
......@@ -15,5 +15,9 @@ public interface ITopographyNodeDao extends BaseDao<TopographyNode, Long> {
@Query(value = "select * from f_topography_node " + " where id in (?1)",nativeQuery = true)
List<TopographyNode> findAllByIds(@Param("ids") List<String> ids);
TopographyNode findById(String id);
TopographyNode findByKeyAndAppId(String nodekey, String appId);
}
......@@ -18,7 +18,19 @@ public class ITopographyLineServiceImpl implements ITopographyLineService{
@Override
public List<TopographyLine> getLinksByAppId(String appId) {
return topographyLineDao.findByAppId(appId);
}
@Override
public void saveLines(List<TopographyLine> lineData) {
topographyLineDao.save(lineData);
}
@Override
public void deleteLine(String id) {
TopographyLine line = topographyLineDao.findById(id);
if(line != null) {
topographyLineDao.delete(line);
}
}
......
......@@ -6,9 +6,11 @@ import java.util.stream.Collectors;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.yeejoin.amos.fas.business.dao.repository.ITopographyLineDao;
import com.yeejoin.amos.fas.business.dao.repository.ITopographyNodeDao;
import com.yeejoin.amos.fas.business.dao.repository.ITopographyNodeDetailDao;
import com.yeejoin.amos.fas.business.service.intfc.ITopographyNodeService;
import com.yeejoin.amos.fas.dao.entity.TopographyLine;
import com.yeejoin.amos.fas.dao.entity.TopographyNode;
import com.yeejoin.amos.fas.dao.entity.TopographyNodeDetail;
......@@ -16,24 +18,28 @@ import com.yeejoin.amos.fas.dao.entity.TopographyNodeDetail;
public class ITopographyNodeServiceImpl implements ITopographyNodeService{
@Autowired
private ITopographyNodeDao topographyNodeDao;
private ITopographyNodeDao nodeDao;
@Autowired
private ITopographyNodeDetailDao nodeDetailDao;
@Autowired
private ITopographyLineDao lineDao;
@Override
public List<TopographyNode> getNodesByAppId(String appId) {
return topographyNodeDao.findByAppId(appId);
return nodeDao.findByAppId(appId);
}
@Override
public void saveNodes(List<TopographyNode> nodeData) {
List<TopographyNode> list = topographyNodeDao.findAllByIds(nodeData.stream().map(n->n.getId()).collect(Collectors.toList()));
for (TopographyNode topographyNode : list) {
TopographyNode node = nodeData.stream().filter(n->topographyNode.getId().equals(n.getId())).findFirst().get();
topographyNode.setLoc(node.getLoc());
}
topographyNodeDao.save(list);
// List<TopographyNode> list = topographyNodeDao.findAllByIds(nodeData.stream().map(n->n.getId()).collect(Collectors.toList()));
// for (TopographyNode topographyNode : list) {
// TopographyNode node = nodeData.stream().filter(n->topographyNode.getId().equals(n.getId())).findFirst().get();
// topographyNode.setLoc(node.getLoc());
// }
// topographyNodeDao.save(list);
nodeDao.save(nodeData);
}
......@@ -53,7 +59,24 @@ public class ITopographyNodeServiceImpl implements ITopographyNodeService{
TopographyNodeDetail save = nodeDetailDao.save(curNodeDetail);
return save;
}
@Override
public void deleteNode(String id) {
TopographyNode node = nodeDao.findById(id);
if(node != null) {
String key = node.getKey();
nodeDao.delete(node);
List<TopographyLine> lines = lineDao.findByKey(key);
if(lines != null && lines.size() > 0) {
lineDao.delete(lines);
}
}
}
@Override
public TopographyNode queryByKeyAndAppId(String nodekey, String appId) {
return nodeDao.findByKeyAndAppId(nodekey,appId);
}
}
......@@ -8,4 +8,8 @@ public interface ITopographyLineService {
public List<TopographyLine> getLinksByAppId(String appId);
public void saveLines(List<TopographyLine> lineData);
public void deleteLine(String id);
}
......@@ -2,6 +2,7 @@ package com.yeejoin.amos.fas.business.service.intfc;
import java.util.List;
import com.yeejoin.amos.fas.dao.entity.TopographyLine;
import com.yeejoin.amos.fas.dao.entity.TopographyNode;
import com.yeejoin.amos.fas.dao.entity.TopographyNodeDetail;
......@@ -15,4 +16,8 @@ public interface ITopographyNodeService {
public TopographyNodeDetail saveNodeDetail(TopographyNodeDetail nodeDetail);
public void deleteNode(String id);
public TopographyNode queryByKeyAndAppId(String nodekey, String appId);
}
......@@ -260,6 +260,7 @@
`update_user` varchar(255) DEFAULT NULL,
`node_detail` text COMMENT '详情',
`nodeid` varchar(32) DEFAULT NULL COMMENT '节点id',
`nodekey` varchar(32) DEFAULT NULL COMMENT '节点key',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
</sql>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment