|
|
@@ -1,16 +1,10 @@
|
|
|
package cn.reghao.autodop.dmaster.monitor.controller;
|
|
|
|
|
|
-import cn.reghao.autodop.dmaster.DmasterApplication;
|
|
|
import cn.reghao.autodop.dmaster.app.vo.KeyValue;
|
|
|
-import cn.reghao.autodop.dmaster.monitor.entity.AppMonitor;
|
|
|
-import cn.reghao.autodop.dmaster.monitor.entity.MachineMonitor;
|
|
|
import cn.reghao.autodop.dmaster.monitor.entity.MonitorJob;
|
|
|
-import cn.reghao.autodop.dmaster.monitor.entity.MonitorType;
|
|
|
-import cn.reghao.autodop.dmaster.monitor.repository.AppMonitorRepository;
|
|
|
-import cn.reghao.autodop.dmaster.monitor.repository.MachineMonitorRepository;
|
|
|
+import cn.reghao.autodop.dmaster.monitor.repository.MonitorJobRepository;
|
|
|
import cn.reghao.autodop.dmaster.notification.entity.NotifyGroup;
|
|
|
import cn.reghao.autodop.dmaster.notification.repository.NotifyGroupRepository;
|
|
|
-import cn.reghao.autodop.dmaster.utils.clazz.PackageScanner;
|
|
|
import cn.reghao.autodop.dmaster.utils.db.PageList;
|
|
|
import cn.reghao.autodop.dmaster.utils.db.PageSort;
|
|
|
import io.swagger.annotations.Api;
|
|
|
@@ -22,216 +16,54 @@ import org.springframework.stereotype.Controller;
|
|
|
import org.springframework.ui.Model;
|
|
|
import org.springframework.web.bind.annotation.*;
|
|
|
|
|
|
-import java.io.IOException;
|
|
|
import java.util.*;
|
|
|
-import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
|
* @author reghao
|
|
|
* @date 2019-08-30 18:49:15
|
|
|
*/
|
|
|
@Slf4j
|
|
|
-@Api(tags = "机器监控页面")
|
|
|
+@Api(tags = "监控任务页面")
|
|
|
@Controller
|
|
|
@RequestMapping("/monitor")
|
|
|
public class MonitorPageController {
|
|
|
- private MachineMonitorRepository machineMonitorRepository;
|
|
|
- private AppMonitorRepository appMonitorRepository;
|
|
|
+ private MonitorJobRepository monitorJobRepository;
|
|
|
private NotifyGroupRepository receiverRepository;
|
|
|
|
|
|
- public MonitorPageController(MachineMonitorRepository machineMonitorRepository,
|
|
|
- AppMonitorRepository appMonitorRepository,
|
|
|
- NotifyGroupRepository receiverRepository) {
|
|
|
- this.machineMonitorRepository = machineMonitorRepository;
|
|
|
- this.appMonitorRepository = appMonitorRepository;
|
|
|
+ public MonitorPageController(MonitorJobRepository monitorJobRepository, NotifyGroupRepository receiverRepository) {
|
|
|
+ this.monitorJobRepository = monitorJobRepository;
|
|
|
this.receiverRepository = receiverRepository;
|
|
|
}
|
|
|
|
|
|
- @ApiOperation(value = "监控页面")
|
|
|
- @GetMapping("/{monitorType}")
|
|
|
- public String machineMonitorPage(@PathVariable("monitorType") String monitorType, Model model) {
|
|
|
+ @ApiOperation(value = "监控任务页面")
|
|
|
+ @GetMapping("/job")
|
|
|
+ public String machineMonitorPage(Model model) {
|
|
|
PageRequest pageRequest = PageSort.pageRequest();
|
|
|
- switch (MonitorType.valueOf(monitorType)) {
|
|
|
- case machine:
|
|
|
- Page<MachineMonitor> page = machineMonitorRepository.findAll(pageRequest);
|
|
|
- PageList<MachineMonitor> pageList = PageList.pageList(page);
|
|
|
+ Page<MonitorJob> page = monitorJobRepository.findAll(pageRequest);
|
|
|
+ PageList<MonitorJob> pageList = PageList.pageList(page);
|
|
|
|
|
|
- model.addAttribute("page", page);
|
|
|
- model.addAttribute("list", pageList.getList());
|
|
|
- return "/monitor/machinemonitor";
|
|
|
- case app:
|
|
|
- Page<AppMonitor> page1 = appMonitorRepository.findAll(pageRequest);
|
|
|
- PageList<AppMonitor> pageList1 = PageList.pageList(page1);
|
|
|
-
|
|
|
- model.addAttribute("page", page1);
|
|
|
- model.addAttribute("list", pageList1.getList());
|
|
|
- return "/monitor/appmonitor";
|
|
|
- default:
|
|
|
- }
|
|
|
- return "";
|
|
|
+ model.addAttribute("page", page);
|
|
|
+ model.addAttribute("list", pageList.getList());
|
|
|
+ return "/monitor/index";
|
|
|
}
|
|
|
|
|
|
- @ApiOperation(value = "监控通知设置页面")
|
|
|
- @GetMapping("/{monitorType}/notify/{id}")
|
|
|
- public String monitorNotifyPage(@PathVariable("monitorType") String monitorType,
|
|
|
- @PathVariable("id") Integer id,
|
|
|
- Model model) {
|
|
|
- String notifyApi;
|
|
|
- Set<NotifyGroup> currentSet;
|
|
|
- List<NotifyGroup> list;
|
|
|
- switch (MonitorType.valueOf(monitorType)) {
|
|
|
- case machine:
|
|
|
- notifyApi = "/api/monitor/machine/notify/" + id;
|
|
|
- MachineMonitor machineMonitor = machineMonitorRepository.findById(id).orElse(null);
|
|
|
- currentSet = new HashSet<>(machineMonitor.getNotifyGroups());
|
|
|
- list = receiverRepository.findAll();
|
|
|
- break;
|
|
|
- case app:
|
|
|
- notifyApi = "/api/monitor/app/notify/" + id;
|
|
|
- AppMonitor appMonitor = appMonitorRepository.findById(id).orElse(null);
|
|
|
- currentSet = new HashSet<>(appMonitor.getNotifyGroups());
|
|
|
- list = receiverRepository.findAll();
|
|
|
- break;
|
|
|
- default:
|
|
|
- notifyApi = null;
|
|
|
- currentSet = Collections.emptySet();
|
|
|
- list = Collections.emptyList();
|
|
|
- }
|
|
|
+ @ApiOperation(value = "监控任务通知设置页面")
|
|
|
+ @GetMapping("/notify/{id}")
|
|
|
+ public String monitorNotifyPage(@PathVariable("id") Integer id, Model model) {
|
|
|
+ MonitorJob monitorJob = monitorJobRepository.findById(id).orElse(null);
|
|
|
+ Set<NotifyGroup> currentSet = new HashSet<>(monitorJob.getNotifyGroups());
|
|
|
+ List<NotifyGroup> list = receiverRepository.findAll();
|
|
|
|
|
|
- model.addAttribute("notifyApi", notifyApi);
|
|
|
+ model.addAttribute("jobId", monitorJob.getJobId());
|
|
|
model.addAttribute("currentSet", currentSet);
|
|
|
model.addAttribute("list", list);
|
|
|
return "/monitor/monitornotify";
|
|
|
}
|
|
|
|
|
|
- @ApiOperation(value = "监控任务列表页面")
|
|
|
- @GetMapping("/{monitorType}/jobs/{id}")
|
|
|
- public String monitorAddPage(@PathVariable("monitorType") String monitorType,
|
|
|
- @PathVariable("id") Integer id,
|
|
|
- Model model) {
|
|
|
- String addJobUrl;
|
|
|
- String editJobUrl;
|
|
|
- String jobDeleteApi;
|
|
|
- String jobStatusApi;
|
|
|
- List<MonitorJob> list;
|
|
|
- switch (MonitorType.valueOf(monitorType)) {
|
|
|
- case machine:
|
|
|
- addJobUrl = String.format("/monitor/machine/jobs/add/%s", id);
|
|
|
- editJobUrl = String.format("/monitor/machine/jobs/edit/%s", id);
|
|
|
- jobDeleteApi = String.format("/api/monitor/machine/job/%s", id);
|
|
|
- jobStatusApi = String.format("/api/monitor/machine/job/%s", id);
|
|
|
- MachineMonitor machineMonitor = machineMonitorRepository.findById(id).orElse(null);
|
|
|
- list = new ArrayList<>(machineMonitor.getJobMap().values());
|
|
|
- break;
|
|
|
- case app:
|
|
|
- addJobUrl = String.format("/monitor/app/jobs/add/%s", id);
|
|
|
- editJobUrl = String.format("/monitor/app/jobs/edit/%s", id);
|
|
|
- jobDeleteApi = String.format("/api/monitor/app/job/%s", id);
|
|
|
- jobStatusApi = String.format("/api/monitor/app/job/%s", id);
|
|
|
- AppMonitor appMonitor = appMonitorRepository.findById(id).orElse(null);
|
|
|
- list = new ArrayList<>(appMonitor.getJobMap().values());
|
|
|
- break;
|
|
|
- default:
|
|
|
- addJobUrl = null;
|
|
|
- editJobUrl = null;
|
|
|
- jobDeleteApi = null;
|
|
|
- jobStatusApi = null;
|
|
|
- list = Collections.emptyList();
|
|
|
- }
|
|
|
-
|
|
|
- model.addAttribute("addJobUrl", addJobUrl);
|
|
|
- model.addAttribute("editJobUrl", editJobUrl);
|
|
|
- model.addAttribute("jobDeleteApi", jobDeleteApi);
|
|
|
- model.addAttribute("jobStatusApi", jobStatusApi);
|
|
|
- model.addAttribute("list", list);
|
|
|
- return "/monitor/monitorjobs";
|
|
|
- }
|
|
|
-
|
|
|
- @ApiOperation(value = "监控任务添加页面")
|
|
|
- @GetMapping("/{monitorType}/jobs/add/{id}")
|
|
|
- public String monitorJobAddPage(@PathVariable("monitorType") String monitorType,
|
|
|
- @PathVariable("id") Integer id,
|
|
|
- Model model) throws IOException {
|
|
|
- String addJobApi;
|
|
|
- String jobPkg;
|
|
|
- Set<String> exclude;
|
|
|
- switch (MonitorType.valueOf(monitorType)) {
|
|
|
- case machine:
|
|
|
- MachineMonitor machineMonitor = machineMonitorRepository.findById(id).orElse(null);
|
|
|
- exclude = machineMonitor.getJobMap().values().stream()
|
|
|
- .map(MonitorJob::getJobClassName)
|
|
|
- .collect(Collectors.toSet());
|
|
|
- addJobApi = String.format("/api/monitor/machine/job/%s", id);
|
|
|
- jobPkg = "cn.reghao.autodop.dmaster.monitor.service.job.machine";
|
|
|
- break;
|
|
|
- case app:
|
|
|
- AppMonitor appMonitor = appMonitorRepository.findById(id).orElse(null);
|
|
|
- exclude = appMonitor.getJobMap().values().stream()
|
|
|
- .map(MonitorJob::getJobClassName)
|
|
|
- .collect(Collectors.toSet());
|
|
|
- addJobApi = String.format("/api/monitor/app/job/%s", id);
|
|
|
- jobPkg = "cn.reghao.autodop.dmaster.monitor.service.job.app";
|
|
|
- break;
|
|
|
- default:
|
|
|
- addJobApi = null;
|
|
|
- jobPkg = null;
|
|
|
- exclude = Collections.emptySet();
|
|
|
- }
|
|
|
-
|
|
|
- model.addAttribute("addJobApi", addJobApi);
|
|
|
- setJobNames(model, jobPkg, exclude);
|
|
|
- return "/monitor/monitorjob";
|
|
|
- }
|
|
|
-
|
|
|
@ApiOperation(value = "监控任务编辑页面")
|
|
|
- @GetMapping("/{monitorType}/jobs/edit/{id}/{jobId}")
|
|
|
- public String monitorJobEditPage(@PathVariable("monitorType") String monitorType,
|
|
|
- @PathVariable("id") Integer id,
|
|
|
- @PathVariable("jobId") String jobId,
|
|
|
- Model model) {
|
|
|
-
|
|
|
- String addJobApi;
|
|
|
- List<KeyValue> jobNames;
|
|
|
- MonitorJob monitorJob;
|
|
|
- switch (MonitorType.valueOf(monitorType)) {
|
|
|
- case machine:
|
|
|
- addJobApi = String.format("/api/monitor/machine/job/%s", id);
|
|
|
- MachineMonitor machineMonitor = machineMonitorRepository.findById(id).orElse(null);
|
|
|
- monitorJob = machineMonitor.getJobMap().get(jobId);
|
|
|
- jobNames = new ArrayList<>();
|
|
|
- jobNames.add(new KeyValue(monitorJob.getJobClassName(), monitorJob.getJobClassName()));
|
|
|
- break;
|
|
|
- case app:
|
|
|
- addJobApi = String.format("/api/monitor/app/job/%s", id);
|
|
|
- AppMonitor appMonitor = appMonitorRepository.findById(id).orElse(null);
|
|
|
- monitorJob = appMonitor.getJobMap().get(jobId);
|
|
|
- jobNames = new ArrayList<>();
|
|
|
- jobNames.add(new KeyValue(monitorJob.getJobClassName(), monitorJob.getJobClassName()));
|
|
|
- break;
|
|
|
- default:
|
|
|
- addJobApi = null;
|
|
|
- jobNames = Collections.emptyList();
|
|
|
- monitorJob = null;
|
|
|
- }
|
|
|
-
|
|
|
- model.addAttribute("addJobApi", addJobApi);
|
|
|
- model.addAttribute("jobNames", jobNames);
|
|
|
+ @GetMapping("/job/edit/{id}")
|
|
|
+ public String monitorJobEditPage(@PathVariable("id") MonitorJob monitorJob, Model model) {
|
|
|
model.addAttribute("monitorJob", monitorJob);
|
|
|
- return "/monitor/monitorjob";
|
|
|
- }
|
|
|
-
|
|
|
- private void setJobNames(Model model, String jobPkg, Set<String> exclude) throws IOException {
|
|
|
- PackageScanner packageScanner = new PackageScanner();
|
|
|
- List<Class<?>> classList = packageScanner.doScan(DmasterApplication.class, jobPkg);
|
|
|
-
|
|
|
- List<KeyValue> jobNames = new ArrayList<>();
|
|
|
- jobNames.add(new KeyValue("请选择任务", ""));
|
|
|
- for (Class<?> clazz : classList) {
|
|
|
- String simpleName = clazz.getSimpleName();
|
|
|
- if (!exclude.contains(simpleName)) {
|
|
|
- jobNames.add(new KeyValue(simpleName, simpleName));
|
|
|
- }
|
|
|
- }
|
|
|
- model.addAttribute("jobNames", jobNames);
|
|
|
+ return "/monitor/edit";
|
|
|
}
|
|
|
}
|