From dda268997ca8f8a364f7c19b45d7a43a50a98efe Mon Sep 17 00:00:00 2001
From: liuhaonan <31457034@qq.com>
Date: 星期二, 25 十月 2022 18:00:11 +0800
Subject: [PATCH] changes

---
 ximon-admin/src/main/java/com/sandu/ximon/admin/service/AirEquipmentService.java |  337 ++++++++++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 324 insertions(+), 13 deletions(-)

diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/service/AirEquipmentService.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/service/AirEquipmentService.java
index 2bb2a4b..8e5bb04 100644
--- a/ximon-admin/src/main/java/com/sandu/ximon/admin/service/AirEquipmentService.java
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/service/AirEquipmentService.java
@@ -1,23 +1,36 @@
 package com.sandu.ximon.admin.service;
 
-import cn.hutool.core.collection.CollUtil;
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.github.pagehelper.PageHelper;
 import com.sandu.common.execption.BusinessException;
 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.A5Frame;
+import com.sandu.ximon.admin.manager.iot.frame.inner.report.A5AtmosphereHeartBeatTimeReportInnerFrame;
+import com.sandu.ximon.admin.manager.iot.frame.inner.report.A5AtmosphereOperationReportInnerFrame;
+import com.sandu.ximon.admin.manager.iot.frame.inner.report.A5AtmosphereQuerySensorInfoReportInnerFrame;
+import com.sandu.ximon.admin.manager.iot.frame.inner.report.A5AtmosphereQueryVersionReportInnerFrame;
+import com.sandu.ximon.admin.manager.iot.frame.inner.request.*;
+import com.sandu.ximon.admin.manager.iot.rrpc.dto.CommonFrame;
+import com.sandu.ximon.admin.manager.iot.rrpc.enums.A5OrderEnum;
+import com.sandu.ximon.admin.manager.iot.rrpc.enums.AtmoFunctionCode;
+import com.sandu.ximon.admin.manager.iot.rrpc.mainboard.MainBoardInvokeSyncService;
+import com.sandu.ximon.admin.redis.DeviceRedisKey;
 import com.sandu.ximon.admin.security.SecurityUtils;
-import com.sandu.ximon.dao.bo.AirDataBo;
+import com.sandu.ximon.admin.utils.RedisUtils;
+import com.sandu.ximon.admin.utils.StoreOperationRecordsUtils;
+import com.sandu.ximon.admin.utils.StringUtil;
+import com.sandu.ximon.admin.vo.EquipmentInfomation;
+import com.sandu.ximon.admin.vo.RedisDeviceStatus;
 import com.sandu.ximon.dao.bo.AirEquipmentBo;
-import com.sandu.ximon.dao.domain.AirData;
 import com.sandu.ximon.dao.domain.AirEquipment;
-import com.sandu.ximon.dao.domain.Monitor;
-import com.sandu.ximon.dao.mapper.AirDataMapper;
 import com.sandu.ximon.dao.mapper.AirEquipmentMapper;
 import lombok.AllArgsConstructor;
 import org.springframework.stereotype.Service;
 
+import java.util.ArrayList;
 import java.util.List;
 
 @Service
@@ -25,19 +38,37 @@
 public class AirEquipmentService extends BaseServiceImpl<AirEquipmentMapper, AirEquipment> {
 
     private final AirEquipmentMapper airEquipmentMapper;
+    private final RedisUtils redisUtils;
 
 
     /**
-     * 妯$硦鏌ヨ
+     * 澶ф皵璁惧鍒楄〃妯$硦鏌ヨ
      */
     public List<AirEquipmentBo> listAirEquipmentByKeyword(BaseConditionVO baseConditionVO, String keyword) {
-        Long clientId = SecurityUtils.getClientId();
-        PageHelper.startPage(baseConditionVO.getPageNo(),baseConditionVO.getPageSize());
-        List<Long> listAirEquipmentId = airEquipmentMapper.listAirEquipmentId(keyword,clientId);
-        if(CollUtil.isEmpty(listAirEquipmentId)){
-            return CollUtil.newArrayList();
+        if (baseConditionVO != null) {
+            PageHelper.startPage(baseConditionVO.getPageNo(), baseConditionVO.getPageSize());
         }
-        List<AirEquipmentBo> airEquipmentBos = airEquipmentMapper.listAirEquipmentByIds(listAirEquipmentId);
+        List<AirEquipmentBo> airEquipmentBos;
+        if (SecurityUtils.getClientId() == null) {
+            airEquipmentBos = airEquipmentMapper.listAirEquipmentByIds(keyword, null);
+        } else {
+            airEquipmentBos = airEquipmentMapper.listAirEquipmentByIds(keyword, SecurityUtils.getUserId());
+        }
+
+        return airEquipmentBos;
+    }
+
+    /**
+     * 澶ф皵璁惧鍔e垪琛紙鐢ㄤ簬棣栭〉鏁版嵁缁熻锛�
+     */
+    public List<AirEquipmentBo> listAirEquipmentOnHome() {
+        List<AirEquipmentBo> airEquipmentBos;
+        if (SecurityUtils.getClientId() == null) {
+            airEquipmentBos = airEquipmentMapper.listAirEquipmentByIds(null, null);
+        } else {
+            airEquipmentBos = airEquipmentMapper.listAirEquipmentByIds(null, SecurityUtils.getUserId());
+        }
+
         return airEquipmentBos;
     }
 
@@ -48,8 +79,21 @@
      */
     public void addAirEquipment(AirEquipment airEquipment) {
         AirEquipment one = getOne(Wrappers.lambdaQuery(AirEquipment.class).eq(AirEquipment::getMac, airEquipment.getMac()));
+
         if (one == null) {
             save(airEquipment);
+            /**
+             * 娣诲姞澶ф皵璁惧 鏃ュ織璁板綍寮�濮�
+             */
+            List<String> listCode = new ArrayList<>(1);
+            listCode.add(airEquipment.getMac());
+            String content = "{ 璁惧id:" + airEquipment.getId() + "璁惧code锛�" + airEquipment.getMac() +
+                    "}";
+
+            StoreOperationRecordsUtils.storeOperationData(listCode, null, "娣诲姞澶ф皵璁惧", content);
+            /**
+             * 娣诲姞澶ф皵璁惧 鏃ュ織璁板綍缁撴潫
+             */
         }
     }
 
@@ -64,6 +108,273 @@
         if (airEquipment == null) {
             throw new BusinessException("鎵句笉鍒板ぇ姘旇澶囨暟鎹�");
         }
+        /**
+         * 鍒犻櫎澶ф皵璁惧 鏃ュ織璁板綍寮�濮�
+         */
+        List<String> listCode = new ArrayList<>(1);
+        listCode.add(airEquipment.getMac());
+        String content = "{璁惧code锛�" + airEquipment.getMac() + "}";
+
+        StoreOperationRecordsUtils.storeOperationData(listCode, null, "鍒犻櫎澶ф皵璁惧", content);
+        /**
+         * 鍒犻櫎澶ф皵璁惧 鏃ュ織璁板綍缁撴潫
+         */
         return removeById(Id);
     }
+
+    /**
+     * 鏍规嵁Mac澶ф皵璁惧鏁版嵁璇︽儏
+     */
+    public EquipmentInfomation getAirEquipmentInfo(String mac) {
+        EquipmentInfomation equipmentInfo = new EquipmentInfomation();
+        equipmentInfo.setEquipmentType("澶ф皵璁惧");
+        if (mac == null || mac.trim().length() == 0) {
+            return equipmentInfo;
+        }
+
+        if (RedisUtils.getBean().get(AtmoFunctionCode.AIR_HEARTBEAT_STATE.getCode() + mac) != null) {
+            equipmentInfo.setEquipmentState("鍦ㄧ嚎");
+        } else {
+            equipmentInfo.setEquipmentState("绂荤嚎");
+        }
+
+        AirEquipment one = getOne(Wrappers.lambdaQuery(AirEquipment.class).eq(AirEquipment::getMac, mac));
+        if (one != null) {
+            equipmentInfo.setEquipmentMac(mac);
+            equipmentInfo.setEquipmentCreateTime(one.getCreateTime());
+        }
+        return equipmentInfo;
+    }
+
+    /**
+     * 鏌ヨ澶ф皵璁惧蹇冭烦鍖呮椂闂�
+     */
+    public String QueryHeartBeatTime(String mac) {
+        if (StringUtil.strIsNullOrEmpty(mac)) {
+            throw new BusinessException("鐏潌mac鍙傛暟閿欒锛�");
+        }
+        AirEquipment airEquipment = SpringContextHolder.getBean(AirEquipmentService.class).
+                getOne(Wrappers.lambdaQuery(AirEquipment.class).eq(AirEquipment::getMac, mac).last("limit 1"));
+
+        if (airEquipment == null) {
+            throw new BusinessException("澶ф皵璁惧涓嶅瓨鍦紒");
+        }
+
+        AtmosphereQueryHeartBeatTimeReqInnerFrame atmosphereQueryHeartBeatTimeReqInnerFrame = new AtmosphereQueryHeartBeatTimeReqInnerFrame();
+        A5Frame a5Frame = new A5Frame(A5OrderEnum.REQUEST_ATMOSPHERE_DATA.getCode(), atmosphereQueryHeartBeatTimeReqInnerFrame);
+        System.out.println(a5Frame + "          --------a5Frame");
+        CommonFrame commonFrame = MainBoardInvokeSyncService.getInstance().sendRRPC(mac, a5Frame);
+        System.out.println(commonFrame + "         -----------commonFrame");
+
+//        FEA504000AFE020002FFFF014062EC          --------a5Frame
+//        FEA584000CFE020004FFFF003CB081260CCC1C105D         -----------commonFrame
+        A5AtmosphereHeartBeatTimeReportInnerFrame a5AtmosphereHeartBeatTimeReportInnerFrame
+                = new A5AtmosphereHeartBeatTimeReportInnerFrame().transformFrame(commonFrame.getPayload());
+
+        if (a5AtmosphereHeartBeatTimeReportInnerFrame != null && a5AtmosphereHeartBeatTimeReportInnerFrame.isValidate()) {
+            return "璇ュぇ姘旇澶囧績璺冲寘闂撮殧鏃堕棿涓猴細" + a5AtmosphereHeartBeatTimeReportInnerFrame.getIntervalTime() + "s";
+        } else {
+            throw new BusinessException("鏁版嵁鏍¢獙寮傚父锛�");
+        }
+    }
+
+    /**
+     * 璁剧疆澶ф皵璁惧蹇冭烦鍖呴棿闅旀椂闂�
+     *
+     * @param mac
+     * @param time
+     */
+    public String setHeartBeatTime(String mac, Integer time) {
+        if (StringUtil.strIsNullOrEmpty(mac)) {
+            throw new BusinessException("鐏潌mac鍙傛暟閿欒锛�");
+        }
+        if (time == null) {
+            throw new BusinessException("蹇冭烦鍖呴棿闅旀椂闂翠笉鑳戒负绌猴紒");
+        }
+
+        if (time < 30) {
+            throw new BusinessException("蹇冭烦鍖呴棿闅旀椂闂翠笉鑳藉皯浜�30s锛�");
+        }
+        AirEquipment airEquipment = SpringContextHolder.getBean(AirEquipmentService.class).
+                getOne(Wrappers.lambdaQuery(AirEquipment.class).eq(AirEquipment::getMac, mac).last("limit 1"));
+        if (airEquipment == null) {
+            throw new BusinessException("澶ф皵璁惧涓嶅瓨鍦紒");
+        }
+
+        AtmosphereSetHeartBeatTimeReqInnerFrame atmosphereSetHeartBeatTimeReqInnerFrame = new AtmosphereSetHeartBeatTimeReqInnerFrame(time);
+        A5Frame a5Frame = new A5Frame(A5OrderEnum.REQUEST_ATMOSPHERE_DATA.getCode(), atmosphereSetHeartBeatTimeReqInnerFrame);
+        System.out.println(a5Frame + "          --------a5Frame");
+        CommonFrame commonFrame = MainBoardInvokeSyncService.getInstance().sendRRPC(mac, a5Frame);
+        System.out.println(commonFrame + "         -----------commonFrame");
+
+        //FEA584000BFE110003FFFF00464116EC58FC0C8F
+        A5AtmosphereOperationReportInnerFrame a5AtmosphereOperationReportInnerFrame
+                = new A5AtmosphereOperationReportInnerFrame().transformFrame(commonFrame.getPayload());
+        if (a5AtmosphereOperationReportInnerFrame != null && a5AtmosphereOperationReportInnerFrame.isValidate()) {
+            return a5AtmosphereOperationReportInnerFrame.getState();
+        } else {
+            throw new BusinessException("鏁版嵁鏍¢獙寮傚父锛�");
+        }
+    }
+
+    /**
+     * 鏌ヨ浼犳劅鍣ㄦ暟閲�/鏁呴殰
+     *
+     * @param mac
+     * @return
+     */
+    public A5AtmosphereQuerySensorInfoReportInnerFrame.SensorInfoPackage QuerySensorInfo(String mac) {
+        if (StringUtil.strIsNullOrEmpty(mac)) {
+            throw new BusinessException("鐏潌mac鍙傛暟閿欒锛�");
+        }
+
+        AirEquipment airEquipment = SpringContextHolder.getBean(AirEquipmentService.class).
+                getOne(Wrappers.lambdaQuery(AirEquipment.class).eq(AirEquipment::getMac, mac).last("limit 1"));
+
+        if (airEquipment == null) {
+            throw new BusinessException("澶ф皵璁惧涓嶅瓨鍦紒");
+        }
+
+        AtmosphereQuerySensorInfoReqInnerFrame atmosphereQuerySensorInfoReqInnerFrame = new AtmosphereQuerySensorInfoReqInnerFrame();
+        A5Frame a5Frame = new A5Frame(A5OrderEnum.REQUEST_ATMOSPHERE_DATA.getCode(), atmosphereQuerySensorInfoReqInnerFrame);
+        System.out.println(a5Frame + "          --------a5Frame");
+        CommonFrame commonFrame = MainBoardInvokeSyncService.getInstance().sendRRPC(mac, a5Frame);
+        System.out.println(commonFrame + "         -----------commonFrame");
+
+        A5AtmosphereQuerySensorInfoReportInnerFrame atmosphereQuerySensorInfoReportInnerFrame
+                = new A5AtmosphereQuerySensorInfoReportInnerFrame().transformFrame(commonFrame.getPayload());
+
+        if (atmosphereQuerySensorInfoReportInnerFrame != null && atmosphereQuerySensorInfoReportInnerFrame.isValidate()) {
+            return atmosphereQuerySensorInfoReportInnerFrame.getSensorInfoPackage();
+        } else {
+            throw new BusinessException("鏁版嵁鏍¢獙寮傚父锛�");
+        }
+    }
+
+    /**
+     * 鏌ヨ杞‖浠剁増鏈�
+     *
+     * @param mac
+     * @return
+     */
+    public String QueryVersion(String mac) {
+        if (StringUtil.strIsNullOrEmpty(mac)) {
+            throw new BusinessException("鐏潌mac鍙傛暟閿欒锛�");
+        }
+        AirEquipment airEquipment = SpringContextHolder.getBean(AirEquipmentService.class).
+                getOne(Wrappers.lambdaQuery(AirEquipment.class).eq(AirEquipment::getMac, mac).last("limit 1"));
+
+        if (airEquipment == null) {
+            throw new BusinessException("澶ф皵璁惧涓嶅瓨鍦紒");
+        }
+
+        AtmosphereQueryVersionReqInnerFrame atmosphereQueryVersionReqInnerFrame = new AtmosphereQueryVersionReqInnerFrame();
+        A5Frame a5Frame = new A5Frame(A5OrderEnum.REQUEST_ATMOSPHERE_DATA.getCode(), atmosphereQueryVersionReqInnerFrame);
+        System.out.println(a5Frame + "          --------a5Frame");
+        CommonFrame commonFrame = MainBoardInvokeSyncService.getInstance().sendRRPC(mac, a5Frame);
+        System.out.println(commonFrame + "         -----------commonFrame");
+
+//        FEA504000AFE040002FFFF8E00974C          --------a5Frame
+//        FEA584000CFE040004FFFF0105954FAA7F1123C0CB         -----------commonFrame
+        A5AtmosphereQueryVersionReportInnerFrame a5AtmosphereQueryVersionReportInnerFrame =
+                new A5AtmosphereQueryVersionReportInnerFrame().transformFrame(commonFrame.getPayload());
+        if (a5AtmosphereQueryVersionReportInnerFrame != null && a5AtmosphereQueryVersionReportInnerFrame.isValidate()) {
+            return a5AtmosphereQueryVersionReportInnerFrame.getVersion();
+        } else {
+            throw new BusinessException("鏁版嵁鏍¢獙寮傚父锛�");
+        }
+    }
+
+    /**
+     * 杞噸鍚�
+     *
+     * @param mac
+     * @return
+     */
+    public String Reboot(String mac) {
+        if (StringUtil.strIsNullOrEmpty(mac)) {
+            throw new BusinessException("鐏潌mac鍙傛暟閿欒锛�");
+        }
+
+        AirEquipment airEquipment = SpringContextHolder.getBean(AirEquipmentService.class).
+                getOne(Wrappers.lambdaQuery(AirEquipment.class).eq(AirEquipment::getMac, mac).last("limit 1"));
+        if (airEquipment == null) {
+            throw new BusinessException("澶ф皵璁惧涓嶅瓨鍦紒");
+        }
+
+        AtmosphereRebootReqInnerFrame atmosphereRebootReqInnerFrame = new AtmosphereRebootReqInnerFrame();
+        A5Frame a5Frame = new A5Frame(A5OrderEnum.REQUEST_ATMOSPHERE_DATA.getCode(), atmosphereRebootReqInnerFrame);
+        System.out.println(a5Frame + "          --------a5Frame");
+        CommonFrame commonFrame = MainBoardInvokeSyncService.getInstance().sendRRPC(mac, a5Frame);
+        System.out.println(commonFrame + "         -----------commonFrame");
+
+        A5AtmosphereOperationReportInnerFrame a5AtmosphereOperationReportInnerFrame =
+                new A5AtmosphereOperationReportInnerFrame().transformFrame(commonFrame.getPayload());
+
+        if (a5AtmosphereOperationReportInnerFrame != null && a5AtmosphereOperationReportInnerFrame.isValidate()) {
+            return a5AtmosphereOperationReportInnerFrame.getState();
+        } else {
+            throw new BusinessException("鏁版嵁鏍¢獙寮傚父锛�");
+        }
+    }
+
+    /**
+     * 璁剧疆鏁版嵁淇鍊�
+     *
+     * @param mac             鐏潌MAC
+     * @param type            鏁版嵁淇璁惧绫诲瀷
+     * @param valueOfReal     浼犳劅鍣ㄦ暟鍊�
+     * @param valueOfStandard 鏍囧噯浠櫒鏁板��
+     */
+    public String ModifiedData(String mac, String type, String valueOfReal, String valueOfStandard) {
+        if (StringUtil.strIsNullOrEmpty(mac)) {
+            throw new BusinessException("鐏潌mac鍙傛暟閿欒锛�");
+        }
+        if (StringUtil.strIsNullOrEmpty(type)) {
+            throw new BusinessException("鏁版嵁淇璁惧绫诲瀷閿欒锛�");
+        }
+        if (valueOfReal == null || valueOfStandard == null) {
+            throw new BusinessException("浼犳劅鍣ㄦ暟鍊兼垨鏍囧噯浠櫒鏁板�奸敊璇紒");
+        }
+        AirEquipment airEquipment = SpringContextHolder.getBean(AirEquipmentService.class).
+                getOne(Wrappers.lambdaQuery(AirEquipment.class).eq(AirEquipment::getMac, mac).last("limit 1"));
+        if (airEquipment == null) {
+            throw new BusinessException("澶ф皵璁惧涓嶅瓨鍦紒");
+        }
+        AtmosphereModifiedDataReqInnerFrame atmosphereModifiedDataReqInnerFrame = new AtmosphereModifiedDataReqInnerFrame(type, valueOfReal, valueOfStandard);
+        A5Frame a5Frame = new A5Frame(A5OrderEnum.REQUEST_ATMOSPHERE_DATA.getCode(), atmosphereModifiedDataReqInnerFrame);
+        System.out.println(a5Frame + "          --------a5Frame");
+        CommonFrame commonFrame = MainBoardInvokeSyncService.getInstance().sendRRPC(mac, a5Frame);
+        System.out.println(commonFrame + "         -----------commonFrame");
+
+
+        A5AtmosphereOperationReportInnerFrame a5AtmosphereOperationReportInnerFrame
+                = new A5AtmosphereOperationReportInnerFrame().transformFrame(commonFrame.getPayload());
+        if (a5AtmosphereOperationReportInnerFrame.isValidate()) {
+            return a5AtmosphereOperationReportInnerFrame.getState();
+        } else {
+            throw new BusinessException("鏁版嵁鏍¢獙寮傚父锛�");
+        }
+    }
+
+
+    /**
+     * 鍚慠edis涓瓨鍏ヨ澶囩姸鎬�
+     */
+    public void setCacheData() {
+        list().forEach(
+                device -> {
+                    RedisDeviceStatus deviceStatus = new RedisDeviceStatus();
+                    deviceStatus.setDeviceId(device.getMac());
+
+                    if (RedisUtils.getBean().get(AtmoFunctionCode.AIR_HEARTBEAT_STATE.getCode() + device.getMac()) != null) {
+                        deviceStatus.setStatus(0);
+                    } else {
+                        deviceStatus.setStatus(1);
+                    }
+                    redisUtils.set(DeviceRedisKey.AIR + device.getMac(), JSON.toJSONString(deviceStatus));
+//                    redisUtils.delete(DeviceRedisKey.AIR + device.getAirMac());
+                }
+        );
+    }
 }

--
Gitblit v1.9.3