From 9c86df06c83dffc854f58e34e4fca78428d40a8c Mon Sep 17 00:00:00 2001
From: lau572 <1010031226@qq.com>
Date: Mon, 5 Feb 2024 18:16:23 +0800
Subject: [PATCH] =?UTF-8?q?=E4=B8=AD=E9=97=B4=E5=BA=93=E6=B0=94=E8=B1=A1?=
 =?UTF-8?q?=E6=A3=80=E6=B5=8B=E5=99=A8=E6=95=B0=E6=8D=AE?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../DcMeteorologicalDetectorDataMapper.java   | 16 ++++++++
 .../DevicePropertyReportListener.java         |  8 +++-
 .../IDcMeteorologicalDetectorDataService.java |  8 ++++
 ...MeteorologicalDetectorDataServiceImpl.java | 20 ++++++++++
 .../DcMeteorologicalDetectorDataMapper.xml    | 40 ++++++++++++++++++-
 5 files changed, 89 insertions(+), 3 deletions(-)

diff --git a/zc-business/src/main/java/com/zc/business/mapper/DcMeteorologicalDetectorDataMapper.java b/zc-business/src/main/java/com/zc/business/mapper/DcMeteorologicalDetectorDataMapper.java
index 3a0868cb..b98086ce 100644
--- a/zc-business/src/main/java/com/zc/business/mapper/DcMeteorologicalDetectorDataMapper.java
+++ b/zc-business/src/main/java/com/zc/business/mapper/DcMeteorologicalDetectorDataMapper.java
@@ -43,6 +43,22 @@ public interface DcMeteorologicalDetectorDataMapper
      */
     int updateDcMeteorologicalDetectorData(DcMeteorologicalDetectorData dcMeteorologicalDetectorData);
 
+    /**
+     * 中间库新增气象检测器数据
+     *
+     * @param dcMeteorologicalDetectorData 气象检测器数据
+     * @return 结果
+     */
+    Boolean insertIntermediateWarehouseData(DcMeteorologicalDetectorData dcMeteorologicalDetectorData);
+
+    /**
+     * 中间库修改气象检测器数据
+     *
+     * @param dcMeteorologicalDetectorData 气象检测器数据
+     * @return 结果
+     */
+    Boolean updateIntermediateWarehouseData(DcMeteorologicalDetectorData dcMeteorologicalDetectorData);
+
     /**
      * 删除气象检测器数据
      * 
diff --git a/zc-business/src/main/java/com/zc/business/message/device/listener/DevicePropertyReportListener.java b/zc-business/src/main/java/com/zc/business/message/device/listener/DevicePropertyReportListener.java
index d7370696..561c79e6 100644
--- a/zc-business/src/main/java/com/zc/business/message/device/listener/DevicePropertyReportListener.java
+++ b/zc-business/src/main/java/com/zc/business/message/device/listener/DevicePropertyReportListener.java
@@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSON;
 import com.google.gson.JsonObject;
 import com.zc.business.domain.DcDevice;
 import com.zc.business.domain.DcMeteorologicalDetectorData;
+import com.zc.business.enums.IotProductEnum;
 import com.zc.business.service.IDcMeteorologicalDetectorDataService;
 import com.zc.common.core.redis.stream.RedisStream;
 import org.slf4j.Logger;
@@ -46,11 +47,14 @@ public class DevicePropertyReportListener implements StreamListener<String, Obje
             if (headers.get("productId") != null){
                 String productId = headers.get("productId").toString();
                 //气象检测器
-                if ("zc-meteorological".equals(productId)){
+                if (IotProductEnum.WEATHER_DETECTOR.value().equals(productId)){
                     DcMeteorologicalDetectorData meteorologicalDetectorData = (DcMeteorologicalDetectorData) data.get("properties");
                     meteorologicalDetectorData.setIotDeviceId(data.get("deviceId").toString());
                     meteorologicalDetectorDataService.insertDcMeteorologicalDetectorData(meteorologicalDetectorData);
-                } else if ("zc-yzsqkdc-3131".equals(productId)){
+
+                    //设计院中间库
+                    meteorologicalDetectorDataService.insertIntermediateWarehouseData(meteorologicalDetectorData);
+                } else if (IotProductEnum.ONE_STOP_PRODUCT.value().equals(productId)){
                 //交调
 
                 }
diff --git a/zc-business/src/main/java/com/zc/business/service/IDcMeteorologicalDetectorDataService.java b/zc-business/src/main/java/com/zc/business/service/IDcMeteorologicalDetectorDataService.java
index f3810b7d..481967f4 100644
--- a/zc-business/src/main/java/com/zc/business/service/IDcMeteorologicalDetectorDataService.java
+++ b/zc-business/src/main/java/com/zc/business/service/IDcMeteorologicalDetectorDataService.java
@@ -35,6 +35,14 @@ public interface IDcMeteorologicalDetectorDataService
      */
     int insertDcMeteorologicalDetectorData(DcMeteorologicalDetectorData dcMeteorologicalDetectorData);
 
+    /**
+     * 中间库新增气象检测器数据
+     *
+     * @param dcMeteorologicalDetectorData 气象检测器数据
+     * @return 结果
+     */
+    boolean insertIntermediateWarehouseData(DcMeteorologicalDetectorData dcMeteorologicalDetectorData);
+
     /**
      * 修改气象检测器数据
      * 
diff --git a/zc-business/src/main/java/com/zc/business/service/impl/DcMeteorologicalDetectorDataServiceImpl.java b/zc-business/src/main/java/com/zc/business/service/impl/DcMeteorologicalDetectorDataServiceImpl.java
index 2e7d772b..c1d3d4da 100644
--- a/zc-business/src/main/java/com/zc/business/service/impl/DcMeteorologicalDetectorDataServiceImpl.java
+++ b/zc-business/src/main/java/com/zc/business/service/impl/DcMeteorologicalDetectorDataServiceImpl.java
@@ -1,6 +1,10 @@
 package com.zc.business.service.impl;
 
 import java.util.List;
+
+import com.ruoyi.common.annotation.DataSource;
+import com.ruoyi.common.enums.DataSourceType;
+import com.zc.business.domain.DcDevice;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import com.zc.business.mapper.DcMeteorologicalDetectorDataMapper;
@@ -55,6 +59,22 @@ public class DcMeteorologicalDetectorDataServiceImpl implements IDcMeteorologica
         return dcMeteorologicalDetectorDataMapper.insertDcMeteorologicalDetectorData(dcMeteorologicalDetectorData);
     }
 
+    /**
+     * 中间库新增气象检测器数据
+     *
+     * @param dcMeteorologicalDetectorData 气象检测器数据
+     * @return 结果
+     */
+    @DataSource(value = DataSourceType.SLAVE)//切换数据源
+    @Override
+    public boolean insertIntermediateWarehouseData(DcMeteorologicalDetectorData dcMeteorologicalDetectorData)
+    {
+        if (!dcMeteorologicalDetectorDataMapper.updateIntermediateWarehouseData(dcMeteorologicalDetectorData)){
+            return dcMeteorologicalDetectorDataMapper.insertIntermediateWarehouseData(dcMeteorologicalDetectorData);
+        }
+        return false;
+    }
+
     /**
      * 修改气象检测器数据
      *
diff --git a/zc-business/src/main/resources/mapper/business/DcMeteorologicalDetectorDataMapper.xml b/zc-business/src/main/resources/mapper/business/DcMeteorologicalDetectorDataMapper.xml
index f0055df1..673e82f7 100644
--- a/zc-business/src/main/resources/mapper/business/DcMeteorologicalDetectorDataMapper.xml
+++ b/zc-business/src/main/resources/mapper/business/DcMeteorologicalDetectorDataMapper.xml
@@ -65,7 +65,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <include refid="selectDcMeteorologicalDetectorDataVo"/>
         where id = #{id}
     </select>
-        
+
     <insert id="insertDcMeteorologicalDetectorData" parameterType="DcMeteorologicalDetectorData" useGeneratedKeys="true" keyProperty="id">
         insert into dc_meteorological_detector_data
         <trim prefix="(" suffix=")" suffixOverrides=",">
@@ -146,6 +146,44 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         where id = #{id}
     </update>
 
+    <insert id="insertIntermediateWarehouseData" parameterType="DcMeteorologicalDetectorData" useGeneratedKeys="true" keyProperty="id">
+        insert into meteorological_detector_data
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="iotDeviceId != null">device_id,</if>
+            <if test="temperature != null">temperature,</if>
+            <if test="humidity != null">humidity,</if>
+            <if test="precipitationType != null">precipitation_type,</if>
+            <if test="rainfall != null">rainfall,</if>
+            <if test="roadSurfaceStatus != null">road_surface_status,</if>
+            <if test="waterFilmThickness != null">water_film_thickness,</if>
+            update_time
+        </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="iotDeviceId != null">#{iotDeviceId},</if>
+            <if test="temperature != null">#{temperature},</if>
+            <if test="humidity != null">#{humidity},</if>
+            <if test="precipitationType != null">#{precipitationType},</if>
+            <if test="rainfall != null">#{rainfall},</if>
+            <if test="roadSurfaceStatus != null">#{roadSurfaceStatus},</if>
+            <if test="waterFilmThickness != null">#{waterFilmThickness},</if>
+            current_date
+        </trim>
+    </insert>
+
+    <update id="updateIntermediateWarehouseData" parameterType="DcMeteorologicalDetectorData">
+        update meteorological_detector_data
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="temperature != null">temperature = #{temperature},</if>
+            <if test="humidity != null">humidity = #{humidity},</if>
+            <if test="precipitationType != null">precipitation_type = #{precipitationType},</if>
+            <if test="rainfall != null">rainfall = #{rainfall},</if>
+            <if test="roadSurfaceStatus != null">road_surface_status = #{roadSurfaceStatus},</if>
+            <if test="waterFilmThickness != null">water_film_thickness = #{waterFilmThickness},</if>
+            update_time = current_date
+        </trim>
+        where device_id = #{iotDeviceId}
+    </update>
+
     <delete id="deleteDcMeteorologicalDetectorDataById" parameterType="Long">
         delete from dc_meteorological_detector_data where id = #{id}
     </delete>