TANG JIANG 1 year ago
parent
commit
7fe3dee9e5

+ 47 - 2
src/Sharing.Api/Controllers/HotlineMessageReceiveController.cs

@@ -15,6 +15,7 @@ using Sharing.Province.HuiJu.Send;
 using Sharing.Province.XieTong.Knowledge;
 using Sharing.Province.XieTong.Receive;
 using Sharing.Province.XieTong.Send;
+using SharpCompress.Readers;
 
 namespace Sharing.Api.Controllers
 {
@@ -48,6 +49,8 @@ namespace Sharing.Api.Controllers
         private readonly IGetKnowledgeInfoUpdateRepository _getKnowledgeInfoUpdateRepository;
         private readonly IGetKnowledgeInfoAbandonRepository _getKnowledgeInfoAbandonRepository;
         private readonly ISendRealTimeStatusRepository _sendRealTimeStatusRepository;
+        private readonly IScreenCaseInfoSendRepository _screenCaseInfoSendRepository;
+        private readonly IZMHDCaseInfoPublicRepository _zMHDCaseInfoPublicRepository;
 
         /// <summary>
         /// 
@@ -76,6 +79,8 @@ namespace Sharing.Api.Controllers
         /// <param name="getKnowledgeInfoUpdateRepository"></param>
         /// <param name="getKnowledgeInfoAbandonRepository"></param>
         /// <param name="sendRealTimeStatusRepository"></param>
+        /// <param name="screenCaseInfoSendRepository"></param>
+        /// <param name="zMHDCaseInfoPublicRepository"></param>
         public HotlineMessageReceiveController(IMediator mediator, ILogger<HotlineMsgReceiver> logger, IMapper mapper
             , IGetCaseResultReceiveRepository getCaseResultReceiveRepository, IGetCaseProcessReceiveRepository getCaseProcessReceiveRepository
             , IGetVisitInfoReceiveRepository getVisitInfoReceiveRepository, IGetCaseBackApplyRepository getCaseBackApplyRepository
@@ -87,7 +92,8 @@ namespace Sharing.Api.Controllers
             , ISupplyCaseInfoSendRepository supplyCaseInfoSendRepository, IRevokeCaseInfoRepository revokeCaseInfoRepository
             , IRemindCaseInfoRepository remindCaseInfoRepository, IGetKnowledgeInfoSendRepository getKnowledgeInfoSendRepository
             , IGetKnowledgeInfoUpdateRepository getKnowledgeInfoUpdateRepository, IGetKnowledgeInfoAbandonRepository getKnowledgeInfoAbandonRepository
-            , ISendRealTimeStatusRepository sendRealTimeStatusRepository)
+            , ISendRealTimeStatusRepository sendRealTimeStatusRepository, IScreenCaseInfoSendRepository screenCaseInfoSendRepository
+            , IZMHDCaseInfoPublicRepository zMHDCaseInfoPublicRepository)
         {
             _mediator = mediator;
             _logger = logger;
@@ -113,6 +119,8 @@ namespace Sharing.Api.Controllers
             _getKnowledgeInfoUpdateRepository = getKnowledgeInfoUpdateRepository;
             _getKnowledgeInfoAbandonRepository = getKnowledgeInfoAbandonRepository;
             _sendRealTimeStatusRepository = sendRealTimeStatusRepository;
+            _screenCaseInfoSendRepository = screenCaseInfoSendRepository;
+            _zMHDCaseInfoPublicRepository = zMHDCaseInfoPublicRepository;
         }
         #endregion
 
@@ -250,6 +258,43 @@ namespace Sharing.Api.Controllers
             await _mediator.Publish(new SendSuperviseResultInfoNotification(data));
         }
 
+        /// <summary>
+        /// 工单发起甄别  
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        [NonAction]
+        //[CapSubscribe(Hotline.Share.Mq.EventNames.HotlineOrderScreenCaseInfoSend)]
+        public async Task ScreenCaseInfoSend(ScreenCaseInfoSendInfo dto)
+        {
+            var data = _mapper.Map<ScreenCaseInfoSend>(dto);
+
+            //将上报信息写入本地库
+            var id = await _screenCaseInfoSendRepository.AddAsync(data);
+
+            data.Id = id;
+            //信息上报
+            await _mediator.Publish(new ScreenCaseInfoSendNotification(data));
+        }
+
+        /// <summary>
+        /// 政民互动提交公开  
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        [NonAction]
+        //[CapSubscribe(Hotline.Share.Mq.EventNames.HotlineOrderZMHDCaseInfoPublic)]
+        public async Task ZMHDCaseInfoPublic(ZMHDCaseInfoPublicInfo dto)
+        {
+            var data = _mapper.Map<ZMHDCaseInfoPublic>(dto);
+
+            //将上报信息写入本地库
+            var id = await _zMHDCaseInfoPublicRepository.AddAsync(data);
+
+            data.Id = id;
+            //信息上报
+            await _mediator.Publish(new ZMHDCaseInfoPublicNotification(data));
+        }
         #endregion
 
         #region 汇聚-第二批次
@@ -400,7 +445,7 @@ namespace Sharing.Api.Controllers
                     break;
             }
 
-          //  submitCaseInfo.Id = await _submitCaseInfoRepository.AddAsync(submitCaseInfo, HttpContext.RequestAborted);
+            //  submitCaseInfo.Id = await _submitCaseInfoRepository.AddAsync(submitCaseInfo, HttpContext.RequestAborted);
 
             await _mediator.Publish(new OrderCreatedNotification(submitCaseInfo));
         }

+ 14 - 1
src/Sharing.Province/DefaultPusher.cs

@@ -120,8 +120,21 @@ public class DefaultPusher : IProvincePusher
         var response = await _xieTongClient.RequestAsync<ScreenCaseInfoSendRequest, ProvinceResponse>(request, cancellationToken);
         return response?.ReturnInfo;
     }
+
+    /// <summary>
+    /// 政民互动提交公开
+    /// </summary>
+    /// <param name="request"></param>
+    /// <param name="cancellationToken"></param>
+    /// <returns></returns>
+    public async Task<BaseProvinceResponse> PushZMHDCaseInfoPublicAsync(ZMHDCaseInfoPublicRequest request, CancellationToken cancellationToken)
+    {
+        var response = await _xieTongClient.RequestAsync<ZMHDCaseInfoPublicRequest, ProvinceResponse>(request, cancellationToken);
+        return response?.ReturnInfo;
+    }
+
     #endregion
-    
+
     #region 汇聚-第二批次
     /// <summary>
     /// 服务工单受理

+ 77 - 0
src/Sharing.Province/Dtos/XieTong/Send/ZMHDCaseInfoPublicRequest.cs

@@ -0,0 +1,77 @@
+using Microsoft.AspNetCore.Http;
+using System.Text.Json.Serialization;
+
+namespace Sharing.Province.Dtos.XieTong.Send
+{
+    /// <summary>
+    /// 政民互动提交公开
+    /// </summary>
+    public class ZMHDCaseInfoPublicRequest : ProvinceRequest<ZMHDCaseInfoPublicInfo>
+    {
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <returns></returns>
+        public override string GetRequestUrl() => "zmhd_case_info_public";
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <returns></returns>
+        public override string GetHttpMethod() => HttpMethods.Post;
+    }
+
+    /// <summary>
+    /// 政民互动提交公开
+    /// </summary>
+    public class ZMHDCaseInfoPublicInfo : BaseProvinceModel
+    {
+        /// <summary>
+        /// 部门答复时间
+        /// </summary>
+        [JsonPropertyName("ANSWER_TIME")]
+        public DateTime? AnswerTime { get; set; }
+
+        /// <summary>
+        /// 答复部门名称
+        /// </summary>
+        [JsonPropertyName("ANSWER_OU")]
+        public string AnswerOu { get; set; }
+
+        /// <summary>
+        /// 答复内容
+        /// </summary>
+        [JsonPropertyName("ANSWER_CONTENT")]
+        public string AnswerContent { get; set; }
+
+        /// <summary>
+        /// 初审人姓名
+        /// </summary>
+        [JsonPropertyName("AUDIT_FIRST_NAME")]
+        public string AuditFirstName { get; set; }
+
+        /// <summary>
+        /// 初审时间
+        /// </summary>
+        [JsonPropertyName("AUDIT_FIRST_TIME")]
+        public DateTime? AuditFirstTime { get; set; }
+
+        /// <summary>
+        /// 二审人姓名
+        /// </summary>
+        [JsonPropertyName("AUDIT_SECOND_NAME")]
+        public string AuditSecondName { get; set; }
+
+        /// <summary>
+        /// 公开时间
+        /// </summary>
+        [JsonPropertyName("PUBLISH_DATE")]
+        public DateTime? PublishDate { get; set; }
+
+        /// <summary>
+        /// 公开意见
+        /// </summary>
+        [JsonPropertyName("PUBLIC_OPINION")]
+        public string PublicOpinion { get; set; }
+    }
+}

+ 4 - 1
src/Sharing.Province/Handlers/XieTong/ScreenCaseInfoSendHandler.cs

@@ -6,6 +6,9 @@ using Sharing.Province.XieTong.Send;
 
 namespace Sharing.Province.Handlers.XieTong
 {
+    /// <summary>
+    /// 工单发起甄别
+    /// </summary>
     public class ScreenCaseInfoSendHandler : INotificationHandler<ScreenCaseInfoSendNotification>
     {
         private readonly IChannelConfigurationManager _channelConfigurationManager;
@@ -30,7 +33,7 @@ namespace Sharing.Province.Handlers.XieTong
         }
 
         /// <summary>
-        /// 服务工单申请延时
+        /// 工单发起甄别
         /// </summary>
         /// <param name="notification"></param>
         /// <param name="cancellationToken"></param>

+ 65 - 0
src/Sharing.Province/Handlers/XieTong/ZMHDCaseInfoPublicHandler.cs

@@ -0,0 +1,65 @@
+using MapsterMapper;
+using MediatR;
+using Sharing.Notifications.XieTong;
+using Sharing.Province.Dtos.XieTong.Send;
+using Sharing.Province.XieTong.Send;
+
+namespace Sharing.Province.Handlers.XieTong
+{
+    /// <summary>
+    /// 政民互动提交公开
+    /// </summary>
+    public class ZMHDCaseInfoPublicHandler : INotificationHandler<ZMHDCaseInfoPublicNotification>
+    {
+        private readonly IChannelConfigurationManager _channelConfigurationManager;
+        private readonly PusherProvider _pusherProvider;
+        private readonly IMapper _mapper;
+        private readonly IZMHDCaseInfoPublicRepository _zMHDCaseInfoPublicRepository;
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="channelConfigurationManager"></param>
+        /// <param name="pusherProvider"></param>
+        /// <param name="mapper"></param>
+        /// <param name="zMHDCaseInfoPublicRepository"></param>
+        public ZMHDCaseInfoPublicHandler(IChannelConfigurationManager channelConfigurationManager, PusherProvider pusherProvider, IMapper mapper
+            , IZMHDCaseInfoPublicRepository zMHDCaseInfoPublicRepository)
+        {
+            _channelConfigurationManager = channelConfigurationManager;
+            _pusherProvider = pusherProvider;
+            _mapper = mapper;
+            _zMHDCaseInfoPublicRepository = zMHDCaseInfoPublicRepository;
+        }
+
+        /// <summary>
+        /// 政民互动提交公开
+        /// </summary>
+        /// <param name="notification"></param>
+        /// <param name="cancellationToken"></param>
+        /// <returns></returns>
+        public async Task Handle(ZMHDCaseInfoPublicNotification notification, CancellationToken cancellationToken = default)
+        {
+            var pusher = _pusherProvider.CreatePusher(_channelConfigurationManager);
+
+            var dataReceive = _mapper.Map<ZMHDCaseInfoPublicInfo>(notification.Data);
+
+            var request = new ZMHDCaseInfoPublicRequest();
+            request.SetData(dataReceive);
+
+            var response = await pusher.PushZMHDCaseInfoPublicAsync(request, cancellationToken);
+
+            //如果推送成功修改数据状态
+            if (response != null)
+            {
+                if (response.Code == "1")
+                    notification.Data.SyncState = "1";
+                else
+                    notification.Data.SyncState = "2";
+
+                notification.Data.ReturnResult = Newtonsoft.Json.JsonConvert.SerializeObject(response);
+                await _zMHDCaseInfoPublicRepository.UpdateAsync(notification.Data);
+            }
+        }
+    }
+}

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

@@ -73,6 +73,15 @@ public interface IProvincePusher
     /// <param name="cancellationToken"></param>
     /// <returns></returns>
     Task<BaseProvinceResponse> PushScreenCaseInfoSendAsync(ScreenCaseInfoSendRequest request, CancellationToken cancellationToken);
+
+    /// <summary>
+    /// 政民互动提交公开
+    /// </summary>
+    /// <param name="request"></param>
+    /// <param name="cancellationToken"></param>
+    /// <returns></returns>
+    Task<BaseProvinceResponse> PushZMHDCaseInfoPublicAsync(ZMHDCaseInfoPublicRequest request, CancellationToken cancellationToken);
+
     #endregion
 
     #region 汇聚-第二批次

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

@@ -98,6 +98,17 @@ public class SmartPusher : IProvincePusher
     {
         throw new NotImplementedException();
     }
+
+    /// <summary>
+    /// 政民互动提交公开
+    /// </summary>
+    /// <param name="request"></param>
+    /// <param name="cancellationToken"></param>
+    /// <returns></returns>
+    public async Task<BaseProvinceResponse> PushZMHDCaseInfoPublicAsync(ZMHDCaseInfoPublicRequest request, CancellationToken cancellationToken)
+    {
+        throw new NotImplementedException();
+    }
     #endregion
 
     #region 汇聚-第二批次

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

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

+ 11 - 0
src/Sharing/Notifications/XieTong/ZMHDCaseInfoPublicNotification.cs

@@ -0,0 +1,11 @@
+using MediatR;
+using Sharing.Province.XieTong.Send;
+
+namespace Sharing.Notifications.XieTong
+{
+    /// <summary>
+    /// 政民互动提交公开  
+    /// </summary>
+    /// <param name="Data"></param>
+    public record ZMHDCaseInfoPublicNotification(ZMHDCaseInfoPublic Data) : INotification;
+}

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

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

+ 61 - 0
src/Sharing/Province/XieTong/Send/ZMHDCaseInfoPublic.cs

@@ -0,0 +1,61 @@
+using Sharing.Province.HuiJu;
+using SqlSugar;
+using System.ComponentModel;
+
+namespace Sharing.Province.XieTong.Send
+{
+    /// <summary>
+    /// 政民互动提交公开    
+    /// </summary>
+    [Description("政民互动提交公开")]
+    public class ZMHDCaseInfoPublic : SendOrderResult
+    {
+        /// <summary>
+        /// 部门答复时间
+        /// </summary>
+        [SugarColumn(ColumnDescription = "部门答复时间")]
+        public DateTime? ANSWER_TIME { get; set; }
+
+        /// <summary>
+        /// 答复部门名称
+        /// </summary>
+        [SugarColumn(ColumnDescription = "答复部门名称", ColumnDataType = "varchar(100)")]
+        public string ANSWER_OU { get; set; }
+
+        /// <summary>
+        /// 答复内容
+        /// </summary>
+        [SugarColumn(ColumnDescription = "答复内容", ColumnDataType = "text")]
+        public string ANSWER_CONTENT { get; set; }
+
+        /// <summary>
+        /// 初审人姓名
+        /// </summary>
+        [SugarColumn(ColumnDescription = "初审人姓名", ColumnDataType = "varchar(100)")]
+        public string AUDIT_FIRST_NAME { get; set; }
+
+        /// <summary>
+        /// 初审时间
+        /// </summary>
+        [SugarColumn(ColumnDescription = "初审时间")]
+        public DateTime? AUDIT_FIRST_TIME { get; set; }
+
+        /// <summary>
+        /// 二审人姓名
+        /// </summary>
+        [SugarColumn(ColumnDescription = "二审人姓名", ColumnDataType = "varchar(100)")]
+        public string AUDIT_SECOND_NAME { get; set; }
+
+        /// <summary>
+        /// 公开时间
+        /// </summary>
+        [SugarColumn(ColumnDescription = "公开时间")]
+        public DateTime? PUBLISH_DATE { get; set; }
+
+        /// <summary>
+        /// 公开意见
+        /// </summary>
+        [SugarColumn(ColumnDescription = "公开意见", ColumnDataType = "varchar(300)")]
+        public string PUBLIC_OPINION { get; set; }
+    }
+}