From 48570adc584224ea2ebafc90a58beb76e85dd4be Mon Sep 17 00:00:00 2001 From: fengxiang <110431245@qq.com> Date: Mon, 05 Feb 2018 14:41:22 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- src/main/java/com/moral/service/impl/HistoryMinutelyServiceImpl.java | 221 +++++++++++++++++++++++++++++------------------------- 1 files changed, 118 insertions(+), 103 deletions(-) diff --git a/src/main/java/com/moral/service/impl/DataServiceImpl.java b/src/main/java/com/moral/service/impl/HistoryMinutelyServiceImpl.java similarity index 71% rename from src/main/java/com/moral/service/impl/DataServiceImpl.java rename to src/main/java/com/moral/service/impl/HistoryMinutelyServiceImpl.java index fd3ca59..8ede45f 100644 --- a/src/main/java/com/moral/service/impl/DataServiceImpl.java +++ b/src/main/java/com/moral/service/impl/HistoryMinutelyServiceImpl.java @@ -15,8 +15,8 @@ import java.util.LinkedHashMap; import java.util.List; import java.util.Map; -import java.util.Set; import java.util.Map.Entry; +import java.util.Set; import java.util.concurrent.Callable; import java.util.concurrent.CompletionService; import java.util.concurrent.ExecutorCompletionService; @@ -33,16 +33,16 @@ import com.moral.common.util.ResourceUtil; import com.moral.common.util.ValidateUtil; import com.moral.entity.Device; -import com.moral.mapper.DataMapper; +import com.moral.mapper.HistoryMinutelyMapper; import com.moral.mapper.DeviceMapper; import com.moral.mapper.SensorMapper; -import com.moral.service.DataService; +import com.moral.service.HistoryMinutelyService; @Service -public class DataServiceImpl implements DataService { +public class HistoryMinutelyServiceImpl implements HistoryMinutelyService { @Resource - private DataMapper dataMapper; + private HistoryMinutelyMapper historyMinutelyMapper; @Resource private DeviceMapper deviceMapper; @@ -60,7 +60,7 @@ parameters.put("start", truncate(addDays(date, -1), Calendar.DATE)); // ������00:00:00 parameters.put("end", truncate(date, Calendar.DATE)); - Map<String, Double> average = dataMapper.getDayAQIByDevice(parameters); + Map<String, Double> average = historyMinutelyMapper.getDayAQIByDevice(parameters); return getAQIByDataMap(average); } @@ -122,100 +122,110 @@ resultMap.put("c", null); return resultMap; } - - String type = (String) parameters.get("type"); - String time = (String) parameters.get("time"); - String format = (String) parameters.get("format"); - Date start = DateUtils.parseDate(time, format), end = null ; - if (parameters.containsKey("timeb")) { - end = DateUtils.parseDate((String)parameters.get("timeb"), format); - } else { - switch (type) { - case "year": - end = DateUtils.addYears(start, 1); - break; - case "month": - end = DateUtils.addMonths(start, 1); - break; - case "day": - end = DateUtils.addDays(start, 1); - break; - case "hour": - end = DateUtils.addHours(start, 1); - break; - } - - } - parameters.put("start", start); - parameters.put("end", end); - - String sensorKey = (String) parameters.get("sensorKey"); - String sensorKeyColumn = "AVG(json -> '$." + sensorKey + "[0]') " + sensorKey; - parameters.put("sensorKeyColumn", sensorKeyColumn); + List<Map<String, Object>> resultList = getMonitorPointOrDeviceAvgData4Excel(parameters); +// String type = (String) parameters.get("type"); +// String time = (String) parameters.get("time"); +// String format = (String) parameters.get("format"); +// Date start = DateUtils.parseDate(time, format), end = null ; +// if (parameters.containsKey("timeb")) { +// end = DateUtils.parseDate((String)parameters.get("timeb"), format); +// } else { +// switch (type) { +// case "year": +// end = DateUtils.addYears(start, 1); +// break; +// case "month": +// end = DateUtils.addMonths(start, 1); +// break; +// case "day": +// end = DateUtils.addDays(start, 1); +// break; +// case "hour": +// end = DateUtils.addHours(start, 1); +// break; +// } +// +// } +// parameters.put("start", start); +// parameters.put("end", end); +// +// String sensorKey = (String) parameters.get("sensorKey"); +// String sensorKeyColumn = "AVG(json -> '$." + sensorKey + "[0]') " + sensorKey; +// parameters.put("sensorKeyColumn", sensorKeyColumn); +// List<Object> timeList = new ArrayList<Object>(); +// List<Object> dataList = new ArrayList<Object>(); +// +// if (!parameters.containsKey("mac")) { +// Integer monitorPointId = Integer.valueOf((String) parameters.get("monitorPoint")); +// List<Map<String, Object>> deviceVersions = deviceMapper.getDeviceVersionIdByMonitorPoint(monitorPointId); +// ExecutorService threadPool = Executors.newCachedThreadPool(); +// CompletionService<List<Map<String, Object>>> cs = new ExecutorCompletionService<List<Map<String, Object>>>(threadPool); +// //List<Future<Long>> list = new ArrayList<Future<Long>>(); +// List<Map<String, Object>> list = new ArrayList<Map<String,Object>>(); +// for (Map<String, Object> map : deviceVersions) { +// cs.submit(new Callable<List<Map<String, Object>>>() { +// @Override +// public List<Map<String, Object>> call() throws Exception { +// Integer deviceVersionId = (Integer) map.get("deviceVersionId"); +// List<String> macs = deviceMapper.getDeviceMacByMonitorPointAndDeviceVersion(monitorPointId, deviceVersionId); +// parameters.put("macs", macs); +// return historyMinutelyMapper.getMonitorPointOrDeviceAvgData(parameters); +// } +// }); +// } +// //Future<List<Map<String, Object>>> take = cs.take(); +// for (Map<String, Object> map : deviceVersions) { +// list.addAll(cs.take().get()); +// } +// Map<String, Map<String, Number>> result = new LinkedHashMap<String, Map<String, Number>>(); +// for (Map<String, Object> map : list) { +// time = (String) map.get("time"); +// if (map.containsKey(sensorKey)) { +// Double data = (Double) map.get(sensorKey); +// Map<String, Number> number; +// Double sum; +// Integer count; +// if (result.containsKey(time)) { +// number = result.get(time); +// count = 1 + (Integer) number.get("count"); +// sum = data + (Double) number.get("sum"); +// } else { +// number = new HashMap<String, Number>(); +// count = 1; +// sum = data; +// } +// number.put("count", count); +// number.put("sum", sum); +// number.put("avg", sum / count); +// result.put(time, number); +// } +// } +// Iterator<Entry<String, Map<String, Number>>> iterator= result.entrySet().iterator(); +// while(iterator.hasNext()){ +// Entry<String, Map<String, Number>> entry = iterator.next(); +// String key = entry.getKey(); +// timeList.add(key.substring(key.length() - 2)); +// dataList.add(entry.getValue().get("avg")); +// } +// +// } else { +// List<Map<String, Object>> demo1 = historyMinutelyMapper.getMonitorPointOrDeviceAvgData(parameters); +// for (Map<String, Object> map : demo1) { +// time = map.get("time").toString(); +// time =time.substring(time.length() - 2); +// timeList.add(time); +// dataList.add(map.get(sensorKey)); +// } +// } + List<Object> timeList = new ArrayList<Object>(); List<Object> dataList = new ArrayList<Object>(); - - if (!parameters.containsKey("mac")) { - Integer monitorPointId = Integer.valueOf((String) parameters.get("monitorPoint")); - List<Map<String, Object>> deviceVersions = deviceMapper.getDeviceVersionIdByMonitorPoint(monitorPointId); - ExecutorService threadPool = Executors.newCachedThreadPool(); - CompletionService<List<Map<String, Object>>> cs = new ExecutorCompletionService<List<Map<String, Object>>>(threadPool); - //List<Future<Long>> list = new ArrayList<Future<Long>>(); - List<Map<String, Object>> list = new ArrayList<Map<String,Object>>(); - for (Map<String, Object> map : deviceVersions) { - cs.submit(new Callable<List<Map<String, Object>>>() { - @Override - public List<Map<String, Object>> call() throws Exception { - Integer deviceVersionId = (Integer) map.get("deviceVersionId"); - List<String> macs = deviceMapper.getDeviceMacByMonitorPointAndDeviceVersion(monitorPointId, deviceVersionId); - parameters.put("macs", macs); - return dataMapper.getMonitorPointOrDeviceAvgData(parameters); - } - }); - } - //Future<List<Map<String, Object>>> take = cs.take(); - for (Map<String, Object> map : deviceVersions) { - list.addAll(cs.take().get()); - } - Map<String, Map<String, Number>> result = new LinkedHashMap<String, Map<String, Number>>(); - for (Map<String, Object> map : list) { - time = (String) map.get("time"); - if (map.containsKey(sensorKey)) { - Double data = (Double) map.get(sensorKey); - Map<String, Number> number; - Double sum; - Integer count; - if (result.containsKey(time)) { - number = result.get(time); - count = 1 + (Integer) number.get("count"); - sum = data + (Double) number.get("sum"); - } else { - number = new HashMap<String, Number>(); - count = 1; - sum = data; - } - number.put("count", count); - number.put("sum", sum); - number.put("avg", sum / count); - result.put(time, number); - } - } - Iterator<Entry<String, Map<String, Number>>> iterator= result.entrySet().iterator(); - while(iterator.hasNext()){ - Entry<String, Map<String, Number>> entry = iterator.next(); - String key = entry.getKey(); - timeList.add(key.substring(key.length() - 2)); - dataList.add(entry.getValue().get("avg")); - } - - } else { - List<Map<String, Object>> demo1 = dataMapper.getMonitorPointOrDeviceAvgData(parameters); - for (Map<String, Object> map : demo1) { - time = map.get("time").toString(); - time =time.substring(time.length() - 2); - timeList.add(time); - dataList.add(map.get(sensorKey)); - } + String sensorKey = (String) parameters.get("sensorKey"); + for (Map<String, Object> map : resultList) { + String time = map.get("time").toString(); + time =time.substring(time.length() - 2); + timeList.add(time); + dataList.add(map.get(sensorKey)); } String part = (String) parameters.get("part"); resultMap.put("time" + part, timeList); @@ -238,7 +248,9 @@ parametersB.put("part", "B"); parametersB.put("time", parametersB.get("timeb")); parametersB.put("monitorPoint", parametersB.get("monitorPointb")); - parametersB.put("mac", parametersB.get("macb")); + if (parameters.containsKey("macb")) { + parametersB.put("mac", parametersB.get("macb")); + } parametersB.remove("timeb"); } List<Map<String, Object>> list = new ArrayList<Map<String,Object>>(); @@ -358,10 +370,13 @@ parameters.put("sensors", sensorKeys); } List<String> macs = deviceMapper.getDeviceMacByMonitorPointAndDeviceVersion(monitorPointId, deviceVersionId); - parameter.put("macs", macs); - return dataMapper.getMonitorPointOrDeviceAvgData(parameter); + if (ObjectUtils.isEmpty(macs) || macs.contains("null") ) { + return new ArrayList<Map<String,Object>>(); + }else { + parameter.put("macs", macs); + return historyMinutelyMapper.getMonitorPointOrDeviceAvgData(parameter); + } } - }); } for (Map<String, Object> map : deviceVersions) { @@ -417,7 +432,7 @@ parameters.put("sensors", sensorKeys); } - resul = dataMapper.getMonitorPointOrDeviceAvgData(parameters); + resul = historyMinutelyMapper.getMonitorPointOrDeviceAvgData(parameters); } return resul; } -- Gitblit v1.8.0