dao/src/main/resources/mapper/AirDataMapper.xml
@@ -76,7 +76,7 @@ select t1.device_code from pole_binding t1 left join pole t2 on t1.pole_id = t2.id where t1.device_type = 3 where t1.device_type = 11 and t1.pole_id = #{poleId} <if test="clientId != null"> AND (t2.user_id = #{clientId} OR t2.client_id = #{clientId}) ximon-admin/src/main/java/com/sandu/ximon/admin/localMQTT/controller/localMQTTTestController.java
@@ -1,13 +1,21 @@ package com.sandu.ximon.admin.localMQTT.controller; import com.sandu.ximon.admin.localMQTT.util.MqttClientUtil; import com.sandu.ximon.admin.newnova.param.NewNovaStatusParam; import com.sandu.ximon.admin.newnova.utils.NovaAPIUtil; import com.sandu.ximon.admin.utils.RedisUtils; import com.sandu.ximon.dao.domain.NewNovaLed; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import java.util.ArrayList; import java.util.List; import static com.sandu.ximon.admin.localMQTT.callback.StatusMqttCallBack.localMqttConnectStatus; import static com.sandu.ximon.admin.newnova.utils.NovaAPIUtil.loginSn; import static com.sandu.ximon.admin.newnova.utils.NovaAPIUtil.searchStatus; import static java.lang.Thread.sleep; /** @@ -25,7 +33,7 @@ @RequestMapping("/test") public String localMQTT() throws InterruptedException { for (int i = 0; i < 1000; i++) { for (int i = 0; i < 1; i++) { /* * 开灯100 @@ -74,15 +82,66 @@ // log.info("定时任务返回结果:"+result4); // sleep(3000); boolean set = RedisUtils.getBean().set(localMqttConnectStatus+"363832544e5008ff4734ffff",0); System.out.println(set); System.out.println(RedisUtils.getBean().get(localMqttConnectStatus+"363832544e5008ff4734ffff")); System.out.println("1".equals(RedisUtils.getBean().get(localMqttConnectStatus+"363832544e5008ff4734ffff"))); System.out.println("------------"); // boolean set = RedisUtils.getBean().set(localMqttConnectStatus+"363832544e5008ff4734ffff",0); // System.out.println(set); // System.out.println(RedisUtils.getBean().get(localMqttConnectStatus+"363832544e5008ff4734ffff")); // System.out.println("1".equals(RedisUtils.getBean().get(localMqttConnectStatus+"363832544e5008ff4734ffff"))); // System.out.println("------------"); // System.out.println("链接状态:---"+i+"---:"); // System.out.println(RedisUtils.getBean().get(localMqttConnectStatus+"363832544e5008ff4734ffff")); sleep(1000); // sleep(1000); NovaAPIUtil instanceUtil = NovaAPIUtil.getInstanceUtil(); System.out.println(instanceUtil); // System.out.println("循环重复登录:"); // for (int j = 0; j < 1; j++) { // System.out.println(j+"次循环,开始"); // loginSn.forEach( // (sn,data)->{ // instanceUtil.login(sn, 0); // } // ); // System.out.println(j+"次循环,结束"); // } System.out.println("循环重复截图:"); NewNovaStatusParam newNovaStatusParam = new NewNovaStatusParam(); List<NewNovaStatusParam.NovascreenShotDTO> list = new ArrayList<>(); NewNovaStatusParam.NovascreenShotDTO dto = new NewNovaStatusParam.NovascreenShotDTO(); List<NewNovaStatusParam.NovaDTO> novaList = new ArrayList<>(); loginSn.forEach( (sn,data)->{ dto.setSn(sn); list.add(dto); } ); // instanceUtil.reboot(); newNovaStatusParam.setScreenShotList(list); System.out.println("list中一共"+list.size()+"个屏幕"); System.out.println("loginSn"+loginSn.size()+"个屏幕"); for (int j = 0; j < 1; j++) { System.out.println(j+"次循环,开始"); List<NewNovaLed> newNovaLedList = new ArrayList<>(); loginSn.forEach( (sn,data)->{ instanceUtil.screenShot(newNovaStatusParam); NewNovaLed newNovaLed = new NewNovaLed(); newNovaLed.setSn(sn); instanceUtil.getInfo(newNovaLed); newNovaLedList.add(newNovaLed); } ); instanceUtil.getOnlineStatus(newNovaLedList,false); System.out.println(j+"次循环,结束"); } } ximon-admin/src/main/java/com/sandu/ximon/admin/newnova/led/NewNovaLedController.java
@@ -209,6 +209,7 @@ if (param.getNovaList() == null || param.getNovaList().isEmpty()) { return ResponseUtil.fail("请选择设备"); } // return ResponseUtil.success("666"); return ResponseUtil.success(NovaAPIUtil.getInstanceUtil().reboot(param)); } ximon-admin/src/main/java/com/sandu/ximon/admin/newnova/led/NewNovaLedService.java
@@ -7,7 +7,6 @@ import com.sandu.common.object.BaseConditionVO; import com.sandu.common.service.impl.BaseServiceImpl; import com.sandu.common.util.SpringContextHolder; import com.sandu.ximon.admin.manager.iot.frame.inner.report.A5AtmosphereHeartbeatReportInnerFrame; import com.sandu.ximon.admin.newnova.conf.ProgramPathConfig; import com.sandu.ximon.admin.newnova.param.NewNovaLedParam; import com.sandu.ximon.admin.newnova.param.ProgramPrarm; @@ -18,13 +17,14 @@ import com.sandu.ximon.admin.newnova.vo.StatusVO; import com.sandu.ximon.admin.newnova.vo.TrasfromStatusVO; import com.sandu.ximon.admin.security.SecurityUtils; import com.sandu.ximon.admin.service.AirDataService; import com.sandu.ximon.admin.service.PoleBindingService; import com.sandu.ximon.admin.service.PoleService; import com.sandu.ximon.dao.bo.AirDataNongGengBo; import com.sandu.ximon.dao.bo.NewNovaGroupListBo; import com.sandu.ximon.dao.domain.NewNovaLed; import com.sandu.ximon.dao.domain.Pole; import com.sandu.ximon.dao.domain.PoleBinding; import com.sandu.ximon.dao.mapper.AirDataNongGengMapper; import com.sandu.ximon.dao.mapper.NewNovaLedMapper; import lombok.AllArgsConstructor; import org.springframework.stereotype.Service; @@ -198,13 +198,13 @@ if (nova == null) { throw new BusinessException("未绑定诺瓦设备"); } PoleBinding air = poleBindingService.getOne(Wrappers.lambdaQuery(PoleBinding.class).eq(PoleBinding::getPoleId, nova.getPoleId()).eq(PoleBinding::getDeviceType, 3)); PoleBinding air = poleBindingService.getOne(Wrappers.lambdaQuery(PoleBinding.class).eq(PoleBinding::getPoleId, nova.getPoleId()).eq(PoleBinding::getDeviceType, 11)); if (air == null) { throw new BusinessException("未绑定大气设备"); } //获取大气监测数据 A5AtmosphereHeartbeatReportInnerFrame.HeartBeatDataPackage data = SpringContextHolder.getBean(AirDataService.class).getDataByPoleid(nova.getPoleId()); AirDataNongGengBo data = SpringContextHolder.getBean(AirDataNongGengMapper.class).historyData(air.getDeviceCode()).get(0); //解析大气数据 Map pageInfo = parseData(data, duration, fontSize); @@ -248,7 +248,7 @@ * @return */ private Map parseData(A5AtmosphereHeartbeatReportInnerFrame.HeartBeatDataPackage data, Long duration, Long fontSize) { private Map parseData(AirDataNongGengBo data, Long duration, Long fontSize) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z+8:00'"); Date end = new Date(); end.setTime(end.getTime() + duration); @@ -302,42 +302,42 @@ " {\n" + " \"segs\": [\n" + " {\n" + " \"content\": \"温度:" + (data == null || data.getTemperature() == null ? " - " : data.getTemperature()) + "°\"" + "\n" + " \"content\": \"温度:" + (data == null || data.getAirTemperature() == null ? " - " : data.getAirTemperature()) + "\"" + "\n" + " }\n" + " ]\n" + " },\n" + " {\n" + " \"segs\": [\n" + " {\n" + " \"content\": \"湿度:" + (data == null || data.getHumidity() == null ? " - " : data.getHumidity()) + "%\"" + "\n" + " \"content\": \"湿度:" + (data == null || data.getAirHumidity() == null ? " - " : data.getAirHumidity()) + "\"" + "\n" + " }\n" + " ]\n" + " },\n" + " {\n" + " \"segs\": [\n" + " {\n" + " \"content\": \"pm25:" + (data == null || data.getPm25() == null ? " - " : data.getPm25()) + "μg/m³\"" + "\n" + " \"content\": \"pm25:" + (data == null || data.getPm2point5() == null ? " - " : data.getPm2point5()) + "\"" + "\n" + " }\n" + " ]\n" + " },\n" + " {\n" + " \"segs\": [\n" + " {\n" + " \"content\": \"pm10:" + (data == null || data.getPm10() == null ? " - " : data.getPm10()) + "μg/m³\"" + "\n" + " \"content\": \"pm10:" + (data == null || data.getPm10() == null ? " - " : data.getPm10()) + "\"" + "\n" + " }\n" + " ]\n" + " },\n" + " {\n" + " \"segs\": [\n" + " {\n" + " \"content\": \"甲醛:" + (data == null || data.getEch2o() == null ? " - " : data.getEch2o()) + "μg/m³\"" + "\n" + " \"content\": \"光照:" + (data == null || data.getIllumination() == null ? " - " : data.getIllumination()) + "\"" + "\n" + " }\n" + " ]\n" + " },\n" + " {\n" + " \"segs\": [\n" + " {\n" + " \"content\": \"CO2:" + (data == null || data.getCo2() == null ? " - " : data.getCo2()) + "ppm\"" + "\n" + " \"content\": \"噪音:" + (data == null || data.getNoise() == null ? " - " : data.getNoise()) + "\"" + "\n" + " }\n" + " ]\n" + " }\n" + ximon-admin/src/main/java/com/sandu/ximon/admin/newnova/utils/NovaAPIUtil.java
@@ -1,5 +1,6 @@ package com.sandu.ximon.admin.newnova.utils; import afu.org.checkerframework.checker.units.qual.A; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.sandu.common.execption.BusinessException; @@ -24,6 +25,8 @@ import java.util.concurrent.CountDownLatch; import java.util.concurrent.TimeUnit; import static java.lang.Thread.sleep; /** * @author LiuHaoNan * @date 2022/11/9 @@ -33,7 +36,15 @@ private ProgramPathConfig filePathConfig; private Map<String, Boolean> loginSn = new HashMap(); /* * 成功登录的 * */ public static Map<String, Boolean> loginSn = new HashMap(); /* * 搜索出来的状态 * */ public static List<StatusVO> searchStatus = new ArrayList<>(); private ViplexCore instance = null; @@ -41,7 +52,7 @@ private static String loginInfo = null; private NovaAPIUtil() { private NovaAPIUtil() throws InterruptedException { filePathConfig = SpringContextHolder.getBean(ProgramPathConfig.class); String rootDir = filePathConfig.getOutPutPath(); instance = (ViplexCore) Native.loadLibrary(filePathConfig.getStringPath(), ViplexCore.class); @@ -57,32 +68,59 @@ System.out.println("ViplexCore Demo nvSearchTerminalAsync(搜索) begin... "); CountDownLatch countDownLatch1 = new CountDownLatch(1); instance.nvSearchTerminalAsync(new ViplexCore.CallBack() { instance.nvSearchTerminalAsync((code, data) -> { searchVO.setStatusCode(code); searchVO.setStatusData(data); loginInfo = data; @Override public void dataCallBack(int code, String data) { searchVO.setStatusCode(code); searchVO.setStatusData(data); loginInfo = data; if (code == 0 ){ Map map = (Map) JSONObject.parse(data); /* * 当前屏体状态,terminalState共有6个值,分别代表: 0:未连接任何终端,当前处于未连接状态 1:连接成功但是未登录状态 2:被他人登录状态 3:登录成功状态 4:密码错误状态 5:离线状态,处于搜索不到的状态,但是曾经被搜索到过 * */ if (map.get("terminalState").equals(0) || map.get("terminalState").equals(1)){ login((String) map.get("sn"),0); searchVO.setSn((String) map.get("sn")); searchStatus.add(searchVO); System.out.println("\nViplexCore 搜索 sn:" + map.get("sn")); } else if (map.get("terminalState").equals(3) ) { loginSn.put(searchVO.getSn(),true); } System.out.println("\nViplexCore 搜索 code:" + code); System.out.println("\nViplexCore 搜索 data:" + data); countDownLatch1.countDown(); } else{ System.out.println("搜索结果code:"+code); } countDownLatch1.countDown(); }); try { countDownLatch1.await(10000, TimeUnit.MILLISECONDS); countDownLatch1.await(30000, TimeUnit.MILLISECONDS); } catch (InterruptedException e) { throw new RuntimeException(e); } // login("MZVA51930N2113017308"); sleep(35000); } public static NovaAPIUtil getInstanceUtil() { if (instanceUtil == null) { synchronized (NovaAPIUtil.class) { if (instanceUtil == null) { instanceUtil = new NovaAPIUtil(); try { instanceUtil = new NovaAPIUtil(); } catch (InterruptedException e) { throw new RuntimeException(e); } } } } @@ -100,49 +138,50 @@ */ public StatusVO login(String sn, Integer loginType) { /* 从loginSn 判断是否登录过 * */ if (loginSn.get(sn) != null && loginSn.get(sn) && loginType == 0) { return new StatusVO(0); } if (loginInfo == null) { return new StatusVO(10086); } if (!loginInfo.contains(String.format("\"sn\":\"%s\",", sn)) && loginType == 0) { //未搜索到屏幕 登录不成功 System.out.println("loginType : " + loginType); return new StatusVO(10086); } /* * 没有则执行登录 * */ else { StatusVO statusVO = new StatusVO(); StatusVO statusVO = new StatusVO(); System.out.println("ViplexCore Demo nvLoginAsync(登录) begin... "); String loginParam = String.format("{\"sn\":\"%s\",\"username\":\"admin\",\"rememberPwd\":0,\"password\":\"123456\",\"loginType\":" + loginType + "}", sn); System.out.println("ViplexCore Demo nvLoginAsync(登录) begin... "); String loginParam = String.format("{\"sn\":\"%s\",\"username\":\"admin\",\"rememberPwd\":0,\"password\":\"123456\",\"loginType\":" + loginType + "}", sn); CountDownLatch countDownLatch2 = new CountDownLatch(1); instance.nvLoginAsync(loginParam, new ViplexCore.CallBack() { @Override public void dataCallBack(int code, String data) { CountDownLatch countDownLatch2 = new CountDownLatch(1); instance.nvLoginAsync(loginParam, (code, data) -> { statusVO.setStatusCode(code); statusVO.setStatusData(data); System.out.println("\nViplexCore 登录 sn:" + sn); System.out.println("\nViplexCore 登录 code:" + code); System.out.println("\nViplexCore 登录 data:" + data); if (code == 65353) { statusVO.setStatusCode(0); } countDownLatch2.countDown(); } }); }); try { countDownLatch2.await(); } catch (InterruptedException e) { throw new RuntimeException(e); try { countDownLatch2.await(5000,TimeUnit.MILLISECONDS); } catch (InterruptedException e) { throw new RuntimeException(e); } if (statusVO.getStatusCode() != 0) { System.out.println("ViplexCore " + sn + " nvLoginAsync(登录) 失败!"); System.out.println("错误码:" + statusVO.getStatusCode()); loginSn.put(sn,false); } else { loginSn.put(sn, true); } return statusVO; } if (statusVO.getStatusCode() != 0) { System.out.println("ViplexCore " + sn + " nvLoginAsync(登录) 失败!"); System.out.println("错误码:" + statusVO.getStatusCode()); } else { //登陆成功之后存入map保存登录信息 loginSn.put(sn, true); } return statusVO; } /** @@ -776,14 +815,13 @@ * 重启 */ public List<NewNovaStatusParam.NovaDTO> reboot(NewNovaStatusParam param) { System.out.println("ViplexCore Demo nvSetReBootTaskAsync(重启) begin... "); if (param.getNovaList() == null || param.getNovaList().size() == 0) { throw new BusinessException("重启设备不能为空 !"); } CountDownLatch countDownLatch = new CountDownLatch(1); param.getNovaList().forEach(newNova -> { logout(newNova.getSn(), 0); // logout(newNova.getSn(), 0); StatusVO login = login(newNova.getSn(), 1); if (login.getStatusCode() != 0) { countDownLatch.countDown(); ximon-admin/src/main/java/com/sandu/ximon/admin/newnova/vo/StatusVO.java
@@ -9,6 +9,8 @@ @Data public class StatusVO { public StatusVO(int statusCode) { this.statusCode = statusCode; } @@ -19,4 +21,6 @@ private String statusData; private String sn; } ximon-admin/src/main/java/com/sandu/ximon/admin/service/AirDataService.java
@@ -161,7 +161,7 @@ code = baseMapper.getCodeByPoleId(poleId, null); } A5AtmosphereHeartbeatReportInnerFrame.HeartBeatDataPackage heartBeatDataPackage = RedisUtils.getBean().get(AtmoFunctionCode.AIR_HEARTBEAT.getCode() + code, A5AtmosphereHeartbeatReportInnerFrame.HeartBeatDataPackage.class); = RedisUtils.getBean().get(AtmoFunctionCode.AIR_HEARTBEAT_NONG_GENG.getCode() + code, A5AtmosphereHeartbeatReportInnerFrame.HeartBeatDataPackage.class); if (heartBeatDataPackage == null) { return null; } ximon-admin/src/main/java/com/sandu/ximon/admin/service/PoleBindingService.java
@@ -37,6 +37,9 @@ @Transactional(rollbackFor = Exception.class) public boolean bindPole(Long poleId, PoleBindingParam param) { Integer deviceType = param.getDeviceType(); if (deviceType == 1){ deviceType = 12; } int size = 0; switch (deviceType.toString()) { ximon-admin/src/main/java/com/sandu/ximon/admin/service/PoleService.java
@@ -329,42 +329,42 @@ }).start(); //摄像头 List<MonitorBo> monitorBos = SpringContextHolder.getBean(MonitorService.class).listMonitorOnHome(); new Thread(new Runnable() { @Override public void run() { AtomicInteger onLine = new AtomicInteger(0); AtomicInteger offLine = new AtomicInteger(0); DeviceOnLineCountVO Monitor = new DeviceOnLineCountVO(); monitorBos.forEach( device -> { String s = redisUtils.get(DeviceRedisKey.MONITOR + device.getDeviceSerial()); if (s != null) { RedisDeviceStatus redisDeviceStatus = JSON.parseObject(s, RedisDeviceStatus.class); if (redisDeviceStatus.getStatus() == 0) { //在线 onLine.getAndIncrement(); } else { //离线 offLine.getAndIncrement(); } } else { offLine.getAndIncrement(); } } ); Monitor.setTotalCount(monitorBos.size()); Monitor.setOnlineCount(onLine.get()); Monitor.setOfflineCount(offLine.get()); onLineCountVO.setMonitor(Monitor); System.out.println("摄像头执行时间: " + LocalDateTime.now()); countDownLatchUtil.countDown(str); } }).start(); // List<MonitorBo> monitorBos = SpringContextHolder.getBean(MonitorService.class).listMonitorOnHome(); // new Thread(new Runnable() { // @Override // public void run() { // // AtomicInteger onLine = new AtomicInteger(0); // AtomicInteger offLine = new AtomicInteger(0); // // DeviceOnLineCountVO Monitor = new DeviceOnLineCountVO(); // monitorBos.forEach( // device -> { // String s = redisUtils.get(DeviceRedisKey.MONITOR + device.getDeviceSerial()); // if (s != null) { // RedisDeviceStatus redisDeviceStatus = JSON.parseObject(s, RedisDeviceStatus.class); // if (redisDeviceStatus.getStatus() == 0) { // //在线 // onLine.getAndIncrement(); // } else { // //离线 // offLine.getAndIncrement(); // } // } else { // offLine.getAndIncrement(); // } // } // ); // // Monitor.setTotalCount(monitorBos.size()); // Monitor.setOnlineCount(onLine.get()); // Monitor.setOfflineCount(offLine.get()); // // onLineCountVO.setMonitor(Monitor); // System.out.println("摄像头执行时间: " + LocalDateTime.now()); // countDownLatchUtil.countDown(str); // } // }).start(); //单灯 @@ -416,49 +416,49 @@ //充电桩 List<C3ChargingBo> c3mChargings = SpringContextHolder.getBean(C3ChargingService.class).getC3ChargingList(); new Thread(new Runnable() { @Override public void run() { AtomicInteger onLine = new AtomicInteger(0); AtomicInteger offLine = new AtomicInteger(0); AtomicInteger error = new AtomicInteger(0); DeviceOnLineCountVO c3m = new DeviceOnLineCountVO(); c3mChargings.forEach( device -> { String s = redisUtils.get(C3mRedisConstant.C3_STATUS.getCode() + device.getC3Mac()); RedisDeviceStatus redisDeviceStatus = new RedisDeviceStatus(); redisDeviceStatus.setDeviceId(device.getC3Id().toString()); if (s != null) { A5C3HeartbeatReportInnerFrame.HeartBeatDataPackage heartBeatDataPackage = JSON.parseObject(s, A5C3HeartbeatReportInnerFrame.HeartBeatDataPackage.class); // 充电桩口状态位 1.空闲 2.充电中 3.充电中断,等待服务器确认 4.充电结束,等待服务器确认 5.有故障 6.与充电桩对接中 if ("5".equals(heartBeatDataPackage.getStatusBit())) { //故障 onLine.getAndIncrement(); error.getAndIncrement(); } else { //在线 onLine.getAndIncrement(); } } else { //离线 offLine.getAndIncrement(); } } ); c3m.setTotalCount(c3mChargings.size()); c3m.setOnlineCount(onLine.get()); c3m.setOfflineCount(offLine.get()); c3m.setErrorCount(error.get()); onLineCountVO.setC3m(c3m); System.out.println("充电桩执行时间: " + LocalDateTime.now()); countDownLatchUtil.countDown(str); } }).start(); // List<C3ChargingBo> c3mChargings = SpringContextHolder.getBean(C3ChargingService.class).getC3ChargingList(); // new Thread(new Runnable() { // @Override // public void run() { // AtomicInteger onLine = new AtomicInteger(0); // AtomicInteger offLine = new AtomicInteger(0); // AtomicInteger error = new AtomicInteger(0); // // // DeviceOnLineCountVO c3m = new DeviceOnLineCountVO(); // c3mChargings.forEach( // device -> { // String s = redisUtils.get(C3mRedisConstant.C3_STATUS.getCode() + device.getC3Mac()); // RedisDeviceStatus redisDeviceStatus = new RedisDeviceStatus(); // redisDeviceStatus.setDeviceId(device.getC3Id().toString()); // if (s != null) { // A5C3HeartbeatReportInnerFrame.HeartBeatDataPackage heartBeatDataPackage = JSON.parseObject(s, A5C3HeartbeatReportInnerFrame.HeartBeatDataPackage.class); // // 充电桩口状态位 1.空闲 2.充电中 3.充电中断,等待服务器确认 4.充电结束,等待服务器确认 5.有故障 6.与充电桩对接中 // if ("5".equals(heartBeatDataPackage.getStatusBit())) { // //故障 // onLine.getAndIncrement(); // error.getAndIncrement(); // } else { // //在线 // onLine.getAndIncrement(); // } // } else { // //离线 // offLine.getAndIncrement(); // } // } // ); // // c3m.setTotalCount(c3mChargings.size()); // c3m.setOnlineCount(onLine.get()); // c3m.setOfflineCount(offLine.get()); // c3m.setErrorCount(error.get()); // // onLineCountVO.setC3m(c3m); // System.out.println("充电桩执行时间: " + LocalDateTime.now()); // countDownLatchUtil.countDown(str); // } // }).start(); //大气 @@ -509,76 +509,76 @@ // result.put("AirEquipmentNongGengTotalCount", airEquipmentNongGengBos.size()); //水质 List<WaterQualityEquipmentBo> waterQualityEquipments = SpringContextHolder.getBean(WaterQualityEquipmentService.class).listWaterQualityEquipmentByKeyword(null, null); new Thread(new Runnable() { @Override public void run() { DeviceOnLineCountVO water = new DeviceOnLineCountVO(); water.setTotalCount(waterQualityEquipments.size()); water.setOnlineCount(waterQualityEquipments.size()); water.setOfflineCount(0); water.setErrorCount(0); onLineCountVO.setWaterEquipment(water); System.out.println("水质执行时间: " + LocalDateTime.now()); countDownLatchUtil.countDown(str); } }).start(); // List<WaterQualityEquipmentBo> waterQualityEquipments = SpringContextHolder.getBean(WaterQualityEquipmentService.class).listWaterQualityEquipmentByKeyword(null, null); // new Thread(new Runnable() { // @Override // public void run() { // // DeviceOnLineCountVO water = new DeviceOnLineCountVO(); // water.setTotalCount(waterQualityEquipments.size()); // water.setOnlineCount(waterQualityEquipments.size()); // water.setOfflineCount(0); // water.setErrorCount(0); // onLineCountVO.setWaterEquipment(water); // System.out.println("水质执行时间: " + LocalDateTime.now()); // countDownLatchUtil.countDown(str); // } // }).start(); //灯杆倾斜 List<LightPoleHeelingEquipmentBo> lightPoleHeelingEquipmentBos = SpringContextHolder.getBean(LightPoleHeelingEquipmentService.class).LightPoleHeelingEquipmentListOnHome(); new Thread(new Runnable() { @Override public void run() { DeviceOnLineCountVO PoleHeeling = new DeviceOnLineCountVO(); PoleHeeling.setTotalCount(lightPoleHeelingEquipmentBos.size()); PoleHeeling.setOnlineCount(lightPoleHeelingEquipmentBos.size()); PoleHeeling.setOfflineCount(0); PoleHeeling.setErrorCount(0); onLineCountVO.setLightPoleHeeling(PoleHeeling); System.out.println("灯杆倾斜执行时间: " + LocalDateTime.now()); countDownLatchUtil.countDown(str); } }).start(); // List<LightPoleHeelingEquipmentBo> lightPoleHeelingEquipmentBos = SpringContextHolder.getBean(LightPoleHeelingEquipmentService.class).LightPoleHeelingEquipmentListOnHome(); // new Thread(new Runnable() { // @Override // public void run() { // // DeviceOnLineCountVO PoleHeeling = new DeviceOnLineCountVO(); // PoleHeeling.setTotalCount(lightPoleHeelingEquipmentBos.size()); // PoleHeeling.setOnlineCount(lightPoleHeelingEquipmentBos.size()); // PoleHeeling.setOfflineCount(0); // PoleHeeling.setErrorCount(0); // onLineCountVO.setLightPoleHeeling(PoleHeeling); // System.out.println("灯杆倾斜执行时间: " + LocalDateTime.now()); // countDownLatchUtil.countDown(str); // } // }).start(); //熙讯 List<PoleLightemitEntity> xiXuns = SpringContextHolder.getBean(PoleLightemitService.class).listLedOnHome(); new Thread(new Runnable() { @Override public void run() { AtomicInteger onLine = new AtomicInteger(0); AtomicInteger offLine = new AtomicInteger(0); DeviceOnLineCountVO xixunLed = new DeviceOnLineCountVO(); xiXuns.forEach( device -> { String s = redisUtils.get(DeviceRedisKey.XIXUN + device.getLightemitControlCode()); if (s != null) { RedisDeviceStatus redisDeviceStatus = JSON.parseObject(s, RedisDeviceStatus.class); if (redisDeviceStatus.getStatus() == 0) { //在线 onLine.getAndIncrement(); } else { //离线 offLine.getAndIncrement(); } } else { offLine.getAndIncrement(); } } ); xixunLed.setTotalCount(xiXuns.size()); xixunLed.setOnlineCount(onLine.get()); xixunLed.setOfflineCount(offLine.get()); onLineCountVO.setLedXiXun(xixunLed); System.out.println("熙汛执行时间: " + LocalDateTime.now()); countDownLatchUtil.countDown(str); } }).start(); // List<PoleLightemitEntity> xiXuns = SpringContextHolder.getBean(PoleLightemitService.class).listLedOnHome(); // new Thread(new Runnable() { // @Override // public void run() { // AtomicInteger onLine = new AtomicInteger(0); // AtomicInteger offLine = new AtomicInteger(0); // // DeviceOnLineCountVO xixunLed = new DeviceOnLineCountVO(); // xiXuns.forEach( // device -> { // String s = redisUtils.get(DeviceRedisKey.XIXUN + device.getLightemitControlCode()); // if (s != null) { // RedisDeviceStatus redisDeviceStatus = JSON.parseObject(s, RedisDeviceStatus.class); // if (redisDeviceStatus.getStatus() == 0) { // //在线 // onLine.getAndIncrement(); // } else { // //离线 // offLine.getAndIncrement(); // } // } else { // offLine.getAndIncrement(); // } // } // ); // // xixunLed.setTotalCount(xiXuns.size()); // xixunLed.setOnlineCount(onLine.get()); // xixunLed.setOfflineCount(offLine.get()); // // onLineCountVO.setLedXiXun(xixunLed); // System.out.println("熙汛执行时间: " + LocalDateTime.now()); // countDownLatchUtil.countDown(str); // } // }).start(); try { countDownLatch.await(20000, TimeUnit.MILLISECONDS); countDownLatchUtil.remove(str); @@ -649,7 +649,7 @@ setCount(PoleResult); CommonPage commonPage = ListPagingUtils.pages(PoleResult, pageNo, pageSize); // return commonPage; } @@ -1345,24 +1345,24 @@ //获取一个7位随机数 String str = RandomStringUtils.randomAlphanumeric(7); countDownLatchUtil.push(str, countDownLatch); new Thread(new Runnable() { @Override public void run() { SpringContextHolder.getBean(IpVolumeService.class).setCacheData(); countDownLatchUtil.countDown(str); System.out.println("音柱执行"); // new Thread(new Runnable() { // @Override // public void run() { // SpringContextHolder.getBean(IpVolumeService.class).setCacheData(); // countDownLatchUtil.countDown(str); // System.out.println("音柱执行"); // // } // }).start(); } }).start(); new Thread(new Runnable() { @Override public void run() { SpringContextHolder.getBean(MonitorService.class).setCacheData(); countDownLatchUtil.countDown(str); System.out.println("摄像头执行"); } }).start(); // new Thread(new Runnable() { // @Override // public void run() { // SpringContextHolder.getBean(MonitorService.class).setCacheData(); // countDownLatchUtil.countDown(str); // System.out.println("摄像头执行"); // } // }).start(); new Thread(new Runnable() { @Override public void run() { @@ -1387,14 +1387,14 @@ System.out.println("大气执行"); } }).start(); new Thread(new Runnable() { @Override public void run() { SpringContextHolder.getBean(PoleLightemitService.class).setCacheData(); countDownLatchUtil.countDown(str); System.out.println("熙汛执行"); } }).start(); // new Thread(new Runnable() { // @Override // public void run() { // SpringContextHolder.getBean(PoleLightemitService.class).setCacheData(); // countDownLatchUtil.countDown(str); // System.out.println("熙汛执行"); // } // }).start(); new Thread(new Runnable() { @Override public void run() { @@ -1403,14 +1403,14 @@ System.out.println("诺瓦执行"); //todo 诺瓦故障暂无 } }).start(); new Thread(new Runnable() { @Override public void run() { SpringContextHolder.getBean(PoleLightemitService.class).setCacheData(); countDownLatchUtil.countDown(str); System.out.println("熙汛执行"); } }).start(); // new Thread(new Runnable() { // @Override // public void run() { // SpringContextHolder.getBean(PoleLightemitService.class).setCacheData(); // countDownLatchUtil.countDown(str); // System.out.println("熙汛执行"); // } // }).start(); try {