liwei19941102 2 年之前
父节点
当前提交
1cebae69af

+ 5 - 0
ruoyi-admin/src/main/java/com/ruoyi/ServerInitCommandLineRunner.java

@@ -1,6 +1,7 @@
 package com.ruoyi;
 
 import com.ruoyi.data.domain.bo.TblMqttBo;
+import com.ruoyi.data.service.ITblSensorService;
 import com.ruoyi.data.service.MqttService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.CommandLineRunner;
@@ -10,8 +11,12 @@ import org.springframework.stereotype.Component;
 public class ServerInitCommandLineRunner implements CommandLineRunner {
     @Autowired
     private  MqttService mqttService;
+    @Autowired
+    private ITblSensorService tblSensorService;
     @Override
     public void run(String... args) throws Exception {
         mqttService.createMqttMain(new TblMqttBo());
+        tblSensorService.setCache();
+        mqttService.setMqttCache();
     }
 }

+ 5 - 4
ruoyi-system/src/main/java/com/ruoyi/data/domain/vo/TblEquipmentMqttVo.java

@@ -4,6 +4,7 @@ import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
 import com.alibaba.excel.annotation.ExcelProperty;
 import com.ruoyi.common.annotation.ExcelDictFormat;
 import com.ruoyi.common.convert.ExcelDictConvert;
+import com.ruoyi.data.domain.TblMqtt;
 import lombok.Data;
 import java.util.Date;
 
@@ -22,22 +23,22 @@ public class TblEquipmentMqttVo implements Serializable {
     private static final long serialVersionUID = 1L;
 
     /**
-     * 
+     *
      */
     @ExcelProperty(value = "")
     private Long id;
 
     /**
-     * 
+     *
      */
     @ExcelProperty(value = "")
     private Long equipmentId;
 
     /**
-     * 
+     *
      */
     @ExcelProperty(value = "")
     private Long mqttId;
 
-
+    private TblMqtt tblMqtt;
 }

+ 3 - 0
ruoyi-system/src/main/java/com/ruoyi/data/mapper/TblRecordMapper.java

@@ -4,6 +4,8 @@ import com.ruoyi.data.domain.TblRecord;
 import com.ruoyi.data.domain.vo.TblRecordVo;
 import com.ruoyi.common.core.mapper.BaseMapperPlus;
 
+import java.util.List;
+
 /**
  * 数据记录Mapper接口
  *
@@ -12,4 +14,5 @@ import com.ruoyi.common.core.mapper.BaseMapperPlus;
  */
 public interface TblRecordMapper extends BaseMapperPlus<TblRecordMapper, TblRecord, TblRecordVo> {
 
+    List<TblRecord> getNewRecord();
 }

+ 1 - 0
ruoyi-system/src/main/java/com/ruoyi/data/service/ITblSensorRecordService.java

@@ -46,4 +46,5 @@ public interface ITblSensorRecordService {
      * 校验并批量删除传感器实时数据信息
      */
     Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
+
 }

+ 2 - 0
ruoyi-system/src/main/java/com/ruoyi/data/service/ITblSensorService.java

@@ -46,4 +46,6 @@ public interface ITblSensorService {
      * 校验并批量删除传感器列信息
      */
     Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
+
+    void setCache();
 }

+ 2 - 0
ruoyi-system/src/main/java/com/ruoyi/data/service/MqttService.java

@@ -12,4 +12,6 @@ public interface MqttService {
     void createMqtt(TblMqttBo bo);
 
     void pubOrder(OrderBean orderBean);
+
+    void setMqttCache();
 }

+ 17 - 17
ruoyi-system/src/main/java/com/ruoyi/data/service/impl/MqttServiceImpl.java

@@ -13,12 +13,12 @@ import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.common.utils.mqtt.MQTTConnect;
 import com.ruoyi.common.utils.redis.CacheUtils;
 import com.ruoyi.data.domain.*;
+import com.ruoyi.data.domain.bo.TblEquipmentSbookBo;
 import com.ruoyi.data.domain.bo.TblMqttBo;
 import com.ruoyi.data.domain.bo.TblSensorRecordBo;
-import com.ruoyi.data.domain.vo.TblMqttVo;
-import com.ruoyi.data.domain.vo.TblRecordVo;
-import com.ruoyi.data.domain.vo.TblSensorRecordVo;
+import com.ruoyi.data.domain.vo.*;
 import com.ruoyi.data.mapper.*;
+import com.ruoyi.data.service.ITblEquipmentSbookService;
 import com.ruoyi.data.service.MqttService;
 import com.ruoyi.data.service.WebsocketService;
 import com.ruoyi.system.service.ISysDictTypeService;
@@ -30,9 +30,7 @@ import org.eclipse.paho.client.mqttv3.MqttException;
 import org.eclipse.paho.client.mqttv3.MqttMessage;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
-import sun.management.Sensor;
 
-import javax.annotation.PostConstruct;
 import java.text.SimpleDateFormat;
 import java.util.Base64;
 import java.util.Date;
@@ -58,6 +56,8 @@ public class MqttServiceImpl implements MqttService {
 
     private final WebsocketService websocketService;
 
+    private final ITblEquipmentSbookService equipmentSbookService;
+
     @Value("${mqtt.url}")
     private String mqttUrl;
 
@@ -80,7 +80,6 @@ public class MqttServiceImpl implements MqttService {
     public void pubMqttData(String mqttStr) {
         websocketService.sendMessageAll(mqttStr);
         if(saveAndForward) {
-
             JSONObject jsonObject = new JSONObject(mqttStr);
             Long sensorId = Long.valueOf((String) jsonObject.get("sensorId"));
             TblSensor tblSensor = tblSensorMapper.selectById(sensorId);
@@ -102,24 +101,15 @@ public class MqttServiceImpl implements MqttService {
             mqttMsg.put("sensorData", sensorData);
             MqttObj mqttObj = new MqttObj();
             mqttObj.setEquipmentId(deviceId);
-            List<MqttObj> mqttObjList = tblEquipmentMqttMapper.selectMqttListByDeviceId(mqttObj);
+            List<MqttObj> mqttObjList = CacheUtils.get("DeviceMqtt",deviceId);
             TblRecord tblRecord = new TblRecord();
             tblRecord.setEquipmentId(deviceId);
-            tblRecord.setJson(mqttStr);
+            tblRecord.setJson(mqttMsg.toString());
             tblRecord.setCreateBy("admin");
             tblRecord.setUpdateBy("admin");
             tblRecord.setSensorId(sensorId);
             tblRecordMapper.insert(tblRecord);
-//        TblSensorRecordBo tblSensorRecord = new TblSensorRecordBo();
-//        tblSensorRecord.setEquipmentId(deviceId);
-//        tblSensorRecord.setJson(mqttStr);
-//        tblSensorRecord.setSensorId(sensorId);
-//        tblSensorRecord.setCreateBy("admin");
-//        tblSensorRecord.setUpdateBy("admin");
-//        updateNowRecord(tblSensorRecord);
         CacheUtils.put("sensorData",sensorId,mqttMsg.toString());
-
-//      tblSensorRecordMapper.insert(tblSensorRecord);
         String protocolType = "";
         List<SysDictData> sysDictTypeList = sysDictTypeService.selectDictDataByType("protocal_type");
         for(SysDictData sysDictData:sysDictTypeList){
@@ -283,6 +273,16 @@ public class MqttServiceImpl implements MqttService {
         return lqw;
     }
 
+    @Override
+    public void setMqttCache(){
+       List<TblEquipmentSbookVo> equipmentVoList = equipmentSbookService.queryList(new TblEquipmentSbookBo());
+       for(TblEquipmentSbookVo vo:equipmentVoList){
+           MqttObj obj = new MqttObj();
+           obj.setEquipmentId(vo.getId());
+           List<MqttObj> mqttObjList = tblEquipmentMqttMapper.selectMqttListByDeviceId(obj);
+           CacheUtils.put("DeviceMqtt",vo.getId(),mqttObjList);
+       }
+    }
 
 
 }

+ 5 - 0
ruoyi-system/src/main/java/com/ruoyi/data/service/impl/TblSensorRecordServiceImpl.java

@@ -7,6 +7,9 @@ import com.ruoyi.common.core.domain.PageQuery;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.ruoyi.common.utils.redis.CacheUtils;
+import com.ruoyi.data.domain.TblRecord;
+import com.ruoyi.data.mapper.TblRecordMapper;
 import lombok.RequiredArgsConstructor;
 import org.springframework.stereotype.Service;
 import com.ruoyi.data.domain.bo.TblSensorRecordBo;
@@ -31,6 +34,7 @@ public class TblSensorRecordServiceImpl implements ITblSensorRecordService {
 
     private final TblSensorRecordMapper baseMapper;
 
+
     /**
      * 查询传感器实时数据
      */
@@ -108,4 +112,5 @@ public class TblSensorRecordServiceImpl implements ITblSensorRecordService {
         }
         return baseMapper.deleteBatchIds(ids) > 0;
     }
+
 }

+ 15 - 0
ruoyi-system/src/main/java/com/ruoyi/data/service/impl/TblSensorServiceImpl.java

@@ -7,6 +7,9 @@ import com.ruoyi.common.core.domain.PageQuery;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.ruoyi.common.utils.redis.CacheUtils;
+import com.ruoyi.data.domain.TblRecord;
+import com.ruoyi.data.mapper.TblRecordMapper;
 import lombok.RequiredArgsConstructor;
 import org.springframework.stereotype.Service;
 import com.ruoyi.data.domain.bo.TblSensorBo;
@@ -33,6 +36,8 @@ public class TblSensorServiceImpl implements ITblSensorService {
 
     private final TblSensorMapper baseMapper;
 
+    private final TblRecordMapper tblRecordMapper;
+
     /**
      * 查询传感器列
      */
@@ -130,4 +135,14 @@ public class TblSensorServiceImpl implements ITblSensorService {
         }
         return baseMapper.deleteBatchIds(ids) > 0;
     }
+
+    @Override
+    public void setCache(){
+        List<TblRecord> recordList = tblRecordMapper.getNewRecord();
+        for(TblRecord record:recordList){
+            if(record.getSensorId() != null){
+                CacheUtils.put("sensorData",record.getSensorId(),record.getJson());
+            }
+        }
+    }
 }

+ 12 - 0
ruoyi-system/src/main/resources/mapper/data/TblRecordMapper.xml

@@ -14,5 +14,17 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="equipmentId" column="equipment_id"/>
     </resultMap>
 
+    <select id="getNewRecord" resultMap="TblRecordResult">
+        SELECT
+            any_value(id) as id,
+            any_value(json) as json,
+            sensor_id,
+            max( create_time )
+        FROM
+            tbl_record
+        GROUP BY
+            sensor_id;
+    </select>
+
 
 </mapper>