From 5b0347a811a6c948defb5320e71c43173280dfc2 Mon Sep 17 00:00:00 2001 From: xufenglei <xufenglei> Date: Tue, 06 Feb 2018 10:30:31 +0800 Subject: [PATCH] 更新 --- src/main/java/com/moral/service/impl/HistoryMinutelyServiceImpl.java | 63 ++++++++++++++++++++++++++++--- 1 files changed, 56 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/moral/service/impl/HistoryMinutelyServiceImpl.java b/src/main/java/com/moral/service/impl/HistoryMinutelyServiceImpl.java index ea32d1a..d2b440c 100644 --- a/src/main/java/com/moral/service/impl/HistoryMinutelyServiceImpl.java +++ b/src/main/java/com/moral/service/impl/HistoryMinutelyServiceImpl.java @@ -1,6 +1,8 @@ package com.moral.service.impl; +import static com.moral.common.bean.Constants.NULL_VALUE; import static org.apache.commons.lang3.time.DateUtils.addDays; +import static org.apache.commons.lang3.time.DateUtils.addMonths; import static org.apache.commons.lang3.time.DateUtils.truncate; import static org.springframework.util.ObjectUtils.isEmpty; @@ -28,9 +30,13 @@ import javax.annotation.Resource; import org.apache.commons.lang3.time.DateUtils; +import org.springframework.data.mongodb.core.aggregation.Aggregation; +import org.springframework.data.mongodb.core.aggregation.AggregationResults; +import org.springframework.data.mongodb.core.query.Criteria; import org.springframework.stereotype.Service; import org.springframework.util.ObjectUtils; +import com.mongodb.BasicDBObject; import com.moral.common.util.CalculateUtils; import com.moral.common.util.ResourceUtil; import com.moral.common.util.ValidateUtil; @@ -62,7 +68,16 @@ parameters.put("start", truncate(addDays(date, -1), Calendar.DATE)); // ������00:00:00 parameters.put("end", truncate(date, Calendar.DATE)); - Map<String, Double> average = historyMinutelyMapper.getDayAQIByDevice(parameters); + String[] macKeys = { "e1", "e2", "e10", "e11", "e15", "e16" }; + String sensorKeyColumn = ""; + for (int i = 0; i < macKeys.length; i++) { + sensorKeyColumn += "AVG(json -> '$." + macKeys[i] + "[0]') " + macKeys[i]; + if (i != macKeys.length -1) { + sensorKeyColumn += " ,"; + } + } + parameters.put("sensorKeyColumn", sensorKeyColumn); + Map<String, Double> average = historyMinutelyMapper.getSersionAvgByDevice(parameters); return getAQIByDataMap(average); } @@ -258,6 +273,8 @@ parameters.put("sensorKeyColumn", sensorKeyColumn); } + sensorKeys.clear(); + // ������������������ if (!parameters.containsKey("mac")) { resul = new ArrayList<Map<String,Object>>(); Integer monitorPointId = Integer.valueOf((String) parameters.get("monitorPoint")); @@ -327,8 +344,9 @@ } resul.add(resultMap); } - + // ������ ��������� } else { + // ��������������� if (!parameters.containsKey("sensorKeyColumn")) { String mac = (String) parameters.get("mac"); Device device = new Device(); @@ -347,17 +365,48 @@ private String getSensorKeyColumnBySensors(List<Map<String, Object>> sensors) { String sensorKeyColumn = ""; + for (int i = 0; i < sensors.size(); i++) { String sensorKey = (String) sensors.get(i).get("sensor_key"); String name = (String) sensors.get(i).get("name"); - if (i == sensors.size() - 1) { - sensorKeyColumn += "AVG(json -> '$." + sensorKey + "[0]') " + sensorKey; - } else { - sensorKeyColumn += "AVG(json -> '$." + sensorKey + "[0]') " + sensorKey + ","; - } + sensorKeyColumn += "AVG(json -> '$." + sensorKey + "[0]') " + sensorKey; + if (i != sensors.size() - 1) { + sensorKeyColumn += " ,"; + } sensorKeys.add(sensorKey + "-" + name); } return sensorKeyColumn; } + @Override + public Map<String, Object> getMonthAverageBySensor(Map<String, Object> parameters) { + ValidateUtil.notNull(parameters.get("mac"), "param.is.null"); + ValidateUtil.notNull(parameters.get("macKey"), "param.is.null"); + Map<String, Object> result = new HashMap<String, Object>(); + Date date = new Date(); + Date end = truncate(date, Calendar.DATE), start; + // ��������������������������������������� + if (1 == Calendar.getInstance().get(Calendar.DAY_OF_MONTH)) { + // ���������1���00:00:00 + start = truncate(addMonths(date, -1), Calendar.MONTH); + } else { + // ���������1���00:00:00 + start = truncate(date, Calendar.MONTH); + } + parameters.put("start", start); + parameters.put("end", end); + + String sensorKey = (String) parameters.get("macKey"); + String sensorKeyColumn = "AVG(json -> '$." + sensorKey + "[0]') " + sensorKey; + parameters.put("sensorKeyColumn", sensorKeyColumn); + + Map<String, Double> average = historyMinutelyMapper.getSersionAvgByDevice(parameters); + if (isEmpty(average)) { + result.put("average", NULL_VALUE); + } else { + result.put("average", String.format("%.2f", average.get(sensorKey))); + } + return result; + } + } -- Gitblit v1.8.0