|
@@ -3553,7 +3553,8 @@ public class OrderApplication : IOrderApplication, IScopeDependency
|
|
|
/// <summary>
|
|
|
/// 查询退回操作目标节点的指派对象
|
|
|
/// </summary>
|
|
|
- public StepAssignInfo GetOrderPreviousAssignInfo(Workflow workflow, StepDefine prevStepDefine, WorkflowStep prevStep)
|
|
|
+ public async Task<StepAssignInfo?> GetOrderPreviousAssignInfoAsync(Workflow workflow, StepDefine prevStepDefine, WorkflowStep prevStep,
|
|
|
+ CancellationToken cancellationToken)
|
|
|
{
|
|
|
//自贡需求:
|
|
|
// 1. 工单退回、特提、重办到话务部节点时,所有坐席都可以查看和办理
|
|
@@ -3573,40 +3574,305 @@ public class OrderApplication : IOrderApplication, IScopeDependency
|
|
|
2.1、退回到话务部节点,只有之前受理人才能办理;
|
|
|
2.2、退回到派单组或者班长审批等其它热线中心节点,只有之前办理人才能办理
|
|
|
*/
|
|
|
- var rsp = new ReverseFlowStepAssignInfo(EReverseFlowStepCreationPolicy.OriginStepUser);
|
|
|
|
|
|
- switch (targetStepBusinessType)
|
|
|
+
|
|
|
+ StepAssignInfo? rsp = null;
|
|
|
+ switch (_appOptions.Value.AppScope)
|
|
|
{
|
|
|
- case EBusinessType.Seat:
|
|
|
- if (_appOptions.Value.IsZiGong || _appOptions.Value.IsYiBin)
|
|
|
+ case AppDefaults.AppScope.YiBin:
|
|
|
+ switch (prevStepDefine.BusinessType)
|
|
|
{
|
|
|
- rsp.ReverseFlowStepCreationPolicy = EReverseFlowStepCreationPolicy.OriginDefinition;
|
|
|
+ case EBusinessType.Seat:
|
|
|
+ var define = prevStepDefine.HandlerTypeItems.First();
|
|
|
+ rsp = new StepAssignInfo
|
|
|
+ {
|
|
|
+ FlowAssignType = EFlowAssignType.Role,
|
|
|
+ RoleId = define.Key,
|
|
|
+ RoleName = define.Value,
|
|
|
+ Key = define.Key,
|
|
|
+ Value = define.Value,
|
|
|
+ };
|
|
|
+ break;
|
|
|
+ case EBusinessType.Send:
|
|
|
+ break;
|
|
|
+ case EBusinessType.Department:
|
|
|
+ rsp = new StepAssignInfo
|
|
|
+ {
|
|
|
+ FlowAssignType = EFlowAssignType.Org,
|
|
|
+ OrgId = prevStep.HandlerOrgId,
|
|
|
+ OrgName = prevStep.HandlerOrgName,
|
|
|
+ Key = prevStep.HandlerOrgId,
|
|
|
+ Value = prevStep.HandlerOrgName,
|
|
|
+ };
|
|
|
+ break;
|
|
|
+ case EBusinessType.DepartmentLeader:
|
|
|
+ break;
|
|
|
+ case EBusinessType.CenterMonitor:
|
|
|
+ break;
|
|
|
+ case EBusinessType.CenterLeader:
|
|
|
+ break;
|
|
|
+ case EBusinessType.File:
|
|
|
+ case EBusinessType.Unknown:
|
|
|
+ case EBusinessType.Publish:
|
|
|
+ case EBusinessType.Visit:
|
|
|
+ case EBusinessType.TrashEnd:
|
|
|
+ default:
|
|
|
+ throw new ArgumentOutOfRangeException();
|
|
|
}
|
|
|
+
|
|
|
break;
|
|
|
- case EBusinessType.Send:
|
|
|
- if (_appOptions.Value.IsZiGong)
|
|
|
+ case AppDefaults.AppScope.ZiGong:
|
|
|
+ switch (prevStepDefine.BusinessType)
|
|
|
{
|
|
|
- if (handler is null)
|
|
|
- throw new UserFriendlyException("参数异常,退回派单组需要通过平均派单指定办理人");
|
|
|
+ case EBusinessType.Seat:
|
|
|
+ var define = prevStepDefine.HandlerTypeItems.First();
|
|
|
+ rsp = new StepAssignInfo
|
|
|
+ {
|
|
|
+ FlowAssignType = EFlowAssignType.Role,
|
|
|
+ RoleId = define.Key,
|
|
|
+ RoleName = define.Value,
|
|
|
+ Key = define.Key,
|
|
|
+ Value = define.Value,
|
|
|
+ };
|
|
|
+ break;
|
|
|
+ case EBusinessType.Send:
|
|
|
+ // 平均派单
|
|
|
+ var averageSendOrder = bool.Parse(_systemSettingCacheManager.GetSetting(SettingConstants.AverageSendOrder).SettingValue[0]);
|
|
|
+ if (averageSendOrder)
|
|
|
+ rsp = await _orderDomainService.AverageOrder(cancellationToken);
|
|
|
+ break;
|
|
|
+ case EBusinessType.Department:
|
|
|
+ rsp = new StepAssignInfo
|
|
|
+ {
|
|
|
+ FlowAssignType = EFlowAssignType.Org,
|
|
|
+ OrgId = prevStep.HandlerOrgId,
|
|
|
+ OrgName = prevStep.HandlerOrgName,
|
|
|
+ Key = prevStep.HandlerOrgId,
|
|
|
+ Value = prevStep.HandlerOrgName,
|
|
|
+ };
|
|
|
+ break;
|
|
|
+ case EBusinessType.DepartmentLeader:
|
|
|
+ break;
|
|
|
+ case EBusinessType.CenterMonitor:
|
|
|
+ break;
|
|
|
+ case EBusinessType.CenterLeader:
|
|
|
+ break;
|
|
|
+ case EBusinessType.File:
|
|
|
+ case EBusinessType.Unknown:
|
|
|
+ case EBusinessType.Publish:
|
|
|
+ case EBusinessType.Visit:
|
|
|
+ case EBusinessType.TrashEnd:
|
|
|
+ default:
|
|
|
+ throw new ArgumentOutOfRangeException();
|
|
|
+ }
|
|
|
|
|
|
- rsp.ReverseFlowStepCreationPolicy = EReverseFlowStepCreationPolicy.AssignHandler;
|
|
|
- rsp.StepAssignInfo = handler;
|
|
|
+ break;
|
|
|
+ case AppDefaults.AppScope.LuZhou:
|
|
|
+ switch (prevStepDefine.BusinessType)
|
|
|
+ {
|
|
|
+ case EBusinessType.Seat:
|
|
|
+ break;
|
|
|
+ case EBusinessType.Send:
|
|
|
+ break;
|
|
|
+ case EBusinessType.Department:
|
|
|
+ rsp = new StepAssignInfo
|
|
|
+ {
|
|
|
+ FlowAssignType = EFlowAssignType.Org,
|
|
|
+ OrgId = prevStep.HandlerOrgId,
|
|
|
+ OrgName = prevStep.HandlerOrgName,
|
|
|
+ Key = prevStep.HandlerOrgId,
|
|
|
+ Value = prevStep.HandlerOrgName,
|
|
|
+ };
|
|
|
+ break;
|
|
|
+ case EBusinessType.DepartmentLeader:
|
|
|
+ break;
|
|
|
+ case EBusinessType.CenterMonitor:
|
|
|
+ break;
|
|
|
+ case EBusinessType.CenterLeader:
|
|
|
+ break;
|
|
|
+ case EBusinessType.File:
|
|
|
+ case EBusinessType.Unknown:
|
|
|
+ case EBusinessType.Publish:
|
|
|
+ case EBusinessType.Visit:
|
|
|
+ case EBusinessType.TrashEnd:
|
|
|
+ default:
|
|
|
+ throw new ArgumentOutOfRangeException();
|
|
|
}
|
|
|
+
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ throw new ArgumentOutOfRangeException();
|
|
|
+ }
|
|
|
+
|
|
|
+ return rsp;
|
|
|
+ }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 查询特提操作目标节点的指派对象
|
|
|
+ /// </summary>
|
|
|
+ public async Task<StepAssignInfo> GetOrderRecallAssignInfoAsync(Workflow workflow, StepDefine prevStepDefine, WorkflowStep prevStep,
|
|
|
+ RecallDto dto, CancellationToken cancellationToken)
|
|
|
+ {
|
|
|
+ //自贡需求:
|
|
|
+ // 1. 工单退回、特提、重办到话务部节点时,所有坐席都可以查看和办理
|
|
|
+ // 2. 退回到派单组时需执行平均分配逻辑
|
|
|
+ //宜宾需求:
|
|
|
+ // 1、退回至话务部:所有坐席都可以查看和办理(除某些场景下本来就需指定办理对象,如:发布时退回……)
|
|
|
+ // 2、退回至派单组:默认退给之前的派单员(除某些场景下本来就需指定办理对象,如:发布时退回……)
|
|
|
+ // 3、话务员特提至话务部:根据特提申请时候选择来,指定的办理对象才能查看和办理
|
|
|
+ // 4、派单员特提至派单组:根据特提申请时候选择来,指定的办理对象才能查看和办理
|
|
|
+ // 5、班长特提至派单组,办理对象必选(已实现)
|
|
|
+ // 6、班长特提至话务部,办理对象非必选,没选择则所有坐席都可以查看和办理
|
|
|
+ //泸州需求:
|
|
|
+ /* 1、特提(仅针对特提到热线中心节点)
|
|
|
+ 1.1、工单特提回话务部,办理对象需调整所有坐席都可以查看和办理
|
|
|
+ 1.2、工单特提到派单组或者班长审批等其它热线中心节点,只有之前办理人才能办理
|
|
|
+ 2、退回功能(仅针对退回到热线中心节点)
|
|
|
+ 2.1、退回到话务部节点,只有之前受理人才能办理;
|
|
|
+ 2.2、退回到派单组或者班长审批等其它热线中心节点,只有之前办理人才能办理
|
|
|
+ */
|
|
|
+
|
|
|
+ StepAssignInfo rsp;
|
|
|
+ switch (prevStepDefine.HandlerType)
|
|
|
+ {
|
|
|
+ case EHandlerType.Role:
|
|
|
break;
|
|
|
- case EBusinessType.Department:
|
|
|
- rsp.ReverseFlowStepCreationPolicy = EReverseFlowStepCreationPolicy.OriginStepOrg;
|
|
|
+ case EHandlerType.OrgLevel:
|
|
|
break;
|
|
|
- case EBusinessType.DepartmentLeader:
|
|
|
+ case EHandlerType.OrgType:
|
|
|
break;
|
|
|
- case EBusinessType.CenterMonitor:
|
|
|
+ case EHandlerType.AssignedUser:
|
|
|
break;
|
|
|
- case EBusinessType.CenterLeader:
|
|
|
+ case EHandlerType.AssignedOrg:
|
|
|
break;
|
|
|
- case EBusinessType.Unknown:
|
|
|
+ default:
|
|
|
+ throw new ArgumentOutOfRangeException();
|
|
|
+ }
|
|
|
+
|
|
|
+ switch (_appOptions.Value.AppScope)
|
|
|
+ {
|
|
|
+ case AppDefaults.AppScope.YiBin:
|
|
|
+ switch (prevStepDefine.BusinessType)
|
|
|
+ {
|
|
|
+ case EBusinessType.Seat:
|
|
|
+ rsp = new StepAssignInfo
|
|
|
+ {
|
|
|
+ FlowAssignType = EFlowAssignType.Role,
|
|
|
+ RoleId = define.Key,
|
|
|
+ RoleName = define.Value,
|
|
|
+ Key = define.Key,
|
|
|
+ Value = define.Value,
|
|
|
+ };
|
|
|
+ break;
|
|
|
+ case EBusinessType.Send:
|
|
|
+ break;
|
|
|
+ case EBusinessType.Department:
|
|
|
+ rsp = new StepAssignInfo
|
|
|
+ {
|
|
|
+ FlowAssignType = EFlowAssignType.Org,
|
|
|
+ OrgId = prevStep.HandlerOrgId,
|
|
|
+ OrgName = prevStep.HandlerOrgName,
|
|
|
+ Key = prevStep.HandlerOrgId,
|
|
|
+ Value = prevStep.HandlerOrgName,
|
|
|
+ };
|
|
|
+ break;
|
|
|
+ case EBusinessType.DepartmentLeader:
|
|
|
+ break;
|
|
|
+ case EBusinessType.CenterMonitor:
|
|
|
+ break;
|
|
|
+ case EBusinessType.CenterLeader:
|
|
|
+ break;
|
|
|
+ case EBusinessType.File:
|
|
|
+ case EBusinessType.Unknown:
|
|
|
+ case EBusinessType.Publish:
|
|
|
+ case EBusinessType.Visit:
|
|
|
+ case EBusinessType.TrashEnd:
|
|
|
+ default:
|
|
|
+ throw new ArgumentOutOfRangeException();
|
|
|
+ }
|
|
|
+
|
|
|
+ break;
|
|
|
+ case AppDefaults.AppScope.ZiGong:
|
|
|
+ switch (prevStepDefine.BusinessType)
|
|
|
+ {
|
|
|
+ case EBusinessType.Seat:
|
|
|
+ var define = prevStepDefine.HandlerTypeItems.First();
|
|
|
+ rsp = new StepAssignInfo
|
|
|
+ {
|
|
|
+ FlowAssignType = EFlowAssignType.Role,
|
|
|
+ RoleId = define.Key,
|
|
|
+ RoleName = define.Value,
|
|
|
+ Key = define.Key,
|
|
|
+ Value = define.Value,
|
|
|
+ };
|
|
|
+ break;
|
|
|
+ case EBusinessType.Send:
|
|
|
+ // 平均派单
|
|
|
+ var averageSendOrder = bool.Parse(_systemSettingCacheManager.GetSetting(SettingConstants.AverageSendOrder).SettingValue[0]);
|
|
|
+ if (averageSendOrder)
|
|
|
+ rsp = await _orderDomainService.AverageOrder(cancellationToken);
|
|
|
+ break;
|
|
|
+ case EBusinessType.Department:
|
|
|
+ rsp = new StepAssignInfo
|
|
|
+ {
|
|
|
+ FlowAssignType = EFlowAssignType.Org,
|
|
|
+ OrgId = prevStep.HandlerOrgId,
|
|
|
+ OrgName = prevStep.HandlerOrgName,
|
|
|
+ Key = prevStep.HandlerOrgId,
|
|
|
+ Value = prevStep.HandlerOrgName,
|
|
|
+ };
|
|
|
+ break;
|
|
|
+ case EBusinessType.DepartmentLeader:
|
|
|
+ break;
|
|
|
+ case EBusinessType.CenterMonitor:
|
|
|
+ break;
|
|
|
+ case EBusinessType.CenterLeader:
|
|
|
+ break;
|
|
|
+ case EBusinessType.File:
|
|
|
+ case EBusinessType.Unknown:
|
|
|
+ case EBusinessType.Publish:
|
|
|
+ case EBusinessType.Visit:
|
|
|
+ case EBusinessType.TrashEnd:
|
|
|
+ default:
|
|
|
+ throw new ArgumentOutOfRangeException();
|
|
|
+ }
|
|
|
+
|
|
|
+ break;
|
|
|
+ case AppDefaults.AppScope.LuZhou:
|
|
|
+ switch (prevStepDefine.BusinessType)
|
|
|
+ {
|
|
|
+ case EBusinessType.Seat:
|
|
|
+ break;
|
|
|
+ case EBusinessType.Send:
|
|
|
+ break;
|
|
|
+ case EBusinessType.Department:
|
|
|
+ rsp = new StepAssignInfo
|
|
|
+ {
|
|
|
+ FlowAssignType = EFlowAssignType.Org,
|
|
|
+ OrgId = prevStep.HandlerOrgId,
|
|
|
+ OrgName = prevStep.HandlerOrgName,
|
|
|
+ Key = prevStep.HandlerOrgId,
|
|
|
+ Value = prevStep.HandlerOrgName,
|
|
|
+ };
|
|
|
+ break;
|
|
|
+ case EBusinessType.DepartmentLeader:
|
|
|
+ break;
|
|
|
+ case EBusinessType.CenterMonitor:
|
|
|
+ break;
|
|
|
+ case EBusinessType.CenterLeader:
|
|
|
+ break;
|
|
|
+ case EBusinessType.File:
|
|
|
+ case EBusinessType.Unknown:
|
|
|
+ case EBusinessType.Publish:
|
|
|
+ case EBusinessType.Visit:
|
|
|
+ case EBusinessType.TrashEnd:
|
|
|
+ default:
|
|
|
+ throw new ArgumentOutOfRangeException();
|
|
|
+ }
|
|
|
+
|
|
|
break;
|
|
|
- case EBusinessType.File:
|
|
|
default:
|
|
|
- throw new ArgumentOutOfRangeException(nameof(targetStepBusinessType), targetStepBusinessType, null);
|
|
|
+ throw new ArgumentOutOfRangeException();
|
|
|
}
|
|
|
|
|
|
return rsp;
|