|
@@ -126,231 +126,241 @@ public class WorkflowEndHandler : INotificationHandler<EndWorkflowNotify>
|
|
|
/// <param name="cancellationToken">Cancellation token</param>
|
|
|
public async Task Handle(EndWorkflowNotify notification, CancellationToken cancellationToken)
|
|
|
{
|
|
|
- var workflow = notification.Workflow;
|
|
|
- //审批是否通过
|
|
|
- var isReviewPass = workflow.IsReviewPass();
|
|
|
-
|
|
|
- switch (workflow.ModuleCode)
|
|
|
+ try
|
|
|
{
|
|
|
- case WorkflowModuleConsts.KnowledgeAdd://新增知识库
|
|
|
- case WorkflowModuleConsts.KnowledgeUpdate://修改知识库
|
|
|
- case WorkflowModuleConsts.KnowledgeDelete://删除知识库
|
|
|
- var knowledgeWork = await _knowledgeWorkFlowRepository.Queryable().Where(x => x.Id == workflow.ExternalId).FirstAsync(cancellationToken);
|
|
|
- var knowledge = await _knowledgeRepository.Queryable().Where(x => x.Id == knowledgeWork.KnowledgeId).FirstAsync(cancellationToken);
|
|
|
- knowledge.Flowed(workflow.FlowedUserIds, workflow.FlowedOrgIds, workflow.HandlerUsers, workflow.HandlerOrgs);
|
|
|
- await _knowledgeRepository.UpdateAsync(knowledge, cancellationToken);
|
|
|
- if (isReviewPass)
|
|
|
- {
|
|
|
- await _knowledgeDomainService.EndWorkKnowledge(workflow, cancellationToken);
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- await _knowledgeDomainService.TerminateWorkKnowledge(workflow, cancellationToken);
|
|
|
- }
|
|
|
- break;
|
|
|
- case WorkflowModuleConsts.TelRestApply:
|
|
|
- await _telDomainService.TelRestApplyPassAsync(workflow.ExternalId, cancellationToken);
|
|
|
- break;
|
|
|
- case WorkflowModuleConsts.OrderHandle:
|
|
|
- var order = await _orderDomainService.GetOrderAsync(workflow.ExternalId,
|
|
|
- withExtension: true, cancellationToken: cancellationToken);
|
|
|
- //order.CheckIfFiled();
|
|
|
- order.UpdateHandlingStatus(workflow.IsInCountersign);
|
|
|
- _mapper.Map(workflow, order);
|
|
|
- var now = DateTime.Now;
|
|
|
- var handleDuration = order.CenterToOrgTime.HasValue && order.ActualHandleTime.HasValue
|
|
|
- ? _timeLimitDomainService.CalcWorkTime(order.CenterToOrgTime.Value,
|
|
|
- order.ActualHandleTime.Value, 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.CalcWorkTimeEx(order.CreationTime, now,
|
|
|
- order.ProcessType is EProcessType.Zhiban)
|
|
|
- : 0;
|
|
|
- var centerToOrgHandleDurationWorkday = order.ActualHandleTime.HasValue && order.CenterToOrgTime.HasValue
|
|
|
- ? _timeLimitDomainService.CalcWorkTimeEx(order.CenterToOrgTime.Value, now,
|
|
|
- order.ProcessType is EProcessType.Zhiban)
|
|
|
- : 0;
|
|
|
|
|
|
- order.File(now, handleDuration, fileDuration, allDuration, creationTimeHandleDurationWorkday, centerToOrgHandleDurationWorkday);
|
|
|
- order.FileUserId = notification.Trace.HandlerId;
|
|
|
- order.FileUserName = notification.Trace.HandlerName;
|
|
|
- order.FileUserOrgId = notification.Trace.HandlerOrgId;
|
|
|
- order.FileUserOrgName = notification.Trace.HandlerOrgName;
|
|
|
- order.FileOrgIsCenter = notification.Trace.HandlerOrgIsCenter;
|
|
|
- order.FileOpinion = notification.Dto.Opinion;
|
|
|
+ var workflow = notification.Workflow;
|
|
|
+ //审批是否通过
|
|
|
+ var isReviewPass = workflow.IsReviewPass();
|
|
|
|
|
|
- //记录冗余归档数据
|
|
|
- if (notification.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;
|
|
|
- }
|
|
|
+ switch (workflow.ModuleCode)
|
|
|
+ {
|
|
|
+ case WorkflowModuleConsts.KnowledgeAdd://新增知识库
|
|
|
+ case WorkflowModuleConsts.KnowledgeUpdate://修改知识库
|
|
|
+ case WorkflowModuleConsts.KnowledgeDelete://删除知识库
|
|
|
+ var knowledgeWork = await _knowledgeWorkFlowRepository.Queryable().Where(x => x.Id == workflow.ExternalId).FirstAsync(cancellationToken);
|
|
|
+ var knowledge = await _knowledgeRepository.Queryable().Where(x => x.Id == knowledgeWork.KnowledgeId).FirstAsync(cancellationToken);
|
|
|
+ knowledge.Flowed(workflow.FlowedUserIds, workflow.FlowedOrgIds, workflow.HandlerUsers, workflow.HandlerOrgs);
|
|
|
+ await _knowledgeRepository.UpdateAsync(knowledge, cancellationToken);
|
|
|
+ if (isReviewPass)
|
|
|
+ {
|
|
|
+ await _knowledgeDomainService.EndWorkKnowledge(workflow, cancellationToken);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ await _knowledgeDomainService.TerminateWorkKnowledge(workflow, cancellationToken);
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case WorkflowModuleConsts.TelRestApply:
|
|
|
+ await _telDomainService.TelRestApplyPassAsync(workflow.ExternalId, cancellationToken);
|
|
|
+ break;
|
|
|
+ case WorkflowModuleConsts.OrderHandle:
|
|
|
+ var order = await _orderDomainService.GetOrderAsync(workflow.ExternalId,
|
|
|
+ withExtension: true, cancellationToken: cancellationToken);
|
|
|
+ //order.CheckIfFiled();
|
|
|
+ order.UpdateHandlingStatus(workflow.IsInCountersign);
|
|
|
+ _mapper.Map(workflow, order);
|
|
|
+ var now = DateTime.Now;
|
|
|
+ var handleDuration = order.CenterToOrgTime.HasValue && order.ActualHandleTime.HasValue
|
|
|
+ ? _timeLimitDomainService.CalcWorkTime(order.CenterToOrgTime.Value,
|
|
|
+ order.ActualHandleTime.Value, 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.CalcWorkTimeEx(order.CreationTime, now,
|
|
|
+ order.ProcessType is EProcessType.Zhiban)
|
|
|
+ : 0;
|
|
|
+ var centerToOrgHandleDurationWorkday = order.ActualHandleTime.HasValue && order.CenterToOrgTime.HasValue
|
|
|
+ ? _timeLimitDomainService.CalcWorkTimeEx(order.CenterToOrgTime.Value, now,
|
|
|
+ order.ProcessType is EProcessType.Zhiban)
|
|
|
+ : 0;
|
|
|
|
|
|
- //是否已解决
|
|
|
- order.IsResolved = notification.Dto.External == null ? false : notification.Dto.External.IsResolved;
|
|
|
+ order.File(now, handleDuration, fileDuration, allDuration, creationTimeHandleDurationWorkday, centerToOrgHandleDurationWorkday);
|
|
|
+ order.FileUserId = notification.Trace.HandlerId;
|
|
|
+ order.FileUserName = notification.Trace.HandlerName;
|
|
|
+ order.FileUserOrgId = notification.Trace.HandlerOrgId;
|
|
|
+ order.FileUserOrgName = notification.Trace.HandlerOrgName;
|
|
|
+ order.FileOrgIsCenter = notification.Trace.HandlerOrgIsCenter;
|
|
|
+ order.FileOpinion = notification.Dto.Opinion;
|
|
|
|
|
|
- await _orderRepository.UpdateAsync(order, cancellationToken);
|
|
|
- //var callRecord = await _trCallRecordRepository.GetAsync(p => p.CallAccept == order.CallId, cancellationToken); //由CallAccept改为OtherAccept
|
|
|
- //var callRecord = await _trCallRecordRepository.GetAsync(p => p.OtherAccept == order.CallId, cancellationToken);
|
|
|
- var orderFlowDto = new OrderFlowDto
|
|
|
- {
|
|
|
- Order = _mapper.Map<OrderDto>(order),
|
|
|
- WorkflowTrace = _mapper.Map<WorkflowTraceDto>(notification.Trace)
|
|
|
- };
|
|
|
- // if (callRecord != null)
|
|
|
- // {
|
|
|
- // orderFlowDto.TrCallRecordDto = _mapper.Map<TrCallDto>(callRecord);
|
|
|
- // }
|
|
|
- if (order.SourceChannelCode == AppDefaults.SourceChannel.DianHua &&
|
|
|
- !string.IsNullOrEmpty(order.CallId))
|
|
|
- {
|
|
|
- if (_callcenterOptions.Value.CallCenterType == AppDefaults.CallCenterType.TianRun)
|
|
|
+ //记录冗余归档数据
|
|
|
+ if (notification.Workflow.Steps.Any(x => x.BusinessType == Share.Enums.FlowEngine.EBusinessType.Send))
|
|
|
{
|
|
|
- // var callRecord = await _trCallRecordRepository.GetAsync(p => p.OtherAccept == order.CallId, cancellationToken);
|
|
|
- var callRecord = await _callApplication.GetTianrunCallAsync(order.CallId, cancellationToken);
|
|
|
- if (callRecord != null)
|
|
|
- {
|
|
|
- orderFlowDto.TrCallRecordDto = _mapper.Map<TrCallDto>(callRecord);
|
|
|
- }
|
|
|
+ order.FileUserRole = EFileUserType.Dispatch;
|
|
|
}
|
|
|
- else if (_callcenterOptions.Value.CallCenterType == AppDefaults.CallCenterType.XingTang)
|
|
|
+ else
|
|
|
+ {
|
|
|
+ order.FileUserRole = EFileUserType.Seat;
|
|
|
+ }
|
|
|
+ if (order.ProcessType == EProcessType.Jiaoban)
|
|
|
{
|
|
|
- var call = await _callApplication.GetCallAsync(order.CallId, cancellationToken);
|
|
|
- if (call is not null)
|
|
|
- orderFlowDto.TrCallRecordDto = _mapper.Map<TrCallDto>(call);
|
|
|
+ order.FileUserRole = EFileUserType.Org;
|
|
|
}
|
|
|
- }
|
|
|
|
|
|
- //这里需要判断是否是警情退回
|
|
|
- orderFlowDto.IsNonPoliceReturn = notification.Dto.External == null ? false : notification.Dto.External.IsPoliceReturn;
|
|
|
- await _capPublisher.PublishAsync(Hotline.Share.Mq.EventNames.HotlineOrderFiled, orderFlowDto, cancellationToken: cancellationToken);
|
|
|
+ //是否已解决
|
|
|
+ order.IsResolved = notification.Dto.External == null ? false : notification.Dto.External.IsResolved;
|
|
|
|
|
|
- //try
|
|
|
- //{
|
|
|
- // //写入质检 针对受理之后直接结束的工单
|
|
|
- // await _qualityApplication.AddQualityAsync(EQualitySource.Accepted, order.Id, cancellationToken);
|
|
|
- //}
|
|
|
- //catch (Exception e)
|
|
|
- //{
|
|
|
- // _logger.LogError($"写入质检异常!orderId: {order.Id}, \r\n{e.Message}");
|
|
|
- //}
|
|
|
+ await _orderRepository.UpdateAsync(order, cancellationToken);
|
|
|
+ //var callRecord = await _trCallRecordRepository.GetAsync(p => p.CallAccept == order.CallId, cancellationToken); //由CallAccept改为OtherAccept
|
|
|
+ //var callRecord = await _trCallRecordRepository.GetAsync(p => p.OtherAccept == order.CallId, cancellationToken);
|
|
|
+ var orderFlowDto = new OrderFlowDto
|
|
|
+ {
|
|
|
+ Order = _mapper.Map<OrderDto>(order),
|
|
|
+ WorkflowTrace = _mapper.Map<WorkflowTraceDto>(notification.Trace)
|
|
|
+ };
|
|
|
+ // if (callRecord != null)
|
|
|
+ // {
|
|
|
+ // orderFlowDto.TrCallRecordDto = _mapper.Map<TrCallDto>(callRecord);
|
|
|
+ // }
|
|
|
+ if (order.SourceChannelCode == AppDefaults.SourceChannel.DianHua &&
|
|
|
+ !string.IsNullOrEmpty(order.CallId))
|
|
|
+ {
|
|
|
+ if (_callcenterOptions.Value.CallCenterType == AppDefaults.CallCenterType.TianRun)
|
|
|
+ {
|
|
|
+ // var callRecord = await _trCallRecordRepository.GetAsync(p => p.OtherAccept == order.CallId, cancellationToken);
|
|
|
+ var callRecord = await _callApplication.GetTianrunCallAsync(order.CallId, cancellationToken);
|
|
|
+ if (callRecord != null)
|
|
|
+ {
|
|
|
+ orderFlowDto.TrCallRecordDto = _mapper.Map<TrCallDto>(callRecord);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else if (_callcenterOptions.Value.CallCenterType == AppDefaults.CallCenterType.XingTang)
|
|
|
+ {
|
|
|
+ var call = await _callApplication.GetCallAsync(order.CallId, cancellationToken);
|
|
|
+ if (call is not null)
|
|
|
+ orderFlowDto.TrCallRecordDto = _mapper.Map<TrCallDto>(call);
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
- //司法行政监督管理-工单处理
|
|
|
- await _enforcementApplication.AddEnforcementOrderAsync(order, cancellationToken);
|
|
|
- //推诿工单
|
|
|
- // await _enforcementApplication.AddPassTheBuckOrderAsync(order, _sessionContext.OrgId, _sessionContext.OrgName, cancellationToken);
|
|
|
- break;
|
|
|
- //case WorkflowModuleConsts.OrderScreen:
|
|
|
- // var screen = await _orderScreenRepository.GetAsync(workflow.ExternalId, cancellationToken);
|
|
|
- // if (screen != null)
|
|
|
- // {
|
|
|
- // screen.Flowed(workflow.FlowedUserIds, workflow.FlowedOrgIds, workflow.HandlerUsers, workflow.HandlerOrgs);
|
|
|
- // if (isReviewPass)
|
|
|
- // {
|
|
|
- // screen.Status = EScreenStatus.End;
|
|
|
- // screen.ReplyContent = workflow.ActualOpinion;
|
|
|
- // await _orderScreenRepository.UpdateAsync(screen, cancellationToken);
|
|
|
- // var visitDetail =
|
|
|
- // await _orderVisitedDetailRepository.GetAsync(screen.VisitDetailId, cancellationToken);
|
|
|
- // if (visitDetail != null)
|
|
|
- // {
|
|
|
- // var screenSatisfy = new Kv() { Key = "-1", Value = "视为满意" };
|
|
|
- // visitDetail.OrgProcessingResults = screenSatisfy;
|
|
|
- // //visitDetail.OrgHandledAttitude = screenSatisfy;
|
|
|
- // await _orderVisitedDetailRepository.UpdateAsync(visitDetail, cancellationToken);
|
|
|
- // // 修改主表当前评价结果
|
|
|
- // await _orderVisitRepository.Updateable().SetColumns(v => new OrderVisit() { NowEvaluate = screenSatisfy }).Where(v => v.Id == visitDetail.VisitId).ExecuteCommandAsync(cancellationToken);
|
|
|
- // //获取回访信息
|
|
|
- // var visit = await _orderVisitRepository.Queryable().Includes(x => x.Order)
|
|
|
- // .Includes(x => x.OrderVisitDetails)
|
|
|
- // .Where(x => x.Id == screen.VisitId).FirstAsync(cancellationToken);
|
|
|
- // if (visit != null)
|
|
|
- // {
|
|
|
- // //获取回访明细
|
|
|
- // var visitDe = visit.OrderVisitDetails.First(x => x.Id == screen.VisitDetailId);
|
|
|
- // //推省上
|
|
|
- // await _capPublisher.PublishAsync(Hotline.Share.Mq.EventNames.HotlineOrderScreenApplyed,
|
|
|
- // new PublishVisitDto()
|
|
|
- // {
|
|
|
- // Order = _mapper.Map<OrderDto>(visit.Order),
|
|
|
- // No = visit.No,
|
|
|
- // VisitType = visit.VisitType,
|
|
|
- // VisitName = visit.CreatorName,
|
|
|
- // VisitTime = visit.VisitTime,
|
|
|
- // VisitRemark = string.IsNullOrEmpty(visitDe.VisitContent) ? screenSatisfy.Value : visitDe.VisitContent,
|
|
|
- // AreaCode = visit.Order.AreaCode!,
|
|
|
- // SubjectResultSatifyCode = visitDe.OrgProcessingResults?.Key,
|
|
|
- // FirstSatisfactionCode = visit.Order.FirstVisitResultCode!,
|
|
|
- // ClientGuid = ""
|
|
|
- // });
|
|
|
+ //这里需要判断是否是警情退回
|
|
|
+ orderFlowDto.IsNonPoliceReturn = notification.Dto.External == null ? false : notification.Dto.External.IsPoliceReturn;
|
|
|
+ await _capPublisher.PublishAsync(Hotline.Share.Mq.EventNames.HotlineOrderFiled, orderFlowDto, cancellationToken: cancellationToken);
|
|
|
|
|
|
- // //推门户
|
|
|
- // await _capPublisher.PublishAsync(Hotline.Share.Mq.EventNames.HotlineOrderVisitedWeb, new PublishVisitAllDto()
|
|
|
- // {
|
|
|
- // Id = visit.Id,
|
|
|
- // Order = _mapper.Map<OrderDto>(visit.Order),
|
|
|
- // OrderVisitDetails = _mapper.Map<List<VisitDetailDto>>(visit.OrderVisitDetails),
|
|
|
- // VisitName = visit.CreatorName,
|
|
|
- // VisitTime = visit.VisitTime,
|
|
|
- // VisitType = visit.VisitType,
|
|
|
- // VisitState = visit.VisitState,
|
|
|
- // PublishTime = visit.PublishTime,
|
|
|
- // }, cancellationToken: cancellationToken);
|
|
|
- // }
|
|
|
- // }
|
|
|
- // }
|
|
|
- // else
|
|
|
- // {
|
|
|
- // await _orderRepository.OrderScreenRevisionVisit(screen.VisitId, true, cancellationToken);
|
|
|
- // screen.Status = EScreenStatus.Refuse;
|
|
|
- // screen.ReplyContent = workflow.ActualOpinion;
|
|
|
- // }
|
|
|
- // screen.NewestAuditTime = DateTime.Now;
|
|
|
- //await _orderScreenRepository.UpdateAsync(screen, cancellationToken);
|
|
|
- //OrderScreenDetail detail = new OrderScreenDetail
|
|
|
- //{
|
|
|
- // ScreenId = screen.Id
|
|
|
- //};
|
|
|
- //detail.Audit(_sessionContext.UserId, _sessionContext.UserName, _sessionContext.OrgId, _sessionContext.OrgName, 1);
|
|
|
- // await _orderScreenDetailRepository.AddAsync(detail, cancellationToken);
|
|
|
- // }
|
|
|
- // break;
|
|
|
- case WorkflowModuleConsts.OrderDelay:
|
|
|
- var delay = await _orderDelayRepository.GetAsync(workflow.ExternalId, cancellationToken);
|
|
|
- if (delay != null)
|
|
|
- {
|
|
|
- delay.Flowed(workflow.FlowedUserIds, workflow.FlowedOrgIds, workflow.HandlerUsers, workflow.HandlerOrgs);
|
|
|
- if (isReviewPass)
|
|
|
- {
|
|
|
- delay.DelayState = isReviewPass ? EDelayState.Pass : EDelayState.NoPass;
|
|
|
- await _orderDelayRepository.UpdateAsync(delay, cancellationToken);
|
|
|
+ //try
|
|
|
+ //{
|
|
|
+ // //写入质检 针对受理之后直接结束的工单
|
|
|
+ // await _qualityApplication.AddQualityAsync(EQualitySource.Accepted, order.Id, cancellationToken);
|
|
|
+ //}
|
|
|
+ //catch (Exception e)
|
|
|
+ //{
|
|
|
+ // _logger.LogError($"写入质检异常!orderId: {order.Id}, \r\n{e.Message}");
|
|
|
+ //}
|
|
|
|
|
|
- //处理工单延期
|
|
|
- await _orderApplication.DelayOrderExpiredTimeAsync(delay.OrderId, delay.DelayNum,
|
|
|
- delay.DelayUnit,delay.IsProDelay, cancellationToken);
|
|
|
- }
|
|
|
- else
|
|
|
+ //司法行政监督管理-工单处理
|
|
|
+ await _enforcementApplication.AddEnforcementOrderAsync(order, cancellationToken);
|
|
|
+ //推诿工单
|
|
|
+ // await _enforcementApplication.AddPassTheBuckOrderAsync(order, _sessionContext.OrgId, _sessionContext.OrgName, cancellationToken);
|
|
|
+ break;
|
|
|
+ //case WorkflowModuleConsts.OrderScreen:
|
|
|
+ // var screen = await _orderScreenRepository.GetAsync(workflow.ExternalId, cancellationToken);
|
|
|
+ // if (screen != null)
|
|
|
+ // {
|
|
|
+ // screen.Flowed(workflow.FlowedUserIds, workflow.FlowedOrgIds, workflow.HandlerUsers, workflow.HandlerOrgs);
|
|
|
+ // if (isReviewPass)
|
|
|
+ // {
|
|
|
+ // screen.Status = EScreenStatus.End;
|
|
|
+ // screen.ReplyContent = workflow.ActualOpinion;
|
|
|
+ // await _orderScreenRepository.UpdateAsync(screen, cancellationToken);
|
|
|
+ // var visitDetail =
|
|
|
+ // await _orderVisitedDetailRepository.GetAsync(screen.VisitDetailId, cancellationToken);
|
|
|
+ // if (visitDetail != null)
|
|
|
+ // {
|
|
|
+ // var screenSatisfy = new Kv() { Key = "-1", Value = "视为满意" };
|
|
|
+ // visitDetail.OrgProcessingResults = screenSatisfy;
|
|
|
+ // //visitDetail.OrgHandledAttitude = screenSatisfy;
|
|
|
+ // await _orderVisitedDetailRepository.UpdateAsync(visitDetail, cancellationToken);
|
|
|
+ // // 修改主表当前评价结果
|
|
|
+ // await _orderVisitRepository.Updateable().SetColumns(v => new OrderVisit() { NowEvaluate = screenSatisfy }).Where(v => v.Id == visitDetail.VisitId).ExecuteCommandAsync(cancellationToken);
|
|
|
+ // //获取回访信息
|
|
|
+ // var visit = await _orderVisitRepository.Queryable().Includes(x => x.Order)
|
|
|
+ // .Includes(x => x.OrderVisitDetails)
|
|
|
+ // .Where(x => x.Id == screen.VisitId).FirstAsync(cancellationToken);
|
|
|
+ // if (visit != null)
|
|
|
+ // {
|
|
|
+ // //获取回访明细
|
|
|
+ // var visitDe = visit.OrderVisitDetails.First(x => x.Id == screen.VisitDetailId);
|
|
|
+ // //推省上
|
|
|
+ // await _capPublisher.PublishAsync(Hotline.Share.Mq.EventNames.HotlineOrderScreenApplyed,
|
|
|
+ // new PublishVisitDto()
|
|
|
+ // {
|
|
|
+ // Order = _mapper.Map<OrderDto>(visit.Order),
|
|
|
+ // No = visit.No,
|
|
|
+ // VisitType = visit.VisitType,
|
|
|
+ // VisitName = visit.CreatorName,
|
|
|
+ // VisitTime = visit.VisitTime,
|
|
|
+ // VisitRemark = string.IsNullOrEmpty(visitDe.VisitContent) ? screenSatisfy.Value : visitDe.VisitContent,
|
|
|
+ // AreaCode = visit.Order.AreaCode!,
|
|
|
+ // SubjectResultSatifyCode = visitDe.OrgProcessingResults?.Key,
|
|
|
+ // FirstSatisfactionCode = visit.Order.FirstVisitResultCode!,
|
|
|
+ // ClientGuid = ""
|
|
|
+ // });
|
|
|
+
|
|
|
+ // //推门户
|
|
|
+ // await _capPublisher.PublishAsync(Hotline.Share.Mq.EventNames.HotlineOrderVisitedWeb, new PublishVisitAllDto()
|
|
|
+ // {
|
|
|
+ // Id = visit.Id,
|
|
|
+ // Order = _mapper.Map<OrderDto>(visit.Order),
|
|
|
+ // OrderVisitDetails = _mapper.Map<List<VisitDetailDto>>(visit.OrderVisitDetails),
|
|
|
+ // VisitName = visit.CreatorName,
|
|
|
+ // VisitTime = visit.VisitTime,
|
|
|
+ // VisitType = visit.VisitType,
|
|
|
+ // VisitState = visit.VisitState,
|
|
|
+ // PublishTime = visit.PublishTime,
|
|
|
+ // }, cancellationToken: cancellationToken);
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ // else
|
|
|
+ // {
|
|
|
+ // await _orderRepository.OrderScreenRevisionVisit(screen.VisitId, true, cancellationToken);
|
|
|
+ // screen.Status = EScreenStatus.Refuse;
|
|
|
+ // screen.ReplyContent = workflow.ActualOpinion;
|
|
|
+ // }
|
|
|
+ // screen.NewestAuditTime = DateTime.Now;
|
|
|
+ //await _orderScreenRepository.UpdateAsync(screen, cancellationToken);
|
|
|
+ //OrderScreenDetail detail = new OrderScreenDetail
|
|
|
+ //{
|
|
|
+ // ScreenId = screen.Id
|
|
|
+ //};
|
|
|
+ //detail.Audit(_sessionContext.UserId, _sessionContext.UserName, _sessionContext.OrgId, _sessionContext.OrgName, 1);
|
|
|
+ // await _orderScreenDetailRepository.AddAsync(detail, cancellationToken);
|
|
|
+ // }
|
|
|
+ // break;
|
|
|
+ case WorkflowModuleConsts.OrderDelay:
|
|
|
+ var delay = await _orderDelayRepository.GetAsync(workflow.ExternalId, cancellationToken);
|
|
|
+ if (delay != null)
|
|
|
{
|
|
|
- delay.DelayState = EDelayState.NoPass;
|
|
|
- await _orderDelayRepository.UpdateAsync(delay, cancellationToken);
|
|
|
+ delay.Flowed(workflow.FlowedUserIds, workflow.FlowedOrgIds, workflow.HandlerUsers, workflow.HandlerOrgs);
|
|
|
+ if (isReviewPass)
|
|
|
+ {
|
|
|
+ delay.DelayState = isReviewPass ? EDelayState.Pass : EDelayState.NoPass;
|
|
|
+ await _orderDelayRepository.UpdateAsync(delay, cancellationToken);
|
|
|
+
|
|
|
+ //处理工单延期
|
|
|
+ await _orderApplication.DelayOrderExpiredTimeAsync(delay.OrderId, delay.DelayNum,
|
|
|
+ delay.DelayUnit, delay.IsProDelay, cancellationToken);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ delay.DelayState = EDelayState.NoPass;
|
|
|
+ await _orderDelayRepository.UpdateAsync(delay, cancellationToken);
|
|
|
+ }
|
|
|
}
|
|
|
- }
|
|
|
- break;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ catch (Exception e)
|
|
|
+ {
|
|
|
+ _logger.LogError($"{nameof(WorkflowEndHandler)}异常,{e}");
|
|
|
+ throw;
|
|
|
}
|
|
|
}
|
|
|
}
|