lchao 2 miesięcy temu
rodzic
commit
7db1260f28

+ 163 - 0
src/main/java/com/sooka/sponest/monitor/device/controller/CentermonitorTTemperatureControlDeviceController.java

@@ -0,0 +1,163 @@
+package com.sooka.sponest.monitor.device.controller;
+
+import com.dahuatech.hutool.core.bean.BeanUtil;
+import com.dahuatech.hutool.json.JSONObject;
+import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.core.utils.StringUtils;
+import com.ruoyi.common.core.utils.poi.ExcelUtil;
+import com.ruoyi.common.core.web.controller.BaseController;
+import com.ruoyi.common.core.web.domain.AjaxResult;
+import com.ruoyi.common.core.web.page.TableDataInfo;
+import com.ruoyi.common.log.annotation.Log;
+import com.ruoyi.common.log.enums.BusinessType;
+import com.ruoyi.common.security.annotation.RequiresPermissions;
+import com.sooka.sponest.monitor.device.domain.*;
+import com.sooka.sponest.monitor.device.service.ICentermonitorTMonitoringDeviceService;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.*;
+import javax.annotation.Resource;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.*;
+
+
+/**
+ * 温控设备Controller
+ */
+@RestController
+@Slf4j
+@RequestMapping("/temperatureControl")
+public class CentermonitorTTemperatureControlDeviceController extends BaseController {
+
+    @Resource
+    private ICentermonitorTMonitoringDeviceService centermonitorTMonitoringDeviceService;
+
+
+    /**
+     * 接收温控设备信息
+     */
+    @Log(title = "传感器", businessType = BusinessType.OTHER)
+    @ApiOperation(value = "接收温控设备数据", notes = "用于接收温控设备上传的原始数据")
+    @PostMapping("/receiveTemperatureControl")
+    public AjaxResult receiveTemperatureControl(@RequestBody JSONObject json) {
+        log.error("=== 温控设备数据接收开始 ===");
+        log.error("接收原始报文:{}", json);
+        log.error("接口接收时间: {}", LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS")));
+        
+        try {
+            // 将JSON中的"-"替换为"_"
+//            String jsonStr = json.toString().replaceAll("-", "_");
+            String jsonStr = json.toString().replaceAll("\"([^\"]+)-([^\"]+)\":", "\"$1_$2\":");
+            // 转换为实体类
+            CentermonitorTMonitoringDeviceData deviceData = com.dahuatech.hutool.json.JSONUtil.toBean(
+                    jsonStr, CentermonitorTMonitoringDeviceData.class);
+            String deviceId = UUID.randomUUID().toString().replaceAll("-", "");
+            deviceData.setDeviceId(deviceId);
+            // 设置时间
+            LocalDateTime now = LocalDateTime.now();
+            deviceData.setCreateTime(java.util.Date.from(now.atZone(java.time.ZoneId.systemDefault()).toInstant()));
+            deviceData.setUploadTime(java.util.Date.from(now.atZone(java.time.ZoneId.systemDefault()).toInstant()));
+
+            // 保存数据
+            int result = centermonitorTMonitoringDeviceService.insertTemperatureControlData(deviceData);
+            
+            log.error("数据保存结果: {}", result > 0 ? "成功" : "失败");
+            log.error("=== 温控设备数据接收结束 ===");
+            
+            return AjaxResult.success("数据接收成功", deviceData);
+        } catch (Exception e) {
+            log.error("数据处理异常: {}", e.getMessage());
+            log.error("=== 温控设备数据接收结束 ===");
+            return AjaxResult.error("数据处理失败: " + e.getMessage());
+        }
+    }
+
+
+    /**
+     * 查询温控设备数据列表
+     */
+    @Log(title = "传感器", businessType = BusinessType.OTHER)
+    @ApiOperation(value = "查询温控设备数据列表", notes = "查询温控设备的监测数据列表")
+    @RequiresPermissions("camera:device:data")
+    @GetMapping("/selectTemperatureControlMonitoringData")
+    public TableDataInfo selectTemperatureControlMonitoringData(CentermonitorTMonitoringDeviceData centermonitorTMonitoringDeviceData) {
+        startPage();
+        List<CentermonitorTMonitoringDeviceData> list = centermonitorTMonitoringDeviceService.selectTemperatureControlMonitoringData(centermonitorTMonitoringDeviceData);
+        return getDataTable(list);
+    }
+
+    /**
+     * 获取温控设备温度图表数据
+     */
+    @Log(title = "传感器", businessType = BusinessType.OTHER)
+    @ApiOperation(value = "获取温控设备温度图表数据", notes = "获取温控设备的温度折线图数据")
+    @GetMapping("/getTemperatureChartData")
+    public AjaxResult getTemperatureChartData(String deviceId) {
+        try {
+            // 创建查询参数
+            CentermonitorTMonitoringDeviceData query = new CentermonitorTMonitoringDeviceData();
+            query.setDeviceId(StringUtils.isNotBlank(deviceId) ? deviceId: null);
+            // 查询数据
+            List<CentermonitorTMonitoringDeviceData> dataList = centermonitorTMonitoringDeviceService.selectTemperatureControlMonitoringData(query);
+            // 构建返回结果
+            Map<String, Object> result = new HashMap<>();
+            // 准备categories(时间轴)
+            List<String> categories = new ArrayList<>();
+            // 准备series(温度数据系列)
+            List<Map<String, Object>> series = new ArrayList<>();
+            Map<String, List<Double>> tempDataMap = new HashMap<>();
+            // 初始化5个温度层级的数据列表
+            for (int i = 1; i <= 5; i++) {
+                String seriesName = "温度层级" + i;
+                tempDataMap.put(seriesName, new ArrayList<>());
+            }
+            // 填充数据
+            if (dataList != null && !dataList.isEmpty()) {
+                for (CentermonitorTMonitoringDeviceData data : dataList) {
+                    // 添加时间到categories
+                    categories.add(String.valueOf(data.getUploadTime() != null ? data.getUploadTime() : data.getCreateTime()));
+
+                    // 处理电缆1的5个温度层级
+                    if (data.getT1_01() != null) tempDataMap.get("温度层级1").add(Double.parseDouble(data.getT1_01()));
+                    if (data.getT1_02() != null) tempDataMap.get("温度层级2").add(Double.parseDouble(data.getT1_02()));
+                    if (data.getT1_03() != null) tempDataMap.get("温度层级3").add(Double.parseDouble(data.getT1_03()));
+                    if (data.getT1_04() != null) tempDataMap.get("温度层级4").add(Double.parseDouble(data.getT1_04()));
+                    if (data.getT1_05() != null) tempDataMap.get("温度层级5").add(Double.parseDouble(data.getT1_05()));
+
+                    // 处理电缆1的5个温度层级
+                    if (data.getT2_01() != null) tempDataMap.get("温度层级1").add(Double.parseDouble(data.getT2_01()));
+                    if (data.getT2_02() != null) tempDataMap.get("温度层级2").add(Double.parseDouble(data.getT2_02()));
+                    if (data.getT2_03() != null) tempDataMap.get("温度层级3").add(Double.parseDouble(data.getT2_03()));
+                    if (data.getT2_04() != null) tempDataMap.get("温度层级4").add(Double.parseDouble(data.getT2_04()));
+                    if (data.getT2_05() != null) tempDataMap.get("温度层级5").add(Double.parseDouble(data.getT2_05()));
+
+                    // 处理电缆1的5个温度层级
+                    if (data.getT3_01() != null) tempDataMap.get("温度层级1").add(Double.parseDouble(data.getT3_01()));
+                    if (data.getT3_02() != null) tempDataMap.get("温度层级2").add(Double.parseDouble(data.getT3_02()));
+                    if (data.getT3_03() != null) tempDataMap.get("温度层级3").add(Double.parseDouble(data.getT3_03()));
+                    if (data.getT3_04() != null) tempDataMap.get("温度层级4").add(Double.parseDouble(data.getT3_04()));
+                    if (data.getT3_05() != null) tempDataMap.get("温度层级5").add(Double.parseDouble(data.getT3_05()));
+                }
+            }
+
+            // 构建series对象
+            for (Map.Entry<String, List<Double>> entry : tempDataMap.entrySet()) {
+                Map<String, Object> seriesItem = new HashMap<>();
+                seriesItem.put("name", entry.getKey());
+                seriesItem.put("data", entry.getValue());
+                series.add(seriesItem);
+            }
+
+            result.put("categories", categories);
+            result.put("series", series);
+
+            return AjaxResult.success(result);
+        } catch (Exception e) {
+            log.error("获取温控设备温度图表数据异常: {}", e.getMessage());
+            return AjaxResult.error("获取数据异常,请稍后重试");
+        }
+    }
+
+
+}

+ 119 - 0
src/main/java/com/sooka/sponest/monitor/device/domain/CentermonitorTMonitoringDeviceData.java

@@ -0,0 +1,119 @@
+package com.sooka.sponest.monitor.device.domain;
+
+import com.ruoyi.common.core.annotation.Excel;
+import com.ruoyi.common.datascope.base.domain.BaseBusinessEntity;
+import com.sooka.sponest.monitor.camera.domain.CameraCodeAndNameVO;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 监测设备对象 centermonitor_t_monitoring_device
+ *
+ * @author ruoyi
+ * @date 2023-03-14
+ */
+@Data
+public class CentermonitorTMonitoringDeviceData extends BaseBusinessEntity {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键ID
+     */
+    private Long id;
+
+    /**
+     * 主键ID
+     */
+    private String deviceId;
+
+    /**
+     * 电缆1 - 第1层温度
+     */
+    private String T1_01;
+
+    /**
+     * 电缆1 - 第2层温度
+     */
+    private String T1_02;
+
+    /**
+     * 电缆1 - 第3层温度
+     */
+    private String T1_03;
+
+    /**
+     * 电缆1 - 第4层温度
+     */
+    private String T1_04;
+
+    /**
+     * 电缆1 - 第5层温度
+     */
+    private String T1_05;
+
+    /**
+     * 电缆2 - 第1层温度
+     */
+    private String T2_01;
+
+    /**
+     * 电缆2 - 第2层温度
+     */
+    private String T2_02;
+
+    /**
+     * 电缆2 - 第3层温度
+     */
+    private String T2_03;
+
+    /**
+     * 电缆2 - 第4层温度
+     */
+    private String T2_04;
+
+    /**
+     * 电缆2 - 第5层温度
+     */
+    private String T2_05;
+
+    /**
+     * 电缆3 - 第1层温度
+     */
+    private String T3_01;
+
+    /**
+     * 电缆3 - 第2层温度
+     */
+    private String T3_02;
+
+    /**
+     * 电缆3 - 第3层温度
+     */
+    private String T3_03;
+
+    /**
+     * 电缆3 - 第4层温度
+     */
+    private String T3_04;
+
+    /**
+     * 电缆3 - 第5层温度
+     */
+    private String T3_05;
+
+    /**
+     * 数据上传时间
+     */
+    private Date uploadTime;
+
+    /**
+     * 创建时间
+     */
+    private Date createTime;
+
+}

+ 7 - 0
src/main/java/com/sooka/sponest/monitor/device/mapper/CentermonitorTMonitoringDeviceMapper.java

@@ -249,6 +249,11 @@ public interface CentermonitorTMonitoringDeviceMapper
      */
      CentermonitorTMonitoringDataWaterQuality selectWaterQualityDataByDeviceCode(String  deviceCode);
 
+    /**
+     * 查询温控设备数据列表
+     */
+     List<CentermonitorTMonitoringDeviceData> selectTemperatureControlMonitoringData(CentermonitorTMonitoringDeviceData temperatureControlData);
+
     List<DeviceIoTEquipmentStatisticsResult> getIoTEquipmentStatistics(CentermonitorTMonitoringDevice centermonitorTMonitoringDevice);
 
     List<DeviceIoTEquipmentStatisticsResult> getOnLineSensorStatistics(CentermonitorTMonitoringDevice centermonitorTMonitoringDevice);
@@ -288,4 +293,6 @@ public interface CentermonitorTMonitoringDeviceMapper
      * 移除监测设备图片
      */
     void deleteImageByDeviceId(@Param("deviceId")String deviceId);
+
+    int insertTemperatureControlData(CentermonitorTMonitoringDeviceData centermonitorTMonitoringDeviceData);
 }

+ 14 - 0
src/main/java/com/sooka/sponest/monitor/device/service/ICentermonitorTMonitoringDeviceService.java

@@ -120,6 +120,19 @@ public interface ICentermonitorTMonitoringDeviceService
      List<CentermonitorTMonitoringDataWaterQuality> selectWaterQualityMonitoringData(CentermonitorTMonitoringDataWaterQuality centermonitorTMonitoringDataWaterQuality);
 
     /**
+     * 查询温控设备数据列表
+     */
+     List<CentermonitorTMonitoringDeviceData> selectTemperatureControlMonitoringData(CentermonitorTMonitoringDeviceData temperatureControlData);
+
+    /**
+     * 插入温控设备数据
+     * 
+     * @param centermonitorTMonitoringDeviceData 温控设备数据
+     * @return 插入结果
+     */
+    int insertTemperatureControlData(CentermonitorTMonitoringDeviceData centermonitorTMonitoringDeviceData);
+
+    /**
      * 查询土壤墒情传感器数据列表
      *
      * @param centermonitorTMonitoringDataSoilMoisture 水质传感器
@@ -228,4 +241,5 @@ public interface ICentermonitorTMonitoringDeviceService
 
     R getIoTEquipmentDetails(Long deptId,String deviceCode,String deviceType);
 
+
 }

+ 23 - 0
src/main/java/com/sooka/sponest/monitor/device/service/impl/CentermonitorTMonitoringDeviceServiceImpl.java

@@ -524,6 +524,28 @@ public class CentermonitorTMonitoringDeviceServiceImpl extends BaseService imple
     }
 
     /**
+     * 查询温控设备数据列表
+     *
+     * @param centermonitorTMonitoringDeviceData 温控设备数据
+     * @return 监测设备
+     */
+    @Override
+    public List<CentermonitorTMonitoringDeviceData> selectTemperatureControlMonitoringData(CentermonitorTMonitoringDeviceData centermonitorTMonitoringDeviceData) {
+        return centermonitorTMonitoringDeviceMapper.selectTemperatureControlMonitoringData(centermonitorTMonitoringDeviceData);
+    }
+
+    /**
+     * 插入温控设备数据
+     *
+     * @param centermonitorTMonitoringDeviceData 温控设备数据
+     * @return 插入结果
+     */
+    @Override
+    public int insertTemperatureControlData(CentermonitorTMonitoringDeviceData centermonitorTMonitoringDeviceData) {
+        return centermonitorTMonitoringDeviceMapper.insertTemperatureControlData(centermonitorTMonitoringDeviceData);
+    }
+
+    /**
      * 查询土壤墒情传感器数据列表
      *
      * @param centermonitorTMonitoringDataSoilMoisture 水质传感器
@@ -1422,4 +1444,5 @@ public class CentermonitorTMonitoringDeviceServiceImpl extends BaseService imple
         map.put("nameList",nameList);
         return map;
     }
+
 }

+ 107 - 5
src/main/resources/mapper/monitor/device/CentermonitorTMonitoringDeviceMapper.xml

@@ -95,6 +95,34 @@
         <result property="createTime" column="create_time"/>
     </resultMap>
 
+    <resultMap type="CentermonitorTMonitoringDeviceImg" id="CentermonitorTMonitoringDeviceImgResult">
+        <result property="id" column="id"/>
+        <result property="deviceId" column="device_id"/>
+        <result property="deviceImg" column="device_img"/>
+    </resultMap>
+
+    <resultMap type="CentermonitorTMonitoringDeviceData" id="CentermonitorTMonitoringDeviceDataResult">
+        <result property="id" column="id"/>
+        <result property="deviceId" column="device_id"/>
+        <result property="T1_01" column="T1_01"/>
+        <result property="T1_02" column="T1_02"/>
+        <result property="T1_03" column="T1_03"/>
+        <result property="T1_04" column="T1_04"/>
+        <result property="T1_05" column="T1_05"/>
+        <result property="T2_01" column="T2_01"/>
+        <result property="T2_02" column="T2_02"/>
+        <result property="T2_03" column="T2_03"/>
+        <result property="T2_04" column="T2_04"/>
+        <result property="T2_05" column="T2_05"/>
+        <result property="T3_01" column="T3_01"/>
+        <result property="T3_02" column="T3_02"/>
+        <result property="T3_03" column="T3_03"/>
+        <result property="T3_04" column="T3_04"/>
+        <result property="T3_05" column="T3_05"/>
+        <result property="uploadTime" column="upload_time"/>
+        <result property="createTime" column="create_time"/>
+    </resultMap>
+
     <resultMap type="CentermonitorTMonitoringDataWaterPressure" id="CentermonitorTMonitoringDataWaterPressureResult">
         <result property="id" column="id"/>
         <result property="IMEI" column="IMEI"/>
@@ -153,11 +181,76 @@
         <result property="isCommandCenter" column="is_command_center"/>
     </resultMap>
 
-    <resultMap type="CentermonitorTMonitoringDeviceImg" id="CentermonitorTMonitoringDeviceImgResult">
-        <result property="id" column="id"/>
-        <result property="deviceId" column="device_id"/>
-        <result property="deviceImg" column="device_img"/>
-    </resultMap>
+
+    <sql id="selectCentermonitorTMonitoringDeviceDataVo">
+        SELECT
+            id,
+            device_id,
+            T1_01,
+            T1_02,
+            T1_03,
+            T1_04,
+            T1_05,
+            T2_01,
+            T2_02,
+            T2_03,
+            T2_04,
+            T2_05,
+            T3_01,
+            T3_02,
+            T3_03,
+            T3_04,
+            T3_05,
+            upload_time,
+            create_time
+        FROM
+            centermonitor_t_monitoring_device_data
+    </sql>
+
+    <insert id="insertTemperatureControlData" parameterType="CentermonitorTMonitoringDeviceData">
+        INSERT INTO centermonitor_t_monitoring_device_data
+        (
+            device_id,
+            T1_01,
+            T1_02,
+            T1_03,
+            T1_04,
+            T1_05,
+            T2_01,
+            T2_02,
+            T2_03,
+            T2_04,
+            T2_05,
+            T3_01,
+            T3_02,
+            T3_03,
+            T3_04,
+            T3_05,
+            upload_time,
+            create_time
+        )
+        VALUES
+        (
+            #{deviceId},
+            #{T1_01},
+            #{T1_02},
+            #{T1_03},
+            #{T1_04},
+            #{T1_05},
+            #{T2_01},
+            #{T2_02},
+            #{T2_03},
+            #{T2_04},
+            #{T2_05},
+            #{T3_01},
+            #{T3_02},
+            #{T3_03},
+            #{T3_04},
+            #{T3_05},
+            #{uploadTime},
+            #{createTime}
+        )
+    </insert>
 
     <sql id="selectCentermonitorTMonitoringDeviceVo">
         SELECT
@@ -494,6 +587,14 @@
         where id = #{id}
     </select>
 
+    <select id="selectTemperatureControlMonitoringData" parameterType="CentermonitorTMonitoringDeviceData" resultMap="CentermonitorTMonitoringDeviceDataResult">
+        <include refid="selectCentermonitorTMonitoringDeviceDataVo"/>
+        <where>
+            <if test="deviceId != null">and device_id = #{deviceId}</if>
+        </where>
+        ORDER BY upload_time DESC
+    </select>
+
     <select id="selectInsectPestsCentermonitorByDeviceCode" parameterType="string"
             resultMap="CentermonitorTMonitoringDataInsectPestsResult">
         <include refid="selectInsectPestsDeviceVo"/>
@@ -1623,4 +1724,5 @@
     <delete id="deleteImageByDeviceId">
         delete from centermonitor_t_monitoring_device_img where device_id = #{deviceId}
     </delete>
+
 </mapper>