Browse Source

新增读取当前最新温度、湿度、历史温度和历史湿度数据功能。

zhuoning 2 năm trước cách đây
mục cha
commit
8e88cd049b

+ 0 - 2
huimv-env-platform/huimv-env-manage/src/main/java/com/huimv/env/manage/controller/EnvHumiController.java

@@ -28,11 +28,9 @@ public class EnvHumiController {
     @Autowired
     private IEnvHumiService humiService;
 
-
     @PostMapping("/dataList")
     public Result registerList(@RequestBody Map<String,String> paramMap){
         return  humiService.dataList(paramMap);
-
     }
 
 }

+ 18 - 4
huimv-env-platform/huimv-env-manage/src/main/java/com/huimv/env/manage/controller/EnvTempController.java

@@ -1,9 +1,14 @@
 package com.huimv.env.manage.controller;
 
 
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.CrossOrigin;
-import org.springframework.web.bind.annotation.RestController;
+import com.huimv.env.manage.service.IEnvHumiService;
+import com.huimv.env.manage.service.IEnvTempService;
+import com.huimv.env.manage.utils.Result;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import java.util.Map;
 
 /**
  * <p>
@@ -15,7 +20,16 @@ import org.springframework.web.bind.annotation.RestController;
  */
 @RestController
 @CrossOrigin
-@RequestMapping("/env-temp")
+@RequestMapping("/envTemp")
 public class EnvTempController {
+    @Autowired
+    private IEnvTempService envTempService;
+    @Autowired
+    private IEnvHumiService envHumiService;
+
+    @PostMapping("/getTempAndHumi")
+    public Result getTempAndHumi(@RequestBody Map<String,String> paramMap){
+        return  envTempService.getTempAndHumi(paramMap);
+    }
 
 }

+ 4 - 0
huimv-env-platform/huimv-env-manage/src/main/java/com/huimv/env/manage/entity/EnvPh.java

@@ -6,6 +6,8 @@ import java.util.Date;
 import com.baomidou.mybatisplus.annotation.Version;
 import com.baomidou.mybatisplus.annotation.TableId;
 import java.io.Serializable;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 
@@ -34,8 +36,10 @@ public class EnvPh implements Serializable {
 
     private String askTime;
 
+    @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
     private Date addTime;
 
+    @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
     private Date addDate;
 
     private String pigpenId;

+ 5 - 0
huimv-env-platform/huimv-env-manage/src/main/java/com/huimv/env/manage/mapper/EnvHumiMapper.java

@@ -8,6 +8,7 @@ import com.huimv.env.manage.entity.dto.TimeData;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
+import java.util.Map;
 
 /**
  * <p>
@@ -20,4 +21,8 @@ import java.util.List;
 public interface EnvHumiMapper extends BaseMapper<EnvHumi> {
 
     List<TimeData> listByTime(@Param(Constants.WRAPPER)  QueryWrapper<EnvHumi> humiWrapper);
+
+    List<Map<String, Object>> selectHistory(@Param("farmCode") String farmCode,@Param("days") Integer days);
+
+    List<Integer> getDayTimes(@Param("farmCode") String farmCode,@Param("days")  int days);
 }

+ 7 - 0
huimv-env-platform/huimv-env-manage/src/main/java/com/huimv/env/manage/mapper/EnvTempMapper.java

@@ -8,6 +8,7 @@ import com.huimv.env.manage.entity.dto.TimeData;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
+import java.util.Map;
 
 /**
  * <p>
@@ -20,4 +21,10 @@ import java.util.List;
 public interface EnvTempMapper extends BaseMapper<EnvTemp> {
 
     List<TimeData> listByTime(@Param(Constants.WRAPPER) QueryWrapper<EnvTemp> tempWrapper);
+
+    //
+    List<Map<String,Object>> selectHistory(@Param("farmCode") String farmCode, @Param("days") Integer days);
+
+    //
+    List<Integer> getDayTimes(@Param("farmCode") String farmCode,@Param("days") Integer days);
 }

+ 4 - 0
huimv-env-platform/huimv-env-manage/src/main/java/com/huimv/env/manage/service/IEnvTempService.java

@@ -2,6 +2,9 @@ package com.huimv.env.manage.service;
 
 import com.huimv.env.manage.entity.EnvTemp;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.huimv.env.manage.utils.Result;
+
+import java.util.Map;
 
 /**
  * <p>
@@ -13,4 +16,5 @@ import com.baomidou.mybatisplus.extension.service.IService;
  */
 public interface IEnvTempService extends IService<EnvTemp> {
 
+    Result getTempAndHumi(Map<String, String> paramMap);
 }

+ 1 - 1
huimv-env-platform/huimv-env-manage/src/main/java/com/huimv/env/manage/service/impl/EnvPhServiceImpl.java

@@ -30,7 +30,7 @@ public class EnvPhServiceImpl extends ServiceImpl<EnvPhMapper, EnvPh> implements
     public Result getPh(Map<String, String> paramsMap) {
         String farmCode = paramsMap.get("farmCode");
         QueryWrapper<EnvPh> queryWrapper = new QueryWrapper<>();
-        queryWrapper.eq("farmCode",farmCode);
+        queryWrapper.eq("farm_code",farmCode);
         queryWrapper.orderByDesc("add_time");
         queryWrapper.last("LIMIT 1");
         EnvPh envPh = envPhMapper.selectOne(queryWrapper);

+ 111 - 0
huimv-env-platform/huimv-env-manage/src/main/java/com/huimv/env/manage/service/impl/EnvTempServiceImpl.java

@@ -1,11 +1,23 @@
 package com.huimv.env.manage.service.impl;
 
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.huimv.env.manage.entity.EnvHumi;
 import com.huimv.env.manage.entity.EnvTemp;
+import com.huimv.env.manage.mapper.EnvHumiMapper;
 import com.huimv.env.manage.mapper.EnvTempMapper;
 import com.huimv.env.manage.service.IEnvTempService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.huimv.env.manage.utils.Result;
+import com.huimv.env.manage.utils.ResultCode;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
 /**
  * <p>
  *  服务实现类
@@ -16,5 +28,104 @@ import org.springframework.stereotype.Service;
  */
 @Service
 public class EnvTempServiceImpl extends ServiceImpl<EnvTempMapper, EnvTemp> implements IEnvTempService {
+    @Autowired
+    private EnvTempMapper envTempMapper;
+    @Autowired
+    private EnvHumiMapper envHumiMapper;
+
+    /**
+     * @Method      : getTempAndHumi
+     * @Description : 1、读取当前温度和湿度 2、读取历史温度和湿度;
+     * @Params      : [paramMap]
+     * @Return      : com.huimv.env.manage.utils.Result
+     *
+     * @Author      : ZhuoNing
+     * @Date        : 2022/10/26
+     * @Time        : 15:29
+     */
+    @Override
+    public Result getTempAndHumi(Map<String, String> paramMap) {
+        String farmCode = paramMap.get("farmCode");
+        String days = paramMap.get("days");
+        //获取当前最新温度
+        BigDecimal lastTempBd = _getLastTemp(farmCode);
+
+        //获取当前最新湿度
+        BigDecimal lastHumiBd = _getLastHumi(farmCode);
+
+        //获取历史温度
+        List<EnvTemp> EnvTempList = _getHistoryTemp(farmCode,days);
+
+        //获取历史湿度
+        List<EnvHumi> EnvHumiList = _getHistoryHumi(farmCode,days);
+
+        JSONObject resultJo = new JSONObject();
+        resultJo.put("lastTemp",lastTempBd.toString());
+        resultJo.put("lastHumi",lastHumiBd.toString());
+        resultJo.put("historyTemp",EnvTempList);
+        resultJo.put("historyHumi",EnvHumiList);
+        return new Result(ResultCode.SUCCESS,resultJo);
+    }
+
+    //获取历史湿度
+    private List<EnvHumi> _getHistoryHumi(String farmCode, String days) {
+//汇总每天温度总数
+        List<Map<String,Object>> historyHumiList = envHumiMapper.selectHistory(farmCode,Integer.parseInt(days));
+        //计算次数
+        List<Integer> timesList = envHumiMapper.getDayTimes(farmCode,Integer.parseInt(days));
+        List outList = new ArrayList();
+        for(int a=historyHumiList.size()-1;a>=0;a--){
+            Map humiMap = historyHumiList.get(a);
+            Integer total = timesList.get(a);
+            BigDecimal newHumiBd = new BigDecimal(humiMap.get("humi").toString()).divide(new BigDecimal(total),1, BigDecimal.ROUND_HALF_UP);
+            humiMap.put("humi",newHumiBd.toString());
+            outList.add(humiMap);
+        }
+        return outList;
+    }
+
+    //获取历史温度
+    private List<EnvTemp> _getHistoryTemp(String farmCode, String days) {
+        //汇总每天温度总数
+        List<Map<String,Object>> historyTempList = envTempMapper.selectHistory(farmCode,Integer.parseInt(days));
+        //计算次数
+        List<Integer> timesList = envTempMapper.getDayTimes(farmCode,Integer.parseInt(days));
+        List outList = new ArrayList();
+        for(int a=historyTempList.size()-1;a>=0;a--){
+            Map tempMap = historyTempList.get(a);
+            Integer total = timesList.get(a);
+            BigDecimal newTempBd = new BigDecimal(tempMap.get("temp").toString()).divide(new BigDecimal(total),1, BigDecimal.ROUND_HALF_UP);
+            tempMap.put("temp",newTempBd.toString());
+            outList.add(tempMap);
+        }
+        return outList;
+    }
+
+    //获取当前最新湿度
+    private BigDecimal _getLastHumi(String farmCode) {
+        QueryWrapper<EnvHumi> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("farm_code",farmCode);
+        queryWrapper.orderByDesc("add_time");
+        queryWrapper.last("LIMIT 1");
+        EnvHumi lastEnvHumi = envHumiMapper.selectOne(queryWrapper);
+        if(lastEnvHumi == null){
+            return new BigDecimal(0);
+        }else{
+            return lastEnvHumi.getHumi();
+        }
+    }
 
+    //读取最新温度
+    private BigDecimal _getLastTemp(String farmCode) {
+        QueryWrapper<EnvTemp> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("farm_code",farmCode);
+        queryWrapper.orderByDesc("add_time");
+        queryWrapper.last("LIMIT 1");
+        EnvTemp lastEnvTemp = envTempMapper.selectOne(queryWrapper);
+        if(lastEnvTemp == null){
+            return new BigDecimal(0);
+        }else{
+            return lastEnvTemp.getTemp();
+        }
+    }
 }

+ 24 - 15
huimv-env-platform/huimv-env-manage/src/main/resources/com/huimv/env/manage/mapper/EnvHumiMapper.xml

@@ -4,16 +4,16 @@
 
     <!-- 通用查询映射结果 -->
     <resultMap id="BaseResultMap" type="com.huimv.env.manage.entity.EnvHumi">
-        <id column="id" property="id" />
-        <result column="device_code" property="deviceCode" />
-        <result column="sensor_sn" property="sensorSn" />
-        <result column="humi" property="humi" />
-        <result column="ask_time" property="askTime" />
-        <result column="add_time" property="addTime" />
-        <result column="add_date" property="addDate" />
-        <result column="pigpen_id" property="pigpenId" />
-        <result column="unit_id" property="unitId" />
-        <result column="farm_code" property="farmCode" />
+        <id column="id" property="id"/>
+        <result column="device_code" property="deviceCode"/>
+        <result column="sensor_sn" property="sensorSn"/>
+        <result column="humi" property="humi"/>
+        <result column="ask_time" property="askTime"/>
+        <result column="add_time" property="addTime"/>
+        <result column="add_date" property="addDate"/>
+        <result column="pigpen_id" property="pigpenId"/>
+        <result column="unit_id" property="unitId"/>
+        <result column="farm_code" property="farmCode"/>
     </resultMap>
     <select id="listByTime" resultType="com.huimv.env.manage.entity.dto.TimeData">
 
@@ -21,9 +21,18 @@
 FROM `env_humi`
   ${ew.customSqlSegment}
     </select>
-<!--    /*   SELECT CAST(CONCAT(-->
-<!--    SUBSTR(DATE_ADD(DATE_SUB(ask_time, INTERVAL MINUTE(ask_time) MINUTE), INTERVAL FLOOR(MINUTE(ask_time) / 30) * 30 MINUTE),-->
-<!--    1, 17), '00') AS DATETIME) hourTime,ammonia  dataValue-->
-<!--    FROM `env_ammonia`-->
-<!--    ${ew.customSqlSegment}   GROUP BY hourTime*/-->
+
+    <select id="selectHistory" resultType="java.util.Map">
+        SELECT add_date,SUM(humi) AS humi FROM `env_humi` WHERE farm_code=#{farmCode} GROUP BY add_date ORDER BY add_date DESC LIMIT #{days}
+    </select>
+
+    <select id="getDayTimes" resultType="java.lang.Integer">
+        SELECT COUNT(id) AS total FROM `env_humi` WHERE farm_code=#{farmCode}  GROUP BY add_date ORDER BY add_date DESC LIMIT #{days}
+    </select>
+
+    <!--    /*   SELECT CAST(CONCAT(-->
+    <!--    SUBSTR(DATE_ADD(DATE_SUB(ask_time, INTERVAL MINUTE(ask_time) MINUTE), INTERVAL FLOOR(MINUTE(ask_time) / 30) * 30 MINUTE),-->
+    <!--    1, 17), '00') AS DATETIME) hourTime,ammonia  dataValue-->
+    <!--    FROM `env_ammonia`-->
+    <!--    ${ew.customSqlSegment}   GROUP BY hourTime*/-->
 </mapper>

+ 7 - 1
huimv-env-platform/huimv-env-manage/src/main/resources/com/huimv/env/manage/mapper/EnvTempMapper.xml

@@ -25,7 +25,13 @@
 
 
     </select>
-<!--    &#45;&#45;    /* SELECT CAST(CONCAT(-->
+    <select id="selectHistory" resultType="java.util.Map">
+        SELECT add_date,SUM(temp) AS temp FROM `env_temp` WHERE farm_code=#{farmCode} GROUP BY add_date ORDER BY add_date DESC LIMIT #{days}
+    </select>
+    <select id="getDayTimes" resultType="java.lang.Integer">
+        SELECT COUNT(id) AS total FROM `env_temp` WHERE farm_code=#{farmCode}  GROUP BY add_date ORDER BY add_date DESC LIMIT #{days}
+    </select>
+    <!--    &#45;&#45;    /* SELECT CAST(CONCAT(-->
 <!--    &#45;&#45;         SUBSTR(DATE_ADD(DATE_SUB(ask_time, INTERVAL MINUTE(ask_time) MINUTE), INTERVAL FLOOR(MINUTE(ask_time) / 30) * 30 MINUTE),-->
 <!--    &#45;&#45;                1, 17), '00') AS DATETIME) hourTime,temp  dataValue-->
 <!--    &#45;&#45;     FROM `env_temp`-->