Sfoglia il codice sorgente

实时数据,历史数据接口

liwei19941102 2 anni fa
parent
commit
429ccab8ed
18 ha cambiato i file con 620 aggiunte e 11 eliminazioni
  1. 3 3
      ruoyi-system/src/main/java/com/ruoyi/data/controller/TblDataController.java
  2. 13 0
      ruoyi-system/src/main/java/com/ruoyi/data/controller/TblEquipmentController.java
  3. 37 0
      ruoyi-system/src/main/java/com/ruoyi/data/controller/TblRecordController.java
  4. 47 4
      ruoyi-system/src/main/java/com/ruoyi/data/controller/TblSensorController.java
  5. 109 0
      ruoyi-system/src/main/java/com/ruoyi/data/controller/TblSensorRecordController.java
  6. 14 0
      ruoyi-system/src/main/java/com/ruoyi/data/domain/DeviceMqttInfo.java
  7. 16 0
      ruoyi-system/src/main/java/com/ruoyi/data/domain/SensorRecord.java
  8. 2 0
      ruoyi-system/src/main/java/com/ruoyi/data/domain/TblRecord.java
  9. 43 0
      ruoyi-system/src/main/java/com/ruoyi/data/domain/TblSensorRecord.java
  10. 2 0
      ruoyi-system/src/main/java/com/ruoyi/data/domain/bo/TblRecordBo.java
  11. 49 0
      ruoyi-system/src/main/java/com/ruoyi/data/domain/bo/TblSensorRecordBo.java
  12. 1 0
      ruoyi-system/src/main/java/com/ruoyi/data/domain/vo/TblRecordVo.java
  13. 49 0
      ruoyi-system/src/main/java/com/ruoyi/data/domain/vo/TblSensorRecordVo.java
  14. 15 0
      ruoyi-system/src/main/java/com/ruoyi/data/mapper/TblSensorRecordMapper.java
  15. 49 0
      ruoyi-system/src/main/java/com/ruoyi/data/service/ITblSensorRecordService.java
  16. 45 4
      ruoyi-system/src/main/java/com/ruoyi/data/service/impl/MqttServiceImpl.java
  17. 111 0
      ruoyi-system/src/main/java/com/ruoyi/data/service/impl/TblSensorRecordServiceImpl.java
  18. 15 0
      ruoyi-system/src/main/resources/mapper/data/TblSensorRecordMapper.xml

+ 3 - 3
ruoyi-system/src/main/java/com/ruoyi/data/controller/TblDataController.java

@@ -66,9 +66,9 @@ public class TblDataController extends BaseController {
                gateWaySensor.setTblGateway(tblGatewayVo);
                List<SensorPoint> sensorPoints = new ArrayList<SensorPoint>();
                for(TblEquipmentVo tblEquipmentvo:equipmentVoList){
-                     if(tblEquipmentvo.getGatewayId() == tblGatewayVo.getId()){
+                     if(tblEquipmentvo.getGatewayId().longValue() == tblGatewayVo.getId().longValue()){
                              for(SensorPoint sensorPoint:sensorPointList){
-                                     if(sensorPoint.getTblSensorVo().getDeviceId() == tblEquipmentvo.getId()){
+                                     if(sensorPoint.getTblSensorVo().getDeviceId().longValue() == tblEquipmentvo.getId().longValue()){
                                          sensorPoints.add(sensorPoint);
                                      }
                              }
@@ -108,7 +108,7 @@ public class TblDataController extends BaseController {
                 if(jsonObject.get("dataPointId")!=null){
                     Long pointId = Long.valueOf((String) jsonObject.get("dataPointId"));
                     for(TblDatapointVo tblDatapointVo:tblDatapointVoList){
-                        if( pointId == tblDatapointVo.getId()) {
+                        if( pointId.longValue() == tblDatapointVo.getId().longValue()) {
                             PointData pointData = new PointData();
                             pointData.setName((String) jsonObject.get("name"));
                             pointData.setLabel((String) jsonObject.get("label"));

+ 13 - 0
ruoyi-system/src/main/java/com/ruoyi/data/controller/TblEquipmentController.java

@@ -118,4 +118,17 @@ public class TblEquipmentController extends BaseController {
                                      @PathVariable Long id) {
         return R.ok(iTblEquipmentService.getDeviceMqttInfo(id));
     }
+
+    /**
+     * 根据网关查询所有设备列表
+     */
+    @SaCheckPermission("data:equipment:list")
+    @GetMapping("/alllist")
+    public TableDataInfo<TblEquipmentVo> alllist(TblEquipmentBo bo, PageQuery pageQuery) {
+        TableDataInfo<TblEquipmentVo> obj= new TableDataInfo<>();
+        List<TblEquipmentVo> tblEquipmentVoList = iTblEquipmentService.queryList(bo);
+        obj.setRows(tblEquipmentVoList);
+        return obj;
+    }
+
 }

+ 37 - 0
ruoyi-system/src/main/java/com/ruoyi/data/controller/TblRecordController.java

@@ -1,9 +1,16 @@
 package com.ruoyi.data.controller;
 
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Arrays;
 import java.util.concurrent.TimeUnit;
 
+import com.ruoyi.data.domain.SensorRecord;
+import com.ruoyi.data.domain.TblSensor;
+import com.ruoyi.data.domain.bo.TblSensorBo;
+import com.ruoyi.data.domain.bo.TblSensorRecordBo;
+import com.ruoyi.data.domain.vo.TblSensorVo;
+import com.ruoyi.data.service.ITblSensorService;
 import lombok.RequiredArgsConstructor;
 import javax.servlet.http.HttpServletResponse;
 import javax.validation.constraints.*;
@@ -39,6 +46,8 @@ public class TblRecordController extends BaseController {
 
     private final ITblRecordService iTblRecordService;
 
+    private final ITblSensorService iTblSensorService;
+
     /**
      * 查询数据记录列表
      */
@@ -105,4 +114,32 @@ public class TblRecordController extends BaseController {
                           @PathVariable Long[] ids) {
         return toAjax(iTblRecordService.deleteWithValidByIds(Arrays.asList(ids), true));
     }
+
+    /**
+     * 查询数据记录列表
+     */
+    @SaCheckPermission("data:record:list")
+    @GetMapping("/recordlist")
+    public TableDataInfo<SensorRecord> getRecordList(TblRecordBo bo, PageQuery pageQuery) {
+        TblSensorBo tblSensorBo = new TblSensorBo();
+        List<TblSensorVo> tblSensorList = iTblSensorService.queryList(tblSensorBo);
+        List<TblRecordVo> tblRecordVoList = iTblRecordService.queryPageList(bo, pageQuery).getRows();
+        List<SensorRecord> sensorRecordList = new ArrayList<SensorRecord>();
+        for(TblRecordVo vo:tblRecordVoList){
+            SensorRecord sensorRecord = new SensorRecord();
+            sensorRecord.setTblRecord(vo);
+            System.out.println(vo.getSensorId());
+            for(TblSensorVo sensorVo:tblSensorList){
+                   System.out.println(sensorVo.getId());
+                   System.out.println(vo.getSensorId() == sensorVo.getId());
+                   if(vo.getSensorId().longValue() == sensorVo.getId().longValue()){
+                       sensorRecord.setTblSensor(sensorVo);
+                   }
+            }
+            sensorRecordList.add(sensorRecord);
+        }
+        TableDataInfo<SensorRecord> sensorRecordTableDataInfo = new TableDataInfo<>();
+        sensorRecordTableDataInfo.setRows(sensorRecordList);
+        return sensorRecordTableDataInfo;
+    }
 }

+ 47 - 4
ruoyi-system/src/main/java/com/ruoyi/data/controller/TblSensorController.java

@@ -9,10 +9,13 @@ import cn.hutool.json.JSONArray;
 import cn.hutool.json.JSONObject;
 import com.ruoyi.data.domain.PointData;
 import com.ruoyi.data.domain.SensorPoint;
-import com.ruoyi.data.domain.bo.TblDatapointBo;
-import com.ruoyi.data.domain.bo.TblUnitBo;
+import com.ruoyi.data.domain.SensorRecord;
+import com.ruoyi.data.domain.bo.*;
 import com.ruoyi.data.domain.vo.TblDatapointVo;
+import com.ruoyi.data.domain.vo.TblEquipmentVo;
+import com.ruoyi.data.domain.vo.TblSensorRecordVo;
 import com.ruoyi.data.service.ITblDatapointService;
+import com.ruoyi.data.service.ITblSensorRecordService;
 import lombok.RequiredArgsConstructor;
 import javax.servlet.http.HttpServletResponse;
 import javax.validation.constraints.*;
@@ -30,7 +33,6 @@ import com.ruoyi.common.core.validate.QueryGroup;
 import com.ruoyi.common.enums.BusinessType;
 import com.ruoyi.common.utils.poi.ExcelUtil;
 import com.ruoyi.data.domain.vo.TblSensorVo;
-import com.ruoyi.data.domain.bo.TblSensorBo;
 import com.ruoyi.data.service.ITblSensorService;
 import com.ruoyi.common.core.page.TableDataInfo;
 
@@ -50,6 +52,8 @@ public class TblSensorController extends BaseController {
 
     private final ITblDatapointService iTblDatapointService;
 
+    private final ITblSensorRecordService sensorRecordService;
+
     /**
      * 查询传感器列列表
      */
@@ -139,7 +143,7 @@ public class TblSensorController extends BaseController {
                 if(jsonObject.get("dataPointId")!=null){
                     Long pointId = Long.valueOf((String) jsonObject.get("dataPointId"));
                     for(TblDatapointVo tblDatapointVo:tblDatapointVoList){
-                        if( pointId == tblDatapointVo.getId()) {
+                        if( pointId.longValue() == tblDatapointVo.getId().longValue()) {
                             PointData pointData = new PointData();
                             pointData.setName((String) jsonObject.get("name"));
                             pointData.setLabel((String) jsonObject.get("label"));
@@ -163,4 +167,43 @@ public class TblSensorController extends BaseController {
            return R.ok(sensorPoint);
 //        return R.ok(iTblSensorService.queryById(id));
     }
+
+
+    /**
+     * 根据设备Id查询所有传感器列表
+     */
+    @SaCheckPermission("data:sensor:list")
+    @GetMapping("/alllist")
+    public TableDataInfo<TblSensorVo> alllist(TblSensorBo bo, PageQuery pageQuery) {
+        TableDataInfo<TblSensorVo> obj= new TableDataInfo<TblSensorVo>();
+        List<TblSensorVo> tblSensorVoList = iTblSensorService.queryList(bo);
+        obj.setRows(tblSensorVoList);
+        return obj;
+    }
+
+    /**
+     * 获取每个设备的实时数据
+     */
+    @SaCheckPermission("data:sensor:list")
+    @GetMapping("/sensorRecord")
+    public TableDataInfo<SensorRecord> getRecord(TblSensorBo bo, PageQuery pageQuery) {
+        TableDataInfo<SensorRecord> obj= new TableDataInfo<SensorRecord>();
+        List<TblSensorVo> tblSensorVoList = iTblSensorService.queryPageList(bo,pageQuery).getRows();
+        TblSensorRecordBo tblSensorRecordBo = new TblSensorRecordBo();
+        List<TblSensorRecordVo> tblSensorRecordVoList = sensorRecordService.queryList(tblSensorRecordBo);
+        List<SensorRecord> sensorRecordList = new ArrayList<SensorRecord>();
+        for(TblSensorVo tblSensorVo:tblSensorVoList){
+            SensorRecord sensorRecord = new SensorRecord();
+            sensorRecord.setTblSensor(tblSensorVo);
+            for(TblSensorRecordVo tblSensorRecordVo:tblSensorRecordVoList){
+                  if(tblSensorVo.getId().longValue() == tblSensorRecordVo.getSensorId().longValue()){
+                      sensorRecord.setTblSensorRecordVo(tblSensorRecordVo);
+                  }
+            }
+            sensorRecordList.add(sensorRecord);
+        }
+        obj.setRows(sensorRecordList);
+        return obj;
+    }
+
 }

+ 109 - 0
ruoyi-system/src/main/java/com/ruoyi/data/controller/TblSensorRecordController.java

@@ -0,0 +1,109 @@
+package com.ruoyi.data.controller;
+
+import java.util.List;
+import java.util.Arrays;
+import java.util.concurrent.TimeUnit;
+
+import lombok.RequiredArgsConstructor;
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.constraints.*;
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.validation.annotation.Validated;
+import com.ruoyi.common.annotation.RepeatSubmit;
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.PageQuery;
+import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.core.validate.AddGroup;
+import com.ruoyi.common.core.validate.EditGroup;
+import com.ruoyi.common.core.validate.QueryGroup;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.data.domain.vo.TblSensorRecordVo;
+import com.ruoyi.data.domain.bo.TblSensorRecordBo;
+import com.ruoyi.data.service.ITblSensorRecordService;
+import com.ruoyi.common.core.page.TableDataInfo;
+
+/**
+ * 传感器实时数据
+ *
+ * @author ruoyi
+ * @date 2023-12-18
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/data/sensorRecord")
+public class TblSensorRecordController extends BaseController {
+
+    private final ITblSensorRecordService iTblSensorRecordService;
+
+    /**
+     * 查询传感器实时数据列表
+     */
+    @SaCheckPermission("data:sensorRecord:list")
+    @GetMapping("/list")
+    public TableDataInfo<TblSensorRecordVo> list(TblSensorRecordBo bo, PageQuery pageQuery) {
+        return iTblSensorRecordService.queryPageList(bo, pageQuery);
+    }
+
+    /**
+     * 导出传感器实时数据列表
+     */
+    @SaCheckPermission("data:sensorRecord:export")
+    @Log(title = "传感器实时数据", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(TblSensorRecordBo bo, HttpServletResponse response) {
+        List<TblSensorRecordVo> list = iTblSensorRecordService.queryList(bo);
+        ExcelUtil.exportExcel(list, "传感器实时数据", TblSensorRecordVo.class, response);
+    }
+
+    /**
+     * 获取传感器实时数据详细信息
+     *
+     * @param id 主键
+     */
+    @SaCheckPermission("data:sensorRecord:query")
+    @GetMapping("/{id}")
+    public R<TblSensorRecordVo> getInfo(@NotNull(message = "主键不能为空")
+                                     @PathVariable Long id) {
+        return R.ok(iTblSensorRecordService.queryById(id));
+    }
+
+    /**
+     * 新增传感器实时数据
+     */
+    @SaCheckPermission("data:sensorRecord:add")
+    @Log(title = "传感器实时数据", businessType = BusinessType.INSERT)
+    @RepeatSubmit()
+    @PostMapping()
+    public R<Void> add(@Validated(AddGroup.class) @RequestBody TblSensorRecordBo bo) {
+        return toAjax(iTblSensorRecordService.insertByBo(bo));
+    }
+
+    /**
+     * 修改传感器实时数据
+     */
+    @SaCheckPermission("data:sensorRecord:edit")
+    @Log(title = "传感器实时数据", businessType = BusinessType.UPDATE)
+    @RepeatSubmit()
+    @PutMapping()
+    public R<Void> edit(@Validated(EditGroup.class) @RequestBody TblSensorRecordBo bo) {
+        return toAjax(iTblSensorRecordService.updateByBo(bo));
+    }
+
+    /**
+     * 删除传感器实时数据
+     *
+     * @param ids 主键串
+     */
+    @SaCheckPermission("data:sensorRecord:remove")
+    @Log(title = "传感器实时数据", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public R<Void> remove(@NotEmpty(message = "主键不能为空")
+                          @PathVariable Long[] ids) {
+        return toAjax(iTblSensorRecordService.deleteWithValidByIds(Arrays.asList(ids), true));
+    }
+
+}

+ 14 - 0
ruoyi-system/src/main/java/com/ruoyi/data/domain/DeviceMqttInfo.java

@@ -0,0 +1,14 @@
+package com.ruoyi.data.domain;
+
+import com.ruoyi.data.domain.vo.TblEquipmentVo;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class DeviceMqttInfo {
+
+    private TblEquipmentVo tblEquipment;
+
+    private List<MqttObj> mqttObjList;
+}

+ 16 - 0
ruoyi-system/src/main/java/com/ruoyi/data/domain/SensorRecord.java

@@ -0,0 +1,16 @@
+package com.ruoyi.data.domain;
+
+import com.ruoyi.data.domain.vo.TblRecordVo;
+import com.ruoyi.data.domain.vo.TblSensorRecordVo;
+import com.ruoyi.data.domain.vo.TblSensorVo;
+import lombok.Data;
+
+@Data
+public class SensorRecord {
+
+    private TblSensorVo tblSensor;
+
+    private TblSensorRecordVo tblSensorRecordVo;
+
+    private TblRecordVo tblRecord;
+}

+ 2 - 0
ruoyi-system/src/main/java/com/ruoyi/data/domain/TblRecord.java

@@ -39,4 +39,6 @@ public class TblRecord extends BaseEntity {
      */
     private Long equipmentId;
 
+    private Long sensorId;
+
 }

+ 43 - 0
ruoyi-system/src/main/java/com/ruoyi/data/domain/TblSensorRecord.java

@@ -0,0 +1,43 @@
+package com.ruoyi.data.domain;
+
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import java.io.Serializable;
+import java.util.Date;
+import java.math.BigDecimal;
+
+import com.ruoyi.common.core.domain.BaseEntity;
+
+/**
+ * 传感器实时数据对象 tbl_sensor_record
+ *
+ * @author ruoyi
+ * @date 2023-12-18
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("tbl_sensor_record")
+public class TblSensorRecord extends BaseEntity {
+
+    private static final long serialVersionUID=1L;
+
+    /**
+     * 
+     */
+    @TableId(value = "id")
+    private Long id;
+    /**
+     * 传感器id
+     */
+    private Long sensorId;
+    /**
+     * Json数据
+     */
+    private String json;
+    /**
+     * 设备id
+     */
+    private Long equipmentId;
+
+}

+ 2 - 0
ruoyi-system/src/main/java/com/ruoyi/data/domain/bo/TblRecordBo.java

@@ -40,5 +40,7 @@ public class TblRecordBo extends BaseEntity {
     @NotNull(message = "不能为空", groups = { AddGroup.class, EditGroup.class })
     private Long equipmentId;
 
+    private Long sensorId;
+
 
 }

+ 49 - 0
ruoyi-system/src/main/java/com/ruoyi/data/domain/bo/TblSensorRecordBo.java

@@ -0,0 +1,49 @@
+package com.ruoyi.data.domain.bo;
+
+import com.ruoyi.common.core.validate.AddGroup;
+import com.ruoyi.common.core.validate.EditGroup;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import javax.validation.constraints.*;
+
+import java.util.Date;
+
+import com.ruoyi.common.core.domain.BaseEntity;
+
+/**
+ * 传感器实时数据业务对象 tbl_sensor_record
+ *
+ * @author ruoyi
+ * @date 2023-12-18
+ */
+
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class TblSensorRecordBo extends BaseEntity {
+
+    /**
+     * 
+     */
+    @NotNull(message = "不能为空", groups = { EditGroup.class })
+    private Long id;
+
+    /**
+     * 传感器id
+     */
+    @NotNull(message = "传感器id不能为空", groups = { AddGroup.class, EditGroup.class })
+    private Long sensorId;
+
+    /**
+     * Json数据
+     */
+    @NotBlank(message = "Json数据不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String json;
+
+    /**
+     * 设备id
+     */
+    @NotNull(message = "设备id不能为空", groups = { AddGroup.class, EditGroup.class })
+    private Long equipmentId;
+
+
+}

+ 1 - 0
ruoyi-system/src/main/java/com/ruoyi/data/domain/vo/TblRecordVo.java

@@ -40,5 +40,6 @@ public class TblRecordVo implements Serializable {
     @ExcelProperty(value = "")
     private Long equipmentId;
 
+    private Long sensorId;
 
 }

+ 49 - 0
ruoyi-system/src/main/java/com/ruoyi/data/domain/vo/TblSensorRecordVo.java

@@ -0,0 +1,49 @@
+package com.ruoyi.data.domain.vo;
+
+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 lombok.Data;
+import java.util.Date;
+
+import java.io.Serializable;
+
+/**
+ * 传感器实时数据视图对象 tbl_sensor_record
+ *
+ * @author ruoyi
+ * @date 2023-12-18
+ */
+@Data
+@ExcelIgnoreUnannotated
+public class TblSensorRecordVo implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 
+     */
+    @ExcelProperty(value = "")
+    private Long id;
+
+    /**
+     * 传感器id
+     */
+    @ExcelProperty(value = "传感器id")
+    private Long sensorId;
+
+    /**
+     * Json数据
+     */
+    @ExcelProperty(value = "Json数据")
+    private String json;
+
+    /**
+     * 设备id
+     */
+    @ExcelProperty(value = "设备id")
+    private Long equipmentId;
+
+
+}

+ 15 - 0
ruoyi-system/src/main/java/com/ruoyi/data/mapper/TblSensorRecordMapper.java

@@ -0,0 +1,15 @@
+package com.ruoyi.data.mapper;
+
+import com.ruoyi.data.domain.TblSensorRecord;
+import com.ruoyi.data.domain.vo.TblSensorRecordVo;
+import com.ruoyi.common.core.mapper.BaseMapperPlus;
+
+/**
+ * 传感器实时数据Mapper接口
+ *
+ * @author ruoyi
+ * @date 2023-12-18
+ */
+public interface TblSensorRecordMapper extends BaseMapperPlus<TblSensorRecordMapper, TblSensorRecord, TblSensorRecordVo> {
+
+}

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

@@ -0,0 +1,49 @@
+package com.ruoyi.data.service;
+
+import com.ruoyi.data.domain.TblSensorRecord;
+import com.ruoyi.data.domain.vo.TblSensorRecordVo;
+import com.ruoyi.data.domain.bo.TblSensorRecordBo;
+import com.ruoyi.common.core.page.TableDataInfo;
+import com.ruoyi.common.core.domain.PageQuery;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 传感器实时数据Service接口
+ *
+ * @author ruoyi
+ * @date 2023-12-18
+ */
+public interface ITblSensorRecordService {
+
+    /**
+     * 查询传感器实时数据
+     */
+    TblSensorRecordVo queryById(Long id);
+
+    /**
+     * 查询传感器实时数据列表
+     */
+    TableDataInfo<TblSensorRecordVo> queryPageList(TblSensorRecordBo bo, PageQuery pageQuery);
+
+    /**
+     * 查询传感器实时数据列表
+     */
+    List<TblSensorRecordVo> queryList(TblSensorRecordBo bo);
+
+    /**
+     * 新增传感器实时数据
+     */
+    Boolean insertByBo(TblSensorRecordBo bo);
+
+    /**
+     * 修改传感器实时数据
+     */
+    Boolean updateByBo(TblSensorRecordBo bo);
+
+    /**
+     * 校验并批量删除传感器实时数据信息
+     */
+    Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
+}

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

@@ -1,5 +1,6 @@
 package com.ruoyi.data.service.impl;
 
+import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.json.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
@@ -7,11 +8,11 @@ import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.common.utils.mqtt.MQTTConnect;
 import com.ruoyi.data.domain.*;
 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.mapper.TblEquipmentMqttMapper;
-import com.ruoyi.data.mapper.TblMqttMapper;
-import com.ruoyi.data.mapper.TblRecordMapper;
-import com.ruoyi.data.mapper.TblSensorMapper;
+import com.ruoyi.data.domain.vo.TblRecordVo;
+import com.ruoyi.data.domain.vo.TblSensorRecordVo;
+import com.ruoyi.data.mapper.*;
 import com.ruoyi.data.service.MqttService;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
@@ -41,6 +42,8 @@ public class MqttServiceImpl implements MqttService {
 
     private final TblSensorMapper tblSensorMapper;
 
+    private final TblSensorRecordMapper tblSensorRecordMapper;
+
     @Value("${mqtt.url}")
     private String mqttUrl;
 
@@ -76,6 +79,13 @@ public class MqttServiceImpl implements MqttService {
         tblRecord.setCreateBy("admin");
         tblRecord.setUpdateBy("admin");
         tblRecordMapper.insert(tblRecord);
+        TblSensorRecordBo tblSensorRecord = new TblSensorRecordBo();
+        tblSensorRecord.setEquipmentId(deviceId);
+        tblSensorRecord.setJson(mqttStr);
+        tblSensorRecord.setCreateBy("admin");
+        tblSensorRecord.setUpdateBy("admin");
+        updateNowRecord(tblSensorRecord);
+//        tblSensorRecordMapper.insert(tblSensorRecord);
         for(MqttObj obj:mqttObjList){
                if(obj.getStatus() == 1) {
                    JSONObject topicObj = obj.getTopicQos("tcp");
@@ -108,6 +118,27 @@ public class MqttServiceImpl implements MqttService {
         }
     }
 
+
+    public void updateNowRecord(TblSensorRecordBo bo){
+           TblSensorRecordBo tblSensorRecordBo = new TblSensorRecordBo();
+        tblSensorRecordBo.setSensorId(bo.getSensorId());
+           LambdaQueryWrapper<TblSensorRecord> lqw = buildSensorRecordWrapper(bo);
+           List<TblSensorRecordVo> tblSensorRecordVoList = tblSensorRecordMapper.selectVoList(lqw);
+            if(tblSensorRecordVoList.size() > 0 ){
+                bo.setId(tblSensorRecordVoList.get(0).getId());
+                TblSensorRecord update = BeanUtil.toBean(bo, TblSensorRecord.class);
+                validEntityBeforeSave(update);
+                tblSensorRecordMapper.updateById(update);
+            }else{
+                TblSensorRecord add = BeanUtil.toBean(bo, TblSensorRecord.class);
+                validEntityBeforeSave(add);
+                tblSensorRecordMapper.insert(add);
+            }
+    }
+
+    private void validEntityBeforeSave(TblSensorRecord entity){
+        //TODO 做一些数据校验,如唯一约束
+    }
     @Override
     public void createMqtt(TblMqttBo bo){
         LambdaQueryWrapper<TblMqtt> lqw = buildQueryWrapper(bo);
@@ -191,4 +222,14 @@ public class MqttServiceImpl implements MqttService {
         }
     }
 
+    private LambdaQueryWrapper<TblSensorRecord> buildSensorRecordWrapper(TblSensorRecordBo bo) {
+        Map<String, Object> params = bo.getParams();
+        LambdaQueryWrapper<TblSensorRecord> lqw = Wrappers.lambdaQuery();
+        lqw.eq(bo.getSensorId() != null, TblSensorRecord::getSensorId, bo.getSensorId());
+        lqw.eq(StringUtils.isNotBlank(bo.getJson()), TblSensorRecord::getJson, bo.getJson());
+        lqw.eq(bo.getEquipmentId() != null, TblSensorRecord::getEquipmentId, bo.getEquipmentId());
+        return lqw;
+    }
+
+
 }

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

@@ -0,0 +1,111 @@
+package com.ruoyi.data.service.impl;
+
+import cn.hutool.core.bean.BeanUtil;
+import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.common.core.page.TableDataInfo;
+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 lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+import com.ruoyi.data.domain.bo.TblSensorRecordBo;
+import com.ruoyi.data.domain.vo.TblSensorRecordVo;
+import com.ruoyi.data.domain.TblSensorRecord;
+import com.ruoyi.data.mapper.TblSensorRecordMapper;
+import com.ruoyi.data.service.ITblSensorRecordService;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Collection;
+
+/**
+ * 传感器实时数据Service业务层处理
+ *
+ * @author ruoyi
+ * @date 2023-12-18
+ */
+@RequiredArgsConstructor
+@Service
+public class TblSensorRecordServiceImpl implements ITblSensorRecordService {
+
+    private final TblSensorRecordMapper baseMapper;
+
+    /**
+     * 查询传感器实时数据
+     */
+    @Override
+    public TblSensorRecordVo queryById(Long id){
+        return baseMapper.selectVoById(id);
+    }
+
+    /**
+     * 查询传感器实时数据列表
+     */
+    @Override
+    public TableDataInfo<TblSensorRecordVo> queryPageList(TblSensorRecordBo bo, PageQuery pageQuery) {
+        LambdaQueryWrapper<TblSensorRecord> lqw = buildQueryWrapper(bo);
+        Page<TblSensorRecordVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
+        return TableDataInfo.build(result);
+    }
+
+    /**
+     * 查询传感器实时数据列表
+     */
+    @Override
+    public List<TblSensorRecordVo> queryList(TblSensorRecordBo bo) {
+        LambdaQueryWrapper<TblSensorRecord> lqw = buildQueryWrapper(bo);
+        return baseMapper.selectVoList(lqw);
+    }
+
+    private LambdaQueryWrapper<TblSensorRecord> buildQueryWrapper(TblSensorRecordBo bo) {
+        Map<String, Object> params = bo.getParams();
+        LambdaQueryWrapper<TblSensorRecord> lqw = Wrappers.lambdaQuery();
+        lqw.eq(bo.getSensorId() != null, TblSensorRecord::getSensorId, bo.getSensorId());
+        lqw.eq(StringUtils.isNotBlank(bo.getJson()), TblSensorRecord::getJson, bo.getJson());
+        lqw.eq(bo.getEquipmentId() != null, TblSensorRecord::getEquipmentId, bo.getEquipmentId());
+        return lqw;
+    }
+
+    /**
+     * 新增传感器实时数据
+     */
+    @Override
+    public Boolean insertByBo(TblSensorRecordBo bo) {
+        TblSensorRecord add = BeanUtil.toBean(bo, TblSensorRecord.class);
+        validEntityBeforeSave(add);
+        boolean flag = baseMapper.insert(add) > 0;
+        if (flag) {
+            bo.setId(add.getId());
+        }
+        return flag;
+    }
+
+    /**
+     * 修改传感器实时数据
+     */
+    @Override
+    public Boolean updateByBo(TblSensorRecordBo bo) {
+        TblSensorRecord update = BeanUtil.toBean(bo, TblSensorRecord.class);
+        validEntityBeforeSave(update);
+        return baseMapper.updateById(update) > 0;
+    }
+
+    /**
+     * 保存前的数据校验
+     */
+    private void validEntityBeforeSave(TblSensorRecord entity){
+        //TODO 做一些数据校验,如唯一约束
+    }
+
+    /**
+     * 批量删除传感器实时数据
+     */
+    @Override
+    public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
+        if(isValid){
+            //TODO 做一些业务上的校验,判断是否需要校验
+        }
+        return baseMapper.deleteBatchIds(ids) > 0;
+    }
+}

+ 15 - 0
ruoyi-system/src/main/resources/mapper/data/TblSensorRecordMapper.xml

@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.data.mapper.TblSensorRecordMapper">
+
+    <resultMap type="com.ruoyi.data.domain.TblSensorRecord" id="TblSensorRecordResult">
+        <result property="id" column="id"/>
+        <result property="sensorId" column="sensor_id"/>
+        <result property="json" column="json"/>
+        <result property="equipmentId" column="equipment_id"/>
+    </resultMap>
+
+
+</mapper>