对于stream流在项目中的实用方法

对于stream流在项目中的实用方法

1.在列表中通过id查询出其他表的信息,将其插入到新的list中

 //通过医院id查询表digic_admin中的医院的名称并且保存进去
        Map<String, HrHospitalModel> hashMap = hospitalMapper.hospitalList().stream()
                .collect(Collectors.toMap(HrHospitalModel::getHospitalId, obj -> obj, (key1, key2) -> key1));
        for (CheckAnalysisDetailVo checkAnalysisDetailVo : checkAnalysisList) {
            String hospitalId = checkAnalysisDetailVo.getHospitalId();
            HrHospitalModel hospitalModel = hashMap.get(hospitalId);
            checkAnalysisDetailVo.setHospitalName( hospitalModel.getHospitalName());
        }

for (CheckAnalysisDetailVo checkAnalysisDetailVo : checkAnalysisDetailVos) {
    String hospitalId = checkAnalysisDetailVo.getHospitalId();
    LambdaQueryWrapper<HrHospitalModel> lambdaQueryWrapper = new LambdaQueryWrapper();
    lambdaQueryWrapper.eq(HrHospitalModel::getHospitalId,hospitalId);
    HrHospitalModel hospitalModel= hospitalMapper.selectOne(lambdaQueryWrapper);
    checkAnalysisDetailVo.setHospitalName( hospitalModel.getHospitalName());
}

请添加图片描述

2.将List<-integer>—》List<-String>

//医生数据总数 将List<Integer>---》List<String>
        List<Integer> hosIdsInt = monitorHu.getHosIds();
        List<String> hosIds = hosIdsInt.stream().map(String::valueOf).collect(Collectors.toList());
        if (hosIds.isEmpty()) {
            return null;
        }


 //调阅次数、iu_operate_detail 1234
        Integer callNumber = iuOperateDetailMapper.selectCount(new QueryWrapper<IuOperateDetail>()
                .and(wrapper -> wrapper.eq("operate_type_id", PatientOperateTypeEnum.CHECK_HISTORY_PATIENT.getId())
                        .or()
                        .eq("operate_type_id", PatientOperateTypeEnum.CHECK_REPEAT_PATIENT.getId())
                        .or()
                        .eq("operate_type_id", PatientOperateTypeEnum.CHECK_ID_CARD_DETAIL.getId())
                        .or()
                        .eq("operate_type_id", PatientOperateTypeEnum.CHECK_LOCAL_HISTORY.getId())
                ).and(wrapper -> wrapper.ge("operate_time", startTime)
                        .le("operate_time", endTime)).in(ObjectUtil.isNotEmpty(hosIds), "hospital_id", hosIds)
        );

3.将records的HospitalGetwayConfigRecord-》HospitalGetwayConfigRecordVo

目的:将HospitalGetwayConfigRecord把这里面的(前段)不要的字段变成前段要的Vo类返回

    Page<HospitalGetwayConfigRecord> pageTemp = (Page<HospitalGetwayConfigRecord>) this.page(pageable, lambdaQueryWrapper);
        List<HospitalGetwayConfigRecord> records = pageTemp.getRecords();
        List<HospitalGetwayConfigRecordVo> recordsVo = new ArrayList<>();
//将records的HospitalGetwayConfigRecord-》HospitalGetwayConfigRecordVo
        records.stream().forEach(a -> {
            HospitalGetwayConfigRecordVo configRecordVo = new HospitalGetwayConfigRecordVo();
            BeanUtil.copyProperties(a, configRecordVo);
            recordsVo.add(configRecordVo);
        });

请添加图片描述

4.对于sql中and()和or()拼接的用法

 //调阅次数、iu_operate_detail 1234
        Integer callNumber = iuOperateDetailMapper.selectCount(new QueryWrapper<IuOperateDetail>()
                .and(wrapper -> wrapper.eq("operate_type_id", PatientOperateTypeEnum.CHECK_HISTORY_PATIENT.getId())
                        .or()
                        .eq("operate_type_id", PatientOperateTypeEnum.CHECK_REPEAT_PATIENT.getId())
                        .or()
                        .eq("operate_type_id", PatientOperateTypeEnum.CHECK_ID_CARD_DETAIL.getId())
                        .or()
                        .eq("operate_type_id", PatientOperateTypeEnum.CHECK_LOCAL_HISTORY.getId())
                ).and(wrapper -> wrapper.ge("operate_time", startTime)
                        .le("operate_time", endTime)).in(ObjectUtil.isNotEmpty(hosIds), "hospital_id", hosIds)
        );

请添加图片描述

5.关于stream中的filter()方法

  List<IuUserStatistics> iuDocStatisticsVos = monitoringPlatformService.queryDocByIdInfo(monitorHu);
        //将几个字段都是0的值过滤了(选择字段不是0的是0的过滤掉)
        List<IuUserStatistics> temp = iuDocStatisticsVos.stream()
                .filter(s -> s.getCallNumber() != 0 || s.getHistoryNoticeNum() != 0 || s.getHisViewNum() != 0
                        || s.getApplyNum() != 0 || s.getConsultationNum() != 0).collect(Collectors.toList());
        log.info("筛选之后的{}", temp.size());
        List<IuUserStatistics> results = new ArrayList<>();
        results = CollectionUtil.sortPageAll(monitorHu.getPage(), monitorHu.getSize(),
                (o1, o2) -> o2.getHistoryNoticeNum().compareTo(o1.getHistoryNoticeNum()), temp);



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值