tangjiang 8 сар өмнө
parent
commit
669a4d0265

+ 25 - 6
src/DataSharing/Province/ProvinceService.cs

@@ -1,4 +1,5 @@
-using DataSharing.RawData;
+using DataSharing.Province.SendTask.SubmitCaseInfo;
+using DataSharing.RawData;
 using DataSharing.SendTask;
 using DataSharing.Share.Consts;
 using DataSharing.Share.Dtos;
@@ -53,6 +54,7 @@ namespace DataSharing.Province
         private readonly ISharingConfigurationManager _sharingConfigurationManager;
         private readonly IInitPushDataService _initPushDataService;
         private readonly IRepository<DsGetCaseMaterialInfo> _getCaseMaterialInfoRepository;
+        private readonly IRepository<DsSendTaskSubmitCaseInfo> _dsSendTaskSubmitCaseInfoRepository;
 
         /// <summary>
         /// 
@@ -90,7 +92,8 @@ namespace DataSharing.Province
              IRepository<DsOrderVisitSend> dsOrderVisitSendRepository,
              ISharingConfigurationManager sharingConfigurationManager,
              IInitPushDataService initPushDataService,
-             IRepository<DsGetCaseMaterialInfo> getCaseMaterialInfoRepository)
+             IRepository<DsGetCaseMaterialInfo> getCaseMaterialInfoRepository,
+             IRepository<DsSendTaskSubmitCaseInfo> dsSendTaskSubmitCaseInfoRepository)
         {
             _mapper = mapper;
             _logger = logger;
@@ -109,6 +112,7 @@ namespace DataSharing.Province
             _sharingConfigurationManager = sharingConfigurationManager;
             _initPushDataService = initPushDataService;
             _getCaseMaterialInfoRepository = getCaseMaterialInfoRepository;
+            _dsSendTaskSubmitCaseInfoRepository = dsSendTaskSubmitCaseInfoRepository;
         }
         #endregion
 
@@ -360,7 +364,7 @@ namespace DataSharing.Province
             }
 
             //推送当前办理信息
-            await SubmitCaseProcessFlowAsync(new OrderFlowDto { Order = pushdto.Order, WorkflowTrace = pushdto.WorkflowTrace, ExpiredTimeChanged = false }, cancellationToken);
+            await SubmitCaseProcessFlowAsync(new OrderFlowDto { Order = pushdto.Order, WorkflowTrace = pushdto.WorkflowTrace, ExpiredTimeChanged = false }, true, cancellationToken);
 
             //再次推送通话记录
             if (pushdto.TrCallRecordDto is not null)
@@ -412,6 +416,8 @@ namespace DataSharing.Province
             //如果不是省上派下来的工单,需要汇聚到省上
             if (!dto.IsProvince)
             {
+                if (!await _dsSendTaskSubmitCaseInfoRepository.AnyAsync(p => p.ProvinceNo == dto.ProvinceNo && p.IsSuccess == ESendTaskState.PushSuccess, cancellationToken: cancellationToken))
+                    return;
                 var data = InitDataAsync(dto);
                 var validator = new SubmitCaseInfoValidator();
                 var validResult = await validator.ValidateAsync(data, cancellationToken);
@@ -448,11 +454,13 @@ namespace DataSharing.Province
                 if (dto.WorkflowTrace.HandlerOrgAreaCode.Length > 6)
                     dto.WorkflowTrace.HandlerOrgAreaCode = dto.WorkflowTrace.HandlerOrgAreaCode.Substring(0, 6);
             }
+            var ispush = await _dsSendTaskSubmitCaseInfoRepository.AnyAsync(p => p.ProvinceNo == dto.Order.ProvinceNo && p.IsSuccess == ESendTaskState.PushSuccess, cancellationToken: cancellationToken);
 
-            await SubmitCaseProcessFlowAsync(dto, cancellationToken);
+            await SubmitCaseProcessFlowAsync(dto, ispush, cancellationToken);
             //期满时间变更或者办理节点为话务部,重新推送数据
             if ((dto.ExpiredTimeChanged || dto.Order.ActualHandleStepName == "话务部") && !dto.Order.IsProvince)
             {
+                if (!ispush) return;
                 var submitCaseInfo = InitDataAsync(dto.Order);
                 var validator = new SubmitCaseInfoValidator();
                 var validResult = await validator.ValidateAsync(submitCaseInfo, cancellationToken);
@@ -580,6 +588,9 @@ namespace DataSharing.Province
             }
             else
             {
+                if (!await _dsSendTaskSubmitCaseInfoRepository.AnyAsync(p => p.ProvinceNo == dto.Order.ProvinceNo && p.IsSuccess == ESendTaskState.PushSuccess, cancellationToken: cancellationToken))
+                    return;
+
                 var data = _mapper.Map<SubmitVisitInfo>(dto);
                 data.VisitType = visitType;
                 data.CliengGuid = Guid.NewGuid().ToString();
@@ -638,8 +649,13 @@ namespace DataSharing.Province
             //推送办理记录
             dto.ExpiredTimeChanged = false;
 
+            var ispush = await _dsSendTaskSubmitCaseInfoRepository.AnyAsync(p => p.ProvinceNo == dto.Order.ProvinceNo && p.IsSuccess == ESendTaskState.PushSuccess, cancellationToken: cancellationToken);
+
             //推送办理过程
-            await SubmitCaseProcessFlowAsync(dto, cancellationToken);
+            await SubmitCaseProcessFlowAsync(dto, ispush, cancellationToken);
+
+            if (!ispush)
+                return;
 
             //判断是否是热线中心
             if (!string.IsNullOrEmpty(dto.Order.ActualHandleOrgCode) && dto.Order.ActualHandleOrgCode == "001")
@@ -1450,7 +1466,7 @@ namespace DataSharing.Province
         /// <param name="cancellationToken"></param>
         /// <returns></returns>
         /// <exception cref="UserFriendlyException"></exception>
-        private async Task SubmitCaseProcessFlowAsync(OrderFlowDto dto, CancellationToken cancellationToken)
+        private async Task SubmitCaseProcessFlowAsync(OrderFlowDto dto, bool ispush, CancellationToken cancellationToken)
         {
             //判断是否是热线中心
             if (!string.IsNullOrEmpty(dto.Order.ActualHandleOrgCode) && dto.Order.ActualHandleOrgCode == "001")
@@ -1496,6 +1512,9 @@ namespace DataSharing.Province
             }
             else  //如果不是省上派下来的工单
             {
+                if (!ispush)
+                    return;
+
                 //本地工单走市州接口
                 var data = _mapper.Map<SubmitCaseProcessInfo>(dto);
                 data.TacheName = "70:" + data.DeptName;

+ 2 - 0
src/DataSharing/Province/SendTask/SubmitCaseInfo/DsSendTaskSubmitCaseInfo.cs

@@ -8,6 +8,8 @@ namespace DataSharing.Province.SendTask.SubmitCaseInfo
     /// 服务工单受理推送任务数据
     /// </summary>
     [Description("服务工单受理推送任务数据")]
+    [SugarIndex("index_dssendtasksubmitcaseinfo_provinceno", nameof(DsSendTaskSubmitCaseInfo.ProvinceNo), OrderByType.Desc)]
+    [SugarIndex("index_dssendtasksubmitcaseinfo_issuccess", nameof(DsSendTaskSubmitCaseInfo.IsSuccess), OrderByType.Desc)]
     public class DsSendTaskSubmitCaseInfo : BaseSendTask
     {
         /// <summary>