|
@@ -4263,61 +4263,49 @@ public class OrderController : BaseController
|
|
|
[HttpGet("waited-fixed")]
|
|
|
public async Task<IReadOnlyList<OrderDto>> QueryWaitedFixed([FromQuery] QueryOrderWaitedFixedDto dto)
|
|
|
{
|
|
|
- //1. 已办查询,queryType条件无效
|
|
|
- //2.封装逻辑:管理员可见所有有trace的order,按照已办/待办过滤、非管理员判断流程那套逻辑,再按照已办/待办过滤
|
|
|
- //3. queryType过滤:
|
|
|
var query = _orderRepository.Queryable();
|
|
|
var hasHandled = dto.IsHandled.HasValue && dto.IsHandled.Value;
|
|
|
if (hasHandled)
|
|
|
dto.QueryType = null;
|
|
|
|
|
|
- var expStepFilter = new Func<WorkflowStep, bool>(step =>
|
|
|
- ((step.FlowAssignType == EFlowAssignType.User && !string.IsNullOrEmpty(step.HandlerId) && step.HandlerId == _sessionContext.RequiredUserId) ||
|
|
|
- (step.FlowAssignType == EFlowAssignType.Org && !string.IsNullOrEmpty(step.HandlerOrgId) && step.HandlerOrgId == _sessionContext.RequiredOrgId) ||
|
|
|
- (step.FlowAssignType == EFlowAssignType.Role && !string.IsNullOrEmpty(step.RoleId) && _sessionContext.Roles.Contains(step.RoleId)) ||
|
|
|
- (step.FlowAssignType == EFlowAssignType.OrgAndRole && !string.IsNullOrEmpty(step.RoleId) && _sessionContext.Roles.Contains(step.RoleId)
|
|
|
- && !string.IsNullOrEmpty(step.HandlerOrgId) && step.HandlerOrgId == _sessionContext.RequiredOrgId))
|
|
|
- //&& (!hasHandled || step.Status == EWorkflowStepStatus.Handled)
|
|
|
- //&& (hasHandled || step.Status < EWorkflowStepStatus.Handled)
|
|
|
- );
|
|
|
-
|
|
|
- var expHandledStep =
|
|
|
- new Func<WorkflowStep, bool>(step =>
|
|
|
- ((step.FlowAssignType == EFlowAssignType.User && !string.IsNullOrEmpty(step.HandlerId) && step.HandlerId == _sessionContext.RequiredUserId) ||
|
|
|
- (step.FlowAssignType == EFlowAssignType.Org && !string.IsNullOrEmpty(step.HandlerOrgId) && step.HandlerOrgId == _sessionContext.RequiredOrgId) ||
|
|
|
- (step.FlowAssignType == EFlowAssignType.Role && !string.IsNullOrEmpty(step.RoleId) && _sessionContext.Roles.Contains(step.RoleId)) ||
|
|
|
- (step.FlowAssignType == EFlowAssignType.OrgAndRole && !string.IsNullOrEmpty(step.RoleId) && _sessionContext.Roles.Contains(step.RoleId)
|
|
|
- && !string.IsNullOrEmpty(step.HandlerOrgId) && step.HandlerOrgId == _sessionContext.RequiredOrgId))
|
|
|
- && step.Status == EWorkflowStepStatus.Handled
|
|
|
- );
|
|
|
- var expUnhandleStep = new Func<WorkflowStep, bool>(step =>
|
|
|
- ((step.FlowAssignType == EFlowAssignType.User && !string.IsNullOrEmpty(step.HandlerId) && step.HandlerId == _sessionContext.RequiredUserId) ||
|
|
|
- (step.FlowAssignType == EFlowAssignType.Org && !string.IsNullOrEmpty(step.HandlerOrgId) && step.HandlerOrgId == _sessionContext.RequiredOrgId) ||
|
|
|
- (step.FlowAssignType == EFlowAssignType.Role && !string.IsNullOrEmpty(step.RoleId) && _sessionContext.Roles.Contains(step.RoleId)) ||
|
|
|
- (step.FlowAssignType == EFlowAssignType.OrgAndRole && !string.IsNullOrEmpty(step.RoleId) && _sessionContext.Roles.Contains(step.RoleId)
|
|
|
- && !string.IsNullOrEmpty(step.HandlerOrgId) && step.HandlerOrgId == _sessionContext.RequiredOrgId))
|
|
|
- && step.Status < EWorkflowStepStatus.Handled
|
|
|
- );
|
|
|
-
|
|
|
var isAdmin = _orderDomainService.IsCheckAdmin();
|
|
|
if (!isAdmin)
|
|
|
{
|
|
|
query
|
|
|
- .Includes(d => d.WorkflowSteps//.Where(expStepFilter)
|
|
|
+ .Includes(d => d.WorkflowSteps.Where(step =>
|
|
|
+ ((step.FlowAssignType == EFlowAssignType.User && !string.IsNullOrEmpty(step.HandlerId) && step.HandlerId == _sessionContext.RequiredUserId) ||
|
|
|
+ (step.FlowAssignType == EFlowAssignType.Org && !string.IsNullOrEmpty(step.HandlerOrgId) && step.HandlerOrgId == _sessionContext.RequiredOrgId) ||
|
|
|
+ (step.FlowAssignType == EFlowAssignType.Role && !string.IsNullOrEmpty(step.RoleId) && _sessionContext.Roles.Contains(step.RoleId)) ||
|
|
|
+ (step.FlowAssignType == EFlowAssignType.OrgAndRole && !string.IsNullOrEmpty(step.RoleId) && _sessionContext.Roles.Contains(step.RoleId)
|
|
|
+ && !string.IsNullOrEmpty(step.HandlerOrgId) && step.HandlerOrgId == _sessionContext.RequiredOrgId)))
|
|
|
.OrderByDescending(step => step.CreationTime)
|
|
|
.Take(1)
|
|
|
.ToList()
|
|
|
- )
|
|
|
- .Where(d => d.WorkflowSteps
|
|
|
- //.WhereIF(hasHandled, step=>step.Status == EWorkflowStepStatus.Handled)
|
|
|
- //.WhereIF(!hasHandled, step=>step.Status < EWorkflowStepStatus.Handled)
|
|
|
+ );
|
|
|
+
|
|
|
+ if (hasHandled)
|
|
|
+ {
|
|
|
+ query.Where(d => d.WorkflowSteps
|
|
|
.Any(step =>
|
|
|
((step.FlowAssignType == EFlowAssignType.User && !string.IsNullOrEmpty(step.HandlerId) && step.HandlerId == _sessionContext.RequiredUserId) ||
|
|
|
(step.FlowAssignType == EFlowAssignType.Org && !string.IsNullOrEmpty(step.HandlerOrgId) && step.HandlerOrgId == _sessionContext.RequiredOrgId) ||
|
|
|
(step.FlowAssignType == EFlowAssignType.Role && !string.IsNullOrEmpty(step.RoleId) && _sessionContext.Roles.Contains(step.RoleId)) ||
|
|
|
(step.FlowAssignType == EFlowAssignType.OrgAndRole && !string.IsNullOrEmpty(step.RoleId) && _sessionContext.Roles.Contains(step.RoleId)
|
|
|
- && !string.IsNullOrEmpty(step.HandlerOrgId) && step.HandlerOrgId == _sessionContext.RequiredOrgId)))
|
|
|
- );
|
|
|
+ && !string.IsNullOrEmpty(step.HandlerOrgId) && step.HandlerOrgId == _sessionContext.RequiredOrgId))
|
|
|
+ && step.Status == EWorkflowStepStatus.Handled));
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ query.Where(d => d.WorkflowSteps
|
|
|
+ .Any(step =>
|
|
|
+ ((step.FlowAssignType == EFlowAssignType.User && !string.IsNullOrEmpty(step.HandlerId) && step.HandlerId == _sessionContext.RequiredUserId) ||
|
|
|
+ (step.FlowAssignType == EFlowAssignType.Org && !string.IsNullOrEmpty(step.HandlerOrgId) && step.HandlerOrgId == _sessionContext.RequiredOrgId) ||
|
|
|
+ (step.FlowAssignType == EFlowAssignType.Role && !string.IsNullOrEmpty(step.RoleId) && _sessionContext.Roles.Contains(step.RoleId)) ||
|
|
|
+ (step.FlowAssignType == EFlowAssignType.OrgAndRole && !string.IsNullOrEmpty(step.RoleId) && _sessionContext.Roles.Contains(step.RoleId)
|
|
|
+ && !string.IsNullOrEmpty(step.HandlerOrgId) && step.HandlerOrgId == _sessionContext.RequiredOrgId))
|
|
|
+ && step.Status < EWorkflowStepStatus.Handled));
|
|
|
+ }
|
|
|
+
|
|
|
}
|
|
|
|
|
|
var orders = await query
|