summaryrefslogtreecommitdiff
path: root/src/main
diff options
context:
space:
mode:
authortanghao <admin@LAPTOP-QCSKVLI9>2021-05-19 09:32:10 +0800
committertanghao <admin@LAPTOP-QCSKVLI9>2021-05-19 09:32:10 +0800
commit3b15de686c8be13a37627d15ab3b94a0182db108 (patch)
tree312c64d38bef74d6794e9d29652b43c8382d10a0 /src/main
parent20b93e6e1e1e7d6c9c06c50efdf68f97a5b0faf1 (diff)
feat: 增加project_topo相关数据平移逻辑
Diffstat (limited to 'src/main')
-rw-r--r--src/main/java/com/nis/dao/ProjectTopoDao.java27
-rw-r--r--src/main/java/com/nis/dao/ProjectTopoIconDao.java25
-rw-r--r--src/main/java/com/nis/entity/ProjectTopo.java22
-rw-r--r--src/main/java/com/nis/entity/ProjectTopoIcon.java24
-rw-r--r--src/main/java/com/nis/handler/SqlHandler.java11
-rw-r--r--src/main/java/com/nis/service/ProjectTopoIconService.java13
-rw-r--r--src/main/java/com/nis/service/ProjectTopoService.java13
-rw-r--r--src/main/java/com/nis/service/impl/ProjectTopoIconServiceImpl.java23
-rw-r--r--src/main/java/com/nis/service/impl/ProjectTopoServiceImpl.java344
9 files changed, 501 insertions, 1 deletions
diff --git a/src/main/java/com/nis/dao/ProjectTopoDao.java b/src/main/java/com/nis/dao/ProjectTopoDao.java
new file mode 100644
index 0000000..df959d0
--- /dev/null
+++ b/src/main/java/com/nis/dao/ProjectTopoDao.java
@@ -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> {
+
+}
diff --git a/src/main/java/com/nis/dao/ProjectTopoIconDao.java b/src/main/java/com/nis/dao/ProjectTopoIconDao.java
new file mode 100644
index 0000000..e50be28
--- /dev/null
+++ b/src/main/java/com/nis/dao/ProjectTopoIconDao.java
@@ -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> {
+
+}
diff --git a/src/main/java/com/nis/entity/ProjectTopo.java b/src/main/java/com/nis/entity/ProjectTopo.java
new file mode 100644
index 0000000..331fb01
--- /dev/null
+++ b/src/main/java/com/nis/entity/ProjectTopo.java
@@ -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;
+} \ No newline at end of file
diff --git a/src/main/java/com/nis/entity/ProjectTopoIcon.java b/src/main/java/com/nis/entity/ProjectTopoIcon.java
new file mode 100644
index 0000000..c5f6f02
--- /dev/null
+++ b/src/main/java/com/nis/entity/ProjectTopoIcon.java
@@ -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;
+}
diff --git a/src/main/java/com/nis/handler/SqlHandler.java b/src/main/java/com/nis/handler/SqlHandler.java
index ebc973c..0b815f7 100644
--- a/src/main/java/com/nis/handler/SqlHandler.java
+++ b/src/main/java/com/nis/handler/SqlHandler.java
@@ -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) {
diff --git a/src/main/java/com/nis/service/ProjectTopoIconService.java b/src/main/java/com/nis/service/ProjectTopoIconService.java
new file mode 100644
index 0000000..8831c9c
--- /dev/null
+++ b/src/main/java/com/nis/service/ProjectTopoIconService.java
@@ -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> {
+
+} \ No newline at end of file
diff --git a/src/main/java/com/nis/service/ProjectTopoService.java b/src/main/java/com/nis/service/ProjectTopoService.java
new file mode 100644
index 0000000..1b165dd
--- /dev/null
+++ b/src/main/java/com/nis/service/ProjectTopoService.java
@@ -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();
+} \ No newline at end of file
diff --git a/src/main/java/com/nis/service/impl/ProjectTopoIconServiceImpl.java b/src/main/java/com/nis/service/impl/ProjectTopoIconServiceImpl.java
new file mode 100644
index 0000000..91859ac
--- /dev/null
+++ b/src/main/java/com/nis/service/impl/ProjectTopoIconServiceImpl.java
@@ -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 {
+
+}
diff --git a/src/main/java/com/nis/service/impl/ProjectTopoServiceImpl.java b/src/main/java/com/nis/service/impl/ProjectTopoServiceImpl.java
new file mode 100644
index 0000000..49f353b
--- /dev/null
+++ b/src/main/java/com/nis/service/impl/ProjectTopoServiceImpl.java
@@ -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;
+ }
+}