|
@@ -4277,20 +4277,41 @@ public class OrderController : BaseController
|
|
|
(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)
|
|
|
+ //&& (!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(expStepFilter)
|
|
|
.OrderByDescending(step => step.CreationTime)
|
|
|
.Take(1)
|
|
|
.ToList()
|
|
|
)
|
|
|
- .Where(d => d.WorkflowSteps.Any(expStepFilter)
|
|
|
+ .Where(d => d.WorkflowSteps
|
|
|
+ .WhereIF(hasHandled, step=>step.Status == EWorkflowStepStatus.Handled)
|
|
|
+ .WhereIF(!hasHandled, step=>step.Status < EWorkflowStepStatus.Handled)
|
|
|
+ .Any(expStepFilter)
|
|
|
);
|
|
|
}
|
|
|
|