TANG JIANG 1 年之前
父節點
當前提交
79ddec815a

+ 5 - 10
src/Sharing.Api/PushDataBgService.cs

@@ -1,11 +1,8 @@
-using MapsterMapper;
-using MediatR;
-using Microsoft.Data.SqlClient;
+using MediatR;
 using Sharing.Notifications.HuiJu;
-using Sharing.Province.Dtos.HuiJu.Send;
 using Sharing.Province.HuiJu.Send;
 using Sharing.Province.Other;
-using static System.Runtime.InteropServices.JavaScript.JSType;
+using XF.Domain.Dependency;
 
 namespace Sharing.Api
 {
@@ -17,7 +14,7 @@ namespace Sharing.Api
         private readonly int nSleep = 1 * 60 * 1000;//1分钟运行一次
         private readonly ILogger<PushDataBgService> _logger;
         private readonly IMediator _mediator;
-        private readonly IMapper _mapper;
+
         private readonly IWaitingPushDataRepository _waitingPushDataRepository;
 
         /// <summary>
@@ -25,13 +22,11 @@ namespace Sharing.Api
         /// </summary>
         /// <param name="logger"></param>
         /// <param name="mediator"></param>
-        /// <param name="mapper"></param>
         /// <param name="waitingPushDataRepository"></param>
-        public PushDataBgService(ILogger<PushDataBgService> logger, IMediator mediator, IMapper mapper, IWaitingPushDataRepository waitingPushDataRepository)
+        public PushDataBgService(ILogger<PushDataBgService> logger, IMediator mediator, IWaitingPushDataRepository waitingPushDataRepository)
         {
             _logger = logger;
             _mediator = mediator;
-            _mapper = mapper;
             _waitingPushDataRepository = waitingPushDataRepository;
         }
 
@@ -60,7 +55,7 @@ namespace Sharing.Api
                    .Queryable()
                    .OrderByDescending(p => p.Priority)
                    .ToListAsync();
-            if (listData != null)
+            if (listData != null&& listData.Count>0)
             {
                 List<SubmitCaseProcess> submitCaseProcesses = new(); //服务工单处理过程
                 List<SubmitCaseResult> submitCaseResults = new(); //服务工单处理结果

+ 23 - 0
src/Sharing.Province/Dtos/ProvinceResponse.cs

@@ -13,8 +13,31 @@ public class BaseProvinceResponse
     public string Code { get; set; }
 
     public string Description { get; set; }
+
+    public ErrorObjs custom { get; set; }
+}
+
+public class ErrorObjs
+{
+    public List<ErrorInfo> errorObjs { get; set; }
+}
+
+public class ErrorInfo
+{
+    /// <summary>
+    /// 服务工单编号
+    /// </summary>
+    public string caseserial { get; set; }
+
+    public string resturl { get; set; }
+
+    /// <summary>
+    /// 过程唯一值
+    /// </summary>
+    public string caseid { get; set; }
 }
 
+
 public class Reponse
 {
     public int Code { get; set; }

+ 39 - 10
src/Sharing.Province/Handlers/HuiJu/SubmitCaseProcessHandler.cs

@@ -1,8 +1,11 @@
 using MapsterMapper;
 using MediatR;
 using Sharing.Notifications.HuiJu;
+using Sharing.Province.Dtos;
 using Sharing.Province.Dtos.HuiJu.Send;
 using Sharing.Province.HuiJu.Send;
+using Sharing.Province.Other;
+using Sharing.Repository.Province.HuiJu;
 
 namespace Sharing.Province.Handlers.HuiJu
 {
@@ -15,6 +18,7 @@ namespace Sharing.Province.Handlers.HuiJu
         private readonly PusherProvider _pusherProvider;
         private readonly IMapper _mapper;
         private readonly ISubmitCaseProcessRepository _submitCaseProcessRepository;
+        private readonly IWaitingPushDataRepository _waitingPushDataRepository;
 
         /// <summary>
         /// 
@@ -23,13 +27,15 @@ namespace Sharing.Province.Handlers.HuiJu
         /// <param name="pusherProvider"></param>
         /// <param name="mapper"></param>
         /// <param name="submitCaseProcessRepository"></param>
+        /// <param name="waitingPushDataRepository"></param>
         public SubmitCaseProcessHandler(IChannelConfigurationManager channelConfigurationManager, PusherProvider pusherProvider, IMapper mapper
-            , ISubmitCaseProcessRepository submitCaseProcessRepository)
+            , ISubmitCaseProcessRepository submitCaseProcessRepository, IWaitingPushDataRepository waitingPushDataRepository)
         {
             _channelConfigurationManager = channelConfigurationManager;
             _pusherProvider = pusherProvider;
             _mapper = mapper;
             _submitCaseProcessRepository = submitCaseProcessRepository;
+            _waitingPushDataRepository = waitingPushDataRepository;
         }
 
         /// <summary>
@@ -62,16 +68,39 @@ namespace Sharing.Province.Handlers.HuiJu
             var response = await pusher.PushSubmitCaseProcessAsync(request, cancellationToken);
 
             //如果推送成功修改数据状态
-            //if (response != null)
-            //{
-            //    if (response.Code == "1")
-            //        notification.DataOrder.SyncState = "1";
-            //    else
-            //        notification.DataOrder.SyncState = "2";
+            if (response != null)
+            {
+                if (response != null)
+                {
+                    List<ErrorInfo> list = new();
+                    if (response.custom != null && response.custom.errorObjs != null && response.custom.errorObjs.Count > 0)
+                    {
+                        list = response.custom.errorObjs;
+                    }
+                    foreach (var item in notification.DataOrder)
+                    {
+                        if (list != null && list.Count > 0)
+                        {
+                            if (list.Find(p => p.caseid == item.CaseId) != null)
+                                item.SyncState = "2";
+                            else
+                                item.SyncState = "1";
+                        }
+                        else
+                            item.SyncState = "1";
+
+                        await _submitCaseProcessRepository.UpdateAsync(item);
+                        await _waitingPushDataRepository.RemoveAsync(p => p.SyncID == item.Id);
+                    }
+                    //if (response.code == "1")
+                    //    notification.dataorder.syncstate = "1";
+                    //else
+                    //    notification.dataorder.syncstate = "2";
 
-            //    notification.DataOrder.ReturnResult = Newtonsoft.Json.JsonConvert.SerializeObject(response);
-            //    await _submitCaseProcessRepository.UpdateAsync(notification.DataOrder);
-            //}
+                    //notification.dataorder.returnresult = newtonsoft.json.jsonconvert.serializeobject(response);
+                    //await _submitcaseprocessrepository.updateasync(notification.dataorder);
+                }
+            }
         }
     }
 }

+ 30 - 1
src/Sharing.Province/Handlers/HuiJu/SubmitCaseResultHandler.cs

@@ -1,8 +1,11 @@
 using MapsterMapper;
 using MediatR;
 using Sharing.Notifications.HuiJu;
+using Sharing.Province.Dtos;
 using Sharing.Province.Dtos.HuiJu.Send;
 using Sharing.Province.HuiJu.Send;
+using Sharing.Province.Other;
+using Sharing.Repository.Province.HuiJu;
 
 namespace Sharing.Province.Handlers.HuiJu
 {
@@ -15,18 +18,24 @@ namespace Sharing.Province.Handlers.HuiJu
         private readonly PusherProvider _pusherProvider;
         private readonly IMapper _mapper;
         private readonly ISubmitCaseResultRepository _submitCaseResultRepository;
+        private readonly IWaitingPushDataRepository _waitingPushDataRepository;
 
         /// <summary>
         /// 
         /// </summary>
         /// <param name="channelConfigurationManager"></param>
         /// <param name="pusherProvider"></param>
-        public SubmitCaseResultHandler(IChannelConfigurationManager channelConfigurationManager, PusherProvider pusherProvider, IMapper mapper, ISubmitCaseResultRepository submitCaseResultRepository)
+        /// <param name="mapper"></param>
+        /// <param name="submitCaseResultRepository"></param>
+        /// <param name="waitingPushDataRepository"></param>
+        public SubmitCaseResultHandler(IChannelConfigurationManager channelConfigurationManager, PusherProvider pusherProvider
+            , IMapper mapper, ISubmitCaseResultRepository submitCaseResultRepository, IWaitingPushDataRepository waitingPushDataRepository)
         {
             _channelConfigurationManager = channelConfigurationManager;
             _pusherProvider = pusherProvider;
             _mapper = mapper;
             _submitCaseResultRepository = submitCaseResultRepository;
+            _waitingPushDataRepository = waitingPushDataRepository;
         }
 
         /// <summary>
@@ -61,6 +70,26 @@ namespace Sharing.Province.Handlers.HuiJu
             //如果推送成功修改数据状态
             if (response != null)
             {
+                List<ErrorInfo> list = new();
+                if (response.custom != null && response.custom.errorObjs != null && response.custom.errorObjs.Count > 0)
+                {
+                    list = response.custom.errorObjs;
+                }
+                foreach (var item in notification.DataOrder)
+                {
+                    if (list != null && list.Count > 0)
+                    {
+                        if (list.Find(p => p.caseserial == item.CaseSerial) != null)
+                            item.SyncState = "2";
+                        else
+                            item.SyncState = "1";
+                    }
+                    else
+                        item.SyncState = "1";
+
+                    await _submitCaseResultRepository.UpdateAsync(item);
+                    await _waitingPushDataRepository.RemoveAsync(p => p.SyncID == item.Id);
+                }
                 //if (response.Code == "1")
                 //    notification.DataOrder.SyncState = "1";
                 //else

+ 27 - 1
src/Sharing.Province/Handlers/HuiJu/SubmitVisitInfoHandler.cs

@@ -1,8 +1,11 @@
 using MapsterMapper;
 using MediatR;
 using Sharing.Notifications.HuiJu;
+using Sharing.Province.Dtos;
 using Sharing.Province.Dtos.HuiJu.Send;
 using Sharing.Province.HuiJu.Send;
+using Sharing.Province.Other;
+using Sharing.Repository.Province.Other;
 
 namespace Sharing.Province.Handlers.HuiJu
 {
@@ -15,6 +18,7 @@ namespace Sharing.Province.Handlers.HuiJu
         private readonly PusherProvider _pusherProvider;
         private readonly IMapper _mapper;
         private readonly ISubmitVisitInfoRepository _submitVisitInfoRepository;
+        private readonly IWaitingPushDataRepository _waitingPushDataRepository;
 
         /// <summary>
         /// 
@@ -23,13 +27,15 @@ namespace Sharing.Province.Handlers.HuiJu
         /// <param name="pusherProvider"></param>
         /// <param name="mapper"></param>
         /// <param name="submitVisitInfoRepository"></param>
+        /// <param name="waitingPushDataRepository"></param>
         public SubmitVisitInfoHandler(IChannelConfigurationManager channelConfigurationManager, PusherProvider pusherProvider, IMapper mapper
-            , ISubmitVisitInfoRepository submitVisitInfoRepository)
+            , ISubmitVisitInfoRepository submitVisitInfoRepository, IWaitingPushDataRepository waitingPushDataRepository)
         {
             _channelConfigurationManager = channelConfigurationManager;
             _pusherProvider = pusherProvider;
             _mapper = mapper;
             _submitVisitInfoRepository = submitVisitInfoRepository;
+            _waitingPushDataRepository = waitingPushDataRepository;
         }
 
         /// <summary>
@@ -64,6 +70,26 @@ namespace Sharing.Province.Handlers.HuiJu
             //如果推送成功修改数据状态
             if (response != null)
             {
+                List<ErrorInfo> list = new();
+                if (response.custom != null && response.custom.errorObjs != null && response.custom.errorObjs.Count > 0)
+                {
+                    list = response.custom.errorObjs;
+                }
+                foreach (var item in notification.DataOrder)
+                {
+                    if (list != null && list.Count > 0)
+                    {
+                        if (list.Find(p => p.caseserial == item.CaseSerial) != null)
+                            item.SyncState = "2";
+                        else
+                            item.SyncState = "1";
+                    }
+                    else
+                        item.SyncState = "1";
+
+                    await _submitVisitInfoRepository.UpdateAsync(item);
+                    await _waitingPushDataRepository.RemoveAsync(p => p.SyncID == item.Id);
+                }
                 //if (response.Code == "1")
                 //    notification.DataOrder.SyncState = "1";
                 //else

+ 1 - 1
src/Sharing.Repository/Province/Other/WaitingPushDataRepository.cs

@@ -4,7 +4,7 @@ using XF.Domain.Dependency;
 
 namespace Sharing.Repository.Province.Other
 {
-    public class WaitingPushDataRepository : BaseRepository<WaitingPushData>, IWaitingPushDataRepository, IScopeDependency
+    public class WaitingPushDataRepository : BaseRepository<WaitingPushData>, IWaitingPushDataRepository, ISingletonDependency
     {
         public WaitingPushDataRepository(ISugarUnitOfWork<SharingDbContext> uow) : base(uow)
         {

+ 1 - 1
src/Sharing/DaoShu110/PoliceSendChainAlarmDs.cs

@@ -127,7 +127,7 @@ namespace Sharing.DaoShu110.Dtos
         /// <summary>
         /// 工单编号
         /// </summary>
-        [SugarColumn(ColumnDescription = "工单编号", ColumnDataType = "varchar(50)")]
+        [SugarColumn(ColumnDescription = "工单编号", ColumnDataType = "varchar(50)",IsNullable =true)]
         public string OrderId { get; set; }
     }
 }

+ 6 - 0
src/Sharing/Province/Other/WaitingPushData.cs

@@ -22,6 +22,12 @@ namespace Sharing.Province.Other
         [SugarColumn(ColumnDescription = "推送数据", ColumnDataType = "text")]
         public string Data { get; set; }
 
+        /// <summary>
+        /// 待同步数据ID
+        /// </summary>
+        [SugarColumn(ColumnDescription = "待同步数据ID", ColumnDataType = "varchar(30)")]
+        public string SyncID { get; set; }
+
         /// <summary>
         /// 推送优先级
         /// </summary>