package com.wgcloud.controller;
|
|
import cn.hutool.json.JSONUtil;
|
import com.wgcloud.dto.TuopuNodeDto;
|
import com.wgcloud.entity.DceInfo;
|
import com.wgcloud.entity.SnmpInfo;
|
import com.wgcloud.entity.SystemInfo;
|
import com.wgcloud.service.DceInfoService;
|
import com.wgcloud.service.LogInfoService;
|
import com.wgcloud.service.SnmpInfoService;
|
import com.wgcloud.service.SystemInfoService;
|
import com.wgcloud.util.HostUtil;
|
import com.wgcloud.util.ThreadPoolUtil;
|
import com.wgcloud.util.TuopuUtil;
|
import com.wgcloud.util.staticvar.StaticKeys;
|
import org.apache.commons.lang3.StringUtils;
|
import org.slf4j.Logger;
|
import org.slf4j.LoggerFactory;
|
import org.springframework.stereotype.Controller;
|
import org.springframework.ui.Model;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
|
import javax.annotation.Resource;
|
import javax.servlet.http.HttpServletRequest;
|
import java.util.ArrayList;
|
import java.util.HashMap;
|
import java.util.List;
|
import java.util.Map;
|
|
/**
|
* @version v3.3
|
* @ClassName:TuopuController.java
|
* @author: http://www.wgstart.com
|
* @date: 2021年1月16日
|
* @Description: 网络拓扑图
|
* @Copyright: 2019-2021 wgcloud. All rights reserved.
|
*/
|
@Controller
|
@RequestMapping("/tuopu")
|
public class TuopuController {
|
|
|
private static final Logger logger = LoggerFactory.getLogger(TuopuController.class);
|
|
|
@Resource
|
private SystemInfoService systemInfoService;
|
@Resource
|
private DceInfoService dceInfoService;
|
@Resource
|
private SnmpInfoService snmpInfoService;
|
@Resource
|
private LogInfoService logInfoService;
|
|
|
private void testThread() {
|
Runnable runnable = () -> {
|
logger.info("TuopuController----------testThread");
|
};
|
ThreadPoolUtil.executor.execute(runnable);
|
}
|
|
/**
|
* 绘制主机拓扑图
|
*
|
* @param model
|
* @param request
|
* @return
|
*/
|
@RequestMapping(value = "tuopuListHost")
|
public String tuopuListHost(Model model, HttpServletRequest request) {
|
Map<String, Object> params = new HashMap<String, Object>();
|
try {
|
Map<String, String> systemInfoMap = new HashMap<>();
|
List<TuopuNodeDto> nodeList = new ArrayList<>();
|
|
//组装主机 begin
|
|
//校验是否添加过滤用户查询条件
|
HostUtil.addAccountquery(request, params);
|
|
List<SystemInfo> pageInfo = systemInfoService.selectAllByParams(params);
|
for (SystemInfo systemInfo : pageInfo) {
|
TuopuNodeDto dto = new TuopuNodeDto();
|
systemInfoMap.put(systemInfo.getHostname(), systemInfo.getHostname());
|
dto.setHostname(systemInfo.getHostname() + HostUtil.addRemark(systemInfo.getHostname()));
|
dto.setState(systemInfo.getState());
|
dto.setType("1");
|
nodeList.add(dto);
|
}
|
//组装主机 ends
|
|
TuopuUtil.initList(nodeList);
|
model.addAttribute("nodeList", JSONUtil.parseArray(nodeList));
|
|
} catch (Exception e) {
|
logger.error("主机拓扑图生成错误", e);
|
logInfoService.save("主机拓扑图生成错误", e.toString(), StaticKeys.LOG_XTCZ);
|
}
|
return "tuopu";
|
}
|
|
|
/**
|
* 数通拓扑图绘制
|
*
|
* @param model
|
* @param request
|
* @return
|
*/
|
@RequestMapping(value = "tuopuListSt")
|
public String tuopuListSt(Model model, HttpServletRequest request) {
|
Map<String, Object> params = new HashMap<String, Object>();
|
try {
|
List<TuopuNodeDto> nodeList = new ArrayList<>();
|
|
//组装数通PING设备 begin
|
|
//校验是否添加过滤用户查询条件
|
HostUtil.addAccountquery(request, params);
|
|
List<DceInfo> pageInfoDce = dceInfoService.selectAllByParams(params);
|
for (DceInfo dceInfo : pageInfoDce) {
|
TuopuNodeDto dto = new TuopuNodeDto();
|
if (!StringUtils.isEmpty(dceInfo.getRemark())) {
|
dto.setHostname(dceInfo.getHostname() + "(" + dceInfo.getRemark() + ")");
|
} else {
|
dto.setHostname(dceInfo.getHostname());
|
}
|
if (dceInfo.getResTimes() < 0) {
|
dto.setState(StaticKeys.DOWN_STATE);
|
} else {
|
dto.setState(StaticKeys.ON_STATE);
|
}
|
dto.setType("2");
|
nodeList.add(dto);
|
}
|
//组装数通PING设备 end
|
|
|
//组装数通SNMP设备 begin
|
//暂存已添加过的snmp设备
|
List<SnmpInfo> snmpAddedList = new ArrayList<>();
|
|
//校验是否添加过滤用户查询条件
|
HostUtil.addAccountquery(request, params);
|
|
List<SnmpInfo> pageInfoSnmp = snmpInfoService.selectAllByParams(params);
|
for (SnmpInfo snmpInfo : pageInfoSnmp) {
|
for (SnmpInfo snmpInfoAdded : snmpAddedList) {
|
if (snmpInfo.getHostname().equals(snmpInfoAdded.getHostname())) {
|
continue;
|
}
|
}
|
TuopuNodeDto dto = new TuopuNodeDto();
|
if (!StringUtils.isEmpty(snmpInfo.getRemark())) {
|
dto.setHostname(snmpInfo.getHostname() + "(" + snmpInfo.getRemark() + ")");
|
} else {
|
dto.setHostname(snmpInfo.getHostname());
|
}
|
dto.setState(snmpInfo.getState());
|
dto.setType("2");
|
nodeList.add(dto);
|
}
|
//组装数通SNMP设备 end
|
|
//设置节点坐标
|
TuopuUtil.initList(nodeList);
|
model.addAttribute("nodeList", JSONUtil.parseArray(nodeList));
|
|
} catch (Exception e) {
|
logger.error("数通拓扑图生成错误", e);
|
logInfoService.save("数通拓扑图生成错误", e.toString(), StaticKeys.LOG_XTCZ);
|
}
|
return "tuopu";
|
}
|
|
}
|