| | |
| | | import java.util.concurrent.atomic.AtomicInteger; |
| | | import java.util.stream.Collectors; |
| | | |
| | | |
| | | /** |
| | | * 灯杆相关 |
| | | * |
| | |
| | | /** |
| | | * 删除灯杆 |
| | | */ |
| | | public boolean deletePole(Long poleId) { |
| | | Pole pole = getById(poleId); |
| | | if (pole == null) { |
| | | public boolean deletePole(List<Long> poleIds) { |
| | | List<Pole> poles = listByIds(poleIds); |
| | | if (poles.isEmpty()) { |
| | | throw new BusinessException("未找到该灯杆"); |
| | | } |
| | | // 删除灯杆绑定关系 |
| | | poleBindingService.remove(Wrappers.<PoleBinding>lambdaQuery().eq(PoleBinding::getPoleId, poleId)); |
| | | poleBindingService.remove(Wrappers.<PoleBinding>lambdaQuery().in(PoleBinding::getPoleId, poleIds)); |
| | | SpringContextHolder.getBean(LightTaskPoleRelationService.class) |
| | | .remove(Wrappers.lambdaQuery(LightTaskPoleRelation.class).in(LightTaskPoleRelation::getPoleId, poleIds)); |
| | | |
| | | /** |
| | | * 删除灯杆日志记录开始 |
| | | */ |
| | | String content = "{灯杆Code:" + pole.getDeviceCode() + ", 灯杆名称:" + pole.getPoleName() + " }"; |
| | | String content = "{灯杆id:" + poles + " }"; |
| | | |
| | | StoreOperationRecordsUtils.storeOperationData(null, null, "删除灯杆", content); |
| | | /** |
| | | * 删除灯杆日志记录结束 |
| | | */ |
| | | return removeById(poleId); |
| | | return removeByIds(poleIds); |
| | | } |
| | | |
| | | |
| | |
| | | }).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(); |
| | | |
| | | |
| | | //单灯 |
| | |
| | | |
| | | |
| | | //充电桩 |
| | | 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(); |
| | | |
| | | |
| | | //大气 |
| | |
| | | // 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); |
| | |
| | | setCount(PoleResult); |
| | | |
| | | CommonPage commonPage = ListPagingUtils.pages(PoleResult, pageNo, pageSize); |
| | | |
| | | // |
| | | return commonPage; |
| | | } |
| | | |
| | |
| | | // } |
| | | // return list; |
| | | // } |
| | | |
| | | public List<Pole> isTrue(List<Pole> list, PoleStatesParam param) { |
| | | //实体灯杆 |
| | | List<Pole> isTrue = new ArrayList<>(); |
| | |
| | | * |
| | | * @return 是否成功 |
| | | */ |
| | | public boolean unBindPole(Long poleId, String deviceCode) { |
| | | return poleBindingService.unBindPole(poleId, deviceCode); |
| | | public boolean unBindPole(Long poleId, String deviceCode, Integer deviceType) { |
| | | return poleBindingService.unBindPole(poleId, deviceCode, deviceType); |
| | | } |
| | | |
| | | |
| | |
| | | * @return 设备状态列表 |
| | | */ |
| | | public List<DeviceStatus> listStatusByDeviceCode(ArrayList<String> deviceCodeList) { |
| | | // 最大只能查50个 |
| | | // 最大只能查50个 |
| | | List<List<String>> split = CollectionUtil.split(deviceCodeList, 50); |
| | | List<DeviceStatus> statusList = new ArrayList<>(); |
| | | for (List<String> list : split) { |
| | |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | return statusList; |
| | | } |
| | | |
| | |
| | | Long poleId = param.getPoleId(); |
| | | Pole pole = getById(poleId); |
| | | PoleBinding air = poleBindingService.getOne(Wrappers.lambdaQuery(PoleBinding.class).eq(PoleBinding::getPoleId, poleId).eq(PoleBinding::getDeviceType, 3)); |
| | | PoleBinding nova = poleBindingService.getOne(Wrappers.lambdaQuery(PoleBinding.class).eq(PoleBinding::getPoleId, poleId).eq(PoleBinding::getDeviceType, 1)); |
| | | LedPlayerEntity LED = SpringContextHolder.getBean(LedPlayerEntityService.class).getOne(Wrappers.lambdaQuery(LedPlayerEntity.class).eq(LedPlayerEntity::getSn, nova.getDeviceCode())); |
| | | if (pole == null) { |
| | | throw new BusinessException("灯杆不存在"); |
| | | } |
| | | if (air == null) { |
| | | throw new BusinessException("未绑定大气监测设备"); |
| | | } |
| | | PoleBinding nova = poleBindingService.getOne(Wrappers.lambdaQuery(PoleBinding.class).eq(PoleBinding::getPoleId, poleId).eq(PoleBinding::getDeviceType, 1)); |
| | | if (nova == null) { |
| | | throw new BusinessException("未绑定nova设备"); |
| | | } |
| | | LedPlayerEntity LED = SpringContextHolder.getBean(LedPlayerEntityService.class).getOne(Wrappers.lambdaQuery(LedPlayerEntity.class).eq(LedPlayerEntity::getSn, nova.getDeviceCode())); |
| | | if (pole == null) { |
| | | throw new BusinessException("灯杆不存在"); |
| | | } |
| | | //获取大气监测数据 |
| | | A5AtmosphereHeartbeatReportInnerFrame.HeartBeatDataPackage data = SpringContextHolder.getBean(AirDataService.class).getDataByPoleid(poleId); |
| | |
| | | //设置触发条件 存入Redis 15分钟超时 15分钟内再次调用直接返回 |
| | | redisUtils.set("redisStatusKeyTimeout", System.currentTimeMillis(), 60 * 15); |
| | | |
| | | CountDownLatch countDownLatch = new CountDownLatch(7);//todo |
| | | CountDownLatch countDownLatch = new CountDownLatch(7);//todo 几个设备设置为几 |
| | | //获取一个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() { |
| | |
| | | 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() { |
| | |
| | | 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 { |
| | |
| | | |
| | | } |
| | | |
| | | } |
| | | } |