You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
107 lines
3.4 KiB
107 lines
3.4 KiB
package com.zc.business.controller;
|
|
|
|
import com.ruoyi.common.core.controller.BaseController;
|
|
import com.ruoyi.common.core.domain.AjaxResult;
|
|
import com.zc.business.domain.DcSwitch;
|
|
import com.zc.business.service.DcSwitchService;
|
|
import io.swagger.annotations.Api;
|
|
import io.swagger.annotations.ApiOperation;
|
|
import org.springframework.scheduling.annotation.Scheduled;
|
|
import org.springframework.web.bind.annotation.GetMapping;
|
|
import org.springframework.web.bind.annotation.PathVariable;
|
|
import org.springframework.web.bind.annotation.RequestMapping;
|
|
import org.springframework.web.bind.annotation.RestController;
|
|
|
|
import javax.annotation.Resource;
|
|
import java.io.IOException;
|
|
import java.net.InetAddress;
|
|
import java.util.Date;
|
|
import java.util.List;
|
|
import java.util.concurrent.CountDownLatch;
|
|
import java.util.concurrent.ExecutorService;
|
|
import java.util.concurrent.Executors;
|
|
import java.util.stream.Collectors;
|
|
|
|
/**
|
|
* 交换机Controller
|
|
*
|
|
* @author wangjiabao
|
|
*/
|
|
@Api(tags = {"交换机"})
|
|
@RestController
|
|
@RequestMapping("/business/switch")
|
|
public class DcSwitchController extends BaseController {
|
|
|
|
@Resource
|
|
private DcSwitchService dcSwitchService;
|
|
|
|
/**
|
|
* 查询交换机
|
|
*/
|
|
@ApiOperation("查询交换机")
|
|
@GetMapping("/query")
|
|
public AjaxResult getSwitchList(DcSwitch dcSwitch) {
|
|
return AjaxResult.success(dcSwitchService.getSwitchList(dcSwitch));
|
|
}
|
|
|
|
/**
|
|
* 根据设备列表查询设备
|
|
*/
|
|
@ApiOperation("根据设备列表查询设备")
|
|
@GetMapping("/deviceList/{deviceList}")
|
|
public AjaxResult getDeviceList(@PathVariable String deviceList) {
|
|
return AjaxResult.success(dcSwitchService.getDeviceList(deviceList));
|
|
}
|
|
|
|
/**
|
|
* 查询所有数据
|
|
*
|
|
* @return
|
|
*/
|
|
@GetMapping("/list")
|
|
public AjaxResult getSwitchListAll() {
|
|
return AjaxResult.success(dcSwitchService.getSwitchListAll());
|
|
}
|
|
|
|
/**
|
|
* 定时更新交换机网络状态
|
|
*/
|
|
@Scheduled(cron = "0 0/30 * * * ?")
|
|
public void updateNetWorkStatus() {
|
|
List<DcSwitch> switchList = dcSwitchService.getSwitchList(new DcSwitch());
|
|
ExecutorService executor = Executors.newFixedThreadPool(100);
|
|
List<DcSwitch> collect = switchList.stream()
|
|
.filter(dcSwitch -> {
|
|
return dcSwitch.getParentId() != null;
|
|
}).collect(Collectors.toList());
|
|
CountDownLatch latch = new CountDownLatch(collect.size());
|
|
collect.forEach(dcSwitch -> {
|
|
executor.execute(() -> {
|
|
try {
|
|
InetAddress inet = InetAddress.getByName(dcSwitch.getSwitchIp());
|
|
if (inet.isReachable(5000)) {
|
|
// 成功
|
|
dcSwitch.setNetWorkStatus(1);
|
|
} else {
|
|
// 失败
|
|
dcSwitch.setNetWorkStatus(0);
|
|
}
|
|
dcSwitch.setUpdateTime(new Date());
|
|
} catch (IOException e) {
|
|
e.getMessage();
|
|
} finally {
|
|
latch.countDown();
|
|
}
|
|
});
|
|
});
|
|
try {
|
|
latch.await(); // 等待所有线程执行完毕
|
|
} catch (InterruptedException e) {
|
|
Thread.currentThread().interrupt();
|
|
} finally {
|
|
executor.shutdown();
|
|
}
|
|
// 批量修改
|
|
dcSwitchService.updateBatchByNetWorkStatus(collect);
|
|
}
|
|
}
|
|
|