3 Angajamente ee2b62bd9a ... 0296e5be01

Autor SHA1 Permisiunea de a trimite mesaje. Dacă este dezactivată, utilizatorul nu va putea trimite nici un fel de mesaj Data
  hwt 0296e5be01 修正 空气温度 11 luni în urmă
  hwt 64a64c7d0b 更新 11 luni în urmă
  hwt b98d07eb4b 更新实时数据 11 luni în urmă

+ 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>