|
@@ -1,4 +1,5 @@
|
|
|
-using DataSharing.HotlineWeb;
|
|
|
+using DataSharing.FwDataExchange;
|
|
|
+using DataSharing.HotlineWeb;
|
|
|
using DataSharing.Province.SendTask;
|
|
|
using DataSharing.Province.SendTask.ProvinceOther;
|
|
|
using DataSharing.Province.SendTask.SubmitCaseInfo;
|
|
@@ -10,15 +11,19 @@ using DataSharing.SendTask;
|
|
|
using DataSharing.SendTask.OtherPlatforms;
|
|
|
using DataSharing.Share.Consts;
|
|
|
using DataSharing.Share.Dtos.Common;
|
|
|
+using DataSharing.Share.Dtos.HotlineSetting;
|
|
|
using DataSharing.Share.Dtos.HotlineWeb;
|
|
|
using DataSharing.Share.Enums;
|
|
|
using DataSharing.Share.Requests;
|
|
|
using DotNetCore.CAP;
|
|
|
using Hotline.Share.Dtos;
|
|
|
+using Hotline.Share.Dtos.Order;
|
|
|
using MapsterMapper;
|
|
|
using MediatR;
|
|
|
using Microsoft.AspNetCore.Authorization;
|
|
|
using Microsoft.AspNetCore.Mvc;
|
|
|
+using Org.BouncyCastle.Utilities;
|
|
|
+using Polly.Caching;
|
|
|
using SqlSugar;
|
|
|
using XF.Domain.Cache;
|
|
|
using XF.Domain.Exceptions;
|
|
@@ -60,6 +65,8 @@ namespace DataSharing.Host.Controllers
|
|
|
private readonly IRepository<DsSendTask> _taskRepository;
|
|
|
private readonly IRepository<DsSendTaskInfo> _taskInfoRepository;
|
|
|
private readonly IRepository<DsOrder> _dsOrderRepository;
|
|
|
+ private readonly IRepository<SendHotlineErrorData> _sendHotlineErrorDataRepository;
|
|
|
+ private readonly FwClient _fwClient;
|
|
|
|
|
|
/// <summary>
|
|
|
///
|
|
@@ -92,6 +99,8 @@ namespace DataSharing.Host.Controllers
|
|
|
/// <param name="taskRepository"></param>
|
|
|
/// <param name="taskInfoRepository"></param>
|
|
|
/// <param name="dsOrderRepository"></param>
|
|
|
+ /// <param name="sendHotlineErrorDataRepository"></param>
|
|
|
+ /// <param name="fwClient"></param>
|
|
|
public HotlineWebController(IMapper mapper,
|
|
|
IMediator mediator,
|
|
|
ICapPublisher capPublisher,
|
|
@@ -119,7 +128,9 @@ namespace DataSharing.Host.Controllers
|
|
|
IInitPushDataService initPushDataService,
|
|
|
IRepository<DsSendTask> taskRepository,
|
|
|
IRepository<DsSendTaskInfo> taskInfoRepository,
|
|
|
- IRepository<DsOrder> dsOrderRepository)
|
|
|
+ IRepository<DsOrder> dsOrderRepository,
|
|
|
+ IRepository<SendHotlineErrorData> sendHotlineErrorDataRepository,
|
|
|
+ FwClient fwClient)
|
|
|
{
|
|
|
_mapper = mapper;
|
|
|
_mediator = mediator;
|
|
@@ -149,6 +160,8 @@ namespace DataSharing.Host.Controllers
|
|
|
_taskRepository = taskRepository;
|
|
|
_taskInfoRepository = taskInfoRepository;
|
|
|
_dsOrderRepository = dsOrderRepository;
|
|
|
+ _sendHotlineErrorDataRepository = sendHotlineErrorDataRepository;
|
|
|
+ _fwClient = fwClient;
|
|
|
}
|
|
|
#endregion
|
|
|
|
|
@@ -1172,7 +1185,7 @@ namespace DataSharing.Host.Controllers
|
|
|
.CountAsync();
|
|
|
|
|
|
//工单
|
|
|
- if (orderRate != null )
|
|
|
+ if (orderRate != null)
|
|
|
{
|
|
|
calculateUploadRateDto.OrderCountNum = orderRate.OrderCountNum;
|
|
|
calculateUploadRateDto.OrderTimely = orderRate.OrderTimely;
|
|
@@ -1185,7 +1198,7 @@ namespace DataSharing.Host.Controllers
|
|
|
}
|
|
|
|
|
|
//电话
|
|
|
- if (callRate != null )
|
|
|
+ if (callRate != null)
|
|
|
{
|
|
|
calculateUploadRateDto.TelCountNum = callRate.TelCountNum;
|
|
|
calculateUploadRateDto.TelTimely = callRate.TelTimely;
|
|
@@ -1195,7 +1208,7 @@ namespace DataSharing.Host.Controllers
|
|
|
}
|
|
|
|
|
|
//回访
|
|
|
- if (visitList != null )
|
|
|
+ if (visitList != null)
|
|
|
{
|
|
|
calculateUploadRateDto.VisitCountNum = visitList.VisitCountNum;
|
|
|
calculateUploadRateDto.SatisfactionCountNum = visitList.SatisfactionCountNum;
|
|
@@ -1288,5 +1301,74 @@ namespace DataSharing.Host.Controllers
|
|
|
}
|
|
|
#endregion
|
|
|
|
|
|
+ /// <summary>
|
|
|
+ /// 查询推送业务系统失败数据
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="dto"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ [HttpGet("getsendhotlineerrordata")]
|
|
|
+ [AllowAnonymous]
|
|
|
+ public async Task<PagedDto<SendHotlineErrorData>> GetSendHotlineErrorData([FromQuery] QuerySendTaskDto dto)
|
|
|
+ {
|
|
|
+ if (!dto.StartTime.HasValue)
|
|
|
+ dto.StartTime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd 00:00:00"));
|
|
|
+ if (!dto.EndTime.HasValue)
|
|
|
+ dto.EndTime = dto.StartTime.Value.AddDays(1).AddSeconds(-1);
|
|
|
+ else
|
|
|
+ dto.EndTime = dto.EndTime.Value.AddDays(1).AddSeconds(-1);
|
|
|
+
|
|
|
+ //数据查询
|
|
|
+ RefAsync<int> total = 0;
|
|
|
+ var items = await _sendHotlineErrorDataRepository.Queryable()
|
|
|
+ .Where(p => p.CreationTime >= dto.StartTime && p.CreationTime <= dto.EndTime)
|
|
|
+ .OrderBy(p => p.CreationTime)
|
|
|
+ .ToPageListAsync(dto.PageIndex, dto.PageSize, total, HttpContext.RequestAborted);
|
|
|
+
|
|
|
+ return new PagedDto<SendHotlineErrorData>(total, items);
|
|
|
+ }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 从新推送
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="Id"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ [HttpGet("pushfromhotlinedata")]
|
|
|
+ [AllowAnonymous]
|
|
|
+ public async Task PushFromHotlineData(string Id)
|
|
|
+ {
|
|
|
+ var data = await _sendHotlineErrorDataRepository.GetAsync(p => p.Id == Id, HttpContext.RequestAborted);
|
|
|
+ if (data == null)
|
|
|
+ throw UserFriendlyException.SameMessage("重新推送失败");
|
|
|
+
|
|
|
+ bool isSuccess = true;
|
|
|
+ string error = "";
|
|
|
+ //调用工单创建接口
|
|
|
+ try
|
|
|
+ {
|
|
|
+ var result = await _fwClient.RequestNoTokenAsync<HotlineClientResponse>(data.Path, data.HttpMethod, data.RequestData);
|
|
|
+ if (result == null || result.code != 0)
|
|
|
+ {
|
|
|
+ isSuccess = false;
|
|
|
+ error = result?.message;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ catch (Exception ex)
|
|
|
+ {
|
|
|
+ isSuccess = false;
|
|
|
+ error = ex.Message;
|
|
|
+ }
|
|
|
+
|
|
|
+ //推送失败添加
|
|
|
+ if (!isSuccess)
|
|
|
+ {
|
|
|
+ data.SendTimes = data.SendTimes + 1;
|
|
|
+ data.ErrorMessage = error;
|
|
|
+ await _sendHotlineErrorDataRepository.AddAsync(data, HttpContext.RequestAborted);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ await _sendHotlineErrorDataRepository.RemoveAsync(data, cancellationToken: HttpContext.RequestAborted);
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
}
|