TANG JIANG 2 years ago
parent
commit
94e3cfe9f9

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

@@ -207,7 +207,7 @@ namespace Sharing.Api.Controllers
         #endregion
 
         /// <summary>
-        /// 服务工单受理
+        /// 服务工单受理  --- 部分字段未赋值处理
         /// </summary>
         /// <param name="dto"></param>
         /// <returns></returns>
@@ -242,7 +242,7 @@ namespace Sharing.Api.Controllers
                 CaseLngLat = "",
                 CaseEmotion = "",
                 CaseAddress = "",
-                EventDate = "",
+                EventDate = null,
                 CaseGoal = "",
                 ThemeSerial = "",
                 AdviseType = "",

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

@@ -1,5 +1,4 @@
 using Sharing.Province.Dtos;
-using Sharing.Province.Dtos.HuiJu;
 using Sharing.Province.Dtos.HuiJu.Send;
 using Sharing.Province.Dtos.XieTong.Send;
 
@@ -121,4 +120,16 @@ public class DefaultPusher : IProvincePusher
         var response = await _huiJuClient.RequestAsync<SubmitCaseInfoRequest, ProvinceResponse>(request, cancellationToken);
         return response.ReturnInfo;
     }
+
+    /// <summary>
+    /// 服务工单处理结果
+    /// </summary>
+    /// <param name="request"></param>
+    /// <param name="cancellationToken"></param>
+    /// <returns></returns>
+    public async Task<BaseProvinceResponse> PushSubmitCaseResultAsync(SubmitCaseResultRequest request, CancellationToken cancellationToken)
+    {
+        var response = await _huiJuClient.RequestAsync<SubmitCaseResultRequest, ProvinceResponse>(request, cancellationToken);
+        return response.ReturnInfo;
+    }
 }

+ 146 - 0
src/Sharing.Province/Dtos/HuiJu/Send/SubmitCaseResultRequest.cs

@@ -0,0 +1,146 @@
+using Microsoft.AspNetCore.Http;
+using System.Text.Json.Serialization;
+
+namespace Sharing.Province.Dtos.HuiJu.Send
+{
+    /// <summary>
+    /// 服务工单处理结果
+    /// </summary>
+    public class SubmitCaseResultRequest : ProvinceRequest<SubmitCaseResultData>
+    {
+        //服务工单处理结果
+
+        public override string GetRequestUrl() => "submit_case_result";
+
+        public override string GetHttpMethod() => HttpMethods.Post;
+    }
+
+    /// <summary>
+    /// 服务工单处理结果
+    /// </summary>
+    public class SubmitCaseResultData
+    {
+        [JsonPropertyName("jsonList")]
+        public IReadOnlyList<CaseResult> CaseResults { get; set; }
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class CaseResult : BaseModel
+    {
+        /// <summary>
+        /// 答复单位
+        /// </summary>
+        [JsonPropertyName("DEPT_NAME")]
+        public string DeptName { get; set; }
+
+        /// <summary>
+        /// 答复时间
+        /// </summary>
+        [JsonPropertyName("FINISH_TIME")]
+        public DateTime? FinishTime { get; set; }
+
+        /// <summary>
+        /// 答复人员
+        /// </summary>
+        [JsonPropertyName("FINISH_NAME")]
+        public string FinishName { get; set; }
+
+        /// <summary>
+        /// 办理情况
+        /// </summary>
+        [JsonPropertyName("FINISH_NOTE")]
+        public string FinishNote { get; set; }
+
+        /// <summary>
+        /// 办理单位
+        /// </summary>
+        [JsonPropertyName("END_DEPT")]
+        public string EndDept { get; set; }
+
+        /// <summary>
+        /// 办理人员
+        /// </summary>
+        [JsonPropertyName("END_NAME")]
+        public string EndName { get; set; }
+
+        /// <summary>
+        /// 联系时间
+        /// </summary>
+        [JsonPropertyName("CONCACT_TIME")]
+        public DateTime? ConcactTime { get; set; }
+
+        /// <summary>
+        /// 联系方式
+        /// </summary>
+        [JsonPropertyName("CONCACT_TYPE")]
+        public string ConcactType { get; set; }
+
+        /// <summary>
+        /// 办理操作
+        /// </summary>
+        [JsonPropertyName("FINISH_TYPE")]
+        public string FinishType { get; set; }
+
+        /// <summary>
+        /// 办理时长
+        /// </summary>
+        [JsonPropertyName("HANDLETIME_LONG")]
+        public int HandleTimeLong { get; set; }
+
+        /// <summary>
+        /// 应签收时间
+        /// </summary>
+        [JsonPropertyName("SIGN_TIME_BF")]
+        public DateTime? SignTimeBf { get; set; }
+
+        /// <summary>
+        /// 签收时间
+        /// </summary>
+        [JsonPropertyName("SIGN_TIME")]
+        public DateTime? SignTime { get; set; }
+
+        /// <summary>
+        /// 应反馈时间
+        /// </summary>
+        [JsonPropertyName("FDBACKTIME_BF")]
+        public DateTime? FdBackTime_Bf { get; set; }
+
+        /// <summary>
+        /// 反馈时间
+        /// </summary>
+        [JsonPropertyName("FDBACKTIME")]
+        public DateTime? FdBackTime { get; set; }
+
+        /// <summary>
+        /// 交办时间
+        /// </summary>
+        [JsonPropertyName("SEND_TIME")]
+        public DateTime? SendTime { get; set; }
+
+        /// <summary>
+        /// 反馈意见
+        /// </summary>
+        [JsonPropertyName("FDBACK")]
+        public string FdBack { get; set; }
+
+        /// <summary>
+        /// 办结单位所在区县区域代码
+        /// </summary>
+        [JsonPropertyName("END_AREACODE")]
+        public string EndAreaCode { get; set; }
+
+        /// <summary>
+        /// 办结单位所在区县名称
+        /// </summary>
+        [JsonPropertyName("END_AREANAME")]
+        public string EndAreaName { get; set; }
+
+        /// <summary>
+        /// 工单办理过程中交办单位
+        /// </summary>
+        [JsonPropertyName("BEIZHU")]
+        public string BeiZhu { get; set; }
+    }
+}

+ 70 - 0
src/Sharing.Province/Handlers/HuiJu/SubmitCaseResultHandler.cs

@@ -0,0 +1,70 @@
+using MapsterMapper;
+using MediatR;
+using Sharing.Notifications.HuiJu;
+using Sharing.Province.Dtos.HuiJu.Send;
+using Sharing.Province.HuiJu.Send;
+
+namespace Sharing.Province.Handlers.HuiJu
+{
+    /// <summary>
+    /// 
+    /// </summary>
+    public class SubmitCaseResultHandler : INotificationHandler<SubmitCaseResultNotification>
+    {
+        private readonly IChannelConfigurationManager _channelConfigurationManager;
+        private readonly PusherProvider _pusherProvider;
+        private readonly IMapper _mapper;
+        private readonly ISubmitCaseResultRepository _submitCaseResultRepository;
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="channelConfigurationManager"></param>
+        /// <param name="pusherProvider"></param>
+        public SubmitCaseResultHandler(IChannelConfigurationManager channelConfigurationManager, PusherProvider pusherProvider, IMapper mapper, ISubmitCaseResultRepository submitCaseResultRepository)
+        {
+            _channelConfigurationManager = channelConfigurationManager;
+            _pusherProvider = pusherProvider;
+            _mapper = mapper;
+            _submitCaseResultRepository = submitCaseResultRepository;
+        }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="notification"></param>
+        /// <param name="cancellationToken"></param>
+        /// <returns></returns>
+        public async Task Handle(SubmitCaseResultNotification notification, CancellationToken cancellationToken)
+        {
+            var order = notification.DataOrder;
+            var pusher = _pusherProvider.CreatePusher(_channelConfigurationManager);
+
+            var dataReceive = _mapper.Map<CaseResult>(order);
+
+            var data = new SubmitCaseResultData
+            {
+                CaseResults = new List<CaseResult>
+                {
+                    dataReceive
+                }
+            };
+            var request = new SubmitCaseResultRequest();
+            request.SetData(data);
+
+            var response = await pusher.PushSubmitCaseResultAsync(request, cancellationToken);
+
+            //如果推送成功修改数据状态
+            if (response != null)
+            {
+                if (response.Code == "1")
+                    notification.DataOrder.SyncState = "1";
+                else
+                    notification.DataOrder.SyncState = "2";
+
+                notification.DataOrder.ReturnResult = Newtonsoft.Json.JsonConvert.SerializeObject(response);
+                await _submitCaseResultRepository.UpdateAsync(notification.DataOrder);
+            }
+        }
+    }
+}

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

@@ -73,4 +73,12 @@ public interface IProvincePusher
     /// <param name="cancellationToken"></param>
     /// <returns></returns>
     Task<BaseProvinceResponse> PushOrderCreatedAsync(SubmitCaseInfoRequest request, CancellationToken cancellationToken);
+
+    /// <summary>
+    /// 服务工单处理结果
+    /// </summary>
+    /// <param name="request"></param>
+    /// <param name="cancellationToken"></param>
+    /// <returns></returns>
+    Task<BaseProvinceResponse> PushSubmitCaseResultAsync(SubmitCaseResultRequest request, CancellationToken cancellationToken);
 }

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

@@ -97,4 +97,15 @@ public class SmartPusher : IProvincePusher
     {
         throw new NotImplementedException();
     }
+
+    /// <summary>
+    /// 服务工单处理结果
+    /// </summary>
+    /// <param name="request"></param>
+    /// <param name="cancellationToken"></param>
+    /// <returns></returns>
+    public async Task<BaseProvinceResponse> PushSubmitCaseResultAsync(SubmitCaseResultRequest request, CancellationToken cancellationToken)
+    {
+        throw new NotImplementedException();
+    }
 }

+ 14 - 0
src/Sharing.Repository/Province/HuiJu/SubmitCaseResultRepository.cs

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

+ 7 - 0
src/Sharing/Notifications/HuiJu/SubmitCaseResultNotification.cs

@@ -0,0 +1,7 @@
+using MediatR;
+using Sharing.Province.HuiJu.Send;
+
+namespace Sharing.Notifications.HuiJu
+{
+    public record SubmitCaseResultNotification(SubmitCaseResult DataOrder) : INotification;
+}

+ 8 - 0
src/Sharing/Province/HuiJu/Send/ISubmitCaseResultRepository.cs

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

+ 127 - 0
src/Sharing/Province/HuiJu/Send/SubmitCaseResult.cs

@@ -0,0 +1,127 @@
+using SqlSugar;
+using System.ComponentModel;
+
+namespace Sharing.Province.HuiJu.Send
+{
+    /// <summary>
+    /// 服务工单处理结果
+    /// </summary>
+    [Description("服务工单处理结果")]
+    public class SubmitCaseResult : BaseSendAllResult
+    {
+        /// <summary>
+        /// 答复单位
+        /// </summary>
+        [SugarColumn(ColumnDescription = "答复单位", ColumnDataType = "varchar(200)")]
+        public string DeptName { get; set; }
+
+        /// <summary>
+        /// 答复时间
+        /// </summary>
+        [SugarColumn(ColumnDescription = "答复时间")]
+        public DateTime? FinishTime { get; set; }
+
+        /// <summary>
+        /// 答复人员
+        /// </summary>
+        [SugarColumn(ColumnDescription = "答复人员", ColumnDataType = "varchar(200)")]
+        public string FinishName { get; set; }
+
+        /// <summary>
+        /// 办理情况
+        /// </summary>
+        [SugarColumn(ColumnDescription = "办理情况", ColumnDataType = "text")]
+        public string FinishNote { get; set; }
+
+        /// <summary>
+        /// 办理单位
+        /// </summary>
+        [SugarColumn(ColumnDescription = "办理单位", ColumnDataType = "varchar(200)")]
+        public string EndDept { get; set; }
+
+        /// <summary>
+        /// 办理人员
+        /// </summary>
+        [SugarColumn(ColumnDescription = "办理人员", ColumnDataType = "varchar(200)", IsNullable = true)]
+        public string EndName { get; set; }
+
+        /// <summary>
+        /// 联系时间
+        /// </summary>
+        [SugarColumn(ColumnDescription = "联系时间")]
+        public DateTime? ConcactTime { get; set; }
+
+        /// <summary>
+        /// 联系方式
+        /// </summary>
+        [SugarColumn(ColumnDescription = "联系方式", ColumnDataType = "varchar(50)")]
+        public string ConcactType { get; set; }
+
+        /// <summary>
+        /// 办理操作
+        /// </summary>
+        [SugarColumn(ColumnDescription = "办理操作", ColumnDataType = "varchar(10)")]
+        public string FinishType { get; set; }
+
+        /// <summary>
+        /// 办理时长
+        /// </summary>
+        [SugarColumn(ColumnDescription = "办理时长")]
+        public Double HandleTimeLong { get; set; }
+
+        /// <summary>
+        /// 应签收时间
+        /// </summary>
+        [SugarColumn(ColumnDescription = "应签收时间")]
+        public DateTime? SignTimeBf { get; set; }
+
+        /// <summary>
+        /// 签收时间
+        /// </summary>
+        [SugarColumn(ColumnDescription = "签收时间")]
+        public DateTime? SignTime { get; set; }
+
+        /// <summary>
+        /// 应反馈时间
+        /// </summary>
+        [SugarColumn(ColumnDescription = "应反馈时间")]
+        public DateTime? FdBackTime_Bf { get; set; }
+
+        /// <summary>
+        /// 反馈时间
+        /// </summary>
+        [SugarColumn(ColumnDescription = "反馈时间")]
+        public DateTime? FdBackTime { get; set; }
+
+        /// <summary>
+        /// 交办时间
+        /// </summary>
+        [SugarColumn(ColumnDescription = "交办时间")]
+        public DateTime? SendTime { get; set; }
+
+        /// <summary>
+        /// 反馈意见
+        /// </summary>
+        [SugarColumn(ColumnDescription = "反馈意见", ColumnDataType = "text")]
+        public string FdBack { get; set; }
+
+        /// <summary>
+        /// 办结单位所在区县区域代码
+        /// </summary>
+        [SugarColumn(ColumnDescription = "办结单位所在区县区域代码", ColumnDataType = "varchar(50)")]
+        public string EndAreaCode { get; set; }
+
+        /// <summary>
+        /// 办结单位所在区县名称
+        /// </summary>
+        [SugarColumn(ColumnDescription = "办结单位所在区县名称", ColumnDataType = "varchar(50)")]
+        public string EndAreaName { get; set; }
+
+        /// <summary>
+        /// 工单办理过程中交办单位
+        /// </summary>
+        [SugarColumn(ColumnDescription = "工单办理过程中交办单位", ColumnDataType = "varchar(255)")]
+        public string BeiZhu { get; set; }
+
+    }
+}