|
@@ -8,9 +8,11 @@ using Fw.Utility.Client;
|
|
|
using Google.Protobuf.WellKnownTypes;
|
|
|
using Hotline.Ai.Visit;
|
|
|
using Hotline.Application.ExportExcel;
|
|
|
+using Hotline.Application.FlowEngine;
|
|
|
using Hotline.Application.JudicialManagement;
|
|
|
using Hotline.Application.Quality;
|
|
|
using Hotline.Application.StatisticalReport;
|
|
|
+using Hotline.Authentications;
|
|
|
using Hotline.CallCenter.BlackLists;
|
|
|
using Hotline.CallCenter.Calls;
|
|
|
using Hotline.CallCenter.Configs;
|
|
@@ -131,6 +133,7 @@ public class TestController : BaseController
|
|
|
private readonly IRepository<EnforcementOrders> _enforcementOrdersRepository;
|
|
|
private readonly IRepository<JudicialManagementOrders> _judicialManagementOrdersRepository;
|
|
|
private readonly IRepository<EnforcementOrdersHandler> _enforcementOrdersHandlerRepository;
|
|
|
+ private readonly IWorkflowApplication _workflowApplication;
|
|
|
|
|
|
//private readonly ITypedCache<List<User>> _cache;
|
|
|
//private readonly ICacheManager<User> _cache;
|
|
@@ -180,8 +183,9 @@ public class TestController : BaseController
|
|
|
IOrderReportApplication orderReportApplication,
|
|
|
IRepository<EnforcementOrders> enforcementOrdersRepository,
|
|
|
IRepository<JudicialManagementOrders> judicialManagementOrdersRepository,
|
|
|
-IRepository<EnforcementOrdersHandler> enforcementOrdersHandlerRepository
|
|
|
- )
|
|
|
+IRepository<EnforcementOrdersHandler> enforcementOrdersHandlerRepository,
|
|
|
+ IWorkflowApplication workflowApplication
|
|
|
+ )
|
|
|
{
|
|
|
_logger = logger;
|
|
|
_authorizeGenerator = authorizeGenerator;
|
|
@@ -223,7 +227,9 @@ IRepository<EnforcementOrdersHandler> enforcementOrdersHandlerRepository
|
|
|
_enforcementOrdersRepository = enforcementOrdersRepository;
|
|
|
_judicialManagementOrdersRepository = judicialManagementOrdersRepository;
|
|
|
_enforcementOrdersHandlerRepository = enforcementOrdersHandlerRepository;
|
|
|
- }
|
|
|
+ _workflowApplication = workflowApplication;
|
|
|
+
|
|
|
+ }
|
|
|
/// <summary>
|
|
|
/// 处理司法工单数据
|
|
|
/// </summary>
|
|
@@ -1004,4 +1010,99 @@ IRepository<EnforcementOrdersHandler> enforcementOrdersHandlerRepository
|
|
|
return $"{publicKey} \r\n {privateKey}";
|
|
|
}
|
|
|
|
|
|
+ /// <summary>
|
|
|
+ /// 处理工单流程错误数据 话务部直接归档件 没有归档节点
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="StartTime"></param>
|
|
|
+ /// <param name="EndTime"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ [HttpGet("oders_workflow_step")]
|
|
|
+ [AllowAnonymous]
|
|
|
+ public async Task AddJudicialManagementOrders() {
|
|
|
+
|
|
|
+ var steps = await _workflowStepRepository.Queryable()
|
|
|
+ .LeftJoin<Order>((ws, d) => ws.ExternalId == d.Id)
|
|
|
+ .Where((ws, d) => d.Status == EOrderStatus.Handling && ws.NextStepCode == "end" && ws.Status == EWorkflowStepStatus.Handled && ws.StepType == EStepType.Start)
|
|
|
+ .ToListAsync(HttpContext.RequestAborted);
|
|
|
+ foreach (var item in steps)
|
|
|
+ {
|
|
|
+ ///组装数据
|
|
|
+ //Workflow workflow
|
|
|
+ Workflow workflow = await _workflowDomainService.GetWorkflowAsync(item.WorkflowId, withDefine: true, withSteps: true,
|
|
|
+ cancellationToken: HttpContext.RequestAborted);
|
|
|
+ //WorkflowStep startStep
|
|
|
+ WorkflowStep startStep = workflow.Steps.First(x=>x.StepType == EStepType.Start);
|
|
|
+ //BasicWorkflowDto dto
|
|
|
+ BasicWorkflowDto dto = new BasicWorkflowDto
|
|
|
+ {
|
|
|
+ NextStepCode = "end",
|
|
|
+ NextStepName = "结束",
|
|
|
+ BackToCountersignEnd = false,
|
|
|
+ FlowDirection = null,
|
|
|
+ HandlerType = 0,
|
|
|
+ StepType = 0,
|
|
|
+ NextHandlers = new List<FlowStepHandler>(),
|
|
|
+ IsSms = false,
|
|
|
+ NextMainHandler = "",
|
|
|
+ IsStartCountersign = false,
|
|
|
+ External = new External
|
|
|
+ {
|
|
|
+ TimeLimit = null,
|
|
|
+ TimeLimitUnit = null,
|
|
|
+ IsPoliceReturn = false,
|
|
|
+ IsResolved = false,
|
|
|
+ },
|
|
|
+ BusinessType = EBusinessType.File,
|
|
|
+ ReviewResult = 0,
|
|
|
+ Remark = null,
|
|
|
+ Opinion = startStep.Opinion,
|
|
|
+ Files = new List<Share.Dtos.File.FileDto>()
|
|
|
+ };
|
|
|
+ //ISessionContext current
|
|
|
+ ISessionContext current = new ProvinceSessionContext
|
|
|
+ {
|
|
|
+ UserId = startStep.HandlerId,
|
|
|
+ UserName = startStep.HandlerName,
|
|
|
+ OrgId = startStep.HandlerOrgId,
|
|
|
+ OrgName = startStep.HandlerOrgName,
|
|
|
+ OrgAreaCode = startStep.HandlerOrgAreaCode,
|
|
|
+ OrgAreaName = startStep.HandlerOrgAreaName,
|
|
|
+ OrgLevel = 1
|
|
|
+ };
|
|
|
+
|
|
|
+ //StepDefine firstStepDefine
|
|
|
+ StepDefine firstStepDefine = workflow.WorkflowDefinition.FindStepDefine(startStep.NextStepCode);
|
|
|
+ //FlowAssignInfo flowAssignInfo
|
|
|
+ //如果发起会签需检查是否支持发起会签
|
|
|
+ var startStepDefine = workflow.WorkflowDefinition.FindStartStepDefine();
|
|
|
+
|
|
|
+ //下一节点是否为动态节点
|
|
|
+ var isNextDynamic = startStepDefine.InstanceMode is EInstanceMode.Dynamic &&
|
|
|
+ !_workflowDomainService.DynamicShouldTerminal(startStepDefine, current.OrgLevel);
|
|
|
+
|
|
|
+ FlowAssignInfo flowAssignInfo =
|
|
|
+ await _workflowApplication.GetNextStepFlowAssignInfoAsync(workflow, startStep, dto, firstStepDefine, isNextDynamic, HttpContext.RequestAborted);
|
|
|
+ //DateTime? expiredTime
|
|
|
+ DateTime? expiredTime = startStep.StepExpiredTime;
|
|
|
+
|
|
|
+ ///
|
|
|
+ await _mediator.Publish(
|
|
|
+ new StartWorkflowNotify(workflow, dto, flowAssignInfo, startStep.WorkflowTrace), HttpContext.RequestAborted);
|
|
|
+
|
|
|
+ //firstStep是否为end,t: 实际办理节点为startStep, 并且handlerId赋值 f: 实际办理节点为firstStep, handlerId未赋值
|
|
|
+ workflow.UpdateActualStepWhenHandle(startStep,
|
|
|
+ current.RequiredUserId, current.UserName,
|
|
|
+ current.RequiredOrgId, current.OrgName,
|
|
|
+ current.OrgAreaCode, current.OrgAreaName,
|
|
|
+ current.OrgLevel);
|
|
|
+
|
|
|
+ workflow.UpdateCurrentStepWhenHandle(startStep,
|
|
|
+ current.OrgAreaCode, current.OrgAreaName, current.OrgLevel);
|
|
|
+
|
|
|
+ var endTrace = await _workflowDomainService.EndAsync(workflow, dto, firstStepDefine,
|
|
|
+ startStep, current, expiredTime, HttpContext.RequestAborted);
|
|
|
+}
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
}
|