| | |
| | | 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;
|
| | |
| | | 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;
|
| | |
| | | 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 {
|
| | |
| | | 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 + "";
|
| | |
| | | }
|
| | | parameters.put("sensorKeys", sensorKeys);
|
| | | List<Map<String, Object>> listMap = null;
|
| | | listMap = historyMapper.listGetSensorData(parameters);
|
| | | if (today.compareTo(startTimeDay) == 0) {
|
| | | listMap = historyMapper.listGetSensorData(parameters);
|
| | | }
|
| | | if (CollectionUtils.isEmpty(listMap)) {
|
| | | listMap = historyMapper.getCarSensorData(parameters);
|
| | | if (CollectionUtils.isEmpty(listMap)) {
|
| | |
| | | }
|
| | | 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) {
|
| | | System.out.println("------------------------------------------------");
|
| | | 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";
|
| | | System.out.println("-----"+date);
|
| | | System.out.println(nextDate);
|
| | | parm.put("date", date);
|
| | | parm.put("nextDate", nextDate);
|
| | | parm.put("mac", mac);
|
| | | List<Map<String, Object>> listMap = historyMapper.getO3AVG(parm);
|
| | | System.out.println("size="+listMap.size());
|
| | | 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();
|
| | | List tlist=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);
|
| | | }
|
| | | }
|
| | | System.out.println(list1);
|
| | |
|
| | | 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;
|
| | | }
|
| | | }
|