public List<DeviceStatePojoVo> getState(int deviceType, String precinctId, String deviceName, String onLine) { List<CfgDevice> deviceList = cfgDeviceMapper.findAllDevice();//查所有 StringBuffer s = new StringBuffer(); Map<String, CfgDevice> deviceMap = new HashMap<>();//以indexCode為KEY for (CfgDevice device1 : deviceList) { s.append(device1.getUserDeviceId() + ","); deviceMap.put(device1.getUserDeviceId(), device1); } //查所有海康的設備狀態 String hkState = getHKState(s.toString(), ITF_ADDRESS_POST_RESULT_STATE); Gson gson = new Gson(); HKVqdResult<DeviceState> vqdResult = gson.fromJson(hkState, new TypeToken<HKVqdResult<DeviceState>>() { }.getType()); //根據查詢條件放在集合里 List<DeviceStatePojoVo> deviceStatePojoVoList = new ArrayList<DeviceStatePojoVo>(); for (DeviceState deviceState : vqdResult.getData()) { String indexCode = deviceState.getIndexCode(); //根據KEY取出對應的對象 CfgDevice cfgDevice = deviceMap.get(indexCode); //封裝 DeviceStatePojoVo deviceStatePojoVo = new DeviceStatePojoVo(); deviceStatePojoVo.setPrecinctName(cfgDevice.getPrecinctName()); deviceStatePojoVo.setDeviceType(cfgDevice.getDeviceType()); deviceStatePojoVo.setDeviceId(cfgDevice.getDeviceId()); deviceStatePojoVo.setTime(deviceState.getUpdateTime()); deviceStatePojoVo.setNetState(deviceState.getStatus()); deviceStatePojoVo.setDeviceName(cfgDevice.getDeviceName()); deviceStatePojoVo.setPrecinctId(cfgDevice.getPrecinctId()); deviceStatePojoVoList.add(deviceStatePojoVo); } //篩選條件 if (deviceName != null && !deviceName.isEmpty()) { List<String> strings = cfgDeviceMapper.queryLikeDeviceName(deviceName); deviceStatePojoVoList = deviceStatePojoVoList.stream() .filter((DeviceStatePojoVo dd) -> strings.contains(dd.getDeviceName())) .collect(Collectors.toList()); } //篩選條件集合 List result = new ArrayList();// if (deviceType != 0) { result.add(deviceType);//把要篩選的條件添加到集合里
// 要篩選的集合跟篩選條件集合比較 重新賦值給原來的集合 集合對象 條件集合 對比 對象里的屬性 deviceStatePojoVoList = deviceStatePojoVoList.stream().filter((DeviceStatePojoVo dd) -> result.contains(dd.getDeviceType())).collect(Collectors.toList()); } if (precinctId != null && !precinctId.isEmpty()) { result.add(precinctId); deviceStatePojoVoList = deviceStatePojoVoList.stream() .filter((DeviceStatePojoVo dd) -> result.contains(dd.getPrecinctId())) .collect(Collectors.toList()); } if (onLine != null && !onLine.isEmpty()) { result.add(onLine); deviceStatePojoVoList = deviceStatePojoVoList.stream() .filter((DeviceStatePojoVo dd) -> result.contains(dd.getNetState())) .collect(Collectors.toList()); } return deviceStatePojoVoList; }
