package com.boying.controller; import cn.hutool.core.date.DateUtil; import cn.hutool.http.HttpRequest; import cn.hutool.json.JSONUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.toolkit.StringUtils; import com.baomidou.mybatisplus.extension.api.R; import com.boying.entity.*; import com.boying.service.*; import com.boying.util.ExcelUtils; import com.boying.util.SnmpUtil; import com.google.gson.Gson; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import java.util.*; /** * @author kdq * @version 1.0.0 * @ClassName ApiController.java * @Description TODO * @createTime 2023年06月16日 09:44:00 */ @RestController @RequestMapping("/api") @RequiredArgsConstructor public class ApiController { @Autowired private SystemInfoService systemInfoService; @Autowired private SnmpInfoService snmpInfoService; @Autowired private InspectionTaskService inspectionTaskService; @Autowired private TaskInfoService taskInfoService; @Autowired private DongHuanZhuangTaiService dongHuanZhuangTaiService; @Autowired private DongHuanBaoJingService dongHuanBaoJingService; @Autowired private WarnService warnService; @Value("${license.year}") private String Lyear; @Value("${license.month}") private String Lmonth; Boolean isOctober(){ Calendar ca = Calendar.getInstance(); int year = ca.get(Calendar.YEAR);//获取年份 int month=ca.get(Calendar.MONTH)+1;//获取月份 int day=ca.get(Calendar.DATE);//获取日 if(year<=Integer.parseInt(Lyear)){ if(month>=Integer.parseInt(Lmonth)){ return false; }else { return true; } }else { return false; } } @GetMapping("/getLicense") public R getLicense(){ Boolean october = isOctober(); return R.ok(october); } @GetMapping("/getHost") public R getServer(){ Map map = new HashMap<>(); try { QueryWrapper wrapper = new QueryWrapper<>(); wrapper.select(" id,host_name,state"); wrapper.lambda() .eq(SystemInfo::getState,1); QueryWrapper wrapper1 = new QueryWrapper<>(); wrapper1.select(" id,host_name,state"); List systemInfos = systemInfoService.list(wrapper1); List systemInfos2 = systemInfoService.list(wrapper); map.put("count",systemInfos.size()); map.put("normalCount",systemInfos2.size()); return R.ok(map); } catch (Exception e) { return R.failed("出错"); } } @GetMapping("/getHostInfo") public R getServerInfo(){ List> resultList = new ArrayList<>(); QueryWrapper wrapper = new QueryWrapper<>(); wrapper.select(" id,host_name,uptime,state,remark"); List list = systemInfoService.list(wrapper); for (SystemInfo systemInfo : list) { Map map = new HashMap<>(); map.put("name",systemInfo.getHostName()); map.put("runDate",systemInfo.getUptime()==0?"0分钟":getHourAndMinute(systemInfo.getUptime())); map.put("isRun",systemInfo.getState()); map.put("remark",systemInfo.getRemark()); resultList.add(map); } return R.ok(resultList); } String getHourAndMinute(Long time){ long hours = time / 3600; long hours2 = hours; String s = ""; if(hours!=0){ long day = hours/24; if(day!=0){ s+=day+"天 "; hours = hours - day*24; } s+=hours+"小时 "; long minutes = (time - hours2*3600)/60; if(minutes != 0){ s+=minutes+"分钟"; } }else { long minutes = time / 60; s+=minutes+"分钟"; } return s; } @GetMapping("/getSnmp") public R getSnmp(){ Map map = new HashMap<>(); try { QueryWrapper wrapper = new QueryWrapper<>(); wrapper.select(" id,host_name,state"); wrapper.lambda() .eq(SnmpInfo::getState,1); QueryWrapper wrapper1 = new QueryWrapper<>(); wrapper1.select(" id,host_name,state"); List snmpInfos = snmpInfoService.list(wrapper1); List snmpInfos2 = snmpInfoService.list(wrapper); map.put("count",snmpInfos.size()); map.put("normalCount",snmpInfos2.size()); return R.ok(map); } catch (Exception e) { return R.failed("出错"); } } @GetMapping("/getSnmpInfo") public R getSnmpInfo(){ List> resultList = new ArrayList<>(); QueryWrapper wrapper = new QueryWrapper<>(); wrapper.select(" id,host_name,uptime,state,remark"); List list = snmpInfoService.list(wrapper); for (SnmpInfo snmpInfo : list) { Map map = new HashMap<>(); map.put("name",snmpInfo.getHostName()); map.put("bytes",snmpInfo.getBytesSent()); map.put("isRun",snmpInfo.getState()); map.put("remark",snmpInfo.getRemark()); resultList.add(map); } return R.ok(resultList); } @GetMapping("/getTask") public R getTask(){ Map map = new HashMap<>(); try { QueryWrapper wrapper = new QueryWrapper<>(); wrapper.select(" id,is_ok"); wrapper.lambda() .eq(InspectionTask::getIsOk,1); QueryWrapper wrapper1 = new QueryWrapper<>(); wrapper1.select(" id,is_ok"); List inspectionTasks = inspectionTaskService.list(wrapper1); List inspectionTasks2 = inspectionTaskService.list(wrapper); map.put("count",inspectionTasks.size()); map.put("normalCount",inspectionTasks2.size()); return R.ok(map); } catch (Exception e) { return R.failed("出错"); } } @GetMapping("/getTaskInfoById") public R getTaskInfoById(String id){ try { QueryWrapper wrapper = new QueryWrapper<>(); wrapper.select(" id,task_id,task_date,is_ok,content"); wrapper.lambda() .eq(TaskInfo::getTaskId,id); List infos = taskInfoService.list(wrapper); return R.ok(infos); } catch (Exception e) { return R.failed("出错"); } } @GetMapping("/getTaskByDate") public R getTaskByDate(String startDate,String endDate){ try { QueryWrapper wrapper = new QueryWrapper<>(); wrapper.select(" id,title,start_date"); wrapper.lambda() .between(StringUtils.isNotBlank(startDate) && StringUtils.isNotBlank(endDate),InspectionTask::getStartDate,startDate,endDate); return R.ok(inspectionTaskService.list(wrapper)); } catch (Exception e) { return R.failed("出错"); } } @GetMapping("/getUps") public R getUps(){ int upsError=0; int dianchiError=0; SnmpInfo snmpInfo = new SnmpInfo(); snmpInfo.setSnmpCommunity("private"); snmpInfo.setSnmpVersion("1"); snmpInfo.setSnmpPort("161"); snmpInfo.setHostName("139.24.190.121"); List list = new ArrayList<>(); list.add("1.3.6.1.4.1.32701.4.1.8.1.3.6660"); list.add("1.3.6.1.4.1.32701.4.1.8.1.3.7172"); for (String s : list) { String s1 = SnmpUtil.snmpGetTest(snmpInfo, s); if(s1.equals("5")){ upsError++; } } List list1 = new ArrayList<>(); list1.add("1.3.6.1.4.1.32701.4.1.8.1.3.7686"); list1.add("1.3.6.1.4.1.32701.4.1.8.1.3.8198"); for (String s : list1) { String s1 = SnmpUtil.snmpGetTest(snmpInfo, s); if(s1.equals("0")){ upsError++; } } List list2 = new ArrayList<>(); list2.add("1.3.6.1.4.1.32701.4.1.8.1.3.6145"); list2.add("1.3.6.1.4.1.32701.4.1.8.1.3.6146"); list2.add("1.3.6.1.4.1.32701.4.1.8.1.3.6147"); list2.add("1.3.6.1.4.1.32701.4.1.8.1.3.6148"); list2.add("1.3.6.1.4.1.32701.4.1.8.1.3.6149"); list2.add("1.3.6.1.4.1.32701.4.1.8.1.3.6150"); for (String s : list2) { String s1 = SnmpUtil.snmpGetTest(snmpInfo, s); if(!s1.equals("0") && !s1.equals("1")&& !s1.equals("4")&& !s1.equals("6")){ dianchiError++; } } Map map = new HashMap<>(); try { map.put("ups",4); map.put("ups2",4-upsError); map.put("dianchi",6); map.put("dianchi2",6-dianchiError); return R.ok(map); } catch (Exception e) { return R.failed("出错"); } } @GetMapping("/getUpsInfo") public R getUpsInfo(){ List> resultList = new ArrayList<>(); SnmpInfo snmpInfo = new SnmpInfo(); snmpInfo.setSnmpCommunity("private"); snmpInfo.setSnmpVersion("1"); snmpInfo.setSnmpPort("161"); snmpInfo.setHostName("139.24.190.121"); try { List list = new ArrayList<>(); list.add("1.3.6.1.4.1.32701.4.1.8.1.3.6660"); list.add("1.3.6.1.4.1.32701.4.1.8.1.3.7172"); for (int i = 0; i < list.size(); i++) { String s1 = SnmpUtil.snmpGetTest(snmpInfo, list.get(i)); Map map = new HashMap<>(); String state = ""; if(s1.equals("5"))state="关机"; if(s1.equals("4"))state="开机"; if(i==0){ map.put("name","UPS1"); map.put("bianliang","开关机状态"); map.put("isRun",state); } if(i==1){ map.put("name","UPS2"); map.put("bianliang","开关机状态"); map.put("isRun",state); } resultList.add(map); } List list1 = new ArrayList<>(); list1.add("1.3.6.1.4.1.32701.4.1.8.1.3.7686"); list1.add("1.3.6.1.4.1.32701.4.1.8.1.3.8198"); for (int i = 0; i < list1.size(); i++) { String s1 = SnmpUtil.snmpGetTest(snmpInfo, list1.get(i)); Map map = new HashMap<>(); String state = ""; if(s1.equals("0"))state="关闭"; if(s1.equals("1"))state="打开"; if(i==0){ map.put("name","UPS3"); map.put("bianliang","输出开关"); map.put("isRun",state); } if(i==1){ map.put("name","UPS4"); map.put("bianliang","输出开关"); map.put("isRun",state); } resultList.add(map); } List list2 = new ArrayList<>(); list2.add("1.3.6.1.4.1.32701.4.1.8.1.3.6149"); list2.add("1.3.6.1.4.1.32701.4.1.8.1.3.6150"); list2.add("1.3.6.1.4.1.32701.4.1.8.1.3.6147"); list2.add("1.3.6.1.4.1.32701.4.1.8.1.3.6148"); list2.add("1.3.6.1.4.1.32701.4.1.8.1.3.6145"); list2.add("1.3.6.1.4.1.32701.4.1.8.1.3.6146"); for (int i = 0; i < list2.size(); i++) { String s1 = SnmpUtil.snmpGetTest(snmpInfo, list2.get(i)); Map map = new HashMap<>(); String state = ""; if(s1.equals("0"))state="浮充"; if(s1.equals("1"))state="充电"; if(s1.equals("4"))state="放电"; if(s1.equals("6"))state="内阻测试"; if(!s1.equals("0") && !s1.equals("1")&& !s1.equals("4")&& !s1.equals("6")){ state="状态异常"; } map.put("name","电池"+i); map.put("bianliang","工作状态"); map.put("isRun",state); resultList.add(map); } return R.ok(resultList); } catch (Exception e) { return R.failed("出错"); } } @GetMapping("/getKongtiao") public R getKongtiao(){ int upsError=0; int jifangError=0; SnmpInfo snmpInfo = new SnmpInfo(); snmpInfo.setSnmpCommunity("private"); snmpInfo.setSnmpVersion("1"); snmpInfo.setSnmpPort("161"); snmpInfo.setHostName("139.24.190.121"); List list = new ArrayList<>(); list.add("1.3.6.1.4.1.32701.4.1.8.1.3.9729"); list.add("1.3.6.1.4.1.32701.4.1.8.1.3.9731"); for (String s : list) { String s1 = SnmpUtil.snmpGetTest(snmpInfo, s); if(s1.equals("0")){ upsError++; } } List list1 = new ArrayList<>(); list1.add("1.3.6.1.4.1.32701.4.1.8.1.3.2049"); list1.add("1.3.6.1.4.1.32701.4.1.8.1.3.2561"); list1.add("1.3.6.1.4.1.32701.4.1.8.1.3.3073"); list1.add("1.3.6.1.4.1.32701.4.1.8.1.3.4097"); for (String s : list1) { String s1 = SnmpUtil.snmpGetTest(snmpInfo, s); if(s1.equals("0")){ jifangError++; } } Map map = new HashMap<>(); map.put("upsKongtiao",2); map.put("upsKongtiao2",upsError); map.put("zhongxinKongtiao",4); map.put("zhongxinKongtiao2",jifangError); return R.ok(map); } @GetMapping("/getKongtiaoInfo") public R getKongtiaoInfo(){ List> resultList = new ArrayList<>(); SnmpInfo snmpInfo = new SnmpInfo(); snmpInfo.setSnmpCommunity("private"); snmpInfo.setSnmpVersion("1"); snmpInfo.setSnmpPort("161"); snmpInfo.setHostName("139.24.190.121"); try { List list = new ArrayList<>(); list.add("1.3.6.1.4.1.32701.4.1.8.1.3.9729"); list.add("1.3.6.1.4.1.32701.4.1.8.1.3.9731"); for (int i = 0; i < list.size(); i++) { String state = ""; Map map = new HashMap<>(); String s1 = SnmpUtil.snmpGetTest(snmpInfo, list.get(i)); if(s1.equals("0"))state="关机"; if(s1.equals("1"))state="开机"; if(i==0){ map.put("name","UPS机房空调5(STULZ-CCU121A)"); map.put("bianliang","空调工作状态"); map.put("isRun",state); resultList.add(map); } if(i==1){ map.put("name","UPS机房空调6(STULZ-CCU121A)"); map.put("bianliang","空调工作状态"); map.put("isRun",state); resultList.add(map); } } List list1 = new ArrayList<>(); list1.add("1.3.6.1.4.1.32701.4.1.8.1.3.2049"); list1.add("1.3.6.1.4.1.32701.4.1.8.1.3.2561"); list1.add("1.3.6.1.4.1.32701.4.1.8.1.3.4097"); list1.add("1.3.6.1.4.1.32701.4.1.8.1.3.3073"); for (int i = 0; i < list1.size(); i++) { String state = ""; Map map = new HashMap<>(); String s1 = SnmpUtil.snmpGetTest(snmpInfo, list1.get(i)); if(s1.equals("0"))state="关闭"; if(s1.equals("1"))state="开启"; map.put("name","中心机房空调"+(i+1)); map.put("bianliang","开关机状态"); map.put("isRun",state); resultList.add(map); } return R.ok(resultList); }catch (Exception e){ e.printStackTrace(); return R.failed("出错"); } } /** * 根据类型查询报警日志 * @param type * @return */ @GetMapping("/getWarn") public R getWarn(Integer type){ QueryWrapper wrapper = new QueryWrapper<>(); wrapper.lambda().eq(type != null,WarnLog::getType,type) .orderByDesc(WarnLog::getWarnDate) .last( " limit 11"); List list = warnService.list(wrapper); return R.ok(list); } /** * 地图数据 * @param * @return */ @GetMapping("/getMapData") public R getMapData(){ List> list = new ArrayList<>(); Map map1 = new HashMap<>(); map1.put("lon","118.14360"); map1.put("lat","39.67260"); map1.put("address","河北省唐山市路北区长宁道603号"); map1.put("health",0); Map map2 = new HashMap<>(); map2.put("lon","118.26958"); map2.put("lat","39.68333"); map2.put("address","河北省唐山市开平区东西大街199号"); map2.put("health",0); Map map3 = new HashMap<>(); map3.put("lon","118.15782"); map3.put("lat","39.63102"); map3.put("address","河北省唐山市路南区新华西道76号4层"); map3.put("health",0); Map map4 = new HashMap<>(); map4.put("lon","118.09289"); map4.put("lat","39.58163"); map4.put("address","河北省唐山市丰南区正苑大街7号"); map4.put("health",0); Map map5 = new HashMap<>(); map5.put("lon","118.14114"); map5.put("lat","39.83368"); map5.put("address","河北省唐山市丰润区曹雪芹大街17号"); map5.put("health",0); Map map6 = new HashMap<>(); map6.put("lon","118.45153"); map6.put("lat","39.74049"); map6.put("address","河北省唐山市古冶区永盛路"); map6.put("health",0); list.add(map1); list.add(map2); list.add(map3); list.add(map4); list.add(map5); list.add(map6); return R.ok(list); } @GetMapping("/test") public R test(){ SnmpUtil.getDonghuanInfo("1.3.6.1.4.1.32701.4.1.7.1.3.17"); return R.ok("11111"); } @RequestMapping("/upload") public R upload(@RequestParam("file") MultipartFile file,@RequestParam("type") Integer type)throws Exception{ String name = file.getOriginalFilename(); String[] split = name.split("\\."); if(!split[1].equals("xlsx")) { throw new Exception("文件格式错误"); } if(type == 0){ // 获取Excel中的数据 List detaileds = ExcelUtils.excelToShopIdList(file.getInputStream(),type); // 向数据库遍历添加数据库 QueryWrapper wrapper = new QueryWrapper<>(); wrapper.lambda() .eq(DongHuanZhuangTai::getType,type); dongHuanZhuangTaiService.remove(wrapper); dongHuanZhuangTaiService.saveBatch(detaileds); return R.ok("成功"); }else { List dongHuanBaoJings = ExcelUtils.excelToShopIdList2(file.getInputStream(), type); // 向数据库遍历添加数据库 QueryWrapper wrapper = new QueryWrapper<>(); wrapper.lambda() .eq(DongHuanBaoJing::getType,type); dongHuanBaoJingService.remove(wrapper); dongHuanBaoJingService.saveBatch(dongHuanBaoJings); return R.ok("成功"); } } }