|
@@ -7,13 +7,22 @@ using DotNetCore.CAP;
|
|
|
using Hotline.Application.FlowEngine;
|
|
|
using Hotline.Application.Quality;
|
|
|
using Hotline.Orders;
|
|
|
+using Hotline.Application.FlowEngine;
|
|
|
+using Hotline.File;
|
|
|
+using Hotline.FlowEngine.Workflows;
|
|
|
+using Hotline.Orders;
|
|
|
+using Hotline.Share.Dtos;
|
|
|
using Hotline.Share.Dtos.DataSharing.PusherHotlineDto;
|
|
|
using Hotline.Share.Dtos.Order;
|
|
|
using Hotline.Share.Enums.Order;
|
|
|
using Hotline.Share.Enums.Quality;
|
|
|
using MapsterMapper;
|
|
|
+using Microsoft.AspNetCore.Http;
|
|
|
+using XF.Domain.Authentications;
|
|
|
using XF.Domain.Dependency;
|
|
|
using XF.Domain.Repository;
|
|
|
+using Hotline.Repository.SqlSugar.Orders;
|
|
|
+using static StackExchange.Redis.Role;
|
|
|
|
|
|
namespace Hotline.Application.Subscribers
|
|
|
{
|
|
@@ -29,26 +38,73 @@ namespace Hotline.Application.Subscribers
|
|
|
private readonly ICapPublisher _capPublisher;
|
|
|
private readonly IQualityApplication _qualityApplication;
|
|
|
private readonly IRepository<OrderDelay> _orderDelayRepository;
|
|
|
+ private readonly IRepository<OrderSendBack> _orderSendBackRepository;
|
|
|
private readonly IWorkflowApplication _workflowApplication;
|
|
|
+ private readonly ISessionContext _sessionContext;
|
|
|
+ private readonly IWorkflowDomainService _workflowDomainService;
|
|
|
+ private readonly IFileRepository _fileRepository;
|
|
|
+ private readonly IRepository<OrderUrge> _orderUrgeRepository;
|
|
|
+ private readonly IRepository<OrderSupervise> _orderSuperviseRepository;
|
|
|
+ private readonly IRepository<OrderVisitDetail> _orderVisitedDetailRepository;
|
|
|
+ private readonly IOrderScreenRepository _orderScreenRepository;
|
|
|
|
|
|
- public DataSharingSubscriber(IRepository<OrderVisit> orderVisitRepository, IRepository<OrderVisitDetail> orderVisitDetailRepository, IMapper mapper, IOrderRepository orderRepository, ICapPublisher capPublisher, IQualityApplication qualityApplication, IRepository<OrderDelay> orderDelayRepository,IWorkflowApplication workflowApplication)
|
|
|
+ public DataSharingSubscriber()
|
|
|
{
|
|
|
- _orderVisitRepository = orderVisitRepository;
|
|
|
- _orderVisitDetailRepository = orderVisitDetailRepository;
|
|
|
- _mapper = mapper;
|
|
|
- _orderRepository = orderRepository;
|
|
|
- _capPublisher = capPublisher;
|
|
|
- _orderDelayRepository = orderDelayRepository;
|
|
|
- _workflowApplication = workflowApplication;
|
|
|
+
|
|
|
}
|
|
|
+
|
|
|
+
|
|
|
+ public DataSharingSubscriber(
|
|
|
+ IRepository<OrderVisit> orderVisitRepository,
|
|
|
+ IRepository<OrderVisitDetail> orderVisitDetailRepository,
|
|
|
+ IMapper mapper,
|
|
|
+ IOrderRepository orderRepository,
|
|
|
+ ICapPublisher capPublisher,
|
|
|
+ IQualityApplication qualityApplication,
|
|
|
+ IRepository<OrderDelay> orderDelayRepository,
|
|
|
+ IRepository<OrderSendBack> orderSendBackRepository,
|
|
|
+ IWorkflowApplication workflowApplication,
|
|
|
+ IWorkflowDomainService workflowDomainService,
|
|
|
+ IRepository<OrderUrge> orderUrgeRepository,
|
|
|
+ IRepository<OrderSupervise> orderSuperviseRepository,
|
|
|
+ IRepository<OrderVisitDetail> orderVisitedDetailRepository,
|
|
|
+ IOrderScreenRepository orderScreenRepository,
|
|
|
+ IFileRepository fileRepository)
|
|
|
+ {
|
|
|
+ _orderSendBackRepository = orderSendBackRepository;
|
|
|
+ _workflowApplication = workflowApplication;
|
|
|
+ _workflowDomainService = workflowDomainService;
|
|
|
+ _orderUrgeRepository = orderUrgeRepository;
|
|
|
+ _orderSuperviseRepository = orderSuperviseRepository;
|
|
|
+ _orderScreenRepository = orderScreenRepository;
|
|
|
+ _orderVisitedDetailRepository = orderVisitedDetailRepository;
|
|
|
+ _orderRepository = orderRepository;
|
|
|
+ _fileRepository = fileRepository;
|
|
|
+ _orderVisitRepository = orderVisitRepository;
|
|
|
+ _orderVisitDetailRepository = orderVisitDetailRepository;
|
|
|
+ _mapper = mapper;
|
|
|
+ _capPublisher = capPublisher;
|
|
|
+ _orderDelayRepository = orderDelayRepository;
|
|
|
+ }
|
|
|
+
|
|
|
/// <summary>
|
|
|
/// 接收工单退回结果
|
|
|
/// </summary>
|
|
|
[CapSubscribe(Hotline.Share.Mq.EventNames.SharingOrderReturnFeedback)]
|
|
|
public async Task RecOrderReturnAsync(OrderSendBackResultDto dto, CancellationToken cancellationToken)
|
|
|
{
|
|
|
-
|
|
|
- }
|
|
|
+ var sendBack = await _orderSendBackRepository.GetAsync(dto.Id, cancellationToken);
|
|
|
+ if (sendBack != null)
|
|
|
+ {
|
|
|
+ sendBack.Result = dto.Result;
|
|
|
+ sendBack.Reason = dto.Reason;
|
|
|
+ if (dto.Result is 1)
|
|
|
+ {
|
|
|
+ var order = await _orderRepository.GetAsync(sendBack.OrderId, cancellationToken);
|
|
|
+ await _workflowApplication.JumpToEndAsync(order.WorkflowId, "省工单同意退回", null, cancellationToken: cancellationToken);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
/// <summary>
|
|
|
/// 服务工单撤单
|
|
@@ -56,8 +112,9 @@ namespace Hotline.Application.Subscribers
|
|
|
[CapSubscribe(Hotline.Share.Mq.EventNames.SharingOrderRevoke)]
|
|
|
public async Task RecCancelOrderAsync(CancelOrderDto dto, CancellationToken cancellationToken)
|
|
|
{
|
|
|
-
|
|
|
- }
|
|
|
+ var order = await _orderRepository.GetAsync(dto.OrderId, cancellationToken);
|
|
|
+ await _workflowApplication.JumpToEndAsync(order.WorkflowId, dto.Opinion, null, cancellationToken: cancellationToken);
|
|
|
+ }
|
|
|
|
|
|
/// <summary>
|
|
|
/// 服务工单催单
|
|
@@ -65,8 +122,24 @@ namespace Hotline.Application.Subscribers
|
|
|
[CapSubscribe(Hotline.Share.Mq.EventNames.SharingOrderRemind)]
|
|
|
public async Task RecOrderUrgeAsync(ProvinceOrderUrgeDto dto, CancellationToken cancellationToken)
|
|
|
{
|
|
|
-
|
|
|
- }
|
|
|
+ var order = await _orderRepository.Queryable().Where(x => x.ProvinceNo == dto.CaseSerial).FirstAsync(cancellationToken);
|
|
|
+ var org = await _workflowDomainService.GetCurrentHandOrganizeAsync(order.WorkflowId,cancellationToken);
|
|
|
+ foreach (var item in org)
|
|
|
+ {
|
|
|
+ var model = new OrderUrge();
|
|
|
+ model.InitId();
|
|
|
+ model.OrgId = item.Id;
|
|
|
+ model.OrgName = item.Name;
|
|
|
+ model.State = 0;
|
|
|
+ model.CreatorOrgName = "省12345";
|
|
|
+ model.CrUser = dto.RemindName;
|
|
|
+ model.ApplyContent = dto.RemindReasion;
|
|
|
+ if (dto.Files.Any())
|
|
|
+ model.FileJson =
|
|
|
+ await _fileRepository.AddFileAsync(dto.Files, model.Id, "", cancellationToken);
|
|
|
+ await _orderUrgeRepository.AddAsync(model, cancellationToken);
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
/// <summary>
|
|
|
/// 督办工单派发接口
|
|
@@ -74,8 +147,20 @@ namespace Hotline.Application.Subscribers
|
|
|
[CapSubscribe(Hotline.Share.Mq.EventNames.SharingOrderSupervise)]
|
|
|
public async Task RecOrderSuperviseAsync(ProvinceSendOrderSuperviseDto dto, CancellationToken cancellationToken)
|
|
|
{
|
|
|
-
|
|
|
- }
|
|
|
+ var order = await _orderRepository.Queryable().Where(x => x.ProvinceNo == dto.ProvinceOrderSuperviseDto!.CaseSerial).FirstAsync(cancellationToken);
|
|
|
+ var model = new OrderSupervise();
|
|
|
+ model.InitId();
|
|
|
+ model.OrderId = order.Id;
|
|
|
+ model.ReplyLimitTime = dto.ProvinceOrderSuperviseDto.SuperviseReturnDate;
|
|
|
+ model.OrgName = dto.ProvinceOrderSuperviseDto.SuperviseRsvDept;
|
|
|
+ model.LaunchOrgName = dto.ProvinceOrderSuperviseDto.SuperviseSendDept;
|
|
|
+ model.State = 0;
|
|
|
+ model.ApplyContent = dto.ProvinceOrderSuperviseDto.SuperviseContent;
|
|
|
+ if (dto.Files.Any())
|
|
|
+ model.FileJson =
|
|
|
+ await _fileRepository.AddFileAsync(dto.Files, model.Id, "", cancellationToken);
|
|
|
+ await _orderSuperviseRepository.AddAsync(model, cancellationToken);
|
|
|
+ }
|
|
|
|
|
|
/// <summary>
|
|
|
/// 服务工单甄别结果
|
|
@@ -83,8 +168,27 @@ namespace Hotline.Application.Subscribers
|
|
|
[CapSubscribe(Hotline.Share.Mq.EventNames.SharingOrderScreen)]
|
|
|
public async Task RecOrderScreenResultAsync(ProvinceSendScreenResultDto dto, CancellationToken cancellationToken)
|
|
|
{
|
|
|
-
|
|
|
- }
|
|
|
+ var order = await _orderRepository.Queryable().Where(x => x.ProvinceNo == dto.ProvinceScreenResult!.CaseSerial).FirstAsync(cancellationToken);
|
|
|
+ var orderScreen = await _orderScreenRepository.Queryable().Where(x=>x.OrderId == order.Id && x.Status == Share.Enums.Order.EScreenStatus.Approval).FirstAsync(cancellationToken);
|
|
|
+ await _workflowApplication.JumpToEndAsync(orderScreen.WorkflowId, "省上推送甄别结果", null, cancellationToken: cancellationToken);
|
|
|
+ orderScreen.Status = "1".Equals(dto.ProvinceScreenResult.AuditResult) ? Share.Enums.Order.EScreenStatus.End : Share.Enums.Order.EScreenStatus.Refuse;
|
|
|
+ if (orderScreen.Status == Share.Enums.Order.EScreenStatus.End)
|
|
|
+ {
|
|
|
+ var visitDetail = await _orderVisitedDetailRepository.GetAsync(orderScreen.VisitDetailId, cancellationToken);
|
|
|
+ if (visitDetail != null)
|
|
|
+ {
|
|
|
+ var screenSatisfy = new Kv() { Key = "6", Value = "甄别满意" };
|
|
|
+ visitDetail.OrgProcessingResults = screenSatisfy;
|
|
|
+ visitDetail.OrgHandledAttitude = screenSatisfy;
|
|
|
+ await _orderVisitedDetailRepository.UpdateAsync(visitDetail, cancellationToken);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ orderScreen.ReplyContent = dto.ProvinceScreenResult.AuditOpinion;
|
|
|
+ if (dto.Files.Any())
|
|
|
+ orderScreen.FileJson =
|
|
|
+ await _fileRepository.AddFileAsync(dto.Files, orderScreen.Id, "", cancellationToken);
|
|
|
+ await _orderScreenRepository.UpdateAsync(orderScreen, cancellationToken);
|
|
|
+ }
|
|
|
|
|
|
/// <summary>
|
|
|
/// 更新工单受理附件
|
|
@@ -92,8 +196,12 @@ namespace Hotline.Application.Subscribers
|
|
|
[CapSubscribe(Hotline.Share.Mq.EventNames.SharingOrderUpdataFiles)]
|
|
|
public async Task RecOrderUpdataFilesAsync(OrderUpdataFiles dto, CancellationToken cancellationToken)
|
|
|
{
|
|
|
-
|
|
|
- }
|
|
|
+ if (dto == null && dto.Files.Any())
|
|
|
+ {
|
|
|
+ var order = await _orderRepository.GetAsync(dto.OrderId, cancellationToken);
|
|
|
+ order.FileJson = await _fileRepository.AddFileAsync(dto.Files, dto.OrderId, "", cancellationToken);
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
/// <summary>
|
|
|
/// 工单回访
|