diff --git a/OpenAuth.App/WorkflowEngineApp.cs b/OpenAuth.App/WorkflowEngineApp.cs index c9a83c7..5348ac9 100644 --- a/OpenAuth.App/WorkflowEngineApp.cs +++ b/OpenAuth.App/WorkflowEngineApp.cs @@ -333,13 +333,26 @@ public class WorkflowEngineApp : SqlSugarBaseApp() - .Where(w => w.HandlerId == userId && w.Status == "ToDo") + var nodeIdList = _sqlSugar.Queryable() + // 核心:In(主表字段, 子查询Lambda表达式) + .In( + zy => zy.RoleId, // 主表 zy_flow_node 的 role_id 字段 + // 子查询:从 sys_userrole 中查询 UserId=2 的 RoleId + _sqlSugar.Queryable() + .Where(ur => ur.UserId == userId) // 条件:UserId=2(注意:这里直接用数值,避免字符串拼接) + .Select(ur => ur.RoleId) // 子查询只返回 RoleId 字段 + ) + // 主查询只返回 node_id 字段(提升查询性能,避免查询全表字段) + .Select(zy => zy.NodeId) + // 执行查询,返回 List 结果 + .ToList(); + var toDoQuery = _sqlSugar + .Queryable() + .LeftJoin((w, n) => w.NodeId == n.NodeId) + .Where((w, n) => nodeIdList.Contains(w.NodeId) && w.Status == "ToDo") .OrderByDescending(w => w.ReceiveTime); - // 分页查询 var totalCount = toDoQuery.Count(); var toDoWorkitems = toDoQuery