| | |
| | | * 这个是按照设备ip来统计的. |
| | | * 通讯故障>核容放电>充电>内阻>浮充, |
| | | * 如果一拖二的设备,有两个不同状态,实现状态优先级覆盖 |
| | | * |
| | | * 设备的数量统计和设备状态的统计,逻辑是不同的,数据库筛选的时候条件逻辑必定是不同的: TODO |
| | | * 通常情况下,设备数量统计,要排除掉一个设备两个id的一拖二情况; |
| | | * 而设备状态统计,只需要区分一个设备的字段,一个设备有多条记录也是正常合理的,通过状态优先级覆盖来定义整个设备的状态 |
| | | * |
| | | * @param userId |
| | | * @param type 1-太原排除蓄电池设备一拖二的第二组状态统计 |
| | | * @param type 2-统计所有设备ip的状态 |
| | |
| | | resultMap.put("通讯故障数量", 0); |
| | | |
| | | List<Fbs9100State> fbs9100StateList = mapper.getListWithoutZJDYBTSE2(userId,type); |
| | | //Map<String, List<Fbs9100State>> deviceMap = fbs9100StateList.stream().collect(Collectors.groupingBy(Fbs9100State::getDevIp)); |
| | | Map<String, List<Fbs9100State>> deviceMap = fbs9100StateList.stream().collect(Collectors.groupingBy(state -> |
| | | String.format("%s_%s",state.getDevIp(), state.getDevId()))); |
| | | //上面的分组字段 只要能区分 不同的设备就行了. 因为如果是一拖二的情况,也可通过后面的状态优先级来覆盖,设备不会重复 |
| | | //太供可以通过ip来确定是哪台设备 |
| | | Map<String, List<Fbs9100State>> deviceMap = fbs9100StateList.stream().collect(Collectors.groupingBy(Fbs9100State::getDevIp)); |
| | | //Map<String, List<Fbs9100State>> deviceMap = fbs9100StateList.stream().collect(Collectors.groupingBy(state -> |
| | | // String.format("%s_%s",state.getDevIp(), state.getDevId()))); |
| | | Set<String> deviceSet = deviceMap.keySet(); |
| | | Calendar instance = Calendar.getInstance(); |
| | | instance.add(Calendar.MINUTE, -1); |
| | | Date time = instance.getTime(); |
| | | //这个遍历里面,是按照groupingBy(字段)来进行分组的,可以存在一个设备多个记录,即出现一拖二的情况. 这个时候按照优先级进行覆盖来定义整个设备的状态 |
| | | //上面的分组字段 只要能区分 不同的设备就行了. 因为如果是一拖二的情况,也可通过状态优先级来覆盖 |
| | | for (String deviceIp : deviceSet) { |
| | | List<Fbs9100State> fbs9100States = deviceMap.get(deviceIp); |
| | | List<Integer> workStateList = fbs9100States.stream().map(Fbs9100State::getDevWorkstate).collect(Collectors.toList()); |
| | |
| | | List<Fbs9100State> fbs9100StateList = mapper.getListWithoutZJDYBTSE2JY(type); |
| | | |
| | | //Map<String, List<Fbs9100State>> deviceMap = fbs9100StateList.stream().collect(Collectors.groupingBy(Fbs9100State::getDevIp)); |
| | | //JY的设备,ip都一样,所以区分不同的设备,需要通过ip+id |
| | | Map<String, List<Fbs9100State>> deviceMap = fbs9100StateList.stream().collect(Collectors.groupingBy(state ->String.format("%s_%s",state.getDevIp(), state.getDevId()))); |
| | | Set<String> deviceSet = deviceMap.keySet(); |
| | | Calendar instance = Calendar.getInstance(); |