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 params = new HashMap(); try { Map systemInfoMap = new HashMap<>(); List nodeList = new ArrayList<>(); //组装主机 begin //校验是否添加过滤用户查询条件 HostUtil.addAccountquery(request, params); List 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 params = new HashMap(); try { List nodeList = new ArrayList<>(); //组装数通PING设备 begin //校验是否添加过滤用户查询条件 HostUtil.addAccountquery(request, params); List 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 snmpAddedList = new ArrayList<>(); //校验是否添加过滤用户查询条件 HostUtil.addAccountquery(request, params); List 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"; } }