|
@@ -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();
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|