2021与蓝度共同重构项目,服务端
liuhaonan
2022-09-28 68ea052c01819e216c17ce292d9fcd590f91472f
changes
已修改5个文件
124 ■■■■■ 文件已修改
ximon-admin/src/main/java/com/sandu/ximon/admin/controller/ErrorMsgController.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ximon-admin/src/main/java/com/sandu/ximon/admin/security/SecurityUtils.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ximon-admin/src/main/java/com/sandu/ximon/admin/service/C3ChargingService.java 50 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ximon-admin/src/main/java/com/sandu/ximon/admin/service/MonitorService.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ximon-admin/src/main/java/com/sandu/ximon/admin/service/PoleService.java 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ximon-admin/src/main/java/com/sandu/ximon/admin/controller/ErrorMsgController.java
@@ -5,11 +5,9 @@
import com.sandu.common.security.annotation.AnonymousAccess;
import com.sandu.common.util.ResponseUtil;
import com.sandu.ximon.admin.service.ErrorMsgService;
import com.sandu.ximon.admin.utils.RedisUtils;
import lombok.AllArgsConstructor;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
/**
@@ -26,14 +24,12 @@
    @AnonymousAccess
    @GetMapping("/lightListMsg")
    public ResponseVO<Object> lightListMsg(BaseConditionVO conditionVO) {
        return ResponseUtil.success(errorMsgService.lightListMsg(conditionVO));
    }
    @AnonymousAccess
    @GetMapping("/C3ListMsg")
    public ResponseVO<Object> C3ListMsg(BaseConditionVO conditionVO) {
        return ResponseUtil.success(errorMsgService.C3ListMsg(conditionVO));
    }
ximon-admin/src/main/java/com/sandu/ximon/admin/security/SecurityUtils.java
@@ -82,7 +82,7 @@
        if (loginUserInfo == null) {
            return null;
        }
        if (!AdministratorEnums.ADMIN.getCode().equals(loginUserInfo.getAdministratorType())) {
        if (AdministratorEnums.NORMAL.getCode().equals(loginUserInfo.getAdministratorType())) {
            return loginUserInfo.getUserId();
        }
        return null;
ximon-admin/src/main/java/com/sandu/ximon/admin/service/C3ChargingService.java
@@ -1169,29 +1169,29 @@
    /**
     * 向Redis中存入设备状态
     */
    public void setCacheData() {
        list().forEach(
                device -> {
                    RedisDeviceStatus deviceStatus = new RedisDeviceStatus();
                    deviceStatus.setDeviceId(device.getC3Id().toString());
                    if (device != null) {
                        A5C3HeartbeatReportInnerFrame.HeartBeatDataPackage beatDataPackage = ReadTheHeartbeatPackage(device.getC3Id(), false);
                        if (beatDataPackage != null) {
                            //在线状态 1.空闲 2.充电中 3.充电中断,等待服务器确认 4.充电结束,等待服务器确认 5.有故障 6.与充电桩对接中
                            if (Integer.valueOf(beatDataPackage.getStatusBit()) == 5) {
                                deviceStatus.setStatus(2);
                            } else {
                                deviceStatus.setStatus(0);
                            }
                        } else {
                            deviceStatus.setStatus(1);
                        }
                    }
                    redisUtils.set(DeviceRedisKey.C3M + device.getC3Id(), JSON.toJSONString(deviceStatus));
//                    redisUtils.delete(DeviceRedisKey.C3M + device.getC3Id());
                }
        );
    }
//    public void setCacheData() {
//        list().forEach(
//                device -> {
//                    RedisDeviceStatus deviceStatus = new RedisDeviceStatus();
//                    deviceStatus.setDeviceId(device.getC3Id().toString());
//                    if (device != null) {
//                        A5C3HeartbeatReportInnerFrame.HeartBeatDataPackage beatDataPackage = ReadTheHeartbeatPackage(device.getC3Id(), false);
//                        if (beatDataPackage != null) {
//                            //在线状态 1.空闲 2.充电中 3.充电中断,等待服务器确认 4.充电结束,等待服务器确认 5.有故障 6.与充电桩对接中
//                            if (Integer.valueOf(beatDataPackage.getStatusBit()) == 5) {
//                                deviceStatus.setStatus(2);
//                            } else {
//                                deviceStatus.setStatus(0);
//                            }
//
//                        } else {
//                            deviceStatus.setStatus(1);
//                        }
//                    }
//                    redisUtils.set(DeviceRedisKey.C3M + device.getC3Id(), JSON.toJSONString(deviceStatus));
////                    redisUtils.delete(DeviceRedisKey.C3M + device.getC3Id());
//                }
//        );
//
//    }
}
ximon-admin/src/main/java/com/sandu/ximon/admin/service/MonitorService.java
@@ -26,6 +26,7 @@
import com.sandu.ximon.dao.enums.PoleBindingEnums;
import com.sandu.ximon.dao.mapper.MonitorMapper;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
@@ -36,6 +37,7 @@
@Service
@AllArgsConstructor
@Slf4j
public class MonitorService extends BaseServiceImpl<MonitorMapper, Monitor> {
    private final MonitorMapper monitorMapper;
    //萤石云AppKey
@@ -208,7 +210,17 @@
        paramMap.put("appKey", AppKey);
        paramMap.put("appSecret", Secret);
        String s = HttpUtil.post(YSY_URL + ACCESSTOKEN_URL, paramMap);
        if (!s.startsWith("{") || !s.endsWith("}")) {
            log.error("获取摄像头token失败,格式有误!");
        }
        YSY_AccessTokenDto accessTokenDto = JSON.parseObject(s, YSY_AccessTokenDto.class);
        //二次获取
        if(accessTokenDto == null){
            log.error("获取摄像头token失败,格式有误!");
            s = HttpUtil.post(YSY_URL + ACCESSTOKEN_URL, paramMap);
            accessTokenDto = JSON.parseObject(s, YSY_AccessTokenDto.class);
        }
        return accessTokenDto.getData().getAccessToken();
    }
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,20 @@
        //单灯
        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 +396,7 @@
                                    offLine.getAndIncrement();
                                }
                            } else {
                                error.getAndIncrement();
                                offLine.getAndIncrement();
                            }
                        }
                );
@@ -420,20 +426,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 +579,7 @@
            }
        }).start();
        try {
            countDownLatch.await(12000, TimeUnit.MILLISECONDS);
            countDownLatch.await(20000, TimeUnit.MILLISECONDS);
            countDownLatchUtil.remove(str);
        } catch (InterruptedException e) {
            throw new RuntimeException(e);
@@ -1361,14 +1371,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() {