|
@@ -41,37 +41,91 @@ public class EnvTempServiceImpl extends ServiceImpl<EnvTempMapper, EnvTemp> impl
|
|
|
String hours = paramMap.get("hours");
|
|
|
//获取当前最新温度
|
|
|
EnvTemp lastEnvTemp = _getLastTemp2(farmCode);
|
|
|
- BigDecimal lastTempBd = null;
|
|
|
- if(lastEnvTemp == null){
|
|
|
- lastTempBd = new BigDecimal(0);
|
|
|
- }else{
|
|
|
+ BigDecimal lastTempBd = new BigDecimal(0);
|
|
|
+ if(lastEnvTemp != null){
|
|
|
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());
|
|
|
- }
|
|
|
|
|
|
+ //获取当前最新湿度
|
|
|
+ EnvHumi lastEnvHumi = _getLastHumi2(farmCode);
|
|
|
+ BigDecimal lastHumiBd = new BigDecimal(0);
|
|
|
+ if(lastEnvHumi != null){
|
|
|
+ lastHumiBd = lastEnvHumi.getHumi();
|
|
|
+ }
|
|
|
//获取最后24小时的湿度数据曲线
|
|
|
- List<EnvHumi> EnvHumiList = _getLast24HourHumi(farmCode,hours);
|
|
|
+ List<Map<String,Object>> envHumiList = _getLast24HourHumi(farmCode,Integer.parseInt(hours),lastEnvHumi);
|
|
|
|
|
|
JSONObject resultJo = new JSONObject();
|
|
|
resultJo.put("lastTemp",lastTempBd.toString());
|
|
|
resultJo.put("lastHumi",lastHumiBd.toString());
|
|
|
- resultJo.put("historyTemp",envTempList);
|
|
|
- resultJo.put("historyHumi",EnvHumiList);
|
|
|
+ resultJo.put("tempList",envTempList);
|
|
|
+ resultJo.put("humiList",envHumiList);
|
|
|
return new Result(ResultCode.SUCCESS,resultJo);
|
|
|
}
|
|
|
|
|
|
//获取最后24小时的湿度数据曲线
|
|
|
- private List<EnvHumi> _getLast24HourHumi(String farmCode, String days) {
|
|
|
- return null;
|
|
|
+ private List<Map<String,Object>> _getLast24HourHumi(String farmCode, Integer hours, EnvHumi lastEnvHumi) throws ParseException {
|
|
|
+ DateUtil dateUtil = new DateUtil();
|
|
|
+ //获取最后一条记录的小时
|
|
|
+ //计算之前24小时时间,
|
|
|
+ String endTimeText = dateUtil.formatDatetimeText(lastEnvHumi.getAddTime());
|
|
|
+ String startTimeText = dateUtil.getBeforeHoursDatetime(endTimeText,hours);
|
|
|
+ //读取24小时所有记录
|
|
|
+ QueryWrapper<EnvHumi> queryWrapper = new QueryWrapper<>();
|
|
|
+ queryWrapper.eq("farm_code",farmCode);
|
|
|
+ queryWrapper.ge("add_time",dateUtil.parseDateTime(startTimeText)).le("add_time",dateUtil.parseDateTime(endTimeText));
|
|
|
+ queryWrapper.orderByAsc("add_time");
|
|
|
+ List<EnvHumi> envHumiList = envHumiMapper.selectList(queryWrapper);
|
|
|
+
|
|
|
+ List<Map<String,Object>> outList = new ArrayList();
|
|
|
+ String currentHour = "";
|
|
|
+ BigDecimal totalHumiBd = new BigDecimal(0);
|
|
|
+ int totalTimes = 0;
|
|
|
+ //计算每个小时的之和,并算平均数
|
|
|
+ for(EnvHumi envHumi:envHumiList){
|
|
|
+ String formatTime = dateUtil.formatTime1(envHumi.getAddTime());
|
|
|
+ if(StringUtils.isBlank(currentHour)){
|
|
|
+ currentHour = formatTime;
|
|
|
+ totalHumiBd = envHumi.getHumi();
|
|
|
+ totalTimes = 1;
|
|
|
+ Map<String,Object> outMap = new HashMap();
|
|
|
+ outMap.put("hour",currentHour);
|
|
|
+ outMap.put("temp",totalHumiBd.toString());
|
|
|
+ outList.add(outMap);
|
|
|
+ }else if(StringUtils.isNotBlank(currentHour) && formatTime.trim().equalsIgnoreCase(currentHour)){
|
|
|
+ totalTimes++;
|
|
|
+ totalHumiBd = totalHumiBd.add(envHumi.getHumi());
|
|
|
+ }else if(StringUtils.isNotBlank(currentHour) && !formatTime.trim().equalsIgnoreCase(currentHour)){
|
|
|
+ //将每小时最后一条数据更新到输出列表中
|
|
|
+ BigDecimal avgBd = totalHumiBd.divide(new BigDecimal(totalTimes),1,BigDecimal.ROUND_HALF_UP);
|
|
|
+ Map<String,Object> outMap = new HashMap();
|
|
|
+ outMap.put("hour",currentHour);
|
|
|
+ outMap.put("temp",avgBd.toString());
|
|
|
+ //
|
|
|
+ updateToHumiOutList(outMap,outList);
|
|
|
+ //3个变量重新赋值;
|
|
|
+ currentHour = formatTime;
|
|
|
+ totalHumiBd = envHumi.getHumi();
|
|
|
+ totalTimes = 1;
|
|
|
+ //将每个小时第一条数据加入到输出列表中
|
|
|
+ outMap.put("hour",currentHour);
|
|
|
+ outMap.put("temp",avgBd.toString());
|
|
|
+ outList.add(outMap);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return outList;
|
|
|
+ }
|
|
|
+
|
|
|
+ private void updateToHumiOutList(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());
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
//获取最后24小时的温度数据曲线
|
|
@@ -81,8 +135,6 @@ public class EnvTempServiceImpl extends ServiceImpl<EnvTempMapper, EnvTemp> impl
|
|
|
//计算之前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小时所有记录
|
|
@@ -91,51 +143,47 @@ public class EnvTempServiceImpl extends ServiceImpl<EnvTempMapper, EnvTemp> impl
|
|
|
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;
|
|
|
+ int totalTimes = 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;
|
|
|
+ totalTimes = 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++;
|
|
|
+ totalTimes++;
|
|
|
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);
|
|
|
+ //将每小时最后一条数据更新到输出列表中
|
|
|
+ BigDecimal avgBd = totalTempBd.divide(new BigDecimal(totalTimes),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);
|
|
|
+ //
|
|
|
+ updateToTempOutList(outMap,outList);
|
|
|
//3个变量重新赋值;
|
|
|
currentHour = formatTime;
|
|
|
totalTempBd = envTemp.getTemp();
|
|
|
- times = 1;
|
|
|
+ totalTimes = 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) {
|
|
|
+ private void updateToTempOutList(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())){
|
|
@@ -226,6 +274,16 @@ public class EnvTempServiceImpl extends ServiceImpl<EnvTempMapper, EnvTemp> impl
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ //获取当前最新湿度
|
|
|
+ private EnvHumi _getLastHumi2(String farmCode) {
|
|
|
+ QueryWrapper<EnvHumi> queryWrapper = new QueryWrapper<>();
|
|
|
+ queryWrapper.eq("farm_code",farmCode);
|
|
|
+ queryWrapper.orderByDesc("add_time");
|
|
|
+ queryWrapper.last("LIMIT 1");
|
|
|
+ return envHumiMapper.selectOne(queryWrapper);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
//读取最新温度
|
|
|
private BigDecimal _getLastTemp(String farmCode) {
|
|
|
QueryWrapper<EnvTemp> queryWrapper = new QueryWrapper<>();
|