From 92ec288bdffcce4846b6db312c630eaf3275e124 Mon Sep 17 00:00:00 2001 From: yuzixiang <yzx123456> Date: Fri, 22 May 2020 15:43:49 +0800 Subject: [PATCH] update(O3平均值计算) --- src/main/java/com/moral/service/impl/HistoryServiceImpl.java | 116 ++++++++++++++++++++++++++++++++++++++++++++++++---------- 1 files changed, 96 insertions(+), 20 deletions(-) diff --git a/src/main/java/com/moral/service/impl/HistoryServiceImpl.java b/src/main/java/com/moral/service/impl/HistoryServiceImpl.java index 9008efe..53fa49d 100644 --- a/src/main/java/com/moral/service/impl/HistoryServiceImpl.java +++ b/src/main/java/com/moral/service/impl/HistoryServiceImpl.java @@ -1,6 +1,7 @@ package com.moral.service.impl; import java.math.BigDecimal; +import java.text.ParseException; import java.text.SimpleDateFormat; import java.time.Instant; import java.time.LocalDate; @@ -10,22 +11,9 @@ import java.time.format.DateTimeFormatter; import java.time.temporal.ChronoUnit; import java.time.temporal.TemporalAdjusters; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Calendar; -import java.util.Collections; -import java.util.Comparator; -import java.util.Date; -import java.util.HashMap; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import javax.annotation.Resource; - -import org.apache.commons.collections.CollectionUtils; -import org.springframework.stereotype.Service; -import org.springframework.util.ObjectUtils; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; @@ -46,6 +34,11 @@ import com.moral.service.HistoryService; import com.moral.service.ProfessionService; import com.moral.util.AQICalculation; + +import com.moral.util.DatesUtil; +import org.apache.commons.collections.CollectionUtils; +import org.springframework.stereotype.Service; +import org.springframework.util.ObjectUtils; @Service public class HistoryServiceImpl implements HistoryService { @@ -485,6 +478,8 @@ String startTime = parameters.get("startTime").toString(); DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); LocalDateTime startTimeLocalDateTime = LocalDateTime.parse(startTime, dateTimeFormatter); + LocalDateTime today = LocalDateTime.now().truncatedTo(ChronoUnit.DAYS); + LocalDateTime startTimeDay = startTimeLocalDateTime.truncatedTo(ChronoUnit.DAYS); int year = startTimeLocalDateTime.getYear(); int month = startTimeLocalDateTime.getMonthValue(); String monthStr = month < 10 ? ("0" + month) : month + ""; @@ -496,13 +491,18 @@ } parameters.put("sensorKeys", sensorKeys); List<Map<String, Object>> listMap = null; - listMap = historyMapper.getCarSensorData(parameters); + if (today.compareTo(startTimeDay) == 0) { + listMap = historyMapper.listGetSensorData(parameters); + } if (CollectionUtils.isEmpty(listMap)) { - if (year <= 2019) { - listMap = historyMinutelyMapper.getSensorData(parameters); - } else { - parameters.put("yearAndMonth", yearAndMonth); - listMap = historyMinutelyMapper.getSensorData2020(parameters); + listMap = historyMapper.getCarSensorData(parameters); + if (CollectionUtils.isEmpty(listMap)) { + if (year <= 2019) { + listMap = historyMinutelyMapper.getSensorData(parameters); + } else { + parameters.put("yearAndMonth", yearAndMonth); + listMap = historyMinutelyMapper.getSensorData2020(parameters); + } } } List<List<Map<String, Object>>> listMaps = new ArrayList<>(); @@ -541,4 +541,80 @@ } return listMaps; } + + @Override + public List<Map<String,Object>> getO3AVG(Map<String, Object> parameters) { + String mac= (String) parameters.get("mac"); + String stime= (String) parameters.get("time"); + SimpleDateFormat format=new SimpleDateFormat("yyyy-MM"); + Date time = null; + try { + time = format.parse(stime); + } catch (ParseException e) { + e.printStackTrace(); + } + List<String> stringListDate = DatesUtil.getAllTheDateOftheMonth(time); + List<Map<String,Object>> maxList=new ArrayList<Map<String,Object>>(); + for (String date : stringListDate) { + Map<String, Object> parm = new HashMap<String, Object>(); + DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); + LocalDateTime time1 = LocalDateTime.parse(date + " 00:00:00", df); + LocalDateTime time2 = time1.plusDays(1); + String time3 = time2.toString().substring(0, 10); + String nextDate = time3 + " 07:00:00"; + parm.put("date", date); + parm.put("nextDate", nextDate); + parm.put("mac", mac); + List<Map<String, Object>> listMap = historyMapper.getO3AVG(parm); + List list=new ArrayList(); + DatesUtil.getList(listMap,list); + List list1=new ArrayList(); + String maxO3=""; + for (int i = 0; i <list.size() ; i++) { + List elist=new ArrayList(); + Double sum=0.0; + Double avg=0.0; + for (Object o : (List)list.get(i)) { + Iterator<Map.Entry> iterator= ((Map)o).entrySet().iterator(); + while(iterator.hasNext()) { + Map.Entry entry = iterator.next(); + if (entry.getKey().equals("e15")){ + elist.add(entry.getValue()); + } + } + } + for (int j = 0; j <elist.size(); j++) { + sum+=Double.parseDouble((String) elist.get(j)); + if (listMap.size()<=8 && listMap.size()>0){ + avg=sum/listMap.size(); + }else { + avg=sum/8; + } + } + if (avg==0.0){ + list1.add(""); + }else { + BigDecimal b = new BigDecimal(avg); + double avg1 = b.setScale(4,BigDecimal.ROUND_HALF_UP).doubleValue(); + list1.add(avg1); + } + } + String timef=date+" 00:00:00"; + String timea=date+" 23:59:59"; + int num=historyMapper.getNum(timef,timea); + if (num==0) { + maxO3 = ""; + }else { + if (list1.size()!=0){ + maxO3= ""+ Collections.max(list1); + }else { + maxO3=""; + }} + Map<String,Object> avgMap=new HashMap<String,Object>(); + avgMap.put("time",date); + avgMap.put("e15",maxO3); + maxList.add(avgMap); + } + return maxList; + } } -- Gitblit v1.8.0