2021与蓝度共同重构项目,服务端
liuhaonan
2022-10-09 2e9a6554d676f5c696590b39258bd2644a8f2dc6
ximon-admin/src/main/java/com/sandu/ximon/admin/service/PoleService.java
@@ -19,16 +19,14 @@
import com.sandu.ximon.admin.manager.iot.frame.FrameBuilder;
import com.sandu.ximon.admin.manager.iot.frame.IRequestFrame;
import com.sandu.ximon.admin.manager.iot.frame.inner.report.A5AtmosphereHeartbeatReportInnerFrame;
import com.sandu.ximon.admin.manager.iot.frame.inner.report.A5C3HeartbeatReportInnerFrame;
import com.sandu.ximon.admin.manager.iot.frame.inner.request.A1TernaryCodeReqInnerFrame;
import com.sandu.ximon.admin.manager.iot.frame.inner.request.A5LightResetReqInnerFrame;
import com.sandu.ximon.admin.manager.iot.frame.inner.request.EmptyRequestInnerFrame;
import com.sandu.ximon.admin.manager.iot.frame.inner.response.A1DeviceMacRespInnerFrame;
import com.sandu.ximon.admin.manager.iot.frame.inner.response.A1TernaryCodeRespInnerFrame;
import com.sandu.ximon.admin.manager.iot.rrpc.dto.CommonFrame;
import com.sandu.ximon.admin.manager.iot.rrpc.enums.A1OrderEnum;
import com.sandu.ximon.admin.manager.iot.rrpc.enums.A2OrderEnum;
import com.sandu.ximon.admin.manager.iot.rrpc.enums.A5OrderEnum;
import com.sandu.ximon.admin.manager.iot.rrpc.enums.DeviceStateEnum;
import com.sandu.ximon.admin.manager.iot.rrpc.enums.*;
import com.sandu.ximon.admin.manager.iot.rrpc.mainboard.MainBoardInvokeSyncService;
import com.sandu.ximon.admin.param.PoleBindingParam;
import com.sandu.ximon.admin.param.PoleParam;
@@ -261,7 +259,7 @@
                DeviceOnLineCountVO ledNova = new DeviceOnLineCountVO();
                ledPlayerEntities.forEach(
                        Volume -> {
                            String s = redisUtils.get(DeviceRedisKey.IP_BROADCAST + Volume.getId());
                            String s = redisUtils.get(DeviceRedisKey.NOVA + Volume.getId());
                            if (s != null) {
                                RedisDeviceStatus redisDeviceStatus = JSON.parseObject(s, RedisDeviceStatus.class);
                                if (redisDeviceStatus.getStatus() == 0) {
@@ -368,12 +366,19 @@
        //单灯
        List<LightBo> lights = SpringContextHolder.getBean(LightService.class).listLightOnHome();
        BaseConditionVO baseConditionVO = new BaseConditionVO();
        baseConditionVO.setPageNo(1);
        baseConditionVO.setPageSize(999);
        System.out.println("单灯故障统计时间: " + LocalDateTime.now());
        CommonPage commonPage = SpringContextHolder.getBean(LightReportErrorService.class).queryErrorCode(baseConditionVO);
        System.out.println("单灯故障统计时间: " + LocalDateTime.now());
        new Thread(new Runnable() {
            @Override
            public void run() {
                AtomicInteger onLine = new AtomicInteger(0);
                AtomicInteger offLine = new AtomicInteger(0);
                AtomicInteger error = new AtomicInteger(0);
                AtomicInteger error = new AtomicInteger(commonPage.getList().size());
                DeviceOnLineCountVO light = new DeviceOnLineCountVO();
@@ -390,7 +395,7 @@
                                    offLine.getAndIncrement();
                                }
                            } else {
                                error.getAndIncrement();
                                offLine.getAndIncrement();
                            }
                        }
                );
@@ -420,20 +425,24 @@
                DeviceOnLineCountVO c3m = new DeviceOnLineCountVO();
                c3mChargings.forEach(
                        device -> {
                            String s = redisUtils.get(DeviceRedisKey.C3M + device.getC3Id());
//                            RedisUtils.getBean().set(C3mRedisConstant.C3_STATUS.getCode() + heartbeatReportInnerFrame.getHeartBeatDataPackage().getC3Mac()
//                                    , heartbeatReportInnerFrame.getHeartBeatDataPackage(), 300L);
                            String s = redisUtils.get(C3mRedisConstant.C3_STATUS.getCode() + device.getC3Mac());
                            RedisDeviceStatus redisDeviceStatus = new RedisDeviceStatus();
                            redisDeviceStatus.setDeviceId(device.getC3Id().toString());
                            if (s != null) {
                                RedisDeviceStatus redisDeviceStatus = JSON.parseObject(s, RedisDeviceStatus.class);
                                if (redisDeviceStatus.getStatus() == 0) {
                                A5C3HeartbeatReportInnerFrame.HeartBeatDataPackage heartBeatDataPackage = JSON.parseObject(s, A5C3HeartbeatReportInnerFrame.HeartBeatDataPackage.class);
                                if ("5".equals(heartBeatDataPackage.getStatusBit())) {
                                    //在线
                                    onLine.getAndIncrement();
                                } else if (redisDeviceStatus.getStatus() == 1) {
                                    //离线
                                    offLine.getAndIncrement();
                                } else {
                                    //故障
                                    onLine.getAndIncrement();
                                    error.getAndIncrement();
                                }
                            } else {
                                error.getAndIncrement();
                                //离线
                                offLine.getAndIncrement();
                            }
                        }
                );
@@ -569,7 +578,7 @@
            }
        }).start();
        try {
            countDownLatch.await(12000, TimeUnit.MILLISECONDS);
            countDownLatch.await(20000, TimeUnit.MILLISECONDS);
            countDownLatchUtil.remove(str);
        } catch (InterruptedException e) {
            throw new RuntimeException(e);
@@ -1101,7 +1110,11 @@
            if (pole == null) {
                throw new BusinessException("灯杆不存在");
            }
            //一级客户   -1   userId
            //二级客户   上级客户id  userId
            pole.setClientId(-1L);
            pole.setUserId(-1L);
            r = updateById(pole);
            if (!r) {
@@ -1329,7 +1342,7 @@
        }
        //设置触发条件    存入Redis  15分钟超时   15分钟内再次调用直接返回
        redisUtils.set("redisStatusKeyTimeout", System.currentTimeMillis(), 60*15);
        redisUtils.set("redisStatusKeyTimeout", System.currentTimeMillis(), 60 * 15);
        CountDownLatch countDownLatch = new CountDownLatch(7);//todo
        //获取一个7位随机数
@@ -1361,14 +1374,14 @@
                System.out.println("单灯执行");
            }
        }).start();
        new Thread(new Runnable() {
            @Override
            public void run() {
                SpringContextHolder.getBean(C3ChargingService.class).setCacheData();
                countDownLatchUtil.countDown(str);
                System.out.println("充电桩执行");
            }
        }).start();
//        new Thread(new Runnable() {
//            @Override
//            public void run() {
//                SpringContextHolder.getBean(C3ChargingService.class).setCacheData();
//                countDownLatchUtil.countDown(str);
//                System.out.println("充电桩执行");
//            }
//        }).start();
        new Thread(new Runnable() {
            @Override
            public void run() {