package com.mh.common.enums; import com.mh.common.core.domain.entity.DeviceReport; import java.time.LocalDateTime; import java.util.*; /** * @Author : Rainbow * @date : 2023/6/19 */ public enum ComputeEnum implements ComputeService { /** * 电表 */ DEVICES("计量设备数据处理", 5) { @Override public ArrayList> getDataList( Map.Entry>> entry) { ArrayList> result = new ArrayList<>(); //获取到电表的数据,按照表号分组分组,紧接着再按照小时分组。需要计算分组后的数据取出最大值 Map> deviceMap = entry.getValue(); String deviceNum = entry.getKey(); Set>> groupEntryList = deviceMap.entrySet(); for (Map.Entry> listEntry : groupEntryList) { LocalDateTime key = listEntry.getKey(); List value = listEntry.getValue(); DeviceReport maxEntity = value.stream() .max(Comparator.comparing(obj -> Double.valueOf(obj.getCurValue()))) .orElse(null); HashMap map = new HashMap<>(); map.put(key, maxEntity); result.add(map); } return result; } }, /** * 冷量计 */ CLOUD("冷量计数据处理", 2) { @Override public ArrayList> getDataList( Map.Entry>> entry) { ArrayList> result = new ArrayList<>(); //获取到电表的数据,按照表号分组分组,紧接着再按照小时分组。需要计算分组后的数据取出最大值 Map> deviceMap = entry.getValue(); String deviceNum = entry.getKey(); Set>> groupEntryList = deviceMap.entrySet(); for (Map.Entry> listEntry : groupEntryList) { LocalDateTime key = listEntry.getKey(); List value = listEntry.getValue(); DeviceReport maxEntity = value.stream() .max(Comparator.comparing(obj -> Double.valueOf(obj.getCurValue()))) .orElse(null); HashMap map = new HashMap<>(); map.put(key, maxEntity); result.add(map); } return result; } }, /** * 温度计 */ COLD("温度计数据处理", 1) { @Override public ArrayList> getDataList( Map.Entry>> entry) { return null; } }; private String des; private int key; private static final Map lookup = new HashMap<>(); static { for (ComputeEnum c : ComputeEnum.values()) { lookup.put(c.getKey(), c); } } ComputeEnum(String des, int key) { this.des = des; this.key = key; } public String getDes() { return des; } public void setDes(String des) { this.des = des; } public int getKey() { return key; } public static ComputeEnum get(int key) { return lookup.get(key); } public abstract ArrayList> getDataList( Map.Entry>> entry); }