TANG JIANG 2 years ago
parent
commit
e73bf3743d

+ 23 - 1
src/Sharing.Api/Controllers/HotlineMessageReceiveController.cs

@@ -27,6 +27,7 @@ namespace Sharing.Api.Controllers
         private readonly IGetCaseProcessReceiveRepository _getCaseProcessReceiveRepository;
         private readonly IGetVisitInfoReceiveRepository _getVisitInfoReceiveRepository;
         private readonly IGetCaseBackApplyRepository _getCaseBackApplyRepository;
+        private readonly IDelayCaseInfoSendRepository _delayCaseInfoSendRepository;
 
         /// <summary>
         /// 
@@ -38,7 +39,8 @@ namespace Sharing.Api.Controllers
         /// <param name="getCaseResultReceiveRepository"></param>
         public HotlineMessageReceiveController(IDataOrderRepository dataOrderRepository, IMediator mediator, ILogger<HotlineMsgReceiver> logger, IMapper mapper
             , IGetCaseResultReceiveRepository getCaseResultReceiveRepository, IGetCaseProcessReceiveRepository getCaseProcessReceiveRepository
-            , IGetVisitInfoReceiveRepository getVisitInfoReceiveRepository, IGetCaseBackApplyRepository getCaseBackApplyRepository)
+            , IGetVisitInfoReceiveRepository getVisitInfoReceiveRepository, IGetCaseBackApplyRepository getCaseBackApplyRepository
+            , IDelayCaseInfoSendRepository delayCaseInfoSendRepository)
         {
             _dataOrderRepository = dataOrderRepository;
             _mediator = mediator;
@@ -48,6 +50,7 @@ namespace Sharing.Api.Controllers
             _getCaseProcessReceiveRepository = getCaseProcessReceiveRepository;
             _getVisitInfoReceiveRepository = getVisitInfoReceiveRepository;
             _getCaseBackApplyRepository = getCaseBackApplyRepository;
+            _delayCaseInfoSendRepository = delayCaseInfoSendRepository;
         }
 
         [NonAction]
@@ -138,5 +141,24 @@ namespace Sharing.Api.Controllers
             //信息上报
             await _mediator.Publish(new GetCaseBackApplyNotification(data));
         }
+
+        /// <summary>
+        /// 服务工单申请延时  
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        [NonAction]
+        //[CapSubscribe(Hotline.Share.Mq.EventNames.HotlineOrderCreated)]
+        public async Task DelayCaseInfoSend(DelayCaseInfoSendInfo dto)
+        {
+            var data = _mapper.Map<DelayCaseInfoSend>(dto);
+
+            //将上报信息写入本地库
+            var id = await _delayCaseInfoSendRepository.AddAsync(data);
+
+            data.Id = id;
+            //信息上报
+            await _mediator.Publish(new DelayCaseInfoSendNotification(data));
+        }
     }
 }

+ 12 - 0
src/Sharing.Province/DefaultPusher.cs

@@ -75,4 +75,16 @@ public class DefaultPusher : IProvincePusher
         var response = await _xieTongClient.RequestAsync<GetCaseBackApplyRequest, ProvinceResponse>(request, cancellationToken);
         return response.ReturnInfo;
     }
+
+    /// <summary>
+    /// 服务工单申请延时
+    /// </summary>
+    /// <param name="request"></param>
+    /// <param name="cancellationToken"></param>
+    /// <returns></returns>
+    public async Task<BaseProvinceResponse> PushDelayCaseInfoSendAsync(DelayCaseInfoSendRequest request, CancellationToken cancellationToken)
+    {
+        var response = await _xieTongClient.RequestAsync<DelayCaseInfoSendRequest, ProvinceResponse>(request, cancellationToken);
+        return response.ReturnInfo;
+    }
 }

+ 83 - 0
src/Sharing.Province/Dtos/XieTong/Send/DelayCaseInfoSendRequest.cs

@@ -0,0 +1,83 @@
+using Microsoft.AspNetCore.Http;
+using System.Text.Json.Serialization;
+
+namespace Sharing.Province.Dtos.XieTong.Send
+{
+    /// <summary>
+    /// 服务工单申请延时
+    /// </summary>
+    public class DelayCaseInfoSendRequest : ProvinceRequest<DelayCaseInfoSendData>
+    {
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <returns></returns>
+        public override string GetRequestUrl() => "delay_case_info_send";
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <returns></returns>
+        public override string GetHttpMethod() => HttpMethods.Post;
+    }
+
+    /// <summary>
+    /// 服务工单申请延时
+    /// </summary>
+    public class DelayCaseInfoSendData
+    {
+        /// <summary>
+        /// 
+        /// </summary>
+        [JsonPropertyName("jsonList")]
+        public IReadOnlyList<DelayCaseInfoSendInfo> DelayCaseInfoSendInfos { get; set; }
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class DelayCaseInfoSendInfo : BaseModel
+    {
+        /// <summary>
+        /// 申请延期数量
+        /// </summary>
+        [JsonPropertyName("APPLY_DELAYNUM")]
+        public int ApplyDelaynum { get; set; }
+
+        /// <summary>
+        /// 申请延期单位(工作日或工作小时)
+        /// </summary>
+        [JsonPropertyName("APPLY_DELAYUNIT")]
+        public int ApplyDelayunit { get; set; }
+
+        /// <summary>
+        /// 申请人员
+        /// </summary>
+        [JsonPropertyName("APPLY_NAME")]
+        public string ApplyName { get; set; }
+
+        /// <summary>
+        /// 申请时间
+        /// </summary>
+        [JsonPropertyName("APPLY_TIME")]
+        public string ApplyTime { get; set; }
+
+        /// <summary>
+        /// 申请部门
+        /// </summary>
+        [JsonPropertyName("APPLY_OUNAME")]
+        public string ApplyOuname { get; set; }
+
+        /// <summary>
+        /// 申请原因
+        /// </summary>
+        [JsonPropertyName("APPLY_REASON")]
+        public string ApplyReason { get; set; }
+
+        /// <summary>
+        /// 申请类型
+        /// </summary>
+        [JsonPropertyName("APPLY_TYPE")]
+        public string ApplyType { get; set; }
+    }
+}

+ 0 - 1
src/Sharing.Province/Dtos/XieTong/Send/GetCaseProcessReceiveRequest.cs

@@ -1,5 +1,4 @@
 using Microsoft.AspNetCore.Http;
-using Sharing.Province.XieTong.Send;
 using System.Text.Json.Serialization;
 
 namespace Sharing.Province.Dtos.XieTong.Send

+ 0 - 1
src/Sharing.Province/Dtos/XieTong/Send/GetCaseResultReceiveRequest.cs

@@ -1,5 +1,4 @@
 using Microsoft.AspNetCore.Http;
-using Sharing.Province.Dtos.HuiJu;
 using System.Text.Json.Serialization;
 
 namespace Sharing.Province.Dtos.XieTong.Send

+ 68 - 0
src/Sharing.Province/Handlers/DelayCaseInfoSendHandler.cs

@@ -0,0 +1,68 @@
+using MapsterMapper;
+using MediatR;
+using Sharing.Notifications;
+using Sharing.Province.Dtos.XieTong.Send;
+using Sharing.Province.XieTong.Send;
+
+namespace Sharing.Province.Handlers
+{
+    /// <summary>
+    /// 服务工单申请延时
+    /// </summary>
+    public class DelayCaseInfoSendHandler : INotificationHandler<DelayCaseInfoSendNotification>
+    {
+        private readonly IChannelConfigurationManager _channelConfigurationManager;
+        private readonly PusherProvider _pusherProvider;
+        private readonly IMapper _mapper;
+        private readonly IDelayCaseInfoSendRepository _delayCaseInfoSendRepository;
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="channelConfigurationManager"></param>
+        /// <param name="pusherProvider"></param>
+        /// <param name="mapper"></param>
+        /// <param name="delayCaseInfoSendRepository"></param>
+        public DelayCaseInfoSendHandler(IChannelConfigurationManager channelConfigurationManager, PusherProvider pusherProvider, IMapper mapper
+            , IDelayCaseInfoSendRepository delayCaseInfoSendRepository)
+        {
+            _channelConfigurationManager = channelConfigurationManager;
+            _pusherProvider = pusherProvider;
+            _mapper = mapper;
+            _delayCaseInfoSendRepository = delayCaseInfoSendRepository;
+        }
+
+        /// <summary>
+        /// 服务工单申请延时
+        /// </summary>
+        /// <param name="notification"></param>
+        /// <param name="cancellationToken"></param>
+        /// <returns></returns>
+        public async Task Handle(DelayCaseInfoSendNotification notification, CancellationToken cancellationToken = default)
+        {
+            var pusher = _pusherProvider.CreatePusher(_channelConfigurationManager);
+
+            var dataReceive = _mapper.Map<DelayCaseInfoSendInfo>(notification.Data);
+            var data = new DelayCaseInfoSendData
+            {
+                DelayCaseInfoSendInfos = new List<DelayCaseInfoSendInfo>
+                {
+                    dataReceive
+                }
+            };
+
+            var request = new DelayCaseInfoSendRequest();
+            request.SetData(data);
+
+            var response = await pusher.PushDelayCaseInfoSendAsync(request, cancellationToken);
+
+            //如果推送成功修改数据状态
+            if (response != null && response.Code == "1")
+            {
+                notification.Data.SyncState = "1";
+                notification.Data.ReturnResult = Newtonsoft.Json.JsonConvert.SerializeObject(response);
+                await _delayCaseInfoSendRepository.UpdateAsync(notification.Data);
+            }
+        }
+    }
+}

+ 0 - 5
src/Sharing.Province/Handlers/GetCaseBackApplyHandler.cs

@@ -3,11 +3,6 @@ using MediatR;
 using Sharing.Notifications;
 using Sharing.Province.Dtos.XieTong.Send;
 using Sharing.Province.XieTong.Send;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
 
 namespace Sharing.Province.Handlers
 {

+ 0 - 2
src/Sharing.Province/Handlers/GetCaseResultReceiveHandler.cs

@@ -1,10 +1,8 @@
 using MapsterMapper;
 using MediatR;
 using Sharing.Notifications;
-using Sharing.Province.Dtos.HuiJu;
 using Sharing.Province.Dtos.XieTong.Send;
 using Sharing.Province.XieTong.Send;
-using XF.Domain.Exceptions;
 
 namespace Sharing.Province.Handlers
 {

+ 0 - 6
src/Sharing.Province/Handlers/GetVisitInfoReceiveHandler.cs

@@ -3,12 +3,6 @@ using MediatR;
 using Sharing.Notifications;
 using Sharing.Province.Dtos.XieTong.Send;
 using Sharing.Province.XieTong.Send;
-using Sharing.Repository.Province.XieTong.Send;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
 
 namespace Sharing.Province.Handlers
 {

+ 1 - 1
src/Sharing.Province/Handlers/OrderCreatedHandler.cs

@@ -24,7 +24,7 @@ namespace Sharing.Province.Handlers
         {
             var order = notification.DataOrder;
             var pusher = _pusherProvider.CreatePusher(_channelConfigurationManager);
-            
+
             var data = new SubmitCaseInfoData
             {
                 CaseInfos = new List<CaseInfo>

+ 8 - 0
src/Sharing.Province/IProvincePusher.cs

@@ -47,4 +47,12 @@ public interface IProvincePusher
     /// <param name="cancellationToken"></param>
     /// <returns></returns>
     Task<BaseProvinceResponse> PushGetCaseBackApplyAsync(GetCaseBackApplyRequest request, CancellationToken cancellationToken);
+
+    /// <summary>
+    /// 服务工单申请延时
+    /// </summary>
+    /// <param name="request"></param>
+    /// <param name="cancellationToken"></param>
+    /// <returns></returns>
+    Task<BaseProvinceResponse> PushDelayCaseInfoSendAsync(DelayCaseInfoSendRequest request, CancellationToken cancellationToken);
 }

+ 11 - 0
src/Sharing.Province/SmartPusher.cs

@@ -55,4 +55,15 @@ public class SmartPusher : IProvincePusher
     {
         throw new NotImplementedException();
     }
+
+    /// <summary>
+    /// 服务工单申请延时
+    /// </summary>
+    /// <param name="request"></param>
+    /// <param name="cancellationToken"></param>
+    /// <returns></returns>
+    public async Task<BaseProvinceResponse> PushDelayCaseInfoSendAsync(DelayCaseInfoSendRequest request, CancellationToken cancellationToken)
+    {
+        throw new NotImplementedException();
+    }
 }

+ 14 - 0
src/Sharing.Repository/Province/XieTong/Send/DelayCaseInfoSendRepository.cs

@@ -0,0 +1,14 @@
+using Sharing.Province.XieTong.Send;
+using SqlSugar;
+using XF.Domain.Dependency;
+
+namespace Sharing.Repository.Province.XieTong.Send
+{
+    public class DelayCaseInfoSendRepository : BaseRepository<DelayCaseInfoSend>, IDelayCaseInfoSendRepository, IScopeDependency
+    {
+        public DelayCaseInfoSendRepository(ISugarUnitOfWork<SharingDbContext> uow) : base(uow)
+        {
+
+        }
+    }
+}

+ 11 - 0
src/Sharing/Notifications/DelayCaseInfoSendNotification.cs

@@ -0,0 +1,11 @@
+using MediatR;
+using Sharing.Province.XieTong.Send;
+
+namespace Sharing.Notifications
+{
+    /// <summary>
+    /// 服务工单申请延时  
+    /// </summary>
+    /// <param name="Data"></param>
+    public record DelayCaseInfoSendNotification(DelayCaseInfoSend Data) : INotification;
+}

+ 0 - 1
src/Sharing/Notifications/OrderCreatedNotification.cs

@@ -1,6 +1,5 @@
 using MediatR;
 using Sharing.Orders;
-using Sharing.Province.XieTong.Send;
 
 namespace Sharing.Notifications
 {

+ 55 - 0
src/Sharing/Province/XieTong/Send/DelayCaseInfoSend.cs

@@ -0,0 +1,55 @@
+using Sharing.Province.HuiJu.Send;
+using SqlSugar;
+using System.ComponentModel;
+
+namespace Sharing.Province.XieTong.Send
+{
+    /// <summary>
+    /// 服务工单申请延时    
+    /// </summary>
+    [Description("服务工单申请延时")]
+    public class DelayCaseInfoSend : BaseSendResult
+    {
+        /// <summary>
+        /// 申请延期数量
+        /// </summary>
+        [SugarColumn(ColumnDescription = "申请延期数量")]
+        public int ApplyDelaynum { get; set; }
+
+        /// <summary>
+        /// 申请延期单位(工作日或工作小时)
+        /// </summary>
+        [SugarColumn(ColumnDescription = "申请延期单位(工作日或工作小时)")]
+        public int ApplyDelayunit { get; set; }
+
+        /// <summary>
+        /// 申请人员
+        /// </summary>
+        [SugarColumn(ColumnDescription = "申请人员", ColumnDataType = "varchar(50)")]
+        public string ApplyName { get; set; }
+
+        /// <summary>
+        /// 申请时间
+        /// </summary>
+        [SugarColumn(ColumnDescription = "申请时间")]
+        public string ApplyTime { get; set; }
+
+        /// <summary>
+        /// 申请部门
+        /// </summary>
+        [SugarColumn(ColumnDescription = "申请部门", ColumnDataType = "varchar(200)")]
+        public string ApplyOuname { get; set; }
+
+        /// <summary>
+        /// 申请原因
+        /// </summary>
+        [SugarColumn(ColumnDescription = "申请原因", ColumnDataType = "varchar(1000)")]
+        public string ApplyReason { get; set; }
+
+        /// <summary>
+        /// 申请类型
+        /// </summary>
+        [SugarColumn(ColumnDescription = "申请类型", ColumnDataType = "varchar(10)")]
+        public string ApplyType { get; set; }
+    }
+}

+ 8 - 0
src/Sharing/Province/XieTong/Send/IDelayCaseInfoSendRepository.cs

@@ -0,0 +1,8 @@
+using XF.Domain.Repository;
+
+namespace Sharing.Province.XieTong.Send
+{
+    public interface IDelayCaseInfoSendRepository : IRepository<DelayCaseInfoSend>
+    {
+    }
+}

+ 2 - 7
src/Sharing/Province/XieTong/Send/IGetVisitInfoReceiveRepository.cs

@@ -1,13 +1,8 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using XF.Domain.Repository;
+using XF.Domain.Repository;
 
 namespace Sharing.Province.XieTong.Send
 {
-    public interface IGetVisitInfoReceiveRepository:IRepository<GetVisitInfoReceive>
+    public interface IGetVisitInfoReceiveRepository : IRepository<GetVisitInfoReceive>
     {
     }
 }