/**

  • 保存所有车辆(流动站)当前在线记录数据
    1. 当设备上线就会生成一条在线记录,添加到当前map
    1. 当设备离线(判定真正离线)就从当前map中移除
  • key:流动站ID value:车辆实训记录实体类 */ private final Map<Long, CarRealRecord> allOnlineCarsRealRecordsMap = new ConcurrentHashMap<>();

/**

  • 保存当前在线车辆(流动站)直播间,里面的观众进出直播间的数据
    1. 当用户进入直播间,就生成一条数据,通过流动站编号
    1. 当设备离线(判定真正离线)就从当前map中移除
  • Map1 key:流动站ID value:Map2
  • Map2 key:看直播用户编号 value:直播用户记录实体类集合 */ private final Map<Long, Map<Long, List>> allLiveUserRecordsMap = new ConcurrentHashMap<>();

/**

  • 保存当前在线车辆(流动站)对应的用户实训记录
  • Map1 key:流动站ID value:Map2
  • Map2 key: 实训用户ID value:实训记录List */ private final Map<Long, Map<Long, List>> allUserRealRecordsMap = new ConcurrentHashMap<>();

public void addOneLiveUserRecordMap(long userId, long moveId) { Optional carRealRecordOptional = Optional.ofNullable(allOnlineCarsRealRecordsMap.get(moveId));

carRealRecordOptional.ifPresent(carRealRecord -> {
    Map<Long, List<LiveUserRecord>> liveUserRecordMap = allLiveUserRecordsMap.computeIfAbsent(moveId, k -> new ConcurrentHashMap<>());
    List<LiveUserRecord> liveUserRecordList = liveUserRecordMap.computeIfAbsent(userId, k -> new ArrayList<>());

    LiveUserRecord liveUserRecord = new LiveUserRecord();
    liveUserRecord.setUserId(userId);
    liveUserRecord.setStartDatetime(new Date());
    liveUserRecord.setMobileDeviceId(moveId);
    liveUserRecord.setCarRealRecordId(carRealRecord.getCarRealRecordId());

    liveUserRecordList.add(liveUserRecord);
});

}

车辆在线记录管理系统:实时监控用户直播和实训记录

原文地址: https://www.cveoy.top/t/topic/qEzN 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录