TANG JIANG 2 years ago
parent
commit
26701295ac

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

@@ -247,6 +247,17 @@ public class DefaultPusher : IProvincePusher
         return response.ReturnInfo;
     }
 
+    /// <summary>
+    /// 知识库变更
+    /// </summary>
+    /// <param name="request"></param>
+    /// <param name="cancellationToken"></param>
+    /// <returns></returns>
+    public async Task<BaseProvinceResponse> PushGetKnowledgeInfoUpdateAsync(GetKnowledgeInfoUpdateRequest request, CancellationToken cancellationToken)
+    {
+        var response = await _huiJuClient.RequestAsync<GetKnowledgeInfoUpdateRequest, ProvinceResponse>(request, cancellationToken);
+        return response.ReturnInfo;
+    }
 
     #endregion
 }

+ 1 - 1
src/Sharing.Province/Dtos/XieTong/Knowledge/GetKnowledgeInfoSendRequest.cs

@@ -8,7 +8,7 @@ namespace Sharing.Province.Dtos.XieTong.Knowledge
     /// </summary>
     public class GetKnowledgeInfoSendRequest : ProvinceRequest<KnowledgeInfoSendInfo>
     {
-        public override string GetRequestUrl() => "get_knowledge_info_update";
+        public override string GetRequestUrl() => "get_knowledge_info_send";
 
         public override string GetHttpMethod() => HttpMethods.Post;
     }

+ 94 - 0
src/Sharing.Province/Dtos/XieTong/Knowledge/GetKnowledgeInfoUpdateRequest.cs

@@ -0,0 +1,94 @@
+using Microsoft.AspNetCore.Http;
+using System.Text.Json.Serialization;
+
+namespace Sharing.Province.Dtos.XieTong.Knowledge
+{
+    /// <summary>
+    /// 知识库变更
+    /// </summary>
+    public class GetKnowledgeInfoUpdateRequest : ProvinceRequest<GetKnowledgeInfoUpdateInfo>
+    {
+        public override string GetRequestUrl() => "get_knowledge_info_update";
+
+        public override string GetHttpMethod() => HttpMethods.Post;
+    }
+
+    /// <summary>
+    /// 知识库变更
+    /// </summary>
+    public class GetKnowledgeInfoUpdateInfo
+    {
+        /// <summary>
+        /// 知识类别code
+        /// </summary>
+        [JsonPropertyName("CATEGORYCODE")]
+        public string CategoryCode { get; set; }
+
+        /// <summary>
+        /// 知识类别名称
+        /// </summary>
+        [JsonPropertyName("CATEGORYNAME")]
+        public string CategoryName { get; set; }
+
+        /// <summary>
+        /// 发布人
+        /// </summary>
+        [JsonPropertyName("PUBLISHPERSON")]
+        public string PublishPerson { get; set; }
+
+        /// <summary>
+        /// 所属部门名称
+        /// </summary>
+        [JsonPropertyName("OUNAME")]
+        public string OuName { get; set; }
+
+        /// <summary>
+        /// 知识名称
+        /// </summary>
+        [JsonPropertyName("KNAME")]
+        public string KName { get; set; }
+
+        /// <summary>
+        /// 知识内容
+        /// </summary>
+        [JsonPropertyName("KCONTENT")]
+        public string KContent { get; set; }
+
+        /// <summary>
+        /// 发布日期
+        /// </summary>
+        [JsonPropertyName("CREATDATE")]
+        public DateTime? CreatDate { get; set; }
+
+        /// <summary>
+        /// 生效时间
+        /// </summary>
+        [JsonPropertyName("BEGINDATE")]
+        public DateTime? BeginDate { get; set; }
+
+        /// <summary>
+        /// 失效时间
+        /// </summary>
+        [JsonPropertyName("DISABLEDATE")]
+        public DateTime? DisableDate { get; set; }
+
+        /// <summary>
+        /// 上报知识唯一标识
+        /// </summary>
+        [JsonPropertyName("UID")]
+        public string UID { get; set; }
+
+        /// <summary>
+        /// 行政区划代码
+        /// </summary>
+        [JsonPropertyName("AREA_CODE")]
+        public string AreaCode { get; set; }
+
+        /// <summary>
+        /// 材料标识
+        /// </summary>
+        [JsonPropertyName("CLIENG_GUID")]
+        public string CliengGuid { get; set; }
+
+    }
+}

+ 70 - 0
src/Sharing.Province/Handlers/Knowledge/GetKnowledgeInfoUpdateHandler.cs

@@ -0,0 +1,70 @@
+using MapsterMapper;
+using MediatR;
+using Sharing.Notifications.Knowledge;
+using Sharing.Province.Dtos.XieTong.Knowledge;
+using Sharing.Province.XieTong.Knowledge;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Sharing.Province.Handlers.Knowledge
+{
+    /// <summary>
+    /// 知识库变更
+    /// </summary>
+    public class GetKnowledgeInfoUpdateHandler : INotificationHandler<GetKnowledgeInfoUpdateNotification>
+    {
+        private readonly IChannelConfigurationManager _channelConfigurationManager;
+        private readonly PusherProvider _pusherProvider;
+        private readonly IMapper _mapper;
+        private readonly IGetKnowledgeInfoUpdateRepository _getKnowledgeInfoUpdateRepository ;
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="channelConfigurationManager"></param>
+        /// <param name="pusherProvider"></param>
+        /// <param name="mapper"></param>
+        /// <param name="getKnowledgeInfoUpdateRepository"></param>
+        public GetKnowledgeInfoUpdateHandler(IChannelConfigurationManager channelConfigurationManager, PusherProvider pusherProvider, IMapper mapper
+            , IGetKnowledgeInfoUpdateRepository getKnowledgeInfoUpdateRepository)
+        {
+            _channelConfigurationManager = channelConfigurationManager;
+            _pusherProvider = pusherProvider;
+            _mapper = mapper;
+            _getKnowledgeInfoUpdateRepository = getKnowledgeInfoUpdateRepository;
+        }
+
+        /// <summary>
+        /// 知识库变更 
+        /// </summary>
+        /// <param name="notification"></param>
+        /// <param name="cancellationToken"></param>
+        /// <returns></returns>
+        public async Task Handle(GetKnowledgeInfoUpdateNotification notification, CancellationToken cancellationToken = default)
+        {
+            var pusher = _pusherProvider.CreatePusher(_channelConfigurationManager);
+
+            var dataReceive = _mapper.Map<GetKnowledgeInfoUpdateInfo>(notification.Data);
+
+            var request = new GetKnowledgeInfoUpdateRequest();
+            request.SetData(dataReceive);
+
+            var response = await pusher.PushGetKnowledgeInfoUpdateAsync(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 _getKnowledgeInfoUpdateRepository.UpdateAsync(notification.Data);
+            }
+        }
+    }
+}

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

@@ -160,5 +160,12 @@ public interface IProvincePusher
     /// <returns></returns>
     Task<BaseProvinceResponse> PushGetKnowledgeInfoSendAsync(GetKnowledgeInfoSendRequest request, CancellationToken cancellationToken);
 
+    /// <summary>
+    /// 知识库变更
+    /// </summary>
+    /// <param name="request"></param>
+    /// <param name="cancellationToken"></param>
+    /// <returns></returns>
+    Task<BaseProvinceResponse> PushGetKnowledgeInfoUpdateAsync(GetKnowledgeInfoUpdateRequest request, CancellationToken cancellationToken);
     #endregion
 }

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

@@ -216,5 +216,16 @@ public class SmartPusher : IProvincePusher
         throw new NotImplementedException();
     }
 
+    /// <summary>
+    /// 知识库变更
+    /// </summary>
+    /// <param name="request"></param>
+    /// <param name="cancellationToken"></param>
+    /// <returns></returns>
+    public async Task<BaseProvinceResponse> PushGetKnowledgeInfoUpdateAsync(GetKnowledgeInfoUpdateRequest request, CancellationToken cancellationToken)
+    {
+        throw new NotImplementedException();
+    }
+
     #endregion
 }

+ 14 - 0
src/Sharing.Repository/Province/XieTong/Knowledge/GetKnowledgeInfoUpdateRepository.cs

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

+ 11 - 0
src/Sharing/Notifications/Knowledge/GetKnowledgeInfoUpdateNotification.cs

@@ -0,0 +1,11 @@
+using MediatR;
+using Sharing.Province.XieTong.Knowledge;
+
+namespace Sharing.Notifications.Knowledge
+{
+    /// <summary>
+    /// 知识库变更  
+    /// </summary>
+    /// <param name="Data"></param>
+    public record GetKnowledgeInfoUpdateNotification(GetKnowledgeInfoUpdate Data) : INotification;
+}

+ 97 - 0
src/Sharing/Province/XieTong/Knowledge/GetKnowledgeInfoUpdate.cs

@@ -0,0 +1,97 @@
+using SqlSugar;
+using System.ComponentModel;
+using XF.Domain.Repository;
+
+namespace Sharing.Province.XieTong.Knowledge
+{
+    /// <summary>
+    /// 知识库变更    
+    /// </summary>
+    [Description("知识库变更")]
+    public class GetKnowledgeInfoUpdate : FullStateEntity
+    {
+        /// <summary>
+        /// 知识类别code
+        /// </summary>
+        [SugarColumn(ColumnDescription = "知识类别code", ColumnDataType = "varchar(50)")]
+        public string CategoryCode { get; set; }
+
+        /// <summary>
+        /// 知识类别名称
+        /// </summary>
+        [SugarColumn(ColumnDescription = "知识类别名称", ColumnDataType = "varchar(50)")]
+        public string CategoryName { get; set; }
+
+        /// <summary>
+        /// 发布人
+        /// </summary>
+        [SugarColumn(ColumnDescription = "发布人", ColumnDataType = "varchar(50)")]
+        public string PublishPerson { get; set; }
+
+        /// <summary>
+        /// 所属部门名称
+        /// </summary>
+        [SugarColumn(ColumnDescription = "所属部门名称", ColumnDataType = "varchar(200)")]
+        public string OuName { get; set; }
+
+        /// <summary>
+        /// 知识名称
+        /// </summary>
+        [SugarColumn(ColumnDescription = "知识名称", ColumnDataType = "varchar(200)")]
+        public string KName { get; set; }
+
+        /// <summary>
+        /// 知识内容
+        /// </summary>
+        [SugarColumn(ColumnDescription = "知识内容", ColumnDataType = "text")]
+        public string KContent { get; set; }
+
+        /// <summary>
+        /// 发布日期
+        /// </summary>
+        [SugarColumn(ColumnDescription = "发布日期")]
+        public DateTime? CreatDate { get; set; }
+
+        /// <summary>
+        /// 生效时间
+        /// </summary>
+        [SugarColumn(ColumnDescription = "生效时间")]
+        public DateTime? BeginDate { get; set; }
+
+        /// <summary>
+        /// 失效时间
+        /// </summary>
+        [SugarColumn(ColumnDescription = "失效时间")]
+        public DateTime? DisableDate { get; set; }
+
+        /// <summary>
+        /// 上报知识唯一标识
+        /// </summary>
+        [SugarColumn(ColumnDescription = "上报知识唯一标识", ColumnDataType = "varchar(50)")]
+        public string UID { get; set; }
+
+        /// <summary>
+        /// 行政区划代码
+        /// </summary>
+        [SugarColumn(ColumnDescription = "行政区划代码", ColumnDataType = "varchar(24)")]
+        public string AreaCode { get; set; }
+
+        /// <summary>
+        /// 材料标识
+        /// </summary>
+        [SugarColumn(ColumnDescription = "材料标识", ColumnDataType = "varchar(50)", IsNullable = true)]
+        public string CliengGuid { get; set; }
+
+        /// <summary>
+        /// 接口返回结果
+        /// </summary>
+        [SugarColumn(ColumnDataType = "json", IsJson = true, IsNullable = true)]
+        public string ReturnResult { get; set; }
+
+        /// <summary>
+        /// 同步状态 0:待同步;	  1:同步成功;	 2:同步失败;
+        /// </summary>
+        [SugarColumn(ColumnDescription = "同步状态", ColumnDataType = "varchar(1)", IsNullable = true)]
+        public string SyncState { get; set; } = "0";
+    }
+}

+ 8 - 0
src/Sharing/Province/XieTong/Knowledge/IGetKnowledgeInfoUpdateRepository.cs

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