From c62507c7e0ce18e9a62f29221fd3799cb58bf431 Mon Sep 17 00:00:00 2001 From: xufenglei <xufenglei> Date: Wed, 07 Nov 2018 10:25:35 +0800 Subject: [PATCH] bug 修复 --- src/main/java/com/moral/service/impl/HistoryMinutelyServiceImpl.java | 63 +++++++++++++++++++++++-------- 1 files changed, 46 insertions(+), 17 deletions(-) diff --git a/src/main/java/com/moral/service/impl/HistoryMinutelyServiceImpl.java b/src/main/java/com/moral/service/impl/HistoryMinutelyServiceImpl.java index d1653fc..20c8d03 100644 --- a/src/main/java/com/moral/service/impl/HistoryMinutelyServiceImpl.java +++ b/src/main/java/com/moral/service/impl/HistoryMinutelyServiceImpl.java @@ -37,6 +37,7 @@ import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.TypeReference; import com.moral.common.util.CalculateUtils; +import com.moral.common.util.ParameterUtils; import com.moral.common.util.ReportTimeFormat; import com.moral.common.util.ResourceUtil; import com.moral.common.util.ValidateUtil; @@ -44,6 +45,7 @@ import com.moral.entity.charts.DataCondition; import com.moral.entity.charts.LineChartCriteria; import com.moral.entity.charts.TimePeriod; +import com.moral.mapper.AlarmDailyMapper; import com.moral.mapper.AlarmMapper; import com.moral.mapper.DeviceMapper; import com.moral.mapper.HistoryMinutelyMapper; @@ -64,11 +66,11 @@ private SensorMapper sensorMapper; @Resource - private AlarmMapper alarmMapper; + private AlarmDailyMapper alarmDailyMapper; @Override public Map<String, Object> getDayAQIByDevice(Map<String, Object> parameters) { - ValidateUtil.notNull(parameters.get("mac"), "param.is.null"); + //ValidateUtil.notNull(parameters.get("mac"), "param.is.null"); LocalDate localDate = LocalDate.now(); // ������00:00:00 parameters.put("start", localDate.minusDays(1)); @@ -138,7 +140,8 @@ List<Map<String, Object>> list = JSON.parseObject((String)parameters.remove("items"), new TypeReference<List<Map<String, Object>>>() {}); String type = (String) parameters.get("type"); - parameters.putAll(getElementByType(type)); + // parameters.putAll(getElementByType(type)); + ParameterUtils.getElementByType(parameters); Integer timeLength = Integer.valueOf(parameters.remove("timeLength").toString()); if ("month".equals(type)) { for (Map<String, Object> map : list) { @@ -185,7 +188,8 @@ Set<String> sensors = new TreeSet<String>(new Comparator<String>() { @Override public int compare(String o1, String o2) { - return Integer.compare(Integer.valueOf(o1.split("-")[0].replace("e", "")), Integer.valueOf(o2.split("-")[0].replace("e", ""))); + return o1.split("-")[0].compareTo(o2.split("-")[0]); + //return Integer.compare(Integer.valueOf(o1.split("-")[0].replace("e", "")), Integer.valueOf(o2.split("-")[0].replace("e", ""))); } }); Map<String, Double> sortMap = new HashMap<String, Double>(); @@ -208,8 +212,11 @@ Map<String, BigDecimal> mapData = (Map<String, BigDecimal>) obj; BigDecimal sum = mapData.remove("sum"); for (Entry<String, BigDecimal> entry : mapData.entrySet()) { - sortMap.put(entry.getKey() + "-" + index, new BigDecimal(100).multiply(entry.getValue()) - .divide(sum, 2, BigDecimal.ROUND_HALF_UP).doubleValue()); + if (!"name".equals(entry.getKey())) { + sortMap.put(entry.getKey() + "-" + index, new BigDecimal(100).multiply(entry.getValue()) + .divide(sum, 2, BigDecimal.ROUND_HALF_UP).doubleValue()); + + } } } break; @@ -223,7 +230,23 @@ Collections.sort(sortList,new Comparator<Map.Entry<String,Double>>(){ @Override public int compare(Entry<String, Double> o1, Entry<String, Double> o2) { - return o1.getValue().compareTo(o2.getValue()); + if (o2.getValue().compareTo(o1.getValue()) == 0) { + String[] key1 = o1.getKey().split("-"); + String[] key2 = o2.getKey().split("-"); +// String sensor1 = key1[0].replace("e", ""); +// String sensor2 = key2[0].replace("e", ""); +// if (Integer.valueOf(sensor1).compareTo(Integer.valueOf(sensor2)) == 0) { +// return Integer.compare(Integer.valueOf(key1[1]), Integer.valueOf(key2[1])); +// } +// return Integer.valueOf(sensor1).compareTo(Integer.valueOf(sensor2)); + if (key1[0].compareTo(key2[0]) == 0) { + return Integer.compare(Integer.valueOf(key1[1]), Integer.valueOf(key2[1])); + } else { + return key1[0].compareTo(key2[0]); + } + } else { + return o2.getValue().compareTo(o1.getValue()); + } } }); @@ -277,7 +300,10 @@ Object type = parameters.get("type"); if ("year".equals(type) || "month".equals(type)) { parameters.put("sensorKeys", Arrays.asList("e1", "e2", "e10", "e11", "e15", "e16")); - resultMap.put("alarmData" + part, alarmMapper.getAlarmData(parameters).get(0)); + List<Map<String, Object>> alarmData = alarmDailyMapper.getAlarmData(parameters); + if (!ObjectUtils.isEmpty(alarmData)) { + resultMap.put("alarmData" + part, alarmDailyMapper.getAlarmData(parameters).get(0)); + } } return resultMap; } @@ -291,9 +317,10 @@ @Override public void convertQueryParam(Map<String, Object> parameters) throws ParseException { - String type = (String) parameters.get("type"); if (!parameters.containsKey("field")) { - parameters.putAll(getElementByType(type)); + // String type = (String) parameters.get("type"); + // parameters.putAll(getElementByType(type)); + ParameterUtils.getElementByType(parameters); } String time = (String) parameters.get("time"); String format = (String) parameters.get("format"); @@ -325,7 +352,11 @@ List<Sensor> sensorList = sensorMapper.getSensorsByCriteria(parameters); for (Sensor sensor : sensorList) { sensorKeys.add(sensor.getSensorKey()); - sensors.add(sensor.getSensorKey() + "-" + sensor.getName() + "-" + sensor.getUnit()); + String string = sensor.getSensorKey() + "-" + sensor.getName() + "-" + sensor.getUnit(); + if (parameters.containsKey("description")) { + string += "-" + sensor.getDescription(); + } + sensors.add(string); } } parameters.put("sensorKeys", sensorKeys); @@ -334,8 +365,9 @@ @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"); + //ValidateUtil.notNull(parameters.get("mac"), "param.is.null"); + Object sensorKey = parameters.remove("macKey"); + ValidateUtil.notNull(sensorKey, "param.is.null"); Map<String, Object> result = new HashMap<String, Object>(); LocalDate end = LocalDate.now(),start; // ��������������������������������������� @@ -348,10 +380,7 @@ } parameters.put("start", start); parameters.put("end", end); - String sensorKey = (String) parameters.remove("macKey"); - List<String> sensorKeys = new ArrayList<String>(); - sensorKeys.add(sensorKey); - parameters.put("sensorKeys", sensorKeys); + parameters.put("sensorKeys", Arrays.asList(sensorKey)); Map<String, Double> average = historyMinutelyMapper.getSersionAvgByDevice(parameters); if (isEmpty(average)) { -- Gitblit v1.8.0