2021与蓝度共同重构项目,服务端
Van333
2022-12-15 5e94332935da62448c17f89a807acf46a5ae3e75
ximon-admin/src/main/java/com/sandu/ximon/admin/service/PoleService.java
@@ -60,6 +60,7 @@
import java.util.concurrent.atomic.AtomicInteger;
import java.util.stream.Collectors;
/**
 * 灯杆相关
 *
@@ -129,24 +130,26 @@
    /**
     * 删除灯杆
     */
    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);
    }
@@ -326,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();
        //单灯
@@ -413,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();
        //大气
@@ -506,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);
@@ -646,7 +649,7 @@
        setCount(PoleResult);
        CommonPage commonPage = ListPagingUtils.pages(PoleResult, pageNo, pageSize);
//
        return commonPage;
    }
@@ -745,7 +748,6 @@
//        }
//        return list;
//    }
    public List<Pole> isTrue(List<Pole> list, PoleStatesParam param) {
        //实体灯杆
        List<Pole> isTrue = new ArrayList<>();
@@ -864,8 +866,8 @@
     *
     * @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);
    }
@@ -1049,7 +1051,7 @@
     * @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) {
@@ -1063,6 +1065,8 @@
                }
            }
        }
        return statusList;
    }
@@ -1337,28 +1341,28 @@
        //设置触发条件    存入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() {
@@ -1383,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() {
@@ -1399,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 {
@@ -1418,4 +1422,4 @@
    }
}
}