feat: 增加project_topo相关数据平移逻辑
This commit is contained in:
27
src/main/java/com/nis/dao/ProjectTopoDao.java
Normal file
27
src/main/java/com/nis/dao/ProjectTopoDao.java
Normal file
@@ -0,0 +1,27 @@
|
||||
/**
|
||||
|
||||
*
|
||||
|
||||
*
|
||||
|
||||
*/
|
||||
|
||||
package com.nis.dao;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.nis.entity.Dc;
|
||||
import com.nis.entity.Idc;
|
||||
import com.nis.entity.Project;
|
||||
import com.nis.entity.ProjectTopo;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
|
||||
@Mapper
|
||||
@Repository
|
||||
public interface ProjectTopoDao extends BaseMapper<ProjectTopo> {
|
||||
|
||||
}
|
||||
25
src/main/java/com/nis/dao/ProjectTopoIconDao.java
Normal file
25
src/main/java/com/nis/dao/ProjectTopoIconDao.java
Normal file
@@ -0,0 +1,25 @@
|
||||
/**
|
||||
|
||||
*
|
||||
|
||||
*
|
||||
|
||||
*/
|
||||
|
||||
package com.nis.dao;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.nis.entity.Dc;
|
||||
import com.nis.entity.Idc;
|
||||
import com.nis.entity.Project;
|
||||
import com.nis.entity.ProjectTopoIcon;
|
||||
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
|
||||
@Mapper
|
||||
@Repository
|
||||
public interface ProjectTopoIconDao extends BaseMapper<ProjectTopoIcon> {
|
||||
|
||||
}
|
||||
22
src/main/java/com/nis/entity/ProjectTopo.java
Normal file
22
src/main/java/com/nis/entity/ProjectTopo.java
Normal file
@@ -0,0 +1,22 @@
|
||||
package com.nis.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
@Data
|
||||
@TableName("project_topo")
|
||||
public class ProjectTopo {
|
||||
@TableId
|
||||
private Integer id;
|
||||
|
||||
private Integer projectId;
|
||||
|
||||
private Object topo;
|
||||
|
||||
private Date updateAt;
|
||||
|
||||
private Integer updateBy;
|
||||
}
|
||||
24
src/main/java/com/nis/entity/ProjectTopoIcon.java
Normal file
24
src/main/java/com/nis/entity/ProjectTopoIcon.java
Normal file
@@ -0,0 +1,24 @@
|
||||
package com.nis.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
@TableName("project_topo_icon")
|
||||
public class ProjectTopoIcon {
|
||||
@TableId
|
||||
private Integer id;
|
||||
|
||||
private String name;
|
||||
|
||||
private String bytes;
|
||||
|
||||
private String type;
|
||||
|
||||
private String unit;
|
||||
|
||||
private Integer width;
|
||||
|
||||
private Integer height;
|
||||
}
|
||||
@@ -34,6 +34,7 @@ import com.nis.service.AssetModelService;
|
||||
import com.nis.service.ChartService;
|
||||
import com.nis.service.DcService;
|
||||
import com.nis.service.EndpointService;
|
||||
import com.nis.service.ProjectTopoService;
|
||||
import com.nis.service.SysConfigService;
|
||||
import com.nis.service.SysUserService;
|
||||
import com.nis.util.Constant;
|
||||
@@ -86,6 +87,9 @@ public class SqlHandler {
|
||||
@Autowired
|
||||
private SysConfigService sysConfigService;
|
||||
|
||||
@Autowired
|
||||
private ProjectTopoService projectTopoService;
|
||||
|
||||
public void removeData() {
|
||||
String assetPing = "delete from asset_ping";
|
||||
sqlDao.execute(assetPing);
|
||||
@@ -1039,9 +1043,12 @@ public class SqlHandler {
|
||||
|
||||
// 图表相关数据同步
|
||||
chartService.handler();
|
||||
|
||||
|
||||
// 将原来数据库的数据数据还原
|
||||
this.dataRestore();
|
||||
|
||||
// project topo相关图表数据同步
|
||||
projectTopoService.handler();
|
||||
}
|
||||
|
||||
public void dataRestore() {
|
||||
@@ -1078,6 +1085,8 @@ public class SqlHandler {
|
||||
data.setParamValue(oldDataMap.get("scrape_timeout"));
|
||||
}else if(data.getParamKey().equals("timezone")) {
|
||||
data.setParamValue("Asia/Shanghai");
|
||||
}else if(data.getParamKey().endsWith("confagent_path") || data.getParamKey().equals("system_version")){
|
||||
continue;
|
||||
}else {
|
||||
String value = oldDataMap.get(data.getParamKey());
|
||||
if(value!=null) {
|
||||
|
||||
13
src/main/java/com/nis/service/ProjectTopoIconService.java
Normal file
13
src/main/java/com/nis/service/ProjectTopoIconService.java
Normal file
@@ -0,0 +1,13 @@
|
||||
package com.nis.service;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.nis.entity.Dc;
|
||||
import com.nis.entity.Idc;
|
||||
import com.nis.entity.Project;
|
||||
import com.nis.entity.ProjectTopo;
|
||||
import com.nis.entity.ProjectTopoIcon;
|
||||
|
||||
|
||||
public interface ProjectTopoIconService extends IService<ProjectTopoIcon> {
|
||||
|
||||
}
|
||||
13
src/main/java/com/nis/service/ProjectTopoService.java
Normal file
13
src/main/java/com/nis/service/ProjectTopoService.java
Normal file
@@ -0,0 +1,13 @@
|
||||
package com.nis.service;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.nis.entity.Dc;
|
||||
import com.nis.entity.Idc;
|
||||
import com.nis.entity.Project;
|
||||
import com.nis.entity.ProjectTopo;
|
||||
|
||||
|
||||
public interface ProjectTopoService extends IService<ProjectTopo> {
|
||||
|
||||
public void handler();
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
package com.nis.service.impl;
|
||||
|
||||
import cn.hutool.log.Log;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.nis.dao.DcDao;
|
||||
import com.nis.dao.IdcDao;
|
||||
import com.nis.dao.ProjectDao;
|
||||
import com.nis.dao.ProjectTopoIconDao;
|
||||
import com.nis.entity.Dc;
|
||||
import com.nis.entity.Idc;
|
||||
import com.nis.entity.Project;
|
||||
import com.nis.entity.ProjectTopoIcon;
|
||||
import com.nis.service.DcService;
|
||||
import com.nis.service.IdcService;
|
||||
import com.nis.service.ProjectService;
|
||||
import com.nis.service.ProjectTopoIconService;
|
||||
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@Service
|
||||
public class ProjectTopoIconServiceImpl extends ServiceImpl<ProjectTopoIconDao, ProjectTopoIcon> implements ProjectTopoIconService {
|
||||
|
||||
}
|
||||
344
src/main/java/com/nis/service/impl/ProjectTopoServiceImpl.java
Normal file
344
src/main/java/com/nis/service/impl/ProjectTopoServiceImpl.java
Normal file
@@ -0,0 +1,344 @@
|
||||
package com.nis.service.impl;
|
||||
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import cn.hutool.log.Log;
|
||||
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.nis.dao.DcDao;
|
||||
import com.nis.dao.IdcDao;
|
||||
import com.nis.dao.ProjectDao;
|
||||
import com.nis.dao.ProjectTopoDao;
|
||||
import com.nis.entity.Dc;
|
||||
import com.nis.entity.Idc;
|
||||
import com.nis.entity.Module;
|
||||
import com.nis.entity.Project;
|
||||
import com.nis.entity.ProjectTopo;
|
||||
import com.nis.service.DcService;
|
||||
import com.nis.service.IdcService;
|
||||
import com.nis.service.ModuleService;
|
||||
import com.nis.service.ProjectService;
|
||||
import com.nis.service.ProjectTopoService;
|
||||
import com.nis.util.ToolUtil;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@Service
|
||||
public class ProjectTopoServiceImpl extends ServiceImpl<ProjectTopoDao, ProjectTopo> implements ProjectTopoService {
|
||||
|
||||
@Autowired
|
||||
private ProjectService projectService;
|
||||
|
||||
@Autowired
|
||||
private ModuleService moduleService;
|
||||
|
||||
@Override
|
||||
public void handler() {
|
||||
// 处理project_topo中的数据
|
||||
List<ProjectTopo> projectTopos = this.list();
|
||||
for(ProjectTopo projectTopo : projectTopos) {
|
||||
Project project = projectService.getById(projectTopo.getProjectId());
|
||||
Map topoData =new LinkedHashMap();
|
||||
List<Map> pens = new ArrayList<Map>();
|
||||
Map topo = JSONObject.parseObject(projectTopo.getTopo().toString(), Map.class);
|
||||
List<Map> nodes = JSONObject.parseArray(topo.get("nodes").toString(),Map.class);
|
||||
List<Map> lines = JSONObject.parseArray(topo.get("lines").toString(),Map.class);
|
||||
Map moduleAndNode = new HashMap();
|
||||
for(Map node : nodes) {
|
||||
Map result = this.createNodeOrLine(0, node,moduleAndNode);
|
||||
pens.add(result);
|
||||
}
|
||||
for(Map line : lines) {
|
||||
Map result = this.createNodeOrLine(1, line,moduleAndNode);
|
||||
pens.add(result);
|
||||
}
|
||||
topoData.put("pens", pens);
|
||||
topoData.put("lineName", "curve");
|
||||
topoData.put("scale", 1);
|
||||
topoData.put("locked", 0);
|
||||
Map mqttOptions =new HashMap();
|
||||
mqttOptions.put("clientId", "");
|
||||
topoData.put("mqttOptions", mqttOptions);
|
||||
topoData.put("lineWidth", 1);
|
||||
topoData.put("bkColor", "#FFFFFF");
|
||||
topoData.put("gridColor", "#ededed");
|
||||
topoData.put("gridSize", 0);
|
||||
topoData.put("ruleColor", "#4e4e4e");
|
||||
topoData.put("data", new HashMap());
|
||||
topoData.put("name", project.getName());
|
||||
topoData.put("projectId", projectTopo.getProjectId());
|
||||
topoData.put("rule", false);
|
||||
topoData.put("grid", false);
|
||||
projectTopo.setTopo(JSON.toJSONString(topoData));
|
||||
}
|
||||
|
||||
if(ToolUtil.isNotEmpty(projectTopos)) {
|
||||
this.updateBatchById(projectTopos);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public Map createNodeOrLine(Integer type,Map object,Map moduleAndNode) {
|
||||
Module module = null;
|
||||
if(type==0) {
|
||||
Integer moduleId = (Integer) object.get("moduleId");
|
||||
module = moduleService.getById(moduleId);
|
||||
moduleAndNode.put(moduleId, object);
|
||||
}
|
||||
String colorData = null;
|
||||
if(type==1) {
|
||||
Object colorObject = object.get("color");
|
||||
if(colorObject instanceof java.util.Map) {
|
||||
colorData = (String) ((Map)colorObject).get("color");
|
||||
}else {
|
||||
if(ToolUtil.isNotEmpty(colorObject)) {
|
||||
colorData = (String)colorObject;
|
||||
}
|
||||
}
|
||||
if(StrUtil.isBlank(colorData)) {
|
||||
colorData = "#222222";
|
||||
}
|
||||
}
|
||||
|
||||
Map result =new LinkedHashMap();
|
||||
result.put("type", type==0 ? 0:1);
|
||||
Integer x = (Integer)object.get("x");
|
||||
Integer y = (Integer)object.get("y");
|
||||
Map rect =new HashMap();
|
||||
rect.put("x", type==0 ? x : 0);
|
||||
rect.put("y", type==0 ? y : 0);
|
||||
rect.put("width", type==0 ? 100 : 0);
|
||||
rect.put("height", type==0 ? 100 : 0);
|
||||
/*if(type==1) {
|
||||
rect.put("ex", 0);
|
||||
rect.put("ey", 0);
|
||||
}*/
|
||||
Map center = new HashMap();
|
||||
center.put("x", type==0 ? x+50 : 0);
|
||||
center.put("y", type==0 ? y+50 : 0);
|
||||
rect.put("center", center);
|
||||
result.put("rect", rect);
|
||||
|
||||
result.put("lineWidth", 1);
|
||||
result.put("rotate", 0);
|
||||
result.put("offsetRotate", 0);
|
||||
result.put("globalAlpha",1);
|
||||
result.put("dash",0);
|
||||
result.put("strokeStyle",type==0 ? "#222222" : colorData);
|
||||
|
||||
Map font =new HashMap();
|
||||
font.put("color", type==0 ? "#222222" : colorData);
|
||||
font.put("fontSize", 12);
|
||||
font.put("lineHeight", 1.5);
|
||||
font.put("fontStyle", "normal");
|
||||
font.put("fontWeight", "normal");
|
||||
font.put("textAlign", "center");
|
||||
font.put("textBaseline", "middle");
|
||||
if(type==1) {
|
||||
font.put("background","#fff");
|
||||
}
|
||||
result.put("font",font);
|
||||
result.put("animatePos",0);
|
||||
result.put("events",new ArrayList());
|
||||
|
||||
List eventFns =new ArrayList();
|
||||
eventFns.add("link");
|
||||
eventFns.add("doStartAnimate");
|
||||
eventFns.add("doFn");
|
||||
eventFns.add("doWindowFn");
|
||||
eventFns.add("");
|
||||
eventFns.add("doPauseAnimate");
|
||||
eventFns.add("doStopAnimate");
|
||||
result.put("eventFns",eventFns);
|
||||
|
||||
String name = "rectangleImg";
|
||||
if(type==1) {
|
||||
Map smooth = (Map) object.get("smooth");
|
||||
String smoothType = (String) smooth.get("type");
|
||||
if(StrUtil.isNotBlank(smoothType)) {
|
||||
name = "curve";
|
||||
}else {
|
||||
name = "line";
|
||||
}
|
||||
|
||||
}
|
||||
result.put("id", type == 0 ? module.getId() : "");
|
||||
result.put("name", name);
|
||||
result.put("tags",new ArrayList());
|
||||
result.put("lineDashOffset", 0);
|
||||
result.put("textOffsetX", 0);
|
||||
result.put("textOffsetY", 0);
|
||||
result.put("visible", true);
|
||||
if(type==0) {
|
||||
result.put("text", module.getName());
|
||||
}
|
||||
|
||||
Map data = new HashMap();
|
||||
if(type==0) {
|
||||
data.put("imageId", object.get("iconId"));
|
||||
data.put("moduleId", module.getId());
|
||||
data.put("moduleName", module.getName());
|
||||
data.put("show", false);
|
||||
data.put("error", false);
|
||||
data.put("fillStyle", "");
|
||||
data.put("strokeStyle", "#000000");
|
||||
data.put("gradientColor", "#bae7ff");
|
||||
data.put("gradientType", 0);
|
||||
data.put("lineWidth", 0);
|
||||
data.put("iconToolState", true);
|
||||
}else if(type==1) {
|
||||
data.put("strokeStyle", "#222222");
|
||||
data.put("animateColor", "#FA901C");
|
||||
data.put("arrowColor", "#000000");
|
||||
data.put("fromArrowColor", "#000000");
|
||||
data.put("toArrowColor", "#000000");
|
||||
data.put("lineWidth", 1);
|
||||
data.put("moduleName", "");
|
||||
}
|
||||
data.put("animatePlay", false);
|
||||
|
||||
List valueMapping =new ArrayList();
|
||||
Map vm =new HashMap();
|
||||
Map color =new HashMap();
|
||||
color.put("line","#000000");
|
||||
color.put("fill","#ffffff");
|
||||
color.put("text","#000000");
|
||||
vm.put("color", color);
|
||||
vm.put("value", "base");
|
||||
vm.put("animateType", "base");
|
||||
vm.put("level", 0);
|
||||
vm.put("base", true);
|
||||
valueMapping.add(vm);
|
||||
data.put("valueMapping", valueMapping);
|
||||
data.put("valueMappingSort", "asc");
|
||||
data.put("expressArr",new ArrayList());
|
||||
data.put("legends",new ArrayList());
|
||||
data.put("tooltipShow", true);
|
||||
data.put("panelName", "topologyName");
|
||||
data.put("unit", 2);
|
||||
data.put("type", "line");
|
||||
data.put("displayChart", true);
|
||||
data.put("aggregation", "last");
|
||||
data.put("title", type==0 ? module.getName() : "");
|
||||
data.put("url", "");
|
||||
result.put("data", data);
|
||||
|
||||
if(type==0) {
|
||||
result.put("zRotate", 0);
|
||||
result.put("imageRatio", true);
|
||||
result.put("animateDuration", 0);
|
||||
result.put("animateFrames", new ArrayList());
|
||||
result.put("animateFrame", 0);
|
||||
result.put("borderRadius", 0);
|
||||
result.put("icon", "");
|
||||
result.put("image", "");
|
||||
result.put("imageAlign", "center");
|
||||
result.put("bkType", 0);
|
||||
result.put("gradientAngle", 0);
|
||||
result.put("gradientRadius", 0.01);
|
||||
result.put("paddingTop", 5);
|
||||
result.put("paddingBottom", 5);
|
||||
result.put("paddingLeft", 5);
|
||||
result.put("paddingRight", 5);
|
||||
result.put("paddingLeftNum", 5);
|
||||
result.put("paddingRightNum", 5);
|
||||
result.put("paddingTopNum", 5);
|
||||
result.put("paddingBottomNum", 5);
|
||||
result.put("animatePlay", false);
|
||||
result.put("animateReady", null);
|
||||
}else if(type==1) {
|
||||
Integer sourceId = (Integer) object.get("source");
|
||||
Integer targetId = (Integer) object.get("target");
|
||||
Map sourceNode = (Map) moduleAndNode.get(sourceId);
|
||||
Map targetNode = (Map) moduleAndNode.get(targetId);
|
||||
|
||||
Integer sourceX = (Integer) sourceNode.get("x");
|
||||
Integer sourceY = (Integer) sourceNode.get("y");
|
||||
Integer targetX = (Integer) targetNode.get("x");
|
||||
Integer targetY = (Integer) targetNode.get("y");
|
||||
|
||||
List controlPoints =new ArrayList();
|
||||
Map m1 =new HashMap();
|
||||
m1.put("x", sourceX+50);
|
||||
m1.put("y", sourceY+50);
|
||||
m1.put("direction", 0);
|
||||
m1.put("anchorIndex", 0);
|
||||
m1.put("id", sourceId);
|
||||
Map m2 =new HashMap();
|
||||
m2.put("x", targetX+50);
|
||||
m2.put("y", targetY+50);
|
||||
m2.put("direction", 0);
|
||||
m2.put("anchorIndex", 0);
|
||||
m2.put("id", targetId);
|
||||
controlPoints.add(m1);
|
||||
controlPoints.add(m2);
|
||||
|
||||
result.put("controlPoints",controlPoints);
|
||||
result.put("fromArrowSize",5);
|
||||
result.put("toArrowSize",5);
|
||||
result.put("toArrowColor", colorData);
|
||||
result.put("fromArrowColor", colorData);
|
||||
result.put("borderWidth",0);
|
||||
result.put("borderColor","#000000");
|
||||
result.put("animateColor","#FA901C");
|
||||
result.put("animateSpan",1);
|
||||
result.put("isAnimate",false);
|
||||
result.put("animateFromSize",0);
|
||||
result.put("animateToSize",0);
|
||||
result.put("animateDotSize",3);
|
||||
Map from = new HashMap();
|
||||
from.put("x", sourceX+50);
|
||||
from.put("y", sourceY+50);
|
||||
from.put("direction", 0);
|
||||
from.put("anchorIndex", 0);
|
||||
from.put("id", sourceId);
|
||||
from.put("autoAnchor", true);
|
||||
|
||||
result.put("from", from);
|
||||
Map to = new HashMap();
|
||||
to.put("x", targetX+50);
|
||||
to.put("y", targetY+50);
|
||||
to.put("direction", 0);
|
||||
to.put("anchorIndex", 0);
|
||||
to.put("id", targetId);
|
||||
to.put("autoAnchor", true);
|
||||
result.put("to", to);
|
||||
|
||||
//判断是否之前为虚线
|
||||
if(type==1) {
|
||||
Object dash = object.get("dashes");
|
||||
if(!dash.equals(false)) {
|
||||
result.put("dash", 2);
|
||||
}
|
||||
}
|
||||
if(type==1) {
|
||||
//判断arrow 空 from to from to
|
||||
String arrows = (String) object.get("arrows");
|
||||
if(arrows.equals("0")) {
|
||||
result.put("toArrow","");
|
||||
result.put("fromArrow", "");
|
||||
}else if(arrows.equals("to")) {
|
||||
result.put("toArrow","triangleSolid");
|
||||
result.put("fromArrow", "");
|
||||
}else if(arrows.equals("from")) {
|
||||
result.put("toArrow","");
|
||||
result.put("fromArrow", "triangleSolid");
|
||||
}else {
|
||||
result.put("toArrow","triangleSolid");
|
||||
result.put("fromArrow", "triangleSolid");
|
||||
}
|
||||
}
|
||||
result.put("animatePlay",false);
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user