feat: 增加project_topo相关数据平移逻辑

This commit is contained in:
tanghao
2021-05-19 09:32:10 +08:00
parent 20b93e6e1e
commit 3b15de686c
9 changed files with 501 additions and 1 deletions

View 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> {
}

View 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> {
}

View 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;
}

View 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;
}

View File

@@ -34,6 +34,7 @@ import com.nis.service.AssetModelService;
import com.nis.service.ChartService; import com.nis.service.ChartService;
import com.nis.service.DcService; import com.nis.service.DcService;
import com.nis.service.EndpointService; import com.nis.service.EndpointService;
import com.nis.service.ProjectTopoService;
import com.nis.service.SysConfigService; import com.nis.service.SysConfigService;
import com.nis.service.SysUserService; import com.nis.service.SysUserService;
import com.nis.util.Constant; import com.nis.util.Constant;
@@ -86,6 +87,9 @@ public class SqlHandler {
@Autowired @Autowired
private SysConfigService sysConfigService; private SysConfigService sysConfigService;
@Autowired
private ProjectTopoService projectTopoService;
public void removeData() { public void removeData() {
String assetPing = "delete from asset_ping"; String assetPing = "delete from asset_ping";
sqlDao.execute(assetPing); sqlDao.execute(assetPing);
@@ -1039,9 +1043,12 @@ public class SqlHandler {
// 图表相关数据同步 // 图表相关数据同步
chartService.handler(); chartService.handler();
// 将原来数据库的数据数据还原 // 将原来数据库的数据数据还原
this.dataRestore(); this.dataRestore();
// project topo相关图表数据同步
projectTopoService.handler();
} }
public void dataRestore() { public void dataRestore() {
@@ -1078,6 +1085,8 @@ public class SqlHandler {
data.setParamValue(oldDataMap.get("scrape_timeout")); data.setParamValue(oldDataMap.get("scrape_timeout"));
}else if(data.getParamKey().equals("timezone")) { }else if(data.getParamKey().equals("timezone")) {
data.setParamValue("Asia/Shanghai"); data.setParamValue("Asia/Shanghai");
}else if(data.getParamKey().endsWith("confagent_path") || data.getParamKey().equals("system_version")){
continue;
}else { }else {
String value = oldDataMap.get(data.getParamKey()); String value = oldDataMap.get(data.getParamKey());
if(value!=null) { if(value!=null) {

View 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> {
}

View 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();
}

View File

@@ -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 {
}

View 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;
}
}