zoukankan      html  css  js  c++  java
  • List 多条件,多条件筛选集合

    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; }



  • 相关阅读:
    Java Web Action DAO Service层次理解
    JSP/Servlet Web 学习笔记 DaySix —— EL表达式
    JSP/Servlet Web 学习笔记 DayFive
    JSP/Servlet Web 学习笔记 DayFour —— 实现一个简单的JSP/Servlet交互
    JSP/Servlet Web 学习笔记 DayFour
    如何快速创建百万级测试数据
    公司线上虚拟机大量GC导致STW和CPU飙升--抽丝剥茧定位的过程
    这10道springboot常见面试题你需要了解下
    这是一篇来源于阿里内部技术论坛的文章
    一文彻底弄懂如何选择抽象类还是接口
  • 原文地址:https://www.cnblogs.com/maocai2018/p/10117117.html
Copyright © 2011-2022 走看看