|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public Map<String, Object> getMonthDataByEquipment(Map<String, Object> parameters) { | 
|---|
|  |  |  | Map<String, Object> resultMap = new HashMap<String, Object>(); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 1.0 实际标准值 | 
|---|
|  |  |  | resultMap.put("standard", ResourceUtil.getValue(parameters.get("macKey") + "-standard")); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 2.0 本月平均值 | 
|---|
|  |  |  | Date date = new Date(); | 
|---|
|  |  |  | //每月一日的数据取上月的数据 | 
|---|
|  |  |  | if (1 == Calendar.getInstance().get(Calendar.DAY_OF_MONTH)) { | 
|---|
|  |  |  | 
|---|
|  |  |  | parameters.put("start", DateUtils.truncate(date, Calendar.MONTH)); | 
|---|
|  |  |  | parameters.put("end", DateUtils.truncate(date, Calendar.DATE)); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // | 
|---|
|  |  |  | parameters.put("mac", "898602b8191630065884"); | 
|---|
|  |  |  | parameters.put("macKey", "e1"); | 
|---|
|  |  |  | Map<String, Object> average = historyMapper.getMonthAverageBySensor(parameters); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 本月平均值 | 
|---|
|  |  |  | if (MapUtils.isNotEmpty(average)) { | 
|---|
|  |  |  | resultMap.putAll(average); | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | // 空值临时处理 | 
|---|
|  |  |  | resultMap.put("average", 90.0384 + Calendar.getInstance().get(Calendar.DAY_OF_MONTH) / 5); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //AQI 指数 | 
|---|
|  |  |  | // 3.0 AQI 指数 | 
|---|
|  |  |  | String[] macKeys = { "e1", "e2", "e10", "e11", "e15", "e16" }; | 
|---|
|  |  |  | String[] IAQIValues = ResourceUtil.getArrValue("IAQI"); | 
|---|
|  |  |  | List<Double> IAQIs = new ArrayList<Double>(); | 
|---|
|  |  |  | for (String macKey : macKeys) { | 
|---|
|  |  |  | double avg = 0, maxMacKey = 0, minMacKey = 0; | 
|---|
|  |  |  | parameters.put("macKey", macKey); | 
|---|
|  |  |  | parameters.put("start", DateUtils.truncate(DateUtils.addDays(date, -1), Calendar.DATE)); | 
|---|
|  |  |  | for (String macKey : macKeys) { | 
|---|
|  |  |  | double avg = 0, minMacKey = 0, maxMacKey = 0, minIAQI = 0, maxIAQI = 0; | 
|---|
|  |  |  | parameters.put("macKey", macKey); | 
|---|
|  |  |  | average = historyMapper.getMonthAverageBySensor(parameters); | 
|---|
|  |  |  | if (MapUtils.isNotEmpty(average)) { | 
|---|
|  |  |  | avg = (Double) average.get("average"); | 
|---|
|  |  |  | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | index = i - 1; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | minMacKey = Double.valueOf(macKeyValues[index]); | 
|---|
|  |  |  | maxMacKey = Double.valueOf(macKeyValues[index + 1]); | 
|---|
|  |  |  | continue; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (index == -1) { | 
|---|
|  |  |  | resultMap.put("AQI", ">500"); | 
|---|
|  |  |  | resultMap.put("AQI", IAQIValues[IAQIValues.length - 1]); | 
|---|
|  |  |  | break; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | double minIAQI = Double.valueOf(IAQIValues[index]); | 
|---|
|  |  |  | double maxIAQI = Double.valueOf(IAQIValues[index + 1]); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | minMacKey = Double.valueOf(macKeyValues[index]); | 
|---|
|  |  |  | maxMacKey = Double.valueOf(macKeyValues[index + 1]); | 
|---|
|  |  |  | minIAQI = Double.valueOf(IAQIValues[index]); | 
|---|
|  |  |  | maxIAQI = Double.valueOf(IAQIValues[index + 1]); | 
|---|
|  |  |  | IAQIs.add(calculateIAQI(maxIAQI, minIAQI, maxMacKey, minMacKey, avg)); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (!resultMap.containsKey("AQI")) { | 
|---|
|  |  |  | resultMap.put("AQI", Collections.max(IAQIs)); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //实际标准值 | 
|---|
|  |  |  | resultMap.put("standard", ResourceUtil.getValue(parameters.get("macKey")+"-standard")); | 
|---|
|  |  |  | return resultMap; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | for (Map<String, Object> map : averageByAll) { | 
|---|
|  |  |  | result.put((String) map.get("mac_key"), map.get("avg")); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | </select> | 
|---|
|  |  |  |  | 
|---|
|  |  |  | <select id="getAverageByAll" resultType="map"> | 
|---|
|  |  |  | <!-- | 
|---|
|  |  |  | SELECT | 
|---|
|  |  |  | h.mac_key, | 
|---|
|  |  |  | AVG(h.mac_value) avg | 
|---|
|  |  |  | 
|---|
|  |  |  | AND h.time < #{end} | 
|---|
|  |  |  | GROUP BY | 
|---|
|  |  |  | h.mac_key | 
|---|
|  |  |  | --> | 
|---|
|  |  |  |  | 
|---|
|  |  |  | SELECT | 
|---|
|  |  |  | mac_key, | 
|---|
|  |  |  | AVG(mac_value) avg | 
|---|
|  |  |  | FROM | 
|---|
|  |  |  | history h | 
|---|
|  |  |  | <if test="orgIds!=null and orgIds.size > 0"> | 
|---|
|  |  |  | JOIN ( | 
|---|
|  |  |  | SELECT | 
|---|
|  |  |  | e.mac | 
|---|
|  |  |  | FROM | 
|---|
|  |  |  | equipment e, | 
|---|
|  |  |  | org_equ oe | 
|---|
|  |  |  | WHERE | 
|---|
|  |  |  | e.id = oe.equid | 
|---|
|  |  |  | AND oe.orgid IN | 
|---|
|  |  |  | <foreach collection="orgIds" item="listItem" open="(" separator="," close=")" > | 
|---|
|  |  |  | #{listItem} | 
|---|
|  |  |  | </foreach> | 
|---|
|  |  |  | ) e ON h.mac = e.mac | 
|---|
|  |  |  | </if> | 
|---|
|  |  |  | WHERE h.time > #{start} | 
|---|
|  |  |  | AND h.time < #{end} | 
|---|
|  |  |  | GROUP BY | 
|---|
|  |  |  | mac_key | 
|---|
|  |  |  | </select> | 
|---|
|  |  |  |  | 
|---|
|  |  |  | <select id="getEquipmentStates" resultType="map"> | 
|---|
|  |  |  | 
|---|
|  |  |  | e11=0,50,150,475,800,1600,2100,2620 | 
|---|
|  |  |  | e15=0,100,160,215,265,800,1000,1200 | 
|---|
|  |  |  | e16=0,40,80,180,280,565,750,940 | 
|---|
|  |  |  | IAQI=0,50,100,150,200,300,400,500 | 
|---|
|  |  |  | IAQI=0,50,100,150,200,300,400,500,>500 | 
|---|
|  |  |  | e1-standard=35 | 
|---|
|  |  |  | e2-standard=50 | 
|---|
|  |  |  | e10-standard=2 | 
|---|