3 Komitmen ee2b62bd9a ... 0296e5be01

Pembuat SHA1 Pesan Tanggal
  hwt 0296e5be01 修正 空气温度 11 bulan lalu
  hwt 64a64c7d0b 更新 11 bulan lalu
  hwt b98d07eb4b 更新实时数据 11 bulan lalu

+ 268 - 0
ruoyi-modules/ruoyi-qxsb/src/main/java/com/ruoyi/hhzx/qxsb/rk/domain/WeatherRealtimeData.java

@@ -0,0 +1,268 @@
+package com.ruoyi.hhzx.qxsb.rk.domain;
+
+import java.math.BigDecimal;
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.ruoyi.common.core.annotation.Excel;
+import com.ruoyi.common.core.web.domain.BaseEntity;
+
+/**
+ * 气象站实时数据对象 weather_realtime_data
+ * 
+ * @author ruoyi
+ * @date 2025-06-16
+ */
+public class WeatherRealtimeData extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /**  */
+    private Long id;
+
+    /** 设备编号 */
+    @Excel(name = "设备编号")
+    private String deviceId;
+
+    /** 气温(°C) */
+    @Excel(name = "气温(°C)")
+    private BigDecimal temperature;
+
+    /** 湿度(%) */
+    @Excel(name = "湿度(%)")
+    private BigDecimal humidity;
+
+    /** 降雨量(mm) */
+    @Excel(name = "降雨量(mm)")
+    private BigDecimal rainfall;
+
+    /** 降雨量(mm) */
+    @Excel(name = "累积降雨量(mm)")
+    private BigDecimal rainfallA;
+
+    /** 风向 */
+    @Excel(name = "风向")
+    private String windDirection;
+
+    /** 风速(m/s) */
+    @Excel(name = "风速(m/s)")
+    private BigDecimal windSpeed;
+
+    /** 气压(hPa) */
+    @Excel(name = "气压(hPa)")
+    private BigDecimal airPressure;
+
+    /** 光照强度(lux) */
+    @Excel(name = "光照强度(lux)")
+    private BigDecimal lightIntensity;
+
+    /** 采集时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @Excel(name = "采集时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
+    private Date collectTime;
+
+    /** 土壤温度 */
+    @Excel(name = "土壤温度")
+    private BigDecimal soilTemperature;
+
+    /** 土壤水分 */
+    @Excel(name = "土壤水分")
+    private BigDecimal soilHumidity;
+
+    /** 土壤氮 */
+    @Excel(name = "土壤氮")
+    private BigDecimal soilN;
+
+    /** 土壤磷 */
+    @Excel(name = "土壤磷")
+    private BigDecimal soilP;
+
+    /** 土壤钾 */
+    @Excel(name = "土壤钾")
+    private BigDecimal soilK;
+
+    public void setId(Long id) 
+    {
+        this.id = id;
+    }
+
+    public Long getId() 
+    {
+        return id;
+    }
+
+    public void setDeviceId(String deviceId) 
+    {
+        this.deviceId = deviceId;
+    }
+
+    public String getDeviceId() 
+    {
+        return deviceId;
+    }
+
+    public void setTemperature(BigDecimal temperature) 
+    {
+        this.temperature = temperature;
+    }
+
+    public BigDecimal getTemperature() 
+    {
+        return temperature;
+    }
+
+    public void setHumidity(BigDecimal humidity) 
+    {
+        this.humidity = humidity;
+    }
+
+    public BigDecimal getHumidity() 
+    {
+        return humidity;
+    }
+
+    public void setRainfall(BigDecimal rainfall) 
+    {
+        this.rainfall = rainfall;
+    }
+
+    public BigDecimal getRainfall() 
+    {
+        return rainfall;
+    }
+
+    public void setWindDirection(String windDirection) 
+    {
+        this.windDirection = windDirection;
+    }
+
+    public String getWindDirection() 
+    {
+        return windDirection;
+    }
+
+    public void setWindSpeed(BigDecimal windSpeed) 
+    {
+        this.windSpeed = windSpeed;
+    }
+
+    public BigDecimal getWindSpeed() 
+    {
+        return windSpeed;
+    }
+
+    public void setAirPressure(BigDecimal airPressure) 
+    {
+        this.airPressure = airPressure;
+    }
+
+    public BigDecimal getAirPressure() 
+    {
+        return airPressure;
+    }
+
+    public void setLightIntensity(BigDecimal lightIntensity) 
+    {
+        this.lightIntensity = lightIntensity;
+    }
+
+    public BigDecimal getLightIntensity() 
+    {
+        return lightIntensity;
+    }
+
+    public void setCollectTime(Date collectTime) 
+    {
+        this.collectTime = collectTime;
+    }
+
+    public Date getCollectTime() 
+    {
+        return collectTime;
+    }
+
+    public void setSoilTemperature(BigDecimal soilTemperature) 
+    {
+        this.soilTemperature = soilTemperature;
+    }
+
+    public BigDecimal getSoilTemperature() 
+    {
+        return soilTemperature;
+    }
+
+    public void setSoilHumidity(BigDecimal soilHumidity) 
+    {
+        this.soilHumidity = soilHumidity;
+    }
+
+    public BigDecimal getSoilHumidity() 
+    {
+        return soilHumidity;
+    }
+
+    public void setSoilN(BigDecimal soilN) 
+    {
+        this.soilN = soilN;
+    }
+
+    public BigDecimal getSoilN() 
+    {
+        return soilN;
+    }
+
+    public void setSoilP(BigDecimal soilP) 
+    {
+        this.soilP = soilP;
+    }
+
+    public BigDecimal getSoilP() 
+    {
+        return soilP;
+    }
+
+    public void setSoilK(BigDecimal soilK) 
+    {
+        this.soilK = soilK;
+    }
+
+    public BigDecimal getSoilK() 
+    {
+        return soilK;
+    }
+
+    public BigDecimal getRainfallA() {
+        return rainfallA;
+    }
+
+    public void setRainfallA(BigDecimal rainfallA) {
+        this.rainfallA = rainfallA;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("deviceId", getDeviceId())
+            .append("temperature", getTemperature())
+            .append("humidity", getHumidity())
+            .append("rainfall", getRainfall())
+            .append("windDirection", getWindDirection())
+            .append("windSpeed", getWindSpeed())
+            .append("airPressure", getAirPressure())
+            .append("lightIntensity", getLightIntensity())
+            .append("collectTime", getCollectTime())
+            .append("createTime", getCreateTime())
+            .append("updateTime", getUpdateTime())
+            .append("createBy", getCreateBy())
+            .append("updateBy", getUpdateBy())
+            .append("soilTemperature", getSoilTemperature())
+            .append("soilHumidity", getSoilHumidity())
+            .append("soilN", getSoilN())
+            .append("soilP", getSoilP())
+            .append("soilK", getSoilK())
+            .append("rainfallA", getRainfallA())
+            .toString();
+    }
+}

+ 179 - 0
ruoyi-modules/ruoyi-qxsb/src/main/java/com/ruoyi/hhzx/qxsb/rk/listener/dataListener.java

@@ -0,0 +1,179 @@
+package com.ruoyi.hhzx.qxsb.rk.listener;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.ruoyi.hhzx.qxsb.rk.domain.WeatherRealtimeData;
+import com.ruoyi.hhzx.qxsb.rk.service.IWeatherRealtimeDataService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+import rk.netDevice.sdk.p2.*;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+@Component
+@Slf4j
+public class dataListener implements IDataListener {
+
+    @Autowired
+    protected IWeatherRealtimeDataService iws;
+
+
+    @Override
+    public void receiveRealtimeData(RealTimeData realTimeData) {
+
+        log.info("收到实时数据");
+        WeatherRealtimeData wrd = new WeatherRealtimeData();
+
+        WeatherRealtimeData wrdlast = new WeatherRealtimeData();
+
+        StringBuilder sb = new StringBuilder();
+        sb.append("==== DeviceInfo ====\n");
+
+        JSONObject json = new JSONObject();
+
+        // 添加设备基本信息
+        json.put("deviceId", realTimeData.getDeviceId());
+
+        wrd.setDeviceId(String.valueOf(realTimeData.getDeviceId()));
+        wrdlast.setDeviceId(String.valueOf(realTimeData.getDeviceId()));
+
+        if (iws == null){
+            log.info("iws 为空");
+        }
+
+        wrdlast = iws.selectWeatherRealtimeDataLast(wrdlast);
+
+
+        json.put("lng", realTimeData.getLng());
+        json.put("lat", realTimeData.getLat());
+        json.put("coordinateType", realTimeData.getCoordinateType());
+        json.put("relayStatus", realTimeData.getRelayStatus());
+
+
+
+        // 处理节点列表
+        if (realTimeData.getNodeList() != null && !realTimeData.getNodeList().isEmpty()) {
+            JSONArray nodeArray = new JSONArray();
+            for (int i = 0; i < realTimeData.getNodeList().size(); i++) {
+                NodeData node = realTimeData.getNodeList().get(i);
+                JSONObject nodeJson = new JSONObject();
+
+                nodeJson.put("nodeId", node.getNodeId());
+                nodeJson.put("tem", node.getTem());
+                nodeJson.put("hum", node.getHum());
+                nodeJson.put("recordTime", node.getRecordTime());
+                nodeJson.put("coordinateType", node.getCoordinateType());
+                nodeJson.put("lng", node.getLng());
+                nodeJson.put("lat", node.getLat());
+
+                nodeArray.add(nodeJson);
+
+
+                switch (node.getNodeId()){
+                    case 1:
+                        wrd.setWindSpeed(BigDecimal.valueOf(node.getHum()));
+                        break;
+                    case 2:
+                        wrd.setWindDirection(String.valueOf((int)Math.round(node.getHum()*10)));
+                        break;
+                    case 3:
+                        wrd.setSoilTemperature(BigDecimal.valueOf(node.getTem()));
+                        wrd.setSoilHumidity(BigDecimal.valueOf(node.getHum()));
+                        break;
+                    case 11:
+                        wrd.setTemperature(BigDecimal.valueOf(node.getTem()));
+                        wrd.setHumidity(BigDecimal.valueOf(node.getHum()));
+                        break;
+                    case 14:
+                        wrd.setAirPressure(BigDecimal.valueOf(node.getHum()*10));
+                        break;
+                    case 15:
+                        wrd.setLightIntensity(BigDecimal.valueOf(node.getTem()));
+                        break;
+                    case 20:
+                        BigDecimal rainnow = BigDecimal.valueOf(node.getTem()*2);
+                        if (wrdlast != null){
+                            BigDecimal lastrain = wrdlast.getRainfallA();
+                            if (rainnow.compareTo(lastrain) >=0) {
+                                BigDecimal raincharge = rainnow.subtract(lastrain);
+                                wrd.setRainfall(raincharge);
+                                wrd.setRainfallA(rainnow);
+                            }else{
+                                wrd.setRainfall(lastrain);
+                                wrd.setRainfallA(rainnow);
+                            }
+                        }else{
+                            wrd.setRainfall(rainnow);
+                            wrd.setRainfallA(rainnow);
+                        }
+
+                        break;
+                    case 28:
+                        wrd.setSoilN(BigDecimal.valueOf(node.getTem()*10));
+                        wrd.setSoilP(BigDecimal.valueOf(node.getTem()*10));
+
+                        break;
+                    case 29:
+                        wrd.setSoilK(BigDecimal.valueOf(node.getTem()*10));
+
+                        break;
+                }
+            }
+            json.put("nodeList", nodeArray);
+        }
+        sb.append(json.toJSONString()).append("\n");
+        sb.append("====================");
+        log.info(sb.toString());
+        wrd.setCollectTime(new Date());
+        wrd.setCreateBy("qxsb");
+        log.info("realData:{}", wrd.toString());
+        iws.insertWeatherRealtimeData(wrd);
+    }
+
+    @Override
+    public void receiveLoginData(LoginData loginData) {
+        log.info("loginData:{}", loginData.getDeviceId());
+    }
+
+    @Override
+    public void receiveStoreData(StoreData storeData) {
+        log.info("storeData:{}", storeData);
+    }
+
+    @Override
+    public void receiveTelecontrolAck(TelecontrolAck telecontrolAck) {
+        log.info("telecontrolAck:{}", telecontrolAck);
+    }
+
+    @Override
+    public void receiveTimmingAck(TimmingAck timmingAck) {
+        log.info("timmingAck:{}", timmingAck);
+    }
+
+    @Override
+    public void receiveParamIds(ParamIdsData paramIdsData) {
+        log.info("paramIdsData:{}", paramIdsData);
+    }
+
+    @Override
+    public void receiveParam(ParamData paramData) {
+        log.info("paramData:{}", paramData);
+    }
+
+    @Override
+    public void receiveWriteParamAck(WriteParamAck writeParamAck) {
+        log.info("writeParamAck:{}", writeParamAck);
+    }
+
+    @Override
+    public void receiveTransDataAck(TransDataAck transDataAck) {
+        log.info("transDataAck:{}", transDataAck);
+    }
+
+    @Override
+    public void receiveHeartbeatData(HeartbeatData heartbeatData) {
+        log.info("heartbeatData:{}", heartbeatData);
+    }
+}

+ 72 - 0
ruoyi-modules/ruoyi-qxsb/src/main/java/com/ruoyi/hhzx/qxsb/rk/mapper/WeatherRealtimeDataMapper.java

@@ -0,0 +1,72 @@
+package com.ruoyi.hhzx.qxsb.rk.mapper;
+
+import com.ruoyi.hhzx.qxsb.rk.domain.WeatherRealtimeData;
+
+import java.util.List;
+
+
+/**
+ * 气象站实时数据Mapper接口
+ * 
+ * @author ruoyi
+ * @date 2025-06-16
+ */
+public interface WeatherRealtimeDataMapper 
+{
+    /**
+     * 查询气象站实时数据
+     * 
+     * @param id 气象站实时数据主键
+     * @return 气象站实时数据
+     */
+    public WeatherRealtimeData selectWeatherRealtimeDataById(Long id);
+
+    /**
+     * 查询气象站实时数据列表
+     * 
+     * @param weatherRealtimeData 气象站实时数据
+     * @return 气象站实时数据集合
+     */
+    public List<WeatherRealtimeData> selectWeatherRealtimeDataList(WeatherRealtimeData weatherRealtimeData);
+
+    /**
+     * 查询气象站实时数据最后一条
+     *
+     * @param weatherRealtimeData 气象站实时数据
+     * @return 气象站实时数据集合
+     */
+    public WeatherRealtimeData selectWeatherRealtimeDataLast(WeatherRealtimeData weatherRealtimeData);
+
+
+    /**
+     * 新增气象站实时数据
+     * 
+     * @param weatherRealtimeData 气象站实时数据
+     * @return 结果
+     */
+    public int insertWeatherRealtimeData(WeatherRealtimeData weatherRealtimeData);
+
+    /**
+     * 修改气象站实时数据
+     * 
+     * @param weatherRealtimeData 气象站实时数据
+     * @return 结果
+     */
+    public int updateWeatherRealtimeData(WeatherRealtimeData weatherRealtimeData);
+
+    /**
+     * 删除气象站实时数据
+     * 
+     * @param id 气象站实时数据主键
+     * @return 结果
+     */
+    public int deleteWeatherRealtimeDataById(Long id);
+
+    /**
+     * 批量删除气象站实时数据
+     * 
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteWeatherRealtimeDataByIds(Long[] ids);
+}

+ 2 - 1
ruoyi-modules/ruoyi-qxsb/src/main/java/com/ruoyi/hhzx/qxsb/rk/service/rkService.java → ruoyi-modules/ruoyi-qxsb/src/main/java/com/ruoyi/hhzx/qxsb/rk/rkService.java

@@ -1,6 +1,7 @@
-package com.ruoyi.hhzx.qxsb.rk.service;
+package com.ruoyi.hhzx.qxsb.rk;
 
 
+import com.ruoyi.hhzx.qxsb.rk.listener.dataListener;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;

+ 0 - 1
ruoyi-modules/ruoyi-qxsb/src/main/java/com/ruoyi/hhzx/qxsb/rk/rkServiceStart.java

@@ -1,6 +1,5 @@
 package com.ruoyi.hhzx.qxsb.rk;
 
-import com.ruoyi.hhzx.qxsb.rk.service.rkService;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.ApplicationArguments;

+ 72 - 0
ruoyi-modules/ruoyi-qxsb/src/main/java/com/ruoyi/hhzx/qxsb/rk/service/IWeatherRealtimeDataService.java

@@ -0,0 +1,72 @@
+package com.ruoyi.hhzx.qxsb.rk.service;
+
+import com.ruoyi.hhzx.qxsb.rk.domain.WeatherRealtimeData;
+
+import java.util.List;
+
+
+/**
+ * 气象站实时数据Service接口
+ * 
+ * @author ruoyi
+ * @date 2025-06-16
+ */
+public interface IWeatherRealtimeDataService 
+{
+    /**
+     * 查询气象站实时数据
+     * 
+     * @param id 气象站实时数据主键
+     * @return 气象站实时数据
+     */
+    public WeatherRealtimeData selectWeatherRealtimeDataById(Long id);
+
+    /**
+     * 查询气象站实时数据列表
+     * 
+     * @param weatherRealtimeData 气象站实时数据
+     * @return 气象站实时数据集合
+     */
+    public List<WeatherRealtimeData> selectWeatherRealtimeDataList(WeatherRealtimeData weatherRealtimeData);
+
+    /**
+     * 查询气象站实时数据最后一条
+     *
+     * @param weatherRealtimeData 气象站实时数据
+     * @return 气象站实时数据集合
+     */
+    public WeatherRealtimeData selectWeatherRealtimeDataLast(WeatherRealtimeData weatherRealtimeData);
+
+
+    /**
+     * 新增气象站实时数据
+     * 
+     * @param weatherRealtimeData 气象站实时数据
+     * @return 结果
+     */
+    public int insertWeatherRealtimeData(WeatherRealtimeData weatherRealtimeData);
+
+    /**
+     * 修改气象站实时数据
+     * 
+     * @param weatherRealtimeData 气象站实时数据
+     * @return 结果
+     */
+    public int updateWeatherRealtimeData(WeatherRealtimeData weatherRealtimeData);
+
+    /**
+     * 批量删除气象站实时数据
+     * 
+     * @param ids 需要删除的气象站实时数据主键集合
+     * @return 结果
+     */
+    public int deleteWeatherRealtimeDataByIds(Long[] ids);
+
+    /**
+     * 删除气象站实时数据信息
+     * 
+     * @param id 气象站实时数据主键
+     * @return 结果
+     */
+    public int deleteWeatherRealtimeDataById(Long id);
+}

+ 0 - 59
ruoyi-modules/ruoyi-qxsb/src/main/java/com/ruoyi/hhzx/qxsb/rk/service/dataListener.java

@@ -1,59 +0,0 @@
-package com.ruoyi.hhzx.qxsb.rk.service;
-
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.stereotype.Component;
-import rk.netDevice.sdk.p2.*;
-
-@Component
-@Slf4j
-public class dataListener implements IDataListener {
-    @Override
-    public void receiveRealtimeData(RealTimeData realTimeData) {
-        log.info("realTimeData:{}", realTimeData);
-    }
-
-    @Override
-    public void receiveLoginData(LoginData loginData) {
-        log.info("loginData:{}", loginData);
-    }
-
-    @Override
-    public void receiveStoreData(StoreData storeData) {
-        log.info("storeData:{}", storeData);
-    }
-
-    @Override
-    public void receiveTelecontrolAck(TelecontrolAck telecontrolAck) {
-        log.info("telecontrolAck:{}", telecontrolAck);
-    }
-
-    @Override
-    public void receiveTimmingAck(TimmingAck timmingAck) {
-        log.info("timmingAck:{}", timmingAck);
-    }
-
-    @Override
-    public void receiveParamIds(ParamIdsData paramIdsData) {
-        log.info("paramIdsData:{}", paramIdsData);
-    }
-
-    @Override
-    public void receiveParam(ParamData paramData) {
-        log.info("paramData:{}", paramData);
-    }
-
-    @Override
-    public void receiveWriteParamAck(WriteParamAck writeParamAck) {
-        log.info("writeParamAck:{}", writeParamAck);
-    }
-
-    @Override
-    public void receiveTransDataAck(TransDataAck transDataAck) {
-        log.info("transDataAck:{}", transDataAck);
-    }
-
-    @Override
-    public void receiveHeartbeatData(HeartbeatData heartbeatData) {
-        log.info("heartbeatData:{}", heartbeatData);
-    }
-}

+ 111 - 0
ruoyi-modules/ruoyi-qxsb/src/main/java/com/ruoyi/hhzx/qxsb/rk/service/impl/WeatherRealtimeDataServiceImpl.java

@@ -0,0 +1,111 @@
+package com.ruoyi.hhzx.qxsb.rk.service.impl;
+
+import java.util.List;
+import com.ruoyi.common.core.utils.DateUtils;
+import com.ruoyi.hhzx.qxsb.rk.domain.WeatherRealtimeData;
+import com.ruoyi.hhzx.qxsb.rk.mapper.WeatherRealtimeDataMapper;
+import com.ruoyi.hhzx.qxsb.rk.service.IWeatherRealtimeDataService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+
+/**
+ * 气象站实时数据Service业务层处理
+ * 
+ * @author ruoyi
+ * @date 2025-06-16
+ */
+@Service
+public class WeatherRealtimeDataServiceImpl implements IWeatherRealtimeDataService
+{
+    @Autowired
+    private WeatherRealtimeDataMapper weatherRealtimeDataMapper;
+
+    /**
+     * 查询气象站实时数据
+     * 
+     * @param id 气象站实时数据主键
+     * @return 气象站实时数据
+     */
+    @Override
+    public WeatherRealtimeData selectWeatherRealtimeDataById(Long id)
+    {
+        return weatherRealtimeDataMapper.selectWeatherRealtimeDataById(id);
+    }
+
+    /**
+     * 查询气象站实时数据列表
+     * 
+     * @param weatherRealtimeData 气象站实时数据
+     * @return 气象站实时数据
+     */
+    @Override
+    public List<WeatherRealtimeData> selectWeatherRealtimeDataList(WeatherRealtimeData weatherRealtimeData)
+    {
+        return weatherRealtimeDataMapper.selectWeatherRealtimeDataList(weatherRealtimeData);
+    }
+
+    /**
+     * 查询气象站实时数据列表
+     *
+     * @param weatherRealtimeData 气象站实时数据
+     * @return 气象站实时数据
+     */
+    @Override
+    public WeatherRealtimeData selectWeatherRealtimeDataLast(WeatherRealtimeData weatherRealtimeData)
+    {
+        return weatherRealtimeDataMapper.selectWeatherRealtimeDataLast(weatherRealtimeData);
+    }
+
+
+
+    /**
+     * 新增气象站实时数据
+     * 
+     * @param weatherRealtimeData 气象站实时数据
+     * @return 结果
+     */
+    @Override
+    public int insertWeatherRealtimeData(WeatherRealtimeData weatherRealtimeData)
+    {
+        weatherRealtimeData.setCreateTime(DateUtils.getNowDate());
+        return weatherRealtimeDataMapper.insertWeatherRealtimeData(weatherRealtimeData);
+    }
+
+    /**
+     * 修改气象站实时数据
+     * 
+     * @param weatherRealtimeData 气象站实时数据
+     * @return 结果
+     */
+    @Override
+    public int updateWeatherRealtimeData(WeatherRealtimeData weatherRealtimeData)
+    {
+        weatherRealtimeData.setUpdateTime(DateUtils.getNowDate());
+        return weatherRealtimeDataMapper.updateWeatherRealtimeData(weatherRealtimeData);
+    }
+
+    /**
+     * 批量删除气象站实时数据
+     * 
+     * @param ids 需要删除的气象站实时数据主键
+     * @return 结果
+     */
+    @Override
+    public int deleteWeatherRealtimeDataByIds(Long[] ids)
+    {
+        return weatherRealtimeDataMapper.deleteWeatherRealtimeDataByIds(ids);
+    }
+
+    /**
+     * 删除气象站实时数据信息
+     * 
+     * @param id 气象站实时数据主键
+     * @return 结果
+     */
+    @Override
+    public int deleteWeatherRealtimeDataById(Long id)
+    {
+        return weatherRealtimeDataMapper.deleteWeatherRealtimeDataById(id);
+    }
+}

+ 13 - 1
ruoyi-modules/ruoyi-qxsb/src/main/resources/bootstrap.yml

@@ -33,4 +33,16 @@ com:
   hhzx:
     qxsb:
       rk:
-        port: 24025
+        port: 24025
+
+#日志
+logging:
+  level:
+    root: info
+    com.ruoyi: info
+    org.mybatis: debug
+
+
+mybatis:
+  mapper-locations: classpath*:mapper/*.xml
+

+ 2 - 2
ruoyi-modules/ruoyi-qxsb/src/main/resources/logback.xml → ruoyi-modules/ruoyi-qxsb/src/main/resources/logback-spring.xml

@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <configuration scan="true" scanPeriod="60 seconds" debug="false">
     <!-- 日志存放路径 -->
-	<property name="log.path" value="logs/ruoyi-qxsb" />
+	<property name="log.path" value="/vdb/logs/ruoyi-qxsb" />
    <!-- 日志输出格式 -->
 	<property name="log.pattern" value="%d{HH:mm:ss.SSS} [%thread] %-5level %logger{20} - [%method,%line] - %msg%n" />
 
@@ -58,7 +58,7 @@
     </appender>
 
     <!-- 系统模块日志级别控制  -->
-	<logger name="com.ruoyi" level="info" />
+	<logger name="com.ruoyi" level="INFO" />
 	<!-- Spring日志级别控制  -->
 	<logger name="org.springframework" level="warn" />
 

+ 165 - 0
ruoyi-modules/ruoyi-qxsb/src/main/resources/mapper/WeatherRealtimeDataMapper.xml

@@ -0,0 +1,165 @@
+<?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.hhzx.qxsb.rk.mapper.WeatherRealtimeDataMapper">
+    
+    <resultMap type="com.ruoyi.hhzx.qxsb.rk.domain.WeatherRealtimeData" id="WeatherRealtimeDataResult">
+        <result property="id"    column="id"    />
+        <result property="deviceId"    column="device_id"    />
+        <result property="temperature"    column="temperature"    />
+        <result property="humidity"    column="humidity"    />
+        <result property="rainfall"    column="rainfall"    />
+        <result property="rainfallA"    column="rainfall_a"    />
+        <result property="windDirection"    column="wind_direction"    />
+        <result property="windSpeed"    column="wind_speed"    />
+        <result property="airPressure"    column="air_pressure"    />
+        <result property="lightIntensity"    column="light_intensity"    />
+        <result property="collectTime"    column="collect_time"    />
+        <result property="createTime"    column="create_time"    />
+        <result property="updateTime"    column="update_time"    />
+        <result property="createBy"    column="create_by"    />
+        <result property="updateBy"    column="update_by"    />
+        <result property="soilTemperature"    column="soil_temperature"    />
+        <result property="soilHumidity"    column="soil_humidity"    />
+        <result property="soilN"    column="soil_n"    />
+        <result property="soilP"    column="soil_p"    />
+        <result property="soilK"    column="soil_k"    />
+
+    </resultMap>
+
+    <sql id="selectWeatherRealtimeDataVo">
+        select id, device_id, temperature, humidity, rainfall, rainfall_a , wind_direction, wind_speed, air_pressure, light_intensity, collect_time, create_time, update_time, create_by, update_by, soil_temperature, soil_humidity, soil_n, soil_p, soil_k from weather_realtime_data
+    </sql>
+
+    <select id="selectWeatherRealtimeDataList" parameterType="com.ruoyi.hhzx.qxsb.rk.domain.WeatherRealtimeData" resultMap="WeatherRealtimeDataResult">
+        <include refid="selectWeatherRealtimeDataVo"/>
+        <where>  
+            <if test="deviceId != null  and deviceId != ''"> and device_id = #{deviceId}</if>
+            <if test="temperature != null "> and temperature = #{temperature}</if>
+            <if test="humidity != null "> and humidity = #{humidity}</if>
+            <if test="rainfall != null "> and rainfall = #{rainfall}</if>
+            <if test="rainfallA != null "> and rainfall_a = #{rainfall}</if>
+            <if test="windDirection != null  and windDirection != ''"> and wind_direction = #{windDirection}</if>
+            <if test="windSpeed != null "> and wind_speed = #{windSpeed}</if>
+            <if test="airPressure != null "> and air_pressure = #{airPressure}</if>
+            <if test="lightIntensity != null "> and light_intensity = #{lightIntensity}</if>
+            <if test="collectTime != null "> and collect_time = #{collectTime}</if>
+            <if test="soilTemperature != null "> and soil_temperature = #{soilTemperature}</if>
+            <if test="soilHumidity != null "> and soil_humidity = #{soilHumidity}</if>
+            <if test="soilN != null "> and soil_n = #{soilN}</if>
+            <if test="soilP != null "> and soil_p = #{soilP}</if>
+            <if test="soilK != null "> and soil_k = #{soilK}</if>
+        </where>
+    </select>
+    
+    <select id="selectWeatherRealtimeDataById" parameterType="Long" resultMap="WeatherRealtimeDataResult">
+        <include refid="selectWeatherRealtimeDataVo"/>
+        where id = #{id}
+    </select>
+
+    <select id="selectWeatherRealtimeDataLast" parameterType="Long" resultMap="WeatherRealtimeDataResult">
+        <include refid="selectWeatherRealtimeDataVo"/>
+        <where>
+            <if test="deviceId != null  and deviceId != ''"> and device_id = #{deviceId}</if>
+            <if test="temperature != null "> and temperature = #{temperature}</if>
+            <if test="humidity != null "> and humidity = #{humidity}</if>
+            <if test="rainfall != null "> and rainfall = #{rainfall}</if>
+            <if test="rainfallA != null "> and rainfall_a = #{rainfall}</if>
+            <if test="windDirection != null  and windDirection != ''"> and wind_direction = #{windDirection}</if>
+            <if test="windSpeed != null "> and wind_speed = #{windSpeed}</if>
+            <if test="airPressure != null "> and air_pressure = #{airPressure}</if>
+            <if test="lightIntensity != null "> and light_intensity = #{lightIntensity}</if>
+            <if test="collectTime != null "> and collect_time = #{collectTime}</if>
+            <if test="soilTemperature != null "> and soil_temperature = #{soilTemperature}</if>
+            <if test="soilHumidity != null "> and soil_humidity = #{soilHumidity}</if>
+            <if test="soilN != null "> and soil_n = #{soilN}</if>
+            <if test="soilP != null "> and soil_p = #{soilP}</if>
+            <if test="soilK != null "> and soil_k = #{soilK}</if>
+        </where>
+        order by collect_time desc LIMIT 1;
+    </select>
+
+    <insert id="insertWeatherRealtimeData" parameterType="com.ruoyi.hhzx.qxsb.rk.domain.WeatherRealtimeData" useGeneratedKeys="true" keyProperty="id">
+        insert into weather_realtime_data
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="deviceId != null and deviceId != ''">device_id,</if>
+            <if test="temperature != null">temperature,</if>
+            <if test="humidity != null">humidity,</if>
+            <if test="rainfall != null">rainfall,</if>
+            <if test="rainfallA != null ">rainfall_a,</if>
+            <if test="windDirection != null">wind_direction,</if>
+            <if test="windSpeed != null">wind_speed,</if>
+            <if test="airPressure != null">air_pressure,</if>
+            <if test="lightIntensity != null">light_intensity,</if>
+            <if test="collectTime != null">collect_time,</if>
+            <if test="createTime != null">create_time,</if>
+            <if test="updateTime != null">update_time,</if>
+            <if test="createBy != null and createBy != ''">create_by,</if>
+            <if test="updateBy != null">update_by,</if>
+            <if test="soilTemperature != null">soil_temperature,</if>
+            <if test="soilHumidity != null">soil_humidity,</if>
+            <if test="soilN != null">soil_n,</if>
+            <if test="soilP != null">soil_p,</if>
+            <if test="soilK != null">soil_k,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="deviceId != null and deviceId != ''">#{deviceId},</if>
+            <if test="temperature != null">#{temperature},</if>
+            <if test="humidity != null">#{humidity},</if>
+            <if test="rainfall != null">#{rainfall},</if>
+            <if test="rainfallA != null">#{rainfallA},</if>
+            <if test="windDirection != null">#{windDirection},</if>
+            <if test="windSpeed != null">#{windSpeed},</if>
+            <if test="airPressure != null">#{airPressure},</if>
+            <if test="lightIntensity != null">#{lightIntensity},</if>
+            <if test="collectTime != null">#{collectTime},</if>
+            <if test="createTime != null">#{createTime},</if>
+            <if test="updateTime != null">#{updateTime},</if>
+            <if test="createBy != null and createBy != ''">#{createBy},</if>
+            <if test="updateBy != null">#{updateBy},</if>
+            <if test="soilTemperature != null">#{soilTemperature},</if>
+            <if test="soilHumidity != null">#{soilHumidity},</if>
+            <if test="soilN != null">#{soilN},</if>
+            <if test="soilP != null">#{soilP},</if>
+            <if test="soilK != null">#{soilK},</if>
+         </trim>
+    </insert>
+
+    <update id="updateWeatherRealtimeData" parameterType="com.ruoyi.hhzx.qxsb.rk.domain.WeatherRealtimeData">
+        update weather_realtime_data
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="deviceId != null and deviceId != ''">device_id = #{deviceId},</if>
+            <if test="temperature != null">temperature = #{temperature},</if>
+            <if test="humidity != null">humidity = #{humidity},</if>
+            <if test="rainfall != null">rainfall = #{rainfall},</if>
+            <if test="rainfallA != null">rainfall_a = #{rainfall},</if>
+            <if test="windDirection != null">wind_direction = #{windDirection},</if>
+            <if test="windSpeed != null">wind_speed = #{windSpeed},</if>
+            <if test="airPressure != null">air_pressure = #{airPressure},</if>
+            <if test="lightIntensity != null">light_intensity = #{lightIntensity},</if>
+            <if test="collectTime != null">collect_time = #{collectTime},</if>
+            <if test="createTime != null">create_time = #{createTime},</if>
+            <if test="updateTime != null">update_time = #{updateTime},</if>
+            <if test="createBy != null and createBy != ''">create_by = #{createBy},</if>
+            <if test="updateBy != null">update_by = #{updateBy},</if>
+            <if test="soilTemperature != null">soil_temperature = #{soilTemperature},</if>
+            <if test="soilHumidity != null">soil_humidity = #{soilHumidity},</if>
+            <if test="soilN != null">soil_n = #{soilN},</if>
+            <if test="soilP != null">soil_p = #{soilP},</if>
+            <if test="soilK != null">soil_k = #{soilK},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <delete id="deleteWeatherRealtimeDataById" parameterType="Long">
+        delete from weather_realtime_data where id = #{id}
+    </delete>
+
+    <delete id="deleteWeatherRealtimeDataByIds" parameterType="String">
+        delete from weather_realtime_data where id in 
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+</mapper>