|
@@ -2,6 +2,7 @@ package com.huimv.env.manage.service.impl;
|
|
|
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
+import com.huimv.env.common.utils.DateUtil;
|
|
|
import com.huimv.env.manage.entity.EnvHumi;
|
|
|
import com.huimv.env.manage.entity.EnvTemp;
|
|
|
import com.huimv.env.manage.mapper.EnvHumiMapper;
|
|
@@ -10,13 +11,13 @@ 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.apache.commons.lang3.StringUtils;
|
|
|
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;
|
|
|
+import java.text.ParseException;
|
|
|
+import java.util.*;
|
|
|
|
|
|
/**
|
|
|
* <p>
|
|
@@ -33,6 +34,116 @@ public class EnvTempServiceImpl extends ServiceImpl<EnvTempMapper, EnvTemp> impl
|
|
|
@Autowired
|
|
|
private EnvHumiMapper envHumiMapper;
|
|
|
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Result getDayTempAndHumi(Map<String, String> paramMap) throws ParseException {
|
|
|
+ String farmCode = paramMap.get("farmCode");
|
|
|
+ String hours = paramMap.get("hours");
|
|
|
+ //获取当前最新温度
|
|
|
+ EnvTemp lastEnvTemp = _getLastTemp2(farmCode);
|
|
|
+ BigDecimal lastTempBd = null;
|
|
|
+ if(lastEnvTemp == null){
|
|
|
+ lastTempBd = new BigDecimal(0);
|
|
|
+ }else{
|
|
|
+ lastTempBd = lastEnvTemp.getTemp();
|
|
|
+ }
|
|
|
+ //获取当前最新湿度
|
|
|
+ BigDecimal lastHumiBd = _getLastHumi(farmCode);
|
|
|
+
|
|
|
+ //获取最后24小时的温度数据曲线
|
|
|
+ List<Map<String,Object>> envTempList = _getLast24HourTemp(farmCode,Integer.parseInt(hours),lastEnvTemp);
|
|
|
+ System.out.println("envTempList.size >>>>>>>> "+envTempList.size());
|
|
|
+ for(int a=0;a<envTempList.size();a++){
|
|
|
+ Map hourMap = envTempList.get(a);
|
|
|
+ System.out.println("hourMap="+hourMap.toString());
|
|
|
+ }
|
|
|
+
|
|
|
+ //获取最后24小时的湿度数据曲线
|
|
|
+ List<EnvHumi> EnvHumiList = _getLast24HourHumi(farmCode,hours);
|
|
|
+
|
|
|
+ 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);
|
|
|
+ }
|
|
|
+
|
|
|
+ //获取最后24小时的湿度数据曲线
|
|
|
+ private List<EnvHumi> _getLast24HourHumi(String farmCode, String days) {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
+ //获取最后24小时的温度数据曲线
|
|
|
+ private List<Map<String,Object>> _getLast24HourTemp(String farmCode, int hours, EnvTemp lastEnvTemp) throws ParseException {
|
|
|
+ DateUtil dateUtil = new DateUtil();
|
|
|
+ //获取最后一条记录的小时
|
|
|
+ //计算之前24小时时间,
|
|
|
+ String endTimeText = dateUtil.formatDatetimeText(lastEnvTemp.getAddTime());
|
|
|
+ String startTimeText = dateUtil.getBeforeHoursDatetime(endTimeText,hours);
|
|
|
+ System.out.println("startTime>>>>>>>>>>>>>>>>>>>>>"+startTimeText);
|
|
|
+ System.out.println("endTimeText>>>>>>>>>>>>>>>>>>>>>"+endTimeText);
|
|
|
+ Date startTime = dateUtil.parseDateTime(startTimeText);
|
|
|
+ Date endTime = dateUtil.parseDateTime(endTimeText);
|
|
|
+ //读取24小时所有记录
|
|
|
+ QueryWrapper<EnvTemp> queryWrapper = new QueryWrapper<>();
|
|
|
+ queryWrapper.eq("farm_code",farmCode);
|
|
|
+ queryWrapper.ge("add_time",startTime).le("add_time",endTime);
|
|
|
+ queryWrapper.orderByAsc("add_time");
|
|
|
+ List<EnvTemp> envTempList = envTempMapper.selectList(queryWrapper);
|
|
|
+ System.out.println("envTempList.size="+envTempList.size());
|
|
|
+
|
|
|
+ List<Map<String,Object>> outList = new ArrayList();
|
|
|
+ String currentHour = "";
|
|
|
+ BigDecimal totalTempBd = new BigDecimal(0);
|
|
|
+ int times = 0;
|
|
|
+ int x =0;
|
|
|
+ //计算每个小时的之和,并算平均数
|
|
|
+ for(EnvTemp envTemp:envTempList){
|
|
|
+ System.out.println("x="+(++x) + " "+envTemp.toString());
|
|
|
+ String formatTime = dateUtil.formatTime1(envTemp.getAddTime());
|
|
|
+ if(StringUtils.isBlank(currentHour)){
|
|
|
+ currentHour = formatTime;
|
|
|
+ totalTempBd = envTemp.getTemp();
|
|
|
+ times = 1;
|
|
|
+ Map<String,Object> outMap = new HashMap();
|
|
|
+ outMap.put("hour",currentHour);
|
|
|
+ outMap.put("temp",totalTempBd.toString());
|
|
|
+ outList.add(outMap);
|
|
|
+ System.out.println("第一条数据");
|
|
|
+ }else if(StringUtils.isNotBlank(currentHour) && formatTime.trim().equalsIgnoreCase(currentHour)){
|
|
|
+ times++;
|
|
|
+ totalTempBd = totalTempBd.add(envTemp.getTemp());
|
|
|
+ System.out.println("+++++++++");
|
|
|
+ }else if(StringUtils.isNotBlank(currentHour) && !formatTime.trim().equalsIgnoreCase(currentHour)){
|
|
|
+ BigDecimal avgBd = totalTempBd.divide(new BigDecimal(times),1,BigDecimal.ROUND_HALF_UP);
|
|
|
+ Map<String,Object> outMap = new HashMap();
|
|
|
+ outMap.put("hour",currentHour);
|
|
|
+ outMap.put("temp",avgBd.toString());
|
|
|
+ addOutList(outMap,outList);
|
|
|
+ System.out.println("1111111="+currentHour);
|
|
|
+ //3个变量重新赋值;
|
|
|
+ currentHour = formatTime;
|
|
|
+ totalTempBd = envTemp.getTemp();
|
|
|
+ times = 1;
|
|
|
+ outMap.put("hour",currentHour);
|
|
|
+ outMap.put("temp",avgBd.toString());
|
|
|
+ outList.add(outMap);
|
|
|
+ System.out.println("2222>>>>>>>>>>"+currentHour);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return outList;
|
|
|
+ }
|
|
|
+
|
|
|
+ private void addOutList(Map<String,Object> oneMap, List<Map<String,Object>> outList) {
|
|
|
+ for(int a=0;a<outList.size();a++){
|
|
|
+ Map outMap = outList.get(a);
|
|
|
+ if(outMap.get("hour").toString().equalsIgnoreCase(oneMap.get("hour").toString())){
|
|
|
+ outMap.put("temp",oneMap.get("temp").toString());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* @Method : getTempAndHumi
|
|
|
* @Description : 1、读取当前温度和湿度 2、读取历史温度和湿度;
|
|
@@ -53,10 +164,10 @@ public class EnvTempServiceImpl extends ServiceImpl<EnvTempMapper, EnvTemp> impl
|
|
|
//获取当前最新湿度
|
|
|
BigDecimal lastHumiBd = _getLastHumi(farmCode);
|
|
|
|
|
|
- //获取历史温度
|
|
|
+ //获取 N天历史温度数据曲线
|
|
|
List<EnvTemp> EnvTempList = _getHistoryTemp(farmCode,days);
|
|
|
|
|
|
- //获取历史湿度
|
|
|
+ //获取 N天历史湿度数据曲线
|
|
|
List<EnvHumi> EnvHumiList = _getHistoryHumi(farmCode,days);
|
|
|
|
|
|
JSONObject resultJo = new JSONObject();
|
|
@@ -128,4 +239,12 @@ public class EnvTempServiceImpl extends ServiceImpl<EnvTempMapper, EnvTemp> impl
|
|
|
return lastEnvTemp.getTemp();
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ private EnvTemp _getLastTemp2(String farmCode) {
|
|
|
+ QueryWrapper<EnvTemp> queryWrapper = new QueryWrapper<>();
|
|
|
+ queryWrapper.eq("farm_code",farmCode);
|
|
|
+ queryWrapper.orderByDesc("add_time");
|
|
|
+ queryWrapper.last("LIMIT 1");
|
|
|
+ return envTempMapper.selectOne(queryWrapper);
|
|
|
+ }
|
|
|
}
|