|
@@ -254,76 +254,76 @@ public class WorkflowApplication : IWorkflowApplication, IScopeDependency
|
|
|
return workflow.Id;
|
|
|
}
|
|
|
|
|
|
- /// <summary>
|
|
|
- /// 流转至下一节点(节点办理)
|
|
|
- /// </summary>
|
|
|
- public async Task<Workflow> NextAsync(NextWorkflowDto dto, DateTime? expiredTime = null, CancellationToken cancellationToken = default)
|
|
|
- {
|
|
|
- var validator = new NextWorkflowDtoValidator();
|
|
|
- var validResult = await validator.ValidateAsync(dto, cancellationToken);
|
|
|
- if (!validResult.IsValid)
|
|
|
- throw new UserFriendlyException(
|
|
|
- $"非法参数, {string.Join(',', validResult.Errors.Select(d => d.ErrorMessage))}");
|
|
|
- var workflow = await _workflowDomainService.GetWorkflowAsync(dto.WorkflowId, withDefine: true, withSteps: true,
|
|
|
- withTraces: true, withCountersigns: true, cancellationToken: cancellationToken);
|
|
|
-
|
|
|
- //var currentStep = _workflowDomainService.FindCurrentStepWaitForHandle(workflow,
|
|
|
- // current.RequiredUserId, current.RequiredOrgId, current.Roles);
|
|
|
- var currentStep = workflow.Steps.FirstOrDefault(d => d.Id == dto.StepId);
|
|
|
- if (currentStep == null)
|
|
|
- throw new UserFriendlyException(
|
|
|
- $"未找到对应节点, workflowId: {dto.WorkflowId}, stepId: {dto.StepId}", "未找到对应节点");
|
|
|
- if (currentStep.Status is EWorkflowStepStatus.Handled)
|
|
|
- throw new UserFriendlyException("该状态不支持继续办理");
|
|
|
-
|
|
|
- var currentStepDefine = _workflowDomainService.GetStepDefine(workflow.WorkflowDefinition, currentStep.Code);
|
|
|
-
|
|
|
- //下一节点是否为动态节点
|
|
|
- var isNextDynamic = currentStepDefine.InstanceMode is EInstanceMode.Dynamic &&
|
|
|
- !_workflowDomainService.DynamicShouldTerminal(currentStepDefine, _sessionContextProvider.SessionContext.OrgLevel);
|
|
|
-
|
|
|
- StepDefine nextStepDefine;
|
|
|
- if (isNextDynamic
|
|
|
- || (currentStep.IsInCountersign() && !currentStep.IsTopCountersignEndStep(workflow.TopCountersignStepId))
|
|
|
- || dto.IsStartCountersign)
|
|
|
- {
|
|
|
- //下一步配置为当前节点配置
|
|
|
- nextStepDefine = currentStepDefine;
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- //下一步配置为下一步节点配置
|
|
|
- nextStepDefine = _workflowDomainService.GetStepDefine(workflow.WorkflowDefinition, dto.NextStepCode);
|
|
|
- }
|
|
|
-
|
|
|
- //需求:按角色选择办理人可以不选,表示该角色下所有人都可以办理,同时依据配置:是否本部门人办理显示待选办理人。角色下只要一人办理即可(即:角色下不发起会签)
|
|
|
- if (nextStepDefine.HandlerType != EHandlerType.Role && !dto.NextHandlers.Any())
|
|
|
- throw new UserFriendlyException("未指定节点处理者");
|
|
|
-
|
|
|
- if (dto.IsStartCountersign)
|
|
|
- {
|
|
|
- if (!currentStepDefine.CanStartCountersign)
|
|
|
- throw new UserFriendlyException("当前节点不支持发起会签");
|
|
|
- //if (currentStepDefine.HandlerType is EHandlerType.Role)
|
|
|
- // throw new UserFriendlyException("当前节点不支持发起会签");
|
|
|
- //即使当前节点支持发起会签,但下一节点为信息汇总节点、结束节点时也不可发起会签
|
|
|
- if (nextStepDefine.StepType is EStepType.Summary or EStepType.End)
|
|
|
- throw new UserFriendlyException("下一节点不允许发起会签");
|
|
|
- //下一节点是会签汇总节点也不允许发起会签
|
|
|
- if (dto.BackToCountersignEnd)
|
|
|
- throw new UserFriendlyException("下一节点不允许发起会签");
|
|
|
- }
|
|
|
-
|
|
|
- var flowAssignInfo =
|
|
|
- await GetNextStepFlowAssignInfoAsync(workflow, currentStep, dto, nextStepDefine, isNextDynamic, cancellationToken);
|
|
|
-
|
|
|
- //var nextStepHandlers = await GetNextStepHandlersAsync(workflow, nextStepDefine, dto, cancellationToken);
|
|
|
-
|
|
|
- await _workflowDomainService.NextAsync(workflow, currentStep, dto, nextStepDefine, isNextDynamic,
|
|
|
- flowAssignInfo, expiredTime, cancellationToken);
|
|
|
-
|
|
|
- return workflow;
|
|
|
- }
|
|
|
+ ///// <summary>
|
|
|
+ ///// 流转至下一节点(节点办理)
|
|
|
+ ///// </summary>
|
|
|
+ //public async Task<Workflow> NextAsync(NextWorkflowDto dto, DateTime? expiredTime = null, CancellationToken cancellationToken = default)
|
|
|
+ //{
|
|
|
+ // var validator = new NextWorkflowDtoValidator();
|
|
|
+ // var validResult = await validator.ValidateAsync(dto, cancellationToken);
|
|
|
+ // if (!validResult.IsValid)
|
|
|
+ // throw new UserFriendlyException(
|
|
|
+ // $"非法参数, {string.Join(',', validResult.Errors.Select(d => d.ErrorMessage))}");
|
|
|
+ // var workflow = await _workflowDomainService.GetWorkflowAsync(dto.WorkflowId, withDefine: true, withSteps: true,
|
|
|
+ // withTraces: true, withCountersigns: true, cancellationToken: cancellationToken);
|
|
|
+
|
|
|
+ // //var currentStep = _workflowDomainService.FindCurrentStepWaitForHandle(workflow,
|
|
|
+ // // current.RequiredUserId, current.RequiredOrgId, current.Roles);
|
|
|
+ // var currentStep = workflow.Steps.FirstOrDefault(d => d.Id == dto.StepId);
|
|
|
+ // if (currentStep == null)
|
|
|
+ // throw new UserFriendlyException(
|
|
|
+ // $"未找到对应节点, workflowId: {dto.WorkflowId}, stepId: {dto.StepId}", "未找到对应节点");
|
|
|
+ // if (currentStep.Status is EWorkflowStepStatus.Handled)
|
|
|
+ // throw new UserFriendlyException("该状态不支持继续办理");
|
|
|
+
|
|
|
+ // var currentStepDefine = _workflowDomainService.GetStepDefine(workflow.WorkflowDefinition, currentStep.Code);
|
|
|
+
|
|
|
+ // //下一节点是否为动态节点
|
|
|
+ // var isNextDynamic = currentStepDefine.InstanceMode is EInstanceMode.Dynamic &&
|
|
|
+ // !_workflowDomainService.DynamicShouldTerminal(currentStepDefine, _sessionContextProvider.SessionContext.OrgLevel);
|
|
|
+
|
|
|
+ // StepDefine nextStepDefine;
|
|
|
+ // if (isNextDynamic
|
|
|
+ // || (currentStep.IsInCountersign() && !currentStep.IsTopCountersignEndStep(workflow.TopCountersignStepId))
|
|
|
+ // || dto.IsStartCountersign)
|
|
|
+ // {
|
|
|
+ // //下一步配置为当前节点配置
|
|
|
+ // nextStepDefine = currentStepDefine;
|
|
|
+ // }
|
|
|
+ // else
|
|
|
+ // {
|
|
|
+ // //下一步配置为下一步节点配置
|
|
|
+ // nextStepDefine = _workflowDomainService.GetStepDefine(workflow.WorkflowDefinition, dto.NextStepCode);
|
|
|
+ // }
|
|
|
+
|
|
|
+ // //需求:按角色选择办理人可以不选,表示该角色下所有人都可以办理,同时依据配置:是否本部门人办理显示待选办理人。角色下只要一人办理即可(即:角色下不发起会签)
|
|
|
+ // if (nextStepDefine.HandlerType != EHandlerType.Role && !dto.NextHandlers.Any())
|
|
|
+ // throw new UserFriendlyException("未指定节点处理者");
|
|
|
+
|
|
|
+ // if (dto.IsStartCountersign)
|
|
|
+ // {
|
|
|
+ // if (!currentStepDefine.CanStartCountersign)
|
|
|
+ // throw new UserFriendlyException("当前节点不支持发起会签");
|
|
|
+ // //if (currentStepDefine.HandlerType is EHandlerType.Role)
|
|
|
+ // // throw new UserFriendlyException("当前节点不支持发起会签");
|
|
|
+ // //即使当前节点支持发起会签,但下一节点为信息汇总节点、结束节点时也不可发起会签
|
|
|
+ // if (nextStepDefine.StepType is EStepType.Summary or EStepType.End)
|
|
|
+ // throw new UserFriendlyException("下一节点不允许发起会签");
|
|
|
+ // //下一节点是会签汇总节点也不允许发起会签
|
|
|
+ // if (dto.BackToCountersignEnd)
|
|
|
+ // throw new UserFriendlyException("下一节点不允许发起会签");
|
|
|
+ // }
|
|
|
+
|
|
|
+ // var flowAssignInfo =
|
|
|
+ // await GetNextStepFlowAssignInfoAsync(workflow, currentStep, dto, nextStepDefine, isNextDynamic, cancellationToken);
|
|
|
+
|
|
|
+ // //var nextStepHandlers = await GetNextStepHandlersAsync(workflow, nextStepDefine, dto, cancellationToken);
|
|
|
+
|
|
|
+ // await _workflowDomainService.NextAsync(workflow, currentStep, dto, nextStepDefine, isNextDynamic,
|
|
|
+ // flowAssignInfo, expiredTime, cancellationToken);
|
|
|
+
|
|
|
+ // return workflow;
|
|
|
+ //}
|
|
|
|
|
|
/// <summary>
|
|
|
/// 退回(返回前一节点)
|
|
@@ -433,7 +433,8 @@ public class WorkflowApplication : IWorkflowApplication, IScopeDependency
|
|
|
Files = files,
|
|
|
StepId = unHandleStep.Id
|
|
|
};
|
|
|
- await NextAsync(dto, cancellationToken: cancellationToken);
|
|
|
+ //await NextAsync(dto, cancellationToken: cancellationToken);
|
|
|
+ await _workflowDomainService.NextAsync(_sessionContextProvider.SessionContext, dto, cancellationToken: cancellationToken);
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
@@ -552,12 +553,12 @@ public class WorkflowApplication : IWorkflowApplication, IScopeDependency
|
|
|
dto.OrgIds.Contains(d.ParentId))
|
|
|
.ToListAsync(cancellationToken);
|
|
|
nextStepOption.Items = orgs.Select(d => new FlowStepHandler
|
|
|
- {
|
|
|
- Key = d.Id,
|
|
|
- Value = d.Name,
|
|
|
- OrgId = d.Id,
|
|
|
- OrgName = d.Name
|
|
|
- })
|
|
|
+ {
|
|
|
+ Key = d.Id,
|
|
|
+ Value = d.Name,
|
|
|
+ OrgId = d.Id,
|
|
|
+ OrgName = d.Name
|
|
|
+ })
|
|
|
.ToList();
|
|
|
nextStepOption.FlowDirection = _workflowDomainService.GetFlowDirection(dto.BusinessType, stepDefine.BusinessType);
|
|
|
stepOptions.Add(nextStepOption);
|
|
@@ -643,7 +644,7 @@ public class WorkflowApplication : IWorkflowApplication, IScopeDependency
|
|
|
EStepType.Normal, currentStep.BusinessType, cancellationToken);
|
|
|
|
|
|
dto.Steps = new List<NextStepOption> { nextStepOption };
|
|
|
- if(countersignEndOption!= null)
|
|
|
+ if (countersignEndOption != null)
|
|
|
dto.Steps.Add(countersignEndOption);
|
|
|
return dto;
|
|
|
}
|
|
@@ -797,7 +798,9 @@ public class WorkflowApplication : IWorkflowApplication, IScopeDependency
|
|
|
? EFlowDirection.CenterToFile
|
|
|
: EFlowDirection.OrgToFile;
|
|
|
|
|
|
- await NextAsync(nextDto, cancellationToken: cancellationToken);
|
|
|
+ //await NextAsync(nextDto, cancellationToken: cancellationToken);
|
|
|
+ await _workflowDomainService.NextAsync(_sessionContextProvider.SessionContext, nextDto,
|
|
|
+ cancellationToken: cancellationToken);
|
|
|
}
|
|
|
|
|
|
//供开启流程调用
|
|
@@ -990,12 +993,12 @@ public class WorkflowApplication : IWorkflowApplication, IScopeDependency
|
|
|
}
|
|
|
|
|
|
handlers = orgs1.Select(d => new FlowStepHandler
|
|
|
- {
|
|
|
- Key = d.Id,
|
|
|
- Value = d.Name,
|
|
|
- OrgId = d.Id,
|
|
|
- OrgName = d.Name
|
|
|
- })
|
|
|
+ {
|
|
|
+ Key = d.Id,
|
|
|
+ Value = d.Name,
|
|
|
+ OrgId = d.Id,
|
|
|
+ OrgName = d.Name
|
|
|
+ })
|
|
|
.ToList();
|
|
|
break;
|
|
|
case EHandlerType.OrgType:
|
|
@@ -1007,12 +1010,12 @@ public class WorkflowApplication : IWorkflowApplication, IScopeDependency
|
|
|
.ToListAsync(cancellationToken);
|
|
|
|
|
|
handlers = orgs2.Select(d => new FlowStepHandler
|
|
|
- {
|
|
|
- Key = d.Id,
|
|
|
- Value = d.Name,
|
|
|
- OrgId = d.Id,
|
|
|
- OrgName = d.Name
|
|
|
- })
|
|
|
+ {
|
|
|
+ Key = d.Id,
|
|
|
+ Value = d.Name,
|
|
|
+ OrgId = d.Id,
|
|
|
+ OrgName = d.Name
|
|
|
+ })
|
|
|
.ToList();
|
|
|
break;
|
|
|
default:
|
|
@@ -1038,7 +1041,7 @@ public class WorkflowApplication : IWorkflowApplication, IScopeDependency
|
|
|
var prevStep = steps.FirstOrDefault(d => d.Id == step.PrevStepId);
|
|
|
//归档以后特提发起会签场景
|
|
|
if (prevStep is null || !prevStep.IsStartCountersign) return null;
|
|
|
-
|
|
|
+
|
|
|
var text = prevStep.HandlerOrgIsCenter.Value
|
|
|
? "热线中心会签汇总"
|
|
|
: $"{prevStep.HandlerOrgId.CalcOrgLevel().ToChinese()}级部门会签汇总";
|
|
@@ -1727,87 +1730,87 @@ public class WorkflowApplication : IWorkflowApplication, IScopeDependency
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- public ISugarQueryable<WorkflowCountersign,Workflow,Order> QueryOrderCountersigns(QueryOrderCountersignDto dto, ISessionContext _sessionContext)
|
|
|
+ public ISugarQueryable<WorkflowCountersign, Workflow, Order> QueryOrderCountersigns(QueryOrderCountersignDto dto, ISessionContext _sessionContext)
|
|
|
{
|
|
|
- var Role = _sessionContext.Roles;
|
|
|
-
|
|
|
- var query = _workflowCountersignRepository.Queryable()
|
|
|
- .Includes(x => x.Members)
|
|
|
- .LeftJoin<Workflow>((c, w) => c.WorkflowId == w.Id)
|
|
|
- .InnerJoin<Order>((c, w, o) => w.ExternalId == o.Id)
|
|
|
- .WhereIF(!string.IsNullOrEmpty(dto.Title), (c, w, o) => o.Title.Contains(dto.Title))
|
|
|
- .WhereIF(!string.IsNullOrEmpty(dto.OrderNo), (c, w, o) => o.No == dto.OrderNo)
|
|
|
- .WhereIF(!string.IsNullOrEmpty(dto.AcceptType), (c, w, o) => o.AcceptTypeCode == dto.AcceptType)//受理类型
|
|
|
- .WhereIF(!string.IsNullOrEmpty(dto.Channel), (c, w, o) => o.SourceChannelCode == dto.Channel)//受理类型
|
|
|
- .WhereIF(!string.IsNullOrEmpty(dto.Hotspot), (c, w, o) => o.HotspotSpliceName != null && o.HotspotSpliceName.Contains(dto.Hotspot))//热点类型
|
|
|
- .WhereIF(!string.IsNullOrEmpty(dto.OrgId), (c, w, o) => c.FinisherOrgId == dto.OrgId) //接办部门
|
|
|
- .WhereIF(dto.CounterSignType != null, (c, w, o) => c.CounterSignType == dto.CounterSignType) //会签类型
|
|
|
- ;
|
|
|
-
|
|
|
- var rolePaiDan = _systemSettingCacheManager.GetSetting(SettingConstants.RolePaiDan)?.SettingValue[0];//派单员角色
|
|
|
- var seatsMonitor = _systemSettingCacheManager.GetSetting(SettingConstants.SeatsMonitor)?.SettingValue[0];//班长角色
|
|
|
- var isAdmin = false;
|
|
|
- var systemAdministrator = _systemSettingCacheManager.GetSetting(SettingConstants.SystemAdministrator)?.SettingValue[0];//管理员角色
|
|
|
- if (!string.IsNullOrEmpty(systemAdministrator) && (_sessionContext.Roles.Contains(systemAdministrator) || _sessionContext.Roles.Contains(RoleSeedData.AdminRole)))
|
|
|
- isAdmin = true;
|
|
|
-
|
|
|
- //发起会签:班长角色能看所有会签信件;新增管理员能看到所有会签
|
|
|
- //派单员角色只能看到自己发起的会签信件;
|
|
|
- //承办部门用户能看到自己发起的和同级部门用户发起的会签件
|
|
|
- if (dto.InitiatedCountersignature.HasValue && dto.InitiatedCountersignature == true)
|
|
|
- {
|
|
|
- if (_sessionContext.Roles.Any(p => p == seatsMonitor) || isAdmin)
|
|
|
- {
|
|
|
-
|
|
|
- }
|
|
|
- else
|
|
|
- if (_sessionContext.Roles.Any(p => p == rolePaiDan))
|
|
|
- {
|
|
|
- query = query.Where((c, w, o) => c.StarterId == _sessionContext.UserId);
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- query = query.Where((c, w, o) => c.StarterOrgId == _sessionContext.RequiredOrgId);
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- //会签已办(会签状态为已结束):
|
|
|
- //班长角色能看所有已结束的会签信件;新增管理员能看到所有会签
|
|
|
- //派单员不会办理会签件只会发起会签件所以这一点派单员角色可以忽略;
|
|
|
- //承办部门用户能看到和同级部门用户已办理过的会签件
|
|
|
- if (dto.HandleCountersignature.HasValue && dto.HandleCountersignature == true)
|
|
|
- {
|
|
|
- if (_sessionContext.Roles.Any(p => p == seatsMonitor) || isAdmin)
|
|
|
- {
|
|
|
- query = query.Where((c, w, o) => c.EndTime.HasValue);
|
|
|
- }
|
|
|
- else
|
|
|
- if (_sessionContext.Roles.Any(p => p == rolePaiDan))
|
|
|
- {
|
|
|
- query = query.Where((c, w, o) => c.Members.Any(m => m.Key == _sessionContext.RequiredOrgId) && c.EndTime.HasValue);
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- query = query.Where((c, w, o) => c.Members.Any(m => m.Key == _sessionContext.OrgId || m.Key == _sessionContext.RequiredOrgId) && c.EndTime.HasValue);
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- var items = query
|
|
|
- .OrderByDescending((c, w, o) => o.ExpiredTime);
|
|
|
- return items;
|
|
|
+ var Role = _sessionContext.Roles;
|
|
|
+
|
|
|
+ var query = _workflowCountersignRepository.Queryable()
|
|
|
+ .Includes(x => x.Members)
|
|
|
+ .LeftJoin<Workflow>((c, w) => c.WorkflowId == w.Id)
|
|
|
+ .InnerJoin<Order>((c, w, o) => w.ExternalId == o.Id)
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.Title), (c, w, o) => o.Title.Contains(dto.Title))
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.OrderNo), (c, w, o) => o.No == dto.OrderNo)
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.AcceptType), (c, w, o) => o.AcceptTypeCode == dto.AcceptType)//受理类型
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.Channel), (c, w, o) => o.SourceChannelCode == dto.Channel)//受理类型
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.Hotspot), (c, w, o) => o.HotspotSpliceName != null && o.HotspotSpliceName.Contains(dto.Hotspot))//热点类型
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.OrgId), (c, w, o) => c.FinisherOrgId == dto.OrgId) //接办部门
|
|
|
+ .WhereIF(dto.CounterSignType != null, (c, w, o) => c.CounterSignType == dto.CounterSignType) //会签类型
|
|
|
+ ;
|
|
|
+
|
|
|
+ var rolePaiDan = _systemSettingCacheManager.GetSetting(SettingConstants.RolePaiDan)?.SettingValue[0];//派单员角色
|
|
|
+ var seatsMonitor = _systemSettingCacheManager.GetSetting(SettingConstants.SeatsMonitor)?.SettingValue[0];//班长角色
|
|
|
+ var isAdmin = false;
|
|
|
+ var systemAdministrator = _systemSettingCacheManager.GetSetting(SettingConstants.SystemAdministrator)?.SettingValue[0];//管理员角色
|
|
|
+ if (!string.IsNullOrEmpty(systemAdministrator) && (_sessionContext.Roles.Contains(systemAdministrator) || _sessionContext.Roles.Contains(RoleSeedData.AdminRole)))
|
|
|
+ isAdmin = true;
|
|
|
+
|
|
|
+ //发起会签:班长角色能看所有会签信件;新增管理员能看到所有会签
|
|
|
+ //派单员角色只能看到自己发起的会签信件;
|
|
|
+ //承办部门用户能看到自己发起的和同级部门用户发起的会签件
|
|
|
+ if (dto.InitiatedCountersignature.HasValue && dto.InitiatedCountersignature == true)
|
|
|
+ {
|
|
|
+ if (_sessionContext.Roles.Any(p => p == seatsMonitor) || isAdmin)
|
|
|
+ {
|
|
|
+
|
|
|
+ }
|
|
|
+ else
|
|
|
+ if (_sessionContext.Roles.Any(p => p == rolePaiDan))
|
|
|
+ {
|
|
|
+ query = query.Where((c, w, o) => c.StarterId == _sessionContext.UserId);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ query = query.Where((c, w, o) => c.StarterOrgId == _sessionContext.RequiredOrgId);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ //会签已办(会签状态为已结束):
|
|
|
+ //班长角色能看所有已结束的会签信件;新增管理员能看到所有会签
|
|
|
+ //派单员不会办理会签件只会发起会签件所以这一点派单员角色可以忽略;
|
|
|
+ //承办部门用户能看到和同级部门用户已办理过的会签件
|
|
|
+ if (dto.HandleCountersignature.HasValue && dto.HandleCountersignature == true)
|
|
|
+ {
|
|
|
+ if (_sessionContext.Roles.Any(p => p == seatsMonitor) || isAdmin)
|
|
|
+ {
|
|
|
+ query = query.Where((c, w, o) => c.EndTime.HasValue);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ if (_sessionContext.Roles.Any(p => p == rolePaiDan))
|
|
|
+ {
|
|
|
+ query = query.Where((c, w, o) => c.Members.Any(m => m.Key == _sessionContext.RequiredOrgId) && c.EndTime.HasValue);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ query = query.Where((c, w, o) => c.Members.Any(m => m.Key == _sessionContext.OrgId || m.Key == _sessionContext.RequiredOrgId) && c.EndTime.HasValue);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ var items = query
|
|
|
+ .OrderByDescending((c, w, o) => o.ExpiredTime);
|
|
|
+ return items;
|
|
|
}
|
|
|
|
|
|
|
|
|
#region private
|
|
|
|
|
|
- /// <summary>
|
|
|
- /// 查询流程业务模块
|
|
|
- /// </summary>
|
|
|
- /// <param name="code"></param>
|
|
|
- /// <param name="cancellationToken"></param>
|
|
|
- /// <returns></returns>
|
|
|
- /// <exception cref="UserFriendlyException"></exception>
|
|
|
- public async Task<WorkflowModule> GetWorkflowModuleAsync(string code, CancellationToken cancellationToken)
|
|
|
+ /// <summary>
|
|
|
+ /// 查询流程业务模块
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="code"></param>
|
|
|
+ /// <param name="cancellationToken"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ /// <exception cref="UserFriendlyException"></exception>
|
|
|
+ public async Task<WorkflowModule> GetWorkflowModuleAsync(string code, CancellationToken cancellationToken)
|
|
|
{
|
|
|
var wfModule = await _wfModuleCacheManager.GetWorkflowModuleAsync(code, cancellationToken);
|
|
|
if (wfModule == null)
|