|
@@ -651,65 +651,29 @@ public class TestController : BaseController
|
|
|
{
|
|
|
var numbers = new List<string>
|
|
|
{
|
|
|
- "20240709000138",
|
|
|
- "20240709000139",
|
|
|
- "20240709000140",
|
|
|
- "20240709000141",
|
|
|
- "20240709000163",
|
|
|
- "20240709000164",
|
|
|
- "20240709000165"
|
|
|
+ "20240623000180",
|
|
|
+ "20240622000097",
|
|
|
+ "20240621000055",
|
|
|
+ "20240622000185",
|
|
|
+ "20240623000025",
|
|
|
+ "20240621000099",
|
|
|
+ "20240621000270",
|
|
|
+ "20240622000060",
|
|
|
+ "20240621000144",
|
|
|
};
|
|
|
+
|
|
|
var orders = await _orderRepository.Queryable()
|
|
|
- //.Includes(d => d.OrderExtension)
|
|
|
- //.InnerJoin<Workflow>((o, w) => o.WorkflowId == w.Id)
|
|
|
- //.Where((o, w) => o.Status < EOrderStatus.Filed && w.Status == EWorkflowStatus.Completed)
|
|
|
+ .Includes(d => d.OrderExtension)
|
|
|
.Where(d => numbers.Contains(d.No))
|
|
|
.ToListAsync(HttpContext.RequestAborted);
|
|
|
_logger.LogWarning($"order count: {orders.Count}");
|
|
|
|
|
|
var workflowIds = orders.Select(d => d.WorkflowId).ToList();
|
|
|
-
|
|
|
var workflows = await _workflowRepository.Queryable()
|
|
|
.Includes(d => d.Steps, x => x.WorkflowTrace)
|
|
|
.Where(d => workflowIds.Contains(d.Id))
|
|
|
.ToListAsync(HttpContext.RequestAborted);
|
|
|
|
|
|
- foreach (var workflow in workflows)
|
|
|
- {
|
|
|
- var startStep = workflow.Steps.First(d => d.StepType == EStepType.Start);
|
|
|
- var dto = _mapper.Map<BasicWorkflowDto>(startStep);
|
|
|
- var flowAssignInfo = new FlowAssignInfo
|
|
|
- {
|
|
|
- FlowAssignType = startStep.FlowAssignType.Value,
|
|
|
- };
|
|
|
- await _mediator.Publish(new StartWorkflowNotify(workflow, dto, flowAssignInfo, startStep.WorkflowTrace),
|
|
|
- HttpContext.RequestAborted);
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
- //firstStep是否为end,t: 实际办理节点为startStep, 并且handlerId赋值 f: 实际办理节点为firstStep, handlerId未赋值
|
|
|
-
|
|
|
- workflow.UpdateActualStepWhenHandle(startStep,
|
|
|
- startStep.HandlerId, startStep.HandlerName,
|
|
|
- startStep.HandlerOrgId, startStep.HandlerOrgName,
|
|
|
- startStep.HandlerOrgAreaCode, startStep.HandlerOrgAreaName,
|
|
|
- 1);
|
|
|
-
|
|
|
- workflow.Status = EWorkflowStatus.Completed;
|
|
|
- workflow.EndTime = startStep.HandleTime;
|
|
|
- workflow.ClearHandlers();
|
|
|
- workflow.SetAllDuration();
|
|
|
- workflow.UpdateActualOption();
|
|
|
-
|
|
|
- await _workflowRepository.UpdateAsync(workflow, HttpContext.RequestAborted);
|
|
|
-
|
|
|
- var endStep = workflow.Steps.First(d => d.StepType == EStepType.End);
|
|
|
-
|
|
|
- await _mediator.Publish(new EndWorkflowNotify(workflow, endStep.WorkflowTrace, dto), HttpContext.RequestAborted);
|
|
|
-
|
|
|
- _logger.LogWarning($"修复工单:{workflow.ExternalId}");
|
|
|
- }
|
|
|
-
|
|
|
//var workflowIds = orders.Select(d => d.WorkflowId).ToList();
|
|
|
//var workflows = await _workflowRepository.Queryable()
|
|
|
// .Includes(d => d.Steps, x => x.WorkflowTrace)
|
|
@@ -717,99 +681,112 @@ public class TestController : BaseController
|
|
|
// .Where(d => workflowIds.Contains(d.Id))
|
|
|
// .ToListAsync(HttpContext.RequestAborted);
|
|
|
|
|
|
- //var updateOrders = new List<Order>();
|
|
|
- //foreach (var order in orders)
|
|
|
- //{
|
|
|
- // var workflow = workflows.First(d => d.Id == order.WorkflowId);
|
|
|
-
|
|
|
- // _mapper.Map(workflow, order);
|
|
|
- // var now = DateTime.Now;
|
|
|
- // var handleDuration = order.StartTime.HasValue
|
|
|
- // ? _timeLimitDomainService.CalcWorkTime(order.StartTime.Value,
|
|
|
- // now, order.ProcessType is EProcessType.Zhiban)
|
|
|
- // : 0;
|
|
|
- // var fileDuration = order.CenterToOrgTime.HasValue
|
|
|
- // ? _timeLimitDomainService.CalcWorkTime(order.CenterToOrgTime.Value,
|
|
|
- // now, order.ProcessType is EProcessType.Zhiban)
|
|
|
- // : 0;
|
|
|
- // var allDuration = order.StartTime.HasValue
|
|
|
- // ? _timeLimitDomainService.CalcWorkTime(order.StartTime.Value, now,
|
|
|
- // order.ProcessType is EProcessType.Zhiban)
|
|
|
- // : 0;
|
|
|
- // var creationTimeHandleDurationWorkday = order.ActualHandleTime.HasValue
|
|
|
- // ? _timeLimitDomainService.CalcWorkTime(order.CreationTime, order.ActualHandleTime.Value,
|
|
|
- // order.ProcessType is EProcessType.Zhiban)
|
|
|
- // : 0;
|
|
|
- // var centerToOrgHandleDurationWorkday = order.ActualHandleTime.HasValue && order.CenterToOrgTime.HasValue
|
|
|
- // ? _timeLimitDomainService.CalcWorkTime(order.CenterToOrgTime.Value, order.ActualHandleTime.Value,
|
|
|
- // order.ProcessType is EProcessType.Zhiban)
|
|
|
- // : 0;
|
|
|
-
|
|
|
- // order.File(now, handleDuration, fileDuration, allDuration, creationTimeHandleDurationWorkday, centerToOrgHandleDurationWorkday);
|
|
|
-
|
|
|
- // var endStep = workflow.Steps.FirstOrDefault(d => d.StepType == EStepType.End);
|
|
|
- // //var endTrace = workflow.Steps.FirstOrDefault(d => d.WorkflowTrace.StepType == EStepType.End)?.WorkflowTrace;
|
|
|
- // if (endStep is null)
|
|
|
- // {
|
|
|
- // _logger.LogWarning($"endStep 为空, orderNo:{order.No}");
|
|
|
- // continue;
|
|
|
- // }
|
|
|
+ var updateOrders = new List<Order>();
|
|
|
+ foreach (var order in orders)
|
|
|
+ {
|
|
|
+ var workflow = workflows.First(d => d.Id == order.WorkflowId);
|
|
|
|
|
|
- // var step = workflow.Steps.FirstOrDefault(d => d.Id == endStep.PrevStepId);
|
|
|
- // //var trace = workflow.Steps.FirstOrDefault(d => d.WorkflowTrace.Id == endTrace.PrevStepId)?.WorkflowTrace;
|
|
|
- // if (step is null)
|
|
|
- // {
|
|
|
- // _logger.LogWarning($"step 为空, orderNo:{order.No}");
|
|
|
- // continue;
|
|
|
- // }
|
|
|
+ _mapper.Map(workflow, order);
|
|
|
+ var now = order.FiledTime.Value;//DateTime.Now;
|
|
|
+ var handleDuration = order.StartTime.HasValue
|
|
|
+ ? _timeLimitDomainService.CalcWorkTime(order.StartTime.Value,
|
|
|
+ now, order.ProcessType is EProcessType.Zhiban)
|
|
|
+ : 0;
|
|
|
+ var fileDuration = order.CenterToOrgTime.HasValue
|
|
|
+ ? _timeLimitDomainService.CalcWorkTime(order.CenterToOrgTime.Value,
|
|
|
+ now, order.ProcessType is EProcessType.Zhiban)
|
|
|
+ : 0;
|
|
|
+ var allDuration = order.StartTime.HasValue
|
|
|
+ ? _timeLimitDomainService.CalcWorkTime(order.StartTime.Value, now,
|
|
|
+ order.ProcessType is EProcessType.Zhiban)
|
|
|
+ : 0;
|
|
|
+ var creationTimeHandleDurationWorkday = order.ActualHandleTime.HasValue
|
|
|
+ ? _timeLimitDomainService.CalcWorkTime(order.CreationTime, now,
|
|
|
+ order.ProcessType is EProcessType.Zhiban)
|
|
|
+ : 0;
|
|
|
+ var centerToOrgHandleDurationWorkday = order.ActualHandleTime.HasValue && order.CenterToOrgTime.HasValue
|
|
|
+ ? _timeLimitDomainService.CalcWorkTime(order.CenterToOrgTime.Value, now,
|
|
|
+ order.ProcessType is EProcessType.Zhiban)
|
|
|
+ : 0;
|
|
|
|
|
|
- // var trace = step.WorkflowTrace;
|
|
|
- // order.FileUserId = trace.HandlerId;
|
|
|
- // order.FileUserName = trace.HandlerName;
|
|
|
- // order.FileUserOrgId = trace.HandlerOrgId;
|
|
|
- // order.FileUserOrgName = trace.HandlerOrgName;
|
|
|
- // order.FileOpinion = trace.Opinion;
|
|
|
+ //order.File(now, handleDuration, fileDuration, allDuration, creationTimeHandleDurationWorkday, centerToOrgHandleDurationWorkday);
|
|
|
|
|
|
- // //记录冗余归档数据
|
|
|
- // if (workflow.Steps.Any(x => x.BusinessType == Share.Enums.FlowEngine.EBusinessType.Send))
|
|
|
- // {
|
|
|
- // order.FileUserRole = EFileUserType.Dispatch;
|
|
|
- // }
|
|
|
- // else
|
|
|
- // {
|
|
|
- // order.FileUserRole = EFileUserType.Seat;
|
|
|
- // }
|
|
|
- // if (order.ProcessType == EProcessType.Jiaoban)
|
|
|
- // {
|
|
|
- // order.FileUserRole = EFileUserType.Org;
|
|
|
- // }
|
|
|
+ order.HandleDurationWorkday = handleDuration;
|
|
|
+ order.FileDurationWorkday = fileDuration;
|
|
|
+ order.AllDurationWorkday = allDuration;
|
|
|
+ order.CreationTimeHandleDurationWorkday = creationTimeHandleDurationWorkday;
|
|
|
+ order.CenterToOrgHandleDurationWorkday = centerToOrgHandleDurationWorkday;
|
|
|
+
|
|
|
+ //计算实际办结时长
|
|
|
+ order.SetHandleDuration();
|
|
|
+ order.SetFileDuration();
|
|
|
+ order.SetAllDuration();
|
|
|
+ order.SetCreationTimeHandleDurationWorkday();
|
|
|
+ order.SetCenterToOrgHandleDurationWorkday();
|
|
|
|
|
|
- // //是否已解决
|
|
|
- // order.IsResolved = true;//notification.Dto.External == null ? false : notification.Dto.External.IsResolved;
|
|
|
+ var endStep = workflow.Steps.FirstOrDefault(d => d.StepType == EStepType.End);
|
|
|
+ //var endTrace = workflow.Steps.FirstOrDefault(d => d.WorkflowTrace.StepType == EStepType.End)?.WorkflowTrace;
|
|
|
+ if (endStep is null)
|
|
|
+ {
|
|
|
+ _logger.LogWarning($"endStep 为空, orderNo:{order.No}");
|
|
|
+ continue;
|
|
|
+ }
|
|
|
|
|
|
- // //await _orderRepository.UpdateAsync(order, cancellationToken);
|
|
|
- // updateOrders.Add(order);
|
|
|
+ var step = workflow.Steps.FirstOrDefault(d => d.Id == endStep.PrevStepId);
|
|
|
+ //var trace = workflow.Steps.FirstOrDefault(d => d.WorkflowTrace.Id == endTrace.PrevStepId)?.WorkflowTrace;
|
|
|
+ if (step is null)
|
|
|
+ {
|
|
|
+ _logger.LogWarning($"step 为空, orderNo:{order.No}");
|
|
|
+ continue;
|
|
|
+ }
|
|
|
|
|
|
- // //var callRecord = await _trCallRecordRepository.GetAsync(p => p.CallAccept == order.CallId, cancellationToken); //由CallAccept改为OtherAccept
|
|
|
- // var orderFlowDto = new OrderFlowDto
|
|
|
- // {
|
|
|
- // Order = _mapper.Map<OrderDto>(order),
|
|
|
- // WorkflowTrace = _mapper.Map<WorkflowTraceDto>(trace)
|
|
|
- // };
|
|
|
- // var callRecord = await _trCallRecordRepository.GetAsync(p => p.OtherAccept == order.CallId, HttpContext.RequestAborted);
|
|
|
- // if (callRecord != null)
|
|
|
- // {
|
|
|
- // orderFlowDto.TrCallRecordDto = _mapper.Map<TrCallDto>(callRecord);
|
|
|
- // }
|
|
|
- // //这里需要判断是否是警情退回
|
|
|
- // orderFlowDto.IsNonPoliceReturn = false;//notification.Dto.External == null ? false : notification.Dto.External.IsPoliceReturn;
|
|
|
- // await _capPublisher.PublishAsync(Hotline.Share.Mq.EventNames.HotlineOrderFiled, orderFlowDto, cancellationToken: HttpContext.RequestAborted);
|
|
|
- // //写入质检 针对受理之后直接结束的工单
|
|
|
- // await _qualityApplication.AddQualityAsync(EQualitySource.Accepted, order.Id, HttpContext.RequestAborted);
|
|
|
-
|
|
|
- // //司法行政监督管理-工单处理
|
|
|
- // await _enforcementApplication.AddEnforcementOrderAsync(order, HttpContext.RequestAborted);
|
|
|
- //}
|
|
|
+ var trace = step.WorkflowTrace;
|
|
|
+ order.FileUserId = trace.HandlerId;
|
|
|
+ order.FileUserName = trace.HandlerName;
|
|
|
+ order.FileUserOrgId = trace.HandlerOrgId;
|
|
|
+ order.FileUserOrgName = trace.HandlerOrgName;
|
|
|
+ order.FileOpinion = trace.Opinion;
|
|
|
+
|
|
|
+ //记录冗余归档数据
|
|
|
+ if (workflow.Steps.Any(x => x.BusinessType == Share.Enums.FlowEngine.EBusinessType.Send))
|
|
|
+ {
|
|
|
+ order.FileUserRole = EFileUserType.Dispatch;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ order.FileUserRole = EFileUserType.Seat;
|
|
|
+ }
|
|
|
+ if (order.ProcessType == EProcessType.Jiaoban)
|
|
|
+ {
|
|
|
+ order.FileUserRole = EFileUserType.Org;
|
|
|
+ }
|
|
|
+
|
|
|
+ ////是否已解决
|
|
|
+ //order.IsResolved = true;//notification.Dto.External == null ? false : notification.Dto.External.IsResolved;
|
|
|
+
|
|
|
+ //await _orderRepository.UpdateAsync(order, cancellationToken);
|
|
|
+ updateOrders.Add(order);
|
|
|
+
|
|
|
+ //var callRecord = await _trCallRecordRepository.GetAsync(p => p.CallAccept == order.CallId, cancellationToken); //由CallAccept改为OtherAccept
|
|
|
+ var orderFlowDto = new OrderFlowDto
|
|
|
+ {
|
|
|
+ Order = _mapper.Map<OrderDto>(order),
|
|
|
+ WorkflowTrace = _mapper.Map<WorkflowTraceDto>(trace)
|
|
|
+ };
|
|
|
+ var callRecord = await _trCallRecordRepository.GetAsync(p => p.OtherAccept == order.CallId, HttpContext.RequestAborted);
|
|
|
+ if (callRecord != null)
|
|
|
+ {
|
|
|
+ orderFlowDto.TrCallRecordDto = _mapper.Map<TrCallDto>(callRecord);
|
|
|
+ }
|
|
|
+ //这里需要判断是否是警情退回
|
|
|
+ orderFlowDto.IsNonPoliceReturn = false;//notification.Dto.External == null ? false : notification.Dto.External.IsPoliceReturn;
|
|
|
+ await _capPublisher.PublishAsync(Hotline.Share.Mq.EventNames.HotlineOrderFiled, orderFlowDto, cancellationToken: HttpContext.RequestAborted);
|
|
|
+ //写入质检 针对受理之后直接结束的工单
|
|
|
+ await _qualityApplication.AddQualityAsync(EQualitySource.Accepted, order.Id, HttpContext.RequestAborted);
|
|
|
+
|
|
|
+ //司法行政监督管理-工单处理
|
|
|
+ //await _enforcementApplication.AddEnforcementOrderAsync(order, HttpContext.RequestAborted);
|
|
|
+ }
|
|
|
|
|
|
//_logger.LogWarning($"更新orders:{updateOrders.Count}");
|
|
|
//await _orderRepository.UpdateRangeAsync(updateOrders, HttpContext.RequestAborted);
|