feat: 优化查询效率并增加用户模糊查询功能

重构了 EsRevisionAdviceService 的 adviceList 方法,通过分离用户查询逻辑,避免了直接使用 createUserId 进行模糊查询可能导致的效率低下问题。新增了用户模糊查询功能,能够在不牺牲性能的情况下,根据 createUserId 检索对应的用户并获取其 id 列表,再进行精确查询。这一改动改善了代码的可维护性,并增强了查询功能。
This commit is contained in:
2024-10-12 17:50:07 +08:00
parent d9bbc140d9
commit 433e03723a
@@ -2,6 +2,7 @@ package com.jero.modules.activiti.process.esRevisionAdvice.service.impl;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -9,8 +10,14 @@ import com.jero.common.exception.JeroBootException;
import com.jero.modules.activiti.process.esRevisionAdvice.entity.EsRevisionAdvice;
import com.jero.modules.activiti.process.esRevisionAdvice.mapper.EsRevisionAdviceMapper;
import com.jero.modules.activiti.process.esRevisionAdvice.service.EsRevisionAdviceService;
import com.jero.modules.system.entity.SysUser;
import com.jero.modules.system.service.ISysUserService;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
import java.util.stream.Collectors;
/**
* @author ThinkBook
* @description 针对表【process_es_revision_advice】的数据库操作Service实现
@@ -20,8 +27,14 @@ import org.springframework.stereotype.Service;
public class EsRevisionAdviceServiceImpl extends ServiceImpl<EsRevisionAdviceMapper, EsRevisionAdvice>
implements EsRevisionAdviceService{
@Resource
private ISysUserService userService;
@Override
public IPage<EsRevisionAdvice> adviceList(EsRevisionAdvice advice, Integer pageNo, Integer pageSize) {
boolean userQuery = StrUtil.isNotBlank(advice.getCreateUserId());
LambdaQueryWrapper<EsRevisionAdvice> queryWrapper = new LambdaQueryWrapper<>();
String standardId = advice.getStandardId();
if (StrUtil.isBlank(standardId)) {
@@ -31,7 +44,14 @@ public class EsRevisionAdviceServiceImpl extends ServiceImpl<EsRevisionAdviceMap
Page<EsRevisionAdvice> page = new Page<>(pageNo, pageSize);
queryWrapper.eq(EsRevisionAdvice::getStandardId, advice.getStandardId());
queryWrapper.eq(null != advice.getBatchNum() , EsRevisionAdvice::getBatchNum, advice.getBatchNum());
queryWrapper.eq(StrUtil.isNotBlank(advice.getCreateUserId()), EsRevisionAdvice::getCreateUserId, advice.getCreateUserId());
if (userQuery) {
QueryWrapper<SysUser> userQueryWrapper = new QueryWrapper<>();
userQueryWrapper.like("CONCAT(realname, '(', username, ')')", advice.getCreateUserId());
List<SysUser> list = userService.list(userQueryWrapper);
if (!list.isEmpty()) {
queryWrapper.in(EsRevisionAdvice::getCreateUserId, list.stream().map(SysUser::getId).collect(Collectors.toList()));
}
}
queryWrapper.eq(StrUtil.isNotBlank(advice.getHandleAdvice()), EsRevisionAdvice::getHandleAdvice, advice.getHandleAdvice());
queryWrapper.like(StrUtil.isNotBlank(advice.getTermNum()), EsRevisionAdvice::getTermNum, advice.getTermNum());
queryWrapper.orderByAsc(EsRevisionAdvice::getBatchNum);