diff --git a/ruoyi-modules/hwmom-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java b/ruoyi-modules/hwmom-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java index d499095..d77ce92 100644 --- a/ruoyi-modules/hwmom-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java +++ b/ruoyi-modules/hwmom-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java @@ -822,7 +822,8 @@ public class FlwTaskServiceImpl implements IFlwTaskService { @Override public Long countTaskWaitByCurrentUser() { FlowTaskBo flowTaskBo = new FlowTaskBo(); - QueryWrapper queryWrapper = buildQueryWrapper(flowTaskBo); + // 为COUNT查询创建不包含ORDER BY的查询包装器 + QueryWrapper queryWrapper = buildQueryWrapperForCount(flowTaskBo); queryWrapper.eq("t.node_type", NodeType.BETWEEN.getKey()); queryWrapper.in("t.processed_by", SpringUtils.getBean(WorkflowPermissionHandler.class).permissions()); queryWrapper.in("t.flow_status", BusinessStatusEnum.WAITING.getStatus()); @@ -837,9 +838,30 @@ public class FlwTaskServiceImpl implements IFlwTaskService { @Override public Long countTaskCopyByCurrentUser() { FlowTaskBo flowTaskBo = new FlowTaskBo(); - QueryWrapper queryWrapper = buildQueryWrapper(flowTaskBo); + // 为COUNT查询创建不包含ORDER BY的查询包装器 + QueryWrapper queryWrapper = buildQueryWrapperForCount(flowTaskBo); queryWrapper.in("t.processed_by", LoginHelper.getUserIdStr()); return flwTaskMapper.countTaskCopy(queryWrapper); } + /** + * 为COUNT查询构建查询包装器(不包含ORDER BY条件) + * + * @param flowTaskBo 查询条件 + * @return 查询包装器 + */ + private QueryWrapper buildQueryWrapperForCount(FlowTaskBo flowTaskBo) { + QueryWrapper wrapper = Wrappers.query(); + wrapper.like(StringUtils.isNotBlank(flowTaskBo.getNodeName()), "t.node_name", flowTaskBo.getNodeName()); + wrapper.like(StringUtils.isNotBlank(flowTaskBo.getFlowName()), "t.flow_name", flowTaskBo.getFlowName()); + wrapper.like(StringUtils.isNotBlank(flowTaskBo.getFlowCode()), "t.flow_code", flowTaskBo.getFlowCode()); + wrapper.in(CollUtil.isNotEmpty(flowTaskBo.getCreateByIds()), "t.create_by", flowTaskBo.getCreateByIds()); + if (StringUtils.isNotBlank(flowTaskBo.getCategory())) { + List categoryIds = flwCategoryMapper.selectCategoryIdsByParentId(Convert.toLong(flowTaskBo.getCategory())); + wrapper.in("t.category", StreamUtils.toList(categoryIds, Convert::toStr)); + } + // 注意:COUNT查询不添加ORDER BY条件,因为在SQL Server中会导致错误 + return wrapper; + } + }