想要的查询效果:in和eq以及两个like中的任意一个like组成“”且“”的查询关系
1、错误写法
String code = searchDTO.getCode();
LambdaQueryWrapper<SettledRecord> wrapper = new LambdaQueryWrapper<SettledRecord>()
.eq(StringUtils.isNotBlank(code), SettledRecord::getCity ,code)
.or()
.eq(StringUtils.isNotBlank(code), SettledRecord::getProvince, code);
List<SettledRecord> settledRecords = settledRecordService.list(wrapper);
List<Long> companyIdList = new ArrayList<>();
if (StringUtils.isNotEmpty(settledRecords)){
companyIdList = settledRecords.stream().map(SettledRecord::getCompanyId).filter(StringUtils::isNotNull).collect(Collectors.toList());
}
LambdaQueryWrapper<StoreInfo> queryWrapper = new LambdaQueryWrapper<StoreInfo>()
.in(StringUtils.isNotEmpty(companyIdList), StoreInfo::getCompanyId, companyIdList)
.eq(StoreInfo::getSignatureStatus, SignatureStatusEnums.SUPPLIER_SIGN_SUCCESS.getType())
.like(Objects.nonNull(keyword), StoreInfo::getStoreName, keyword)
.or()
.like(Objects.nonNull(keyword), StoreInfo::getCompanyName, keyword);
2、正确写法
String code = searchDTO.getCode();
LambdaQueryWrapper<SettledRecord> wrapper = new LambdaQueryWrapper<SettledRecord>()
.eq(StringUtils.isNotBlank(code), SettledRecord::getCity ,code)
.or()
.eq(StringUtils.isNotBlank(code), SettledRecord::getProvince, code);
List<SettledRecord> settledRecords = settledRecordService.list(wrapper);
List<Long> companyIdList = new ArrayList<>();
if (StringUtils.isNotBlank(code) && StringUtils.isEmpty(settledRecords)) {
//设置干扰数据
companyIdList.add(-1L);
}
if (StringUtils.isNotEmpty(settledRecords)){
companyIdList=settledRecords.stream().map(SettledRecord::getCompanyId).filter(StringUtils::isNotNull).collect(Collectors.toList());
if (StringUtils.isEmpty(companyIdList)){
return result;
}
}
LambdaQueryWrapper<StoreInfo> queryWrapper = new LambdaQueryWrapper<StoreInfo>()
.in(StringUtils.isNotEmpty(companyIdList), StoreInfo::getCompanyId, companyIdList)
.eq(StoreInfo::getSignatureStatus, SignatureStatusEnums.SUPPLIER_SIGN_SUCCESS.getType())
.and(StringUtils.isNotBlank(keyword), e -> e.like(StringUtils.isNotBlank(keyword), StoreInfo::getStoreName, keyword)
.or().like(StringUtils.isNotBlank(keyword), StoreInfo::getCompanyName, keyword));