From 676c10f56908df04fe48ae85ab348f68052343b0 Mon Sep 17 00:00:00 2001 From: yubaolee Date: Tue, 21 Jan 2025 09:08:14 +0800 Subject: [PATCH] =?UTF-8?q?fix=20IBITU5=20=20=E6=B5=81=E7=A8=8B=E4=BB=A3?= =?UTF-8?q?=E7=A0=81=E9=87=8D=E6=9E=84=E5=90=8ESQL=E8=AF=AD=E6=B3=95?= =?UTF-8?q?=E6=8A=A5=E9=94=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- OpenAuth.App/FlowInstance/FlowInstanceApp.cs | 126 +++++++++---------- 1 file changed, 60 insertions(+), 66 deletions(-) diff --git a/OpenAuth.App/FlowInstance/FlowInstanceApp.cs b/OpenAuth.App/FlowInstance/FlowInstanceApp.cs index 1a798947..c79e7c6c 100644 --- a/OpenAuth.App/FlowInstance/FlowInstanceApp.cs +++ b/OpenAuth.App/FlowInstance/FlowInstanceApp.cs @@ -513,7 +513,7 @@ namespace OpenAuth.App } FlowRuntime wfruntime = new FlowRuntime(flowInstance); - wfruntime.RejectNode(_httpClientFactory.CreateClient(),reqest); + wfruntime.RejectNode(_httpClientFactory.CreateClient(), reqest); //给流程创建人发送通知信息 _messageApp.SendMsgTo(flowInstance.CreateUserId, @@ -591,51 +591,47 @@ namespace OpenAuth.App var result = new TableData(); var user = _auth.GetCurrentUser(); - if (request.type == "wait") //待办事项 - { - //包括加签人包含当前用户,审批人包含当前用户且没有加签节点的 - var query = SugarClient.SqlQueryable($@" - SELECT fi.Id, - fi.CreateUserName, - fi.ActivityName, - fi.CreateDate, - fi.CustomName, - fi.Code, - fi.Description, - fi.IsFinish, - (SELECT Account As Account FROM `User` - where Id in (fi.MakerList) - UNION ALL - SELECT '所有人' AS Account from dual - WHERE fi.MakerList = '1' - UNION ALL - SELECT 'System' AS Account from dual - WHERE fi.MakerList = '00000000-0000-0000-0000-000000000000') as MakerList - FROM FlowInstance fi - JOIN (SELECT fith.Id - FROM FlowInstance fith - WHERE (MakerList = '1' or MakerList LIKE '%{user.User.Id}%') - and (fith.IsFinish = {FlowInstanceStatus.Running} or fith.IsFinish = {FlowInstanceStatus.Rejected}) - and not exists (select 1 - from flowapprover - where fith.Id = InstanceId - and fith.ActivityId = ActivityId - and Status = 0) - UNION - SELECT fa.InstanceId - FROM FlowApprover fa - WHERE fa.Status = 0 - AND fa.ApproverId = '{user.User.Id}') AS UniqueInstanceIds - ON fi.Id = UniqueInstanceIds.Id") - .WhereIF(!string.IsNullOrEmpty(request.key), t => t.CustomName.Contains(request.key)); + string sql = String.Empty; - result.count = await query.CountAsync(); - result.data = await query.OrderByDescending(u => u.CreateDate) - .ToPageListAsync(request.page, request.limit); + if (request.type == "wait") //待办事项(即我待办过的流程) + { + sql = $@" + SELECT fi.Id, + fi.CreateUserName, + fi.ActivityName, + fi.CreateDate, + fi.CustomName, + fi.Code, + fi.Description, + fi.IsFinish, + (SELECT Account As Account FROM `User` + where Id in (fi.MakerList) + UNION ALL + SELECT '所有人' AS Account from dual + WHERE fi.MakerList = '1' + UNION ALL + SELECT 'System' AS Account from dual + WHERE fi.MakerList = '00000000-0000-0000-0000-000000000000') as MakerList + FROM FlowInstance fi + JOIN (SELECT fith.Id + FROM FlowInstance fith + WHERE (MakerList = '1' or MakerList LIKE '%{user.User.Id}%') + and (fith.IsFinish = {FlowInstanceStatus.Running} or fith.IsFinish = {FlowInstanceStatus.Rejected}) + and not exists (select 1 + from flowapprover + where fith.Id = InstanceId + and fith.ActivityId = ActivityId + and Status = 0) + UNION + SELECT fa.InstanceId + FROM FlowApprover fa + WHERE fa.Status = 0 + AND fa.ApproverId = '{user.User.Id}') AS UniqueInstanceIds + ON fi.Id = UniqueInstanceIds.Id"; } else if (request.type == "disposed") //已办事项(即我参与过的流程) { - var finalQuery = SugarClient.SqlQueryable($@" + sql = $@" SELECT fi.Id, fi.CreateUserName, fi.ActivityName, @@ -662,16 +658,11 @@ namespace OpenAuth.App WHERE fa.Status <> 0 AND fa.ApproverId = '{user.User.Id}') AS UniqueInstanceIds ON fi.Id = UniqueInstanceIds.InstanceId - ") - .WhereIF(!string.IsNullOrEmpty(request.key), t => t.CustomName.Contains(request.key)); - - result.data = await finalQuery.OrderByDescending(i => i.CreateDate) - .ToPageListAsync(request.page, request.limit); - result.count = await finalQuery.CountAsync(); + "; } else //我的流程(包含知会我的) { - var sql = $@" + sql = $@" SELECT fi.Id, fi.CreateUserName, fi.ActivityName, @@ -709,25 +700,28 @@ namespace OpenAuth.App where a.`Key` = '{Define.INSTANCE_NOTICE_ROLE}') AS UniqueInstanceIds ON fi.Id = UniqueInstanceIds.InstanceId "; - - if (SugarClient.CurrentConnectionConfig.DbType == DbType.SqlServer) - { - sql = sql.Replace("`Key`", "[Key]"); - sql = sql.Replace("from dual", ""); - } - else if (SugarClient.CurrentConnectionConfig.DbType == DbType.Oracle) - { - sql = sql.Replace("`Key`", "\"Key\""); - } - - var finalQuery = SugarClient.SqlQueryable(sql) - .WhereIF(!string.IsNullOrEmpty(request.key), t => t.CustomName.Contains(request.key)); - - result.count = await finalQuery.CountAsync(); - result.data = await finalQuery.OrderByDescending(u => u.CreateDate) - .ToPageListAsync(request.page, request.limit); } + switch (SugarClient.CurrentConnectionConfig.DbType) + { + case DbType.SqlServer: + sql = sql.Replace("`Key`", "[Key]"); + sql = sql.Replace("`User`", "[User]"); + sql = sql.Replace("from dual", ""); + break; + case DbType.Oracle: + sql = sql.Replace("`Key`", "\"Key\""); + sql = sql.Replace("`User`", "\"User\""); + break; + } + + var finalQuery = SugarClient.SqlQueryable(sql) + .WhereIF(!string.IsNullOrEmpty(request.key), t => t.CustomName.Contains(request.key)); + + result.count = await finalQuery.CountAsync(); + result.data = await finalQuery.OrderByDescending(u => u.CreateDate) + .ToPageListAsync(request.page, request.limit); + return result; }