Kaynağa Gözat

调整项目结构

tangjiang 10 ay önce
ebeveyn
işleme
68c15f94e7
44 değiştirilmiş dosya ile 787 ekleme ve 270 silme
  1. 0 1
      src/DataSharing.Application/DataSharing.Application.csproj
  2. 1 1
      src/DataSharing.Application/Mappers/MapperConfigs.cs
  3. 11 11
      src/DataSharing.Application/Receivers/ProvinceReceiver.cs
  4. 14 14
      src/DataSharing.Host/Controllers/CityDataExchangeController.cs
  5. 3 3
      src/DataSharing.Host/Controllers/Police110/PoliceDCJTController.cs
  6. 3 3
      src/DataSharing.Host/Controllers/Police110/PoliceDSController.cs
  7. 14 14
      src/DataSharing.Host/Controllers/ProvinceController.cs
  8. 2 2
      src/DataSharing.Host/Controllers/YiBin/EnterpriseController.cs
  9. 1 1
      src/DataSharing.Host/Controllers/YiBin/WllzYBController.cs
  10. 3 3
      src/DataSharing.Host/Controllers/YiBin/ZhYBController.cs
  11. 2 2
      src/DataSharing.Host/Controllers/YiBin/ZzptYBController.cs
  12. 142 0
      src/DataSharing.Police110/DaoShu110/DaoShuService.cs
  13. 24 0
      src/DataSharing.Police110/DaoShu110/IDaoShuService.cs
  14. 6 6
      src/DataSharing.Share/Dtos/CityStateDataExchange/CityStateDataExchangeDeReponse.cs
  15. 2 2
      src/DataSharing.Share/Dtos/CityStateDataExchange/CityStateDataExchangeResponseDto.cs
  16. 2 2
      src/DataSharing.Share/Dtos/CityStateDataExchange/CityStateDataReceiveDto.cs
  17. 2 2
      src/DataSharing.Share/Dtos/CityStateDataExchange/CityStateTranspondRawDataDto.cs
  18. 1 1
      src/DataSharing.Share/Dtos/YiBin/ZzptPlatformsYB/AcceptTypeListDto.cs
  19. 1 1
      src/DataSharing.Share/Dtos/YiBin/ZzptPlatformsYB/AddWriteInfoDto.cs
  20. 1 1
      src/DataSharing.Share/Dtos/YiBin/ZzptPlatformsYB/BaseVailCodeDto.cs
  21. 1 1
      src/DataSharing.Share/Dtos/YiBin/ZzptPlatformsYB/OtherPlatformsDeResponse.cs
  22. 1 1
      src/DataSharing.Share/Dtos/YiBin/ZzptPlatformsYB/ZzptDeResponse.cs
  23. 0 88
      src/DataSharing.Share/Mq/EventNames.Order.cs
  24. 53 0
      src/DataSharing.YiBin/Enterprise/EnterpriseService.cs
  25. 17 0
      src/DataSharing.YiBin/Enterprise/IEnterpriseService.cs
  26. 0 77
      src/DataSharing.YiBin/SendTaskDataService.cs
  27. 4 4
      src/DataSharing.YiBin/YiBinSendTaskDataService.cs
  28. 1 1
      src/DataSharing.YiBin/ZzptPlatformsYB/IZzptPusherProviderService.cs
  29. 25 0
      src/DataSharing.YiBin/ZzptPlatformsYB/IZzptService.cs
  30. 2 2
      src/DataSharing.YiBin/ZzptPlatformsYB/ZzptPusherProviderService.cs
  31. 103 0
      src/DataSharing.YiBin/ZzptPlatformsYB/ZzptService.cs
  32. 1 0
      src/DataSharing.ZiGong/DataSharing.ZiGong.csproj
  33. 3 8
      src/DataSharing.ZiGong/ZiGongSendTaskDataService.cs
  34. 3 3
      src/DataSharing/CityStateDataExchange/CityStateDataExchangeClient.cs
  35. 2 2
      src/DataSharing/CityStateDataExchange/CityStateDataExchangeHttpClientExtensions.cs
  36. 9 9
      src/DataSharing/CityStateDataExchange/CityStateDataExchangePusherProviderService.cs
  37. 195 0
      src/DataSharing/CityStateDataExchange/CityStateDataExchangeService.cs
  38. 1 1
      src/DataSharing/CityStateDataExchange/DsReceiveDataExchangeData.cs
  39. 2 2
      src/DataSharing/CityStateDataExchange/ICityStateDataExchangePusherProviderService.cs
  40. 24 0
      src/DataSharing/CityStateDataExchange/ICityStateDataExchangeService.cs
  41. 1 0
      src/DataSharing/DataSharing.csproj
  42. 30 0
      src/DataSharing/SendTask/IInitPushDataService.cs
  43. 73 0
      src/DataSharing/SendTask/InitPushDataService.cs
  44. 1 1
      src/DataSharing/SendTask/TaskCaseDistrecordJob.cs

+ 0 - 1
src/DataSharing.Application/DataSharing.Application.csproj

@@ -7,7 +7,6 @@
   </PropertyGroup>
 
   <ItemGroup>
-    <PackageReference Include="Hotline.Share" Version="1.0.79" />
     <PackageReference Include="Polly.Core" Version="8.2.0" />
     <PackageReference Include="FluentValidation" Version="11.6.0" />
   </ItemGroup>

+ 1 - 1
src/DataSharing.Application/Mappers/MapperConfigs.cs

@@ -4,7 +4,7 @@ using DataSharing.Share.Dtos.Province.HuiJu;
 using DataSharing.Share.Dtos.Province.XieTong.Receive;
 using DataSharing.Share.Dtos.Province.XieTong.Send;
 using DataSharing.Share.Dtos.YiBin.Enterprise;
-using DataSharing.Share.Dtos.YiBin.OtherPlatformsYB;
+using DataSharing.Share.Dtos.YiBin.ZzptPlatformsYB;
 using Hotline.Share.Dtos.Order;
 using Hotline.Share.Dtos.TrCallCenter;
 using Hotline.Share.Enums.CallCenter;

+ 11 - 11
src/DataSharing.Application/Receivers/ProvinceReceiver.cs

@@ -1,6 +1,7 @@
 using DataSharing.Application.Validators.HuiJu;
 using DataSharing.Application.Validators.XieTong;
-using DataSharing.DataExchange;
+using DataSharing.CityStateDataExchange;
+using DataSharing.Police110.DaoShu110;
 using DataSharing.Province;
 using DataSharing.RawData;
 using DataSharing.SendTask;
@@ -13,6 +14,7 @@ using DataSharing.Share.Dtos.Province.HuiJu;
 using DataSharing.Share.Dtos.Province.XieTong.Knowledge;
 using DataSharing.Share.Dtos.Province.XieTong.Receive;
 using DataSharing.Share.Dtos.Province.XieTong.Send;
+using DataSharing.Share.Dtos.YiBin.Enterprise;
 using DataSharing.Share.Enums;
 using DotNetCore.CAP;
 using Hotline.Share.Dtos.Knowledge;
@@ -26,12 +28,10 @@ using Microsoft.Extensions.Logging;
 using System.Security.Cryptography;
 using System.Text;
 using System.Web;
-using DataSharing.Police110.DaoShu110;
 using XF.Domain.Cache;
 using XF.Domain.Dependency;
 using XF.Domain.Exceptions;
 using XF.Domain.Repository;
-using DataSharing.Share.Dtos.YiBin.Enterprise;
 
 namespace DataSharing.Application.Receivers
 {
@@ -409,7 +409,7 @@ namespace DataSharing.Application.Receivers
                     HandleState = "办理中",
                     StartTime = dto.StartTime,
                     CallId = dto.CallId,
-                    FileJson = _mapper.Map<List<FileJson>>(dto.FileJson)
+                    FileJson = _mapper.Map<List<DataSharing.Share.Dtos.FileJson>>(dto.FileJson)
                 };
 
                 await _dsOrderRepository.AddAsync(dataOrder, cancellationToken);
@@ -438,7 +438,7 @@ namespace DataSharing.Application.Receivers
                 dataOrder.HandleState = "办理中";
                 dataOrder.StartTime = dto.StartTime;
                 dataOrder.CallId = dto.CallId;
-                dataOrder.FileJson = _mapper.Map<List<FileJson>>(dto.FileJson);
+                dataOrder.FileJson = _mapper.Map<List<DataSharing.Share.Dtos.FileJson>>(dto.FileJson);
 
                 await _dsOrderRepository.UpdateAsync(dataOrder, cancellationToken);
             }
@@ -692,7 +692,7 @@ namespace DataSharing.Application.Receivers
                     ActualHandleTime = order.ActualHandleTime,
                     StartTime = order.StartTime,
                     CallId = order.CallId,
-                    FileJson = _mapper.Map<List<FileJson>>(order.FileJson)
+                    FileJson = _mapper.Map<List<DataSharing.Share.Dtos.FileJson>>(order.FileJson)
                 };
 
                 await _dsOrderRepository.AddAsync(dataOrder, cancellationToken);
@@ -2292,7 +2292,7 @@ namespace DataSharing.Application.Receivers
         }
         #endregion
 
-        #region 组装110数据
+        #region 组装110数据------已提取
         /// <summary>
         /// 组装110数据,12345警情工单推送到110
         /// </summary>
@@ -2389,7 +2389,7 @@ namespace DataSharing.Application.Receivers
 
         #endregion
 
-        #region 泸州市州数据提交
+        #region 泸州市州数据提交------已提取
         /// <summary>
         /// 泸州市州数据提交
         /// </summary>
@@ -2507,7 +2507,7 @@ namespace DataSharing.Application.Receivers
         }
         #endregion
 
-        #region 宜宾企业专班数据提交
+        #region 宜宾企业专班数据提交-----已提取
         /// <summary>
         /// 企业专班数据提交
         /// </summary>
@@ -2525,7 +2525,7 @@ namespace DataSharing.Application.Receivers
         }
         #endregion
 
-        #region 综治平台
+        #region 综治平台-----已提取
         /// <summary>
         /// 综治平台--推送工单信息
         /// </summary>
@@ -2592,7 +2592,7 @@ namespace DataSharing.Application.Receivers
         }
         #endregion
 
-        #region 初始化待推送数据
+        #region 初始化待推送数据------已提取
         /// 初始化待推送数据
         /// </summary>
         /// <param name="taskType">任务类型</param>

+ 14 - 14
src/DataSharing.Host/Controllers/CityDataExchangeController.cs

@@ -1,8 +1,8 @@
-using DataSharing.DataExchange;
+using DataSharing.CityStateDataExchange;
 using DataSharing.FwDataExchange;
 using DataSharing.RawData;
 using DataSharing.Share.Dtos;
-using DataSharing.Share.Dtos.DataExchange;
+using DataSharing.Share.Dtos.CityStateDataExchange;
 using DataSharing.Share.Dtos.HotlineSetting;
 using DotNetCore.CAP;
 using Hotline.Share.Dtos.OrderTranspond;
@@ -65,11 +65,11 @@ namespace DataSharing.Host.Controllers
         /// <returns></returns>
         [HttpPost("city_hand_data")]
         [AllowAnonymous]
-        public async Task<OpenResponse> CityHandData([FromForm] CityDataReceiveDto dto)
+        public async Task<OpenResponse> CityHandData([FromForm] CityStateDataReceiveDto dto)
         {
             // 验证
             if (dto is null)
-                return OpenResponse.Ok(DataExchangeDeReponse.Failed(description: "数据解析失败"));
+                return OpenResponse.Ok(CityStateDataExchangeDeReponse.Failed(description: "数据解析失败"));
 
             dto.ServerName = HttpUtility.UrlDecode(dto.ServerName);
             dto.PurTypeName = HttpUtility.UrlDecode(dto.PurTypeName);
@@ -83,16 +83,16 @@ namespace DataSharing.Host.Controllers
             //验证数据
             string strResult = dto.Validate();
             if (!string.IsNullOrEmpty(strResult))
-                return OpenResponse.Ok(DataExchangeDeReponse.Failed(description: strResult));
+                return OpenResponse.Ok(CityStateDataExchangeDeReponse.Failed(description: strResult));
 
             var userInfo = await _dsUserTokenInfoRepository.GetAsync(p => p.PlatformSourceName == dto.Source, HttpContext.RequestAborted);
             if (userInfo is null)
-                return OpenResponse.Ok(DataExchangeDeReponse.Failed("-900", "密钥错误"));
+                return OpenResponse.Ok(CityStateDataExchangeDeReponse.Failed("-900", "密钥错误"));
 
             //验证MD5
             strResult = Verification(dto.Code, dto.Source + userInfo.AccountSecret);
             if (!string.IsNullOrEmpty(strResult))
-                return OpenResponse.Ok(DataExchangeDeReponse.Failed("-900", strResult));
+                return OpenResponse.Ok(CityStateDataExchangeDeReponse.Failed("-900", strResult));
 
             //写入原始数据表
             var data = new DsReceiveDataExchangeData()
@@ -144,10 +144,10 @@ namespace DataSharing.Host.Controllers
                 };
                 await _capPublisher.PublishAsync(Hotline.Share.Mq.EventNames.SharingOrderReceiveTranspondCity, cityRawDataDto, cancellationToken: HttpContext.RequestAborted);
 
-                return OpenResponse.Ok(DataExchangeDeReponse.Success(result.result.no, result.result.password, "您已成功提交数据!"));
+                return OpenResponse.Ok(CityStateDataExchangeDeReponse.Success(result.result.no, result.result.password, "您已成功提交数据!"));
             }
             else
-                return OpenResponse.Ok(DataExchangeDeReponse.Failed(description: "接口调用失败!"));
+                return OpenResponse.Ok(CityStateDataExchangeDeReponse.Failed(description: "接口调用失败!"));
         }
 
         /// <summary>
@@ -161,7 +161,7 @@ namespace DataSharing.Host.Controllers
         {
             // 验证
             if (dto is null)
-                return OpenResponse.Ok(DataExchangeDeReponse.Failed(description: "数据解析失败"));
+                return OpenResponse.Ok(CityStateDataExchangeDeReponse.Failed(description: "数据解析失败"));
 
             dto.UndertakAdvice = HttpUtility.UrlDecode(dto.UndertakAdvice);
             dto.Source = HttpUtility.UrlDecode(dto.Source);
@@ -169,16 +169,16 @@ namespace DataSharing.Host.Controllers
             //验证数据
             string strResult = dto.Validate();
             if (!string.IsNullOrEmpty(strResult))
-                return OpenResponse.Ok(DataExchangeDeReponse.Failed(description: strResult));
+                return OpenResponse.Ok(CityStateDataExchangeDeReponse.Failed(description: strResult));
 
             var userInfo = await _dsUserTokenInfoRepository.GetAsync(p => p.PlatformSourceName == dto.Source, HttpContext.RequestAborted);
             if (userInfo is null)
-                return OpenResponse.Ok(DataExchangeDeReponse.Failed("-900", "密钥错误"));
+                return OpenResponse.Ok(CityStateDataExchangeDeReponse.Failed("-900", "密钥错误"));
 
             //验证MD5
             strResult = Verification(dto.Code, dto.Source + userInfo.AccountSecret);
             if (!string.IsNullOrEmpty(strResult))
-                return OpenResponse.Ok(DataExchangeDeReponse.Failed("-900", strResult));
+                return OpenResponse.Ok(CityStateDataExchangeDeReponse.Failed("-900", strResult));
 
             //写入原始数据表
             var data = new DsReceiveDataExchangeData()
@@ -196,7 +196,7 @@ namespace DataSharing.Host.Controllers
             };
             await _capPublisher.PublishAsync(Hotline.Share.Mq.EventNames.SharingOrderReceiveHandleOpinionTranspondCity, transpondCityOrderResultDto, cancellationToken: HttpContext.RequestAborted);
 
-            return OpenResponse.Ok(DataExchangeDeReponse.Success("", "", "您已成功提交数据!"));
+            return OpenResponse.Ok(CityStateDataExchangeDeReponse.Success("", "", "您已成功提交数据!"));
         }
 
         #region 密钥验证

+ 3 - 3
src/DataSharing.Host/Controllers/Police110/PoliceDCJTController.cs

@@ -680,7 +680,7 @@ namespace DataSharing.Host.Controllers.Police110
                     Opinion = policeReceiveChainDealDs.DisposalSituation,
                     Source = "110"
                 };
-                await _capPublisher.PublishAsync(Share.Mq.EventNames.SharingOrderReultSend, orderResultDto, cancellationToken: HttpContext.RequestAborted);
+                await _capPublisher.PublishAsync(Hotline.Share.Mq.EventNames.SharingOrderReultSend, orderResultDto, cancellationToken: HttpContext.RequestAborted);
             }
             else if (policeReceiveChainDealDs.DisposalType == "2")//退回 
             {
@@ -692,7 +692,7 @@ namespace DataSharing.Host.Controllers.Police110
                     Source = "110"
                 };
                 //向业务系统推送消息
-                await _capPublisher.PublishAsync(Share.Mq.EventNames.SharingOrderReultSend, orderResultDto, cancellationToken: HttpContext.RequestAborted);
+                await _capPublisher.PublishAsync(Hotline.Share.Mq.EventNames.SharingOrderReultSend, orderResultDto, cancellationToken: HttpContext.RequestAborted);
 
             }
             else if (policeReceiveChainDealDs.DisposalType == "3")//回访 
@@ -714,7 +714,7 @@ namespace DataSharing.Host.Controllers.Police110
                 };
 
                 //向业务系统推送消息
-                await _capPublisher.PublishAsync(Share.Mq.EventNames.SharingOrderEvlResult, orderVisitDto, cancellationToken: HttpContext.RequestAborted);
+                await _capPublisher.PublishAsync(Hotline.Share.Mq.EventNames.SharingOrderEvlResult, orderVisitDto, cancellationToken: HttpContext.RequestAborted);
             }
         }
 

+ 3 - 3
src/DataSharing.Host/Controllers/Police110/PoliceDSController.cs

@@ -662,7 +662,7 @@ namespace DataSharing.Host.Controllers.Police110
                     Opinion = policeReceiveChainDealDs.DisposalSituation,
                     Source = "110"
                 };
-                await _capPublisher.PublishAsync(Share.Mq.EventNames.SharingOrderReultSend, orderResultDto, cancellationToken: HttpContext.RequestAborted);
+                await _capPublisher.PublishAsync(Hotline.Share.Mq.EventNames.SharingOrderReultSend, orderResultDto, cancellationToken: HttpContext.RequestAborted);
             }
             else if (policeReceiveChainDealDs.DisposalType == 2)//退回 
             {
@@ -674,7 +674,7 @@ namespace DataSharing.Host.Controllers.Police110
                     Source = "110"
                 };
                 //向业务系统推送消息
-                await _capPublisher.PublishAsync(Share.Mq.EventNames.SharingOrderReultSend, orderResultDto, cancellationToken: HttpContext.RequestAborted);
+                await _capPublisher.PublishAsync(Hotline.Share.Mq.EventNames.SharingOrderReultSend, orderResultDto, cancellationToken: HttpContext.RequestAborted);
 
             }
             else if (policeReceiveChainDealDs.DisposalType == 3)//回访 
@@ -696,7 +696,7 @@ namespace DataSharing.Host.Controllers.Police110
                 };
 
                 //向业务系统推送消息
-                await _capPublisher.PublishAsync(Share.Mq.EventNames.SharingOrderEvlResult, orderVisitDto, cancellationToken: HttpContext.RequestAborted);
+                await _capPublisher.PublishAsync(Hotline.Share.Mq.EventNames.SharingOrderEvlResult, orderVisitDto, cancellationToken: HttpContext.RequestAborted);
             }
         }
 

+ 14 - 14
src/DataSharing.Host/Controllers/ProvinceController.cs

@@ -201,7 +201,7 @@ namespace DataSharing.Host.Controllers
             if (!string.IsNullOrEmpty(id))
             {
                 data.Files = await GetFileData(dto.CliengGuid, dto.CaseSerial, "受理上传");
-                //await _capPublisher.PublishAsync(DataSharing.Share.Mq.EventNames.SharingOrderCreation, data, cancellationToken: HttpContext.RequestAborted);
+                //await _capPublisher.PublishAsync(Hotline.Share.Mq.EventNames.SharingOrderCreation, data, cancellationToken: HttpContext.RequestAborted);
                 //var result = await _hotlineClient.ReceiveOrderAsync(data, HttpContext.RequestAborted);
 
                 var result = await _fwClient.RequestNoTokenAsync<HotlineClientResponse>("api/v1/Order/add-anonymous", "Post", System.Text.Json.JsonSerializer.Serialize(data));
@@ -257,7 +257,7 @@ namespace DataSharing.Host.Controllers
                     Files = await GetFileData(dto.CliengGuid, dto.CaseSerial, "工单退回审核")
                 };
                 //向业务系统推送消息
-                await _capPublisher.PublishAsync(DataSharing.Share.Mq.EventNames.SharingOrderReturnFeedback, dataBack, cancellationToken: HttpContext.RequestAborted);
+                await _capPublisher.PublishAsync(Hotline.Share.Mq.EventNames.SharingOrderReturnFeedback, dataBack, cancellationToken: HttpContext.RequestAborted);
 
                 return OpenResponse.Ok(GetDataBaseReponse<string>.Success("您已成功提交数据!"));
             }
@@ -302,7 +302,7 @@ namespace DataSharing.Host.Controllers
                 };
 
                 //向业务系统推送消息
-                await _capPublisher.PublishAsync(DataSharing.Share.Mq.EventNames.SharingOrderSupervise, orderSuperviseDto, cancellationToken: HttpContext.RequestAborted);
+                await _capPublisher.PublishAsync(Hotline.Share.Mq.EventNames.SharingOrderSupervise, orderSuperviseDto, cancellationToken: HttpContext.RequestAborted);
 
                 return OpenResponse.Ok(GetDataBaseReponse<string>.Success("您已成功提交数据!"));
 
@@ -346,7 +346,7 @@ namespace DataSharing.Host.Controllers
                 data.Files = await GetFileData(dto.CliengGuid, dto.CaseSerial, "工单催单");
 
                 //向业务系统推送消息
-                await _capPublisher.PublishAsync(DataSharing.Share.Mq.EventNames.SharingOrderRemind, data, cancellationToken: HttpContext.RequestAborted);
+                await _capPublisher.PublishAsync(Hotline.Share.Mq.EventNames.SharingOrderRemind, data, cancellationToken: HttpContext.RequestAborted);
 
                 return OpenResponse.Ok(GetDataBaseReponse<string>.Success("您已成功提交数据!"));
             }
@@ -393,7 +393,7 @@ namespace DataSharing.Host.Controllers
                 };
 
                 //向业务系统推送消息
-                await _capPublisher.PublishAsync(DataSharing.Share.Mq.EventNames.SharingOrderScreen, screenResultDto, cancellationToken: HttpContext.RequestAborted);
+                await _capPublisher.PublishAsync(Hotline.Share.Mq.EventNames.SharingOrderScreen, screenResultDto, cancellationToken: HttpContext.RequestAborted);
 
                 return OpenResponse.Ok(GetDataBaseReponse<string>.Success("您已成功提交数据!"));
             }
@@ -442,7 +442,7 @@ namespace DataSharing.Host.Controllers
                     Source = "province"
                 };
                 //向业务系统推送消息
-                await _capPublisher.PublishAsync(DataSharing.Share.Mq.EventNames.SharingOrderDelayResult, delayResultDto, cancellationToken: HttpContext.RequestAborted);
+                await _capPublisher.PublishAsync(Hotline.Share.Mq.EventNames.SharingOrderDelayResult, delayResultDto, cancellationToken: HttpContext.RequestAborted);
 
                 return OpenResponse.Ok(GetDataBaseReponse<string>.Success("您已成功提交数据!"));
             }
@@ -494,7 +494,7 @@ namespace DataSharing.Host.Controllers
                         Files = listFiles
                     };
                     //向业务系统推送消息
-                    await _capPublisher.PublishAsync(DataSharing.Share.Mq.EventNames.SharingOrderSupplements, complementDto, cancellationToken: HttpContext.RequestAborted);
+                    await _capPublisher.PublishAsync(Hotline.Share.Mq.EventNames.SharingOrderSupplements, complementDto, cancellationToken: HttpContext.RequestAborted);
                 }
 
                 return OpenResponse.Ok(GetDataBaseReponse<string>.Success("您已成功提交数据!"));
@@ -541,7 +541,7 @@ namespace DataSharing.Host.Controllers
                     Source = "province"
                 };
                 //向业务系统推送消息
-                await _capPublisher.PublishAsync(DataSharing.Share.Mq.EventNames.SharingOrderRevoke, cancelOrder, cancellationToken: HttpContext.RequestAborted);
+                await _capPublisher.PublishAsync(Hotline.Share.Mq.EventNames.SharingOrderRevoke, cancelOrder, cancellationToken: HttpContext.RequestAborted);
 
                 return OpenResponse.Ok(GetDataBaseReponse<string>.Success("您已成功提交数据!"));
             }
@@ -581,7 +581,7 @@ namespace DataSharing.Host.Controllers
             if (!string.IsNullOrEmpty(id))
             {
                 //向业务系统推送消息
-                await _capPublisher.PublishAsync(DataSharing.Share.Mq.EventNames.SharingOrderWarning, _mapper.Map<WarningDto>(dto), cancellationToken: HttpContext.RequestAborted);
+                await _capPublisher.PublishAsync(Hotline.Share.Mq.EventNames.SharingOrderWarning, _mapper.Map<WarningDto>(dto), cancellationToken: HttpContext.RequestAborted);
                 return OpenResponse.Ok(GetDataBaseReponse<string>.Success("您已成功提交数据!"));
             }
             else
@@ -645,7 +645,7 @@ namespace DataSharing.Host.Controllers
                         break;
                 }
                 //向业务系统推送消息
-                await _capPublisher.PublishAsync(DataSharing.Share.Mq.EventNames.SharingOrderEvlResult, orderVisitDto, cancellationToken: HttpContext.RequestAborted);
+                await _capPublisher.PublishAsync(Hotline.Share.Mq.EventNames.SharingOrderEvlResult, orderVisitDto, cancellationToken: HttpContext.RequestAborted);
 
                 return OpenResponse.Ok(GetDataBaseReponse<string>.Success("您已成功提交数据!"));
             }
@@ -703,7 +703,7 @@ namespace DataSharing.Host.Controllers
                     };
 
                     //向业务系统推送消息
-                    await _capPublisher.PublishAsync(DataSharing.Share.Mq.EventNames.SharingOrderReultSend, orderResult, cancellationToken: HttpContext.RequestAborted);
+                    await _capPublisher.PublishAsync(Hotline.Share.Mq.EventNames.SharingOrderReultSend, orderResult, cancellationToken: HttpContext.RequestAborted);
                 }
                 return OpenResponse.Ok(GetDataBaseReponse<string>.Success("您已成功提交数据!"));
             }
@@ -759,7 +759,7 @@ namespace DataSharing.Host.Controllers
                     }
                 };
                 //向业务系统推送消息
-                await _capPublisher.PublishAsync(DataSharing.Share.Mq.EventNames.SharingOrderEvlResult, orderVisitDto, cancellationToken: HttpContext.RequestAborted);
+                await _capPublisher.PublishAsync(Hotline.Share.Mq.EventNames.SharingOrderEvlResult, orderVisitDto, cancellationToken: HttpContext.RequestAborted);
 
                 return OpenResponse.Ok(GetDataBaseReponse<string>.Success("您已成功提交数据!"));
             }
@@ -860,7 +860,7 @@ namespace DataSharing.Host.Controllers
             if (!string.IsNullOrEmpty(id))
             {
                 //向业务系统推送消息
-                await _capPublisher.PublishAsync(DataSharing.Share.Mq.EventNames.SharingOrderExtends, orderExtension, cancellationToken: HttpContext.RequestAborted);
+                await _capPublisher.PublishAsync(Hotline.Share.Mq.EventNames.SharingOrderExtends, orderExtension, cancellationToken: HttpContext.RequestAborted);
 
                 return OpenResponse.Ok(GetDataBaseReponse<string>.Success("您已成功提交数据!"));
 
@@ -1012,7 +1012,7 @@ namespace DataSharing.Host.Controllers
                     receiveFilesFromDsDto.Files = listFiles;
                     //推送数据
                     if (receiveFilesFromDsDto.Files != null && receiveFilesFromDsDto.Files.Count > 0)
-                        await _capPublisher.PublishAsync(DataSharing.Share.Mq.EventNames.SharingFileInfo, receiveFilesFromDsDto, cancellationToken: HttpContext.RequestAborted);
+                        await _capPublisher.PublishAsync(Hotline.Share.Mq.EventNames.SharingFileInfo, receiveFilesFromDsDto, cancellationToken: HttpContext.RequestAborted);
                 }
             }
             return OpenResponse.Ok(GetDataBaseReponse<string>.Success("您已成功提交数据!"));

+ 2 - 2
src/DataSharing.Host/Controllers/YiBin/EnterpriseController.cs

@@ -178,7 +178,7 @@ namespace DataSharing.Host.Controllers.YiBin
                             Files = Files,
                             Source = "yb-enterprise"
                         };
-                        await _capPublisher.PublishAsync(Share.Mq.EventNames.SharingOrderReultSend, orderResultDto, cancellationToken: HttpContext.RequestAborted);
+                        await _capPublisher.PublishAsync(Hotline.Share.Mq.EventNames.SharingOrderReultSend, orderResultDto, cancellationToken: HttpContext.RequestAborted);
                     }
                 }
                 else
@@ -202,7 +202,7 @@ namespace DataSharing.Host.Controllers.YiBin
                     };
 
                     if (order != null)
-                        await _capPublisher.PublishAsync(Share.Mq.EventNames.SharingOrderAddTraces, addOrderTracesDto, cancellationToken: HttpContext.RequestAborted);
+                        await _capPublisher.PublishAsync(Hotline.Share.Mq.EventNames.SharingOrderAddTraces, addOrderTracesDto, cancellationToken: HttpContext.RequestAborted);
                 }
 
                 //这里往业务系统推送数据

+ 1 - 1
src/DataSharing.Host/Controllers/YiBin/WllzYBController.cs

@@ -3,7 +3,7 @@ using DataSharing.RawData;
 using DataSharing.Share.Dtos;
 using DataSharing.Share.Dtos.Common;
 using DataSharing.Share.Dtos.HotlineSetting;
-using DataSharing.Share.Dtos.YiBin.OtherPlatformsYB;
+using DataSharing.Share.Dtos.YiBin.ZzptPlatformsYB;
 using DataSharing.YiBin.ConvergenceMedia;
 using DotNetCore.CAP;
 using MapsterMapper;

+ 3 - 3
src/DataSharing.Host/Controllers/YiBin/OtherPlatformsYBController.cs → src/DataSharing.Host/Controllers/YiBin/ZhYBController.cs

@@ -3,7 +3,7 @@ using DataSharing.RawData;
 using DataSharing.Share.Dtos;
 using DataSharing.Share.Dtos.Common;
 using DataSharing.Share.Dtos.HotlineSetting;
-using DataSharing.Share.Dtos.YiBin.OtherPlatformsYB;
+using DataSharing.Share.Dtos.YiBin.ZzptPlatformsYB;
 using DataSharing.YiBin.ConvergenceMedia;
 using DotNetCore.CAP;
 using MapsterMapper;
@@ -18,7 +18,7 @@ namespace DataSharing.Host.Controllers.YiBin
     /// <summary>
     /// 智慧宜宾
     /// </summary>
-    public class OtherPlatformsYBController : BaseDataController
+    public class ZhYBController : BaseDataController
     {
         private readonly IMapper _mapper;
         private readonly IMediator _mediator;
@@ -40,7 +40,7 @@ namespace DataSharing.Host.Controllers.YiBin
         /// <param name="dsReceiveMediaDataRepository"></param>
         /// <param name="dsUserTokenInfoRepository"></param>
         /// <param name="fwClient"></param>
-        public OtherPlatformsYBController(IMapper mapper, IMediator mediator,
+        public ZhYBController(IMapper mapper, IMediator mediator,
             ICapPublisher capPublisher,
             IRepository<DsOrder> dataOrderRepository,
             IRepository<DsOrderWorkFlow> dataOrderWorkFlowRepository,

+ 2 - 2
src/DataSharing.Host/Controllers/YiBin/ZzptYBController.cs

@@ -3,7 +3,7 @@ using DataSharing.RawData;
 using DataSharing.Share.Dtos;
 using DataSharing.Share.Dtos.Common;
 using DataSharing.Share.Dtos.HotlineSetting;
-using DataSharing.Share.Dtos.YiBin.OtherPlatformsYB;
+using DataSharing.Share.Dtos.YiBin.ZzptPlatformsYB;
 using DataSharing.YiBin.ConvergenceMedia;
 using DotNetCore.CAP;
 using MapsterMapper;
@@ -203,7 +203,7 @@ namespace DataSharing.Host.Controllers.YiBin
                     Opinion = dto.strResult,
                     Source = "zzpt"
                 };
-                await _capPublisher.PublishAsync(Share.Mq.EventNames.SharingOrderReultSend, orderResultDto, cancellationToken: HttpContext.RequestAborted);
+                await _capPublisher.PublishAsync(Hotline.Share.Mq.EventNames.SharingOrderReultSend, orderResultDto, cancellationToken: HttpContext.RequestAborted);
             }
             return OpenResponse.Ok(OtherPlatformsDeResponse<string>.Success("新增成功"));
 

+ 142 - 0
src/DataSharing.Police110/DaoShu110/DaoShuService.cs

@@ -0,0 +1,142 @@
+using DataSharing.RawData;
+using DataSharing.Share.Enums;
+using Hotline.Share.Dtos.Order;
+using MapsterMapper;
+using Microsoft.Extensions.Logging;
+using XF.Domain.Dependency;
+using XF.Domain.Repository;
+
+namespace DataSharing.Police110.DaoShu110
+{
+    /// <summary>
+    /// 道枢110
+    /// </summary>
+    public class DaoShuService : IDaoShuService, IScopeDependency
+    {
+        private readonly IMapper _mapper;
+        private readonly ILogger<DaoShuService> _logger;
+        private readonly IRepository<DsPoliceSendChainAlarmDs> _policeSendChainAlarmDsRepository;
+        private readonly IRepository<DsPoliceSendChainDealDs> _policeSendChainDealDsRepository;
+        private readonly IRepository<DsOrder> _dsOrderRepository;
+        private readonly ISharingConfigurationManager _sharingConfigurationManager;
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="mapper"></param>
+        /// <param name="logger"></param>
+        /// <param name="policeSendChainAlarmDsRepository"></param>
+        /// <param name="policeSendChainDealDsRepository"></param>
+        /// <param name="dsOrderRepository"></param>
+        /// <param name="sharingConfigurationManager"></param>
+        public DaoShuService(IMapper mapper, ILogger<DaoShuService> logger,
+             IRepository<DsPoliceSendChainAlarmDs> policeSendChainAlarmDsRepository,
+             IRepository<DsPoliceSendChainDealDs> policeSendChainDealDsRepository,
+             IRepository<DsOrder> dsOrderRepository,
+             ISharingConfigurationManager sharingConfigurationManager)
+        {
+            _mapper = mapper;
+            _logger = logger;
+            _policeSendChainAlarmDsRepository = policeSendChainAlarmDsRepository;
+            _policeSendChainDealDsRepository = policeSendChainDealDsRepository;
+            _dsOrderRepository = dsOrderRepository;
+            _sharingConfigurationManager = sharingConfigurationManager;
+        }
+
+
+        /// <summary>
+        /// 组装110数据,12345警情工单推送到110
+        /// </summary>
+        /// <param name="orderDto"></param>
+        /// <returns></returns>
+        public async Task InitPoliceSendChainAlarmDsAsync(OrderDto orderDto, CancellationToken cancellationToken)
+        {
+            var areaCodeDefu = _sharingConfigurationManager.GetCityCode();
+            DsPoliceSendChainAlarmDs policeSend = new()
+            {
+                SerialNumber = orderDto.ExternalId,
+                AlarmReceiptNumber = orderDto.ExternalId,
+                RegisterNo = orderDto.AcceptorStaffNo,
+                CallPoliceNumber = string.IsNullOrEmpty(orderDto.FromPhone) == true ? orderDto.Contact : orderDto.FromPhone,
+                CallPoliceName = orderDto.FromName,
+                PhoneNumber = orderDto.Contact,
+                CallPoliceContent = orderDto.Content,
+                PoliceTypeCode = "",
+                PoliceTypeName = "",
+                JurisdictionalUnitCode = "511500000000",
+                JurisdictionalUnitName = "宜宾市公安局",
+                JurisdictionalUnitNumber = "0831110",
+                AlarmReceivingUnitCode = "",
+                AlarmReceivingUnitName = "",
+                CallPoliceTime = Convert.ToDateTime(orderDto.CreationTime),
+                PushTime = DateTime.Now,
+                AlarmReceptionType = "0",
+                AreaCode = orderDto.AreaCode.Substring(0, 6),
+                CallPoliceAddress = orderDto.FullAddress,
+                OrderId = orderDto.Id
+            };
+
+            if (string.IsNullOrEmpty(policeSend.AlarmReceiptNumber))
+            {
+                policeSend.AlarmReceiptNumber = areaCodeDefu + orderDto.No + "12345";
+                policeSend.SerialNumber = areaCodeDefu + orderDto.No + "12345";
+            }
+
+            //修改外部唯一ID
+            var orderData = await _dsOrderRepository.GetAsync(p => p.OrderId == orderDto.Id, cancellationToken);
+            if (orderData != null)
+            {
+                orderData.ExternalId = policeSend.AlarmReceiptNumber;
+                await _dsOrderRepository.UpdateAsync(orderData, cancellationToken);
+            }
+
+
+            //查询是否有此工单,如果没有新增此工单
+            var data = await _policeSendChainAlarmDsRepository.GetAsync(p => p.OrderId == orderDto.Id, cancellationToken);
+            if (data == null)
+                await _policeSendChainAlarmDsRepository.AddAsync(policeSend, cancellationToken);
+        }
+
+        /// <summary>
+        /// 110的非警情工单获取办理信息
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        public async Task InitPoliceSendChainDealDsAsync(OrderFlowDto dto, CancellationToken cancellationToken)
+        {
+            var data = await _policeSendChainDealDsRepository.GetAsync(p => p.OrderId == dto.Order.Id && p.DisposalType == (int)EDsDisposalType.OrderFiled, cancellationToken);
+            if (data == null)
+            {
+                data = new()
+                {
+                    AlarmReceiptNumber = dto.Order.ExternalId,
+                    FeedbackTime = dto.Order.ActualHandleTime,
+                    DisposalSituation = dto.Order.ActualOpinion,
+                    ResultDescription = dto.Order.ActualOpinion,
+                    FeedbackPersonNumber = dto.Order.ActualHandlerId,
+                    FeedbackPersonName = dto.Order.ActualHandlerName,
+                    FeedbackUnitCode = dto.Order.ActualHandleOrgCode,
+                    FeedbackUnitName = dto.Order.ActualHandleOrgName,
+                    WarehousingTime = DateTime.Now,
+                    DisposalType = 1,
+                    OrderId = dto.Order.Id
+                };
+                await _policeSendChainDealDsRepository.AddAsync(data, cancellationToken);
+            }
+            else
+            {
+                data.AlarmReceiptNumber = dto.Order.ExternalId;
+                data.FeedbackTime = dto.Order.ActualHandleTime;
+                data.DisposalSituation = dto.Order.ActualOpinion;
+                data.ResultDescription = dto.Order.ActualOpinion;
+                data.FeedbackPersonNumber = dto.Order.ActualHandlerId;
+                data.FeedbackPersonName = dto.Order.ActualHandlerName;
+                data.FeedbackUnitCode = dto.Order.ActualHandleOrgCode;
+                data.FeedbackUnitName = dto.Order.ActualHandleOrgName;
+                data.WarehousingTime = DateTime.Now;
+                await _policeSendChainDealDsRepository.UpdateAsync(data, cancellationToken);
+            }
+        }
+
+    }
+}

+ 24 - 0
src/DataSharing.Police110/DaoShu110/IDaoShuService.cs

@@ -0,0 +1,24 @@
+using Hotline.Share.Dtos.Order;
+
+namespace DataSharing.Police110.DaoShu110
+{
+    /// <summary>
+    /// 道枢110
+    /// </summary>
+    public interface IDaoShuService
+    {
+        /// <summary>
+        /// 组装110数据,12345警情工单推送到110
+        /// </summary>
+        /// <param name="orderDto"></param>
+        /// <returns></returns>
+        Task InitPoliceSendChainAlarmDsAsync(OrderDto orderDto, CancellationToken cancellationToken);
+
+        /// <summary>
+        /// 110的非警情工单获取办理信息
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        Task InitPoliceSendChainDealDsAsync(OrderFlowDto dto, CancellationToken cancellationToken);
+    }
+}

+ 6 - 6
src/DataSharing.Share/Dtos/DataExchange/DataExchangeDeReponse.cs → src/DataSharing.Share/Dtos/CityStateDataExchange/CityStateDataExchangeDeReponse.cs

@@ -1,6 +1,6 @@
-namespace DataSharing.Share.Dtos.DataExchange
+namespace DataSharing.Share.Dtos.CityStateDataExchange
 {
-    public class DataExchangeDeReponse
+    public class CityStateDataExchangeDeReponse
     {
         /// <summary>
         /// 状态
@@ -29,9 +29,9 @@
         /// <param name="OrderPwd"></param>
         /// <param name="description"></param>
         /// <returns></returns>
-        public static DataExchangeDeReponse Success(string OrderCode, string OrderPwd, string? description = "")
+        public static CityStateDataExchangeDeReponse Success(string OrderCode, string OrderPwd, string? description = "")
         {
-            return new DataExchangeDeReponse
+            return new CityStateDataExchangeDeReponse
             {
                 code = "1",
                 AcceptCode = OrderCode,
@@ -46,9 +46,9 @@
         /// <param name="code"></param>
         /// <param name="description"></param>
         /// <returns></returns>
-        public static DataExchangeDeReponse Failed(string? code = "0", string? description = "")
+        public static CityStateDataExchangeDeReponse Failed(string? code = "0", string? description = "")
         {
-            return new DataExchangeDeReponse
+            return new CityStateDataExchangeDeReponse
             {
                 code = code,
                 AcceptCode = "",

+ 2 - 2
src/DataSharing.Share/Dtos/DataExchange/DataExchangeResponseDto.cs → src/DataSharing.Share/Dtos/CityStateDataExchange/CityStateDataExchangeResponseDto.cs

@@ -1,6 +1,6 @@
-namespace DataSharing.Share.Dtos.DataExchange
+namespace DataSharing.Share.Dtos.CityStateDataExchange
 {
-    public class DataExchangeResponseDto
+    public class CityStateDataExchangeResponseDto
     {
         /// <summary>
         /// 状态

+ 2 - 2
src/DataSharing.Share/Dtos/DataExchange/CityDataReceiveDto.cs → src/DataSharing.Share/Dtos/CityStateDataExchange/CityStateDataReceiveDto.cs

@@ -1,6 +1,6 @@
-namespace DataSharing.Share.Dtos.DataExchange
+namespace DataSharing.Share.Dtos.CityStateDataExchange
 {
-    public class CityDataReceiveDto
+    public class CityStateDataReceiveDto
     {
         /// <summary>
         /// 密钥

+ 2 - 2
src/DataSharing.Share/Dtos/DataExchange/CityTranspondRawDataDto.cs → src/DataSharing.Share/Dtos/CityStateDataExchange/CityStateTranspondRawDataDto.cs

@@ -1,6 +1,6 @@
-namespace DataSharing.Share.Dtos.DataExchange
+namespace DataSharing.Share.Dtos.CityStateDataExchange
 {
-    public class CityTranspondRawDataDto
+    public class CityStateTranspondRawDataDto
     {
         /// <summary>
         /// 工单编号

+ 1 - 1
src/DataSharing.Share/Dtos/YiBin/OtherPlatformsYB/AcceptTypeListDto.cs → src/DataSharing.Share/Dtos/YiBin/ZzptPlatformsYB/AcceptTypeListDto.cs

@@ -1,4 +1,4 @@
-namespace DataSharing.Share.Dtos.YiBin.OtherPlatformsYB
+namespace DataSharing.Share.Dtos.YiBin.ZzptPlatformsYB
 {
     public class AcceptTypeListDto
     {

+ 1 - 1
src/DataSharing.Share/Dtos/YiBin/OtherPlatformsYB/AddWriteInfoDto.cs → src/DataSharing.Share/Dtos/YiBin/ZzptPlatformsYB/AddWriteInfoDto.cs

@@ -1,4 +1,4 @@
-namespace DataSharing.Share.Dtos.YiBin.OtherPlatformsYB
+namespace DataSharing.Share.Dtos.YiBin.ZzptPlatformsYB
 {
     /// <summary>
     /// 受理

+ 1 - 1
src/DataSharing.Share/Dtos/YiBin/OtherPlatformsYB/BaseVailCodeDto.cs → src/DataSharing.Share/Dtos/YiBin/ZzptPlatformsYB/BaseVailCodeDto.cs

@@ -1,4 +1,4 @@
-namespace DataSharing.Share.Dtos.YiBin.OtherPlatformsYB
+namespace DataSharing.Share.Dtos.YiBin.ZzptPlatformsYB
 {
     public class BaseVailCodeDto
     {

+ 1 - 1
src/DataSharing.Share/Dtos/YiBin/OtherPlatformsYB/OtherPlatformsDeResponse.cs → src/DataSharing.Share/Dtos/YiBin/ZzptPlatformsYB/OtherPlatformsDeResponse.cs

@@ -1,4 +1,4 @@
-namespace DataSharing.Share.Dtos.YiBin.OtherPlatformsYB
+namespace DataSharing.Share.Dtos.YiBin.ZzptPlatformsYB
 {
     public class OtherPlatformsDeResponse<TData>
     {

+ 1 - 1
src/DataSharing.Share/Dtos/YiBin/OtherPlatformsYB/ZzptDeResponse.cs → src/DataSharing.Share/Dtos/YiBin/ZzptPlatformsYB/ZzptDeResponse.cs

@@ -1,4 +1,4 @@
-namespace DataSharing.Share.Dtos.YiBin.OtherPlatformsYB
+namespace DataSharing.Share.Dtos.YiBin.ZzptPlatformsYB
 {
     /// <summary>
     /// 综治平台请求返回

+ 0 - 88
src/DataSharing.Share/Mq/EventNames.Order.cs

@@ -1,88 +0,0 @@
-namespace DataSharing.Share.Mq
-{
-    /// <summary>
-    /// 
-    /// </summary>
-    public partial class EventNames
-    {
-        /// <summary>
-        /// 服务工单交办(省工单、110、市州数据交换都是这个)---AddOrderDto
-        /// </summary>
-        public const string SharingOrderCreation = "sharing.order.creation";
-
-        /// <summary>
-        /// 服务工单退回反馈---OrderSendBackResultDto
-        /// </summary>
-        public const string SharingOrderReturnFeedback = "sharing.order.return.feedback";
-
-        /// <summary>
-        /// 服务工单延时审核结果---ProvinceSendDelayResultDto
-        /// </summary>
-        public const string SharingOrderDelayResult = "sharing.order.delay.result";
-
-        /// <summary>
-        /// 服务工单交办补充诉求---OrderComplementDto
-        /// </summary>
-        public const string SharingOrderSupplements = "sharing.order.supplements";
-
-        /// <summary>
-        /// 服务工单撤单---CancelOrderDto
-        /// </summary>
-        public const string SharingOrderRevoke = "sharing.order.revoke";
-
-        /// <summary>
-        /// 服务工单催单---ProvinceOrderUrgeDto
-        /// </summary>
-        public const string SharingOrderRemind = "sharing.order.remind";
-
-        /// <summary>
-        /// 服务工单预警---WarningDto
-        /// </summary>
-        public const string SharingOrderWarning = "sharing.order.warning";
-
-        /// <summary>
-        /// 督办工单派发接口---ProvinceSendOrderSuperviseDto
-        /// </summary>
-        public const string SharingOrderSupervise = "sharing.order.supervise";
-
-        /// <summary>
-        /// 服务工单甄别结果---ProvinceSendScreenResultDto
-        /// </summary>
-        public const string SharingOrderScreen = "sharing.order.screen";
-
-        /// <summary>
-        /// 交办工单满意度接收---ProvinceOrderVisitDto
-        /// </summary>
-        public const string SharingOrderEvlResult = "sharing.order.evlresult";
-
-        /// <summary>
-        /// 上报工单处理结果/退回---OrderResultDto
-        /// </summary>
-        public const string SharingOrderReultSend = "sharing.order.reultsend";
-
-        /// <summary>
-        /// 上报工单评价---ProvinceOrderVisitDto
-        /// </summary>
-        public const string SharingOrderVisitInfo = "sharing.order.visitinfo";
-
-        /// <summary>
-        /// 服务工单拓展信息交办---OrderExtensionDto
-        /// </summary>
-        public const string SharingOrderExtends = "sharing.order.extends";
-
-        /// <summary>
-        /// 处理办理流程----AddOrderTracesDto
-        /// </summary>
-        public const string SharingOrderAddTraces = "sharing.order.add.traces";
-
-        /// <summary>
-        /// 提交评价信息(门户等第三方,提交全部部门的评价)
-        /// </summary>
-        public const string SharingOrderVisitAllOther = "sharing.order.visit.all.other";
-
-        /// <summary>
-        /// 接受省上上传附件
-        /// </summary>
-        public const string SharingFileInfo = "sharing.file.info";
-    }
-}

+ 53 - 0
src/DataSharing.YiBin/Enterprise/EnterpriseService.cs

@@ -0,0 +1,53 @@
+using DataSharing.SendTask;
+using DataSharing.Share.Dtos.YiBin.Enterprise;
+using DataSharing.Share.Enums;
+using DataSharing.YiBin.ZzptPlatformsYB;
+using Hotline.Share.Dtos.File;
+using Hotline.Share.Dtos.Order;
+using MapsterMapper;
+using Microsoft.Extensions.Logging;
+using XF.Domain.Dependency;
+
+namespace DataSharing.YiBin.Enterprise
+{
+    /// <summary>
+    /// 企业专班
+    /// </summary>
+    public class EnterpriseService : IEnterpriseService, IScopeDependency
+    {
+        private readonly IMapper _mapper;
+        private readonly ILogger<EnterpriseService> _logger;
+        private readonly IInitPushDataService _initPushDataService;
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="mapper"></param>
+        /// <param name="logger"></param>
+        /// <param name="initPushDataService"></param>
+        public EnterpriseService(IMapper mapper,
+            ILogger<EnterpriseService> logger,
+            IInitPushDataService initPushDataService)
+        {
+            _mapper = mapper;
+            _logger = logger;
+            _initPushDataService = initPushDataService;
+        }
+
+        /// <summary>
+        /// 企业专班数据提交
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        public async Task InitEnterpriseDataAsync(OrderDto dto, CancellationToken cancellationToken)
+        {
+            var enterpriseData = _mapper.Map<PushWorkOrder>(dto);
+            var fileJson = _mapper.Map<List<DataSharing.Share.Dtos.FileJson>>(dto.FileJson);
+
+            //将待推送数据写入待推送表
+            await _initPushDataService.InitPushDataAsync("EnterprisePushWorkOrder", YbEnterpriseDefaults.PathEnterprisesWorkOrder, System.Text.Json.JsonSerializer.Serialize(enterpriseData), dto.ProvinceNo,
+                platformSource: EPlatformSource.Enterprise, fileJson: fileJson, cancellationToken: cancellationToken);
+
+        }
+    }
+}

+ 17 - 0
src/DataSharing.YiBin/Enterprise/IEnterpriseService.cs

@@ -0,0 +1,17 @@
+using Hotline.Share.Dtos.Order;
+
+namespace DataSharing.YiBin.Enterprise
+{
+    /// <summary>
+    /// 企业专班
+    /// </summary>
+    public interface IEnterpriseService
+    {
+        /// <summary>
+        /// 企业专班数据提交
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        Task InitEnterpriseDataAsync(OrderDto dto, CancellationToken cancellationToken);
+    }
+}

+ 0 - 77
src/DataSharing.YiBin/SendTaskDataService.cs

@@ -1,77 +0,0 @@
-using DataSharing.DataExchange;
-using DataSharing.Province;
-using DataSharing.SendTask;
-using DataSharing.YiBin.Enterprise;
-using DataSharing.YiBin.OtherPlatformsYB;
-using Microsoft.Extensions.Logging;
-
-namespace DataSharing.YiBin
-{
-    /// <summary>
-    /// 执行推送任务
-    /// </summary>
-    public class SendTaskDataService : ISendTaskDataService
-    {
-        private readonly ILogger<SendTaskDataService> _logger;
-        private readonly IPusherProviderService _pusherProviderService;
-        private readonly IEnterprisePusherProviderService _enterprisePusherProviderService;
-        private readonly IDataExchangePusherProviderService _dataExchangePusherProviderService;
-        private readonly IZzptPusherProviderService _zzptPusherProviderService;
-
-        /// <summary>
-        /// 
-        /// </summary>
-        /// <param name="logger"></param>
-        /// <param name="pusherProviderService"></param>
-        /// <param name="enterprisePusherProviderService"></param>
-        /// <param name="dataExchangePusherProviderService"></param>
-        /// <param name="zzptPusherProviderService"></param>
-        public SendTaskDataService(ILogger<SendTaskDataService> logger,
-         IPusherProviderService pusherProviderService,
-         IEnterprisePusherProviderService enterprisePusherProviderService,
-         IDataExchangePusherProviderService dataExchangePusherProviderService,
-         IZzptPusherProviderService zzptPusherProviderService)
-        {
-            _logger = logger;
-            _pusherProviderService = pusherProviderService;
-            _enterprisePusherProviderService = enterprisePusherProviderService;
-            _dataExchangePusherProviderService = dataExchangePusherProviderService;
-            _zzptPusherProviderService = zzptPusherProviderService;
-        }
-
-        /// <summary>
-        /// 执行推送任务
-        /// </summary>
-        /// <param name="dto"></param>
-        /// <param name="cancellationToken"></param>
-        /// <returns></returns>
-        public async Task SendTask(DsSendTask dto, CancellationToken cancellationToken)
-        {
-            if (dto is null)
-                return;
-
-            switch (dto.PlatformSource)
-            {
-                case Share.Enums.EPlatformSource.Province:
-                    await _pusherProviderService.SendProvinceDataPusher(dto, cancellationToken);
-                    break;
-                case Share.Enums.EPlatformSource.Police110:
-                    break;
-                case Share.Enums.EPlatformSource.CityDataExchange:
-                    await _dataExchangePusherProviderService.SendDataExchangeDataPusher(dto, cancellationToken);
-                    break;
-                case Share.Enums.EPlatformSource.ConvergenceMedia:
-                    break;
-                case Share.Enums.EPlatformSource.Enterprise:
-                    await _enterprisePusherProviderService.SendEnterpriseDataPusher(dto, cancellationToken);
-                    break;
-                case Share.Enums.EPlatformSource.ZZPT:
-                    await _zzptPusherProviderService.SendDataPusher(dto, cancellationToken);
-                    break;
-                default:
-                    break;
-            }
-        }
-
-    }
-}

+ 4 - 4
src/DataSharing.YiBin/YiBinSendTaskDataService.cs

@@ -1,8 +1,8 @@
-using DataSharing.DataExchange;
+using DataSharing.CityStateDataExchange;
 using DataSharing.Province;
 using DataSharing.SendTask;
 using DataSharing.YiBin.Enterprise;
-using DataSharing.YiBin.OtherPlatformsYB;
+using DataSharing.YiBin.ZzptPlatformsYB;
 using Microsoft.Extensions.Logging;
 
 namespace DataSharing.YiBin
@@ -15,7 +15,7 @@ namespace DataSharing.YiBin
         private readonly ILogger<YiBinSendTaskDataService> _logger;
         private readonly IPusherProviderService _pusherProviderService;
         private readonly IEnterprisePusherProviderService _enterprisePusherProviderService;
-        private readonly IDataExchangePusherProviderService _dataExchangePusherProviderService;
+        private readonly ICityStateDataExchangePusherProviderService _dataExchangePusherProviderService;
         private readonly IZzptPusherProviderService _zzptPusherProviderService;
 
         /// <summary>
@@ -29,7 +29,7 @@ namespace DataSharing.YiBin
         public YiBinSendTaskDataService(ILogger<YiBinSendTaskDataService> logger,
          IPusherProviderService pusherProviderService,
          IEnterprisePusherProviderService enterprisePusherProviderService,
-         IDataExchangePusherProviderService dataExchangePusherProviderService,
+         ICityStateDataExchangePusherProviderService dataExchangePusherProviderService,
          IZzptPusherProviderService zzptPusherProviderService)
         {
             _logger = logger;

+ 1 - 1
src/DataSharing.YiBin/OtherPlatformsYB/IZzptPusherProviderService.cs → src/DataSharing.YiBin/ZzptPlatformsYB/IZzptPusherProviderService.cs

@@ -1,6 +1,6 @@
 using DataSharing.SendTask;
 
-namespace DataSharing.YiBin.OtherPlatformsYB
+namespace DataSharing.YiBin.ZzptPlatformsYB
 {
     public interface IZzptPusherProviderService
     {

+ 25 - 0
src/DataSharing.YiBin/ZzptPlatformsYB/IZzptService.cs

@@ -0,0 +1,25 @@
+using Hotline.Share.Dtos.Order;
+
+namespace DataSharing.YiBin.ZzptPlatformsYB
+{
+   /// <summary>
+   /// 综治平台
+   /// </summary>
+    public interface IZzptService
+    {
+        /// <summary>
+        /// 综治平台--推送工单信息
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        Task InitZzptPlatformsAsync(OrderDto dto, CancellationToken cancellationToken);
+
+        /// <summary>
+        /// 推送办理信息
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <param name="cancellationToken"></param>
+        /// <returns></returns>
+        Task InitZzptPlatformsDetailAsync(OrderFlowDto dto, CancellationToken cancellationToken);
+    }
+}

+ 2 - 2
src/DataSharing.YiBin/OtherPlatformsYB/ZzptPusherProviderService.cs → src/DataSharing.YiBin/ZzptPlatformsYB/ZzptPusherProviderService.cs

@@ -1,6 +1,6 @@
 using DataSharing.RawData;
 using DataSharing.SendTask;
-using DataSharing.Share.Dtos.YiBin.OtherPlatformsYB;
+using DataSharing.Share.Dtos.YiBin.ZzptPlatformsYB;
 using DataSharing.Share.Enums;
 using Microsoft.Extensions.Logging;
 using System.Net;
@@ -8,7 +8,7 @@ using System.Text;
 using XF.Domain.Dependency;
 using XF.Domain.Repository;
 
-namespace DataSharing.YiBin.OtherPlatformsYB
+namespace DataSharing.YiBin.ZzptPlatformsYB
 {
     public class ZzptPusherProviderService : IZzptPusherProviderService, IScopeDependency
     {

+ 103 - 0
src/DataSharing.YiBin/ZzptPlatformsYB/ZzptService.cs

@@ -0,0 +1,103 @@
+using DataSharing.SendTask;
+using DataSharing.Share.Dtos.YiBin.Enterprise;
+using DataSharing.Share.Enums;
+using Hotline.Share.Dtos.Order;
+using Hotline.Share.Enums.Order;
+using MapsterMapper;
+using Microsoft.Extensions.Logging;
+using XF.Domain.Dependency;
+
+namespace DataSharing.YiBin.ZzptPlatformsYB
+{
+    /// <summary>
+    /// 综治平台
+    /// </summary>
+    public class ZzptService : IZzptService, IScopeDependency
+    {
+        private readonly IMapper _mapper;
+        private readonly ILogger<ZzptService> _logger;
+        private readonly IInitPushDataService _initPushDataService;
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="mapper"></param>
+        /// <param name="logger"></param>
+        /// <param name="initPushDataService"></param>
+        public ZzptService(IMapper mapper,
+            ILogger<ZzptService> logger,
+            IInitPushDataService initPushDataService)
+        {
+            _mapper = mapper;
+            _logger = logger;
+            _initPushDataService = initPushDataService;
+        }
+
+        /// <summary>
+        /// 综治平台--推送工单信息
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        public async Task InitZzptPlatformsAsync(OrderDto dto, CancellationToken cancellationToken)
+        {
+            string fromGender = dto.FromGender switch
+            {
+                EGender.Female => "2",
+                EGender.Male => "1",
+                _ => "0",
+            };
+            string AcceptTypeCode = dto.AcceptTypeCode switch
+            {
+                "10" => "1",
+                "35" => "2",
+                "20" => "3",
+                "15" => "4",
+                "1" => "5",
+                _ => "6",
+            };
+            Dictionary<string, string> dicParam = new()
+            {
+                { "code", dto.No },
+                { "departmentNo", dto.AreaCode },
+                { "userName", dto.FromName },
+                { "gender", fromGender },
+                { "email", "" },
+                { "phome", dto.Contact },
+                { "address", dto.FullAddress },
+                { "type", AcceptTypeCode },
+                { "title", dto.Title },
+                { "content", dto.Content },
+                { "occurDate", Convert.ToDateTime(dto.CreationTime).ToString("yyyy-MM-dd HH:mm:ss") },
+                { "remark", "" }
+            };
+
+            //写入待推送数据
+            await _initPushDataService.InitPushDataAsync("InitZzptPlatformsAsync", YbEnterpriseDefaults.ZzptPlatformsSendOrder, System.Text.Json.JsonSerializer.Serialize(dicParam), dto.ProvinceNo, platformSource: EPlatformSource.ZZPT, cancellationToken: cancellationToken);
+
+        }
+
+        /// <summary>
+        /// 推送办理信息
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <param name="cancellationToken"></param>
+        /// <returns></returns>
+        public async Task InitZzptPlatformsDetailAsync(OrderFlowDto dto, CancellationToken cancellationToken)
+        {
+            Dictionary<string, string> dicParam = new()
+            {
+                { "code", dto.Order.ExternalId },
+                { "action", "9" },
+                { "user", dto.Order.ActualHandlerName },
+                { "date", dto.Order.ActualHandleTime == null ? "" : dto.Order.ActualHandleTime.Value.ToString("yyyy-MM-dd HH:mm:ss") },
+                { "result", dto.Order.ActualOpinion }
+            };
+
+            //写入待推送数据
+            await _initPushDataService.InitPushDataAsync("InitZzptPlatformsDetailAsync", YbEnterpriseDefaults.ZzptPlatformsSendHandle, System.Text.Json.JsonSerializer.Serialize(dicParam), dto.Order.ProvinceNo, platformSource: EPlatformSource.ZZPT, cancellationToken: cancellationToken);
+
+        }
+
+
+    }
+}

+ 1 - 0
src/DataSharing.ZiGong/DataSharing.ZiGong.csproj

@@ -7,6 +7,7 @@
   </PropertyGroup>
 
   <ItemGroup>
+    <ProjectReference Include="..\DataSharing.Police110\DataSharing.Police110.csproj" />
     <ProjectReference Include="..\DataSharing\DataSharing.csproj" />
   </ItemGroup>
 

+ 3 - 8
src/DataSharing.ZiGong/ZiGongSendTaskDataService.cs

@@ -1,12 +1,7 @@
-using DataSharing.DataExchange;
+using DataSharing.CityStateDataExchange;
 using DataSharing.Province;
 using DataSharing.SendTask;
 using Microsoft.Extensions.Logging;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
 
 namespace DataSharing.ZiGong
 {
@@ -18,7 +13,7 @@ namespace DataSharing.ZiGong
 
         private readonly ILogger<ZiGongSendTaskDataService> _logger;
         private readonly IPusherProviderService _pusherProviderService;
-        private readonly IDataExchangePusherProviderService _dataExchangePusherProviderService;
+        private readonly ICityStateDataExchangePusherProviderService _dataExchangePusherProviderService;
 
         /// <summary>
         /// 
@@ -30,7 +25,7 @@ namespace DataSharing.ZiGong
         /// <param name="zzptPusherProviderService"></param>
         public ZiGongSendTaskDataService(ILogger<ZiGongSendTaskDataService> logger,
          IPusherProviderService pusherProviderService,
-         IDataExchangePusherProviderService dataExchangePusherProviderService)
+         ICityStateDataExchangePusherProviderService dataExchangePusherProviderService)
         {
             _logger = logger;
             _pusherProviderService = pusherProviderService;

+ 3 - 3
src/DataSharing/DataExchange/DataExchangeClient.cs → src/DataSharing/CityStateDataExchange/CityStateDataExchangeClient.cs

@@ -2,9 +2,9 @@
 using Microsoft.Extensions.DependencyInjection;
 using XF.Domain.Dependency;
 
-namespace DataSharing.DataExchange
+namespace DataSharing.CityStateDataExchange
 {
-    public class DataExchangeClient : ISingletonDependency, ISelfDependency
+    public class CityStateDataExchangeClient : ISingletonDependency, ISelfDependency
     {
         private readonly IServiceScopeFactory _scopeFactory;
         private readonly IHttpClientFactory _httpClientFactory;
@@ -14,7 +14,7 @@ namespace DataSharing.DataExchange
         /// </summary>
         /// <param name="scopeFactory"></param>
         /// <param name="httpClientFactory"></param>
-        public DataExchangeClient(IServiceScopeFactory scopeFactory, IHttpClientFactory httpClientFactory)
+        public CityStateDataExchangeClient(IServiceScopeFactory scopeFactory, IHttpClientFactory httpClientFactory)
         {
             _scopeFactory = scopeFactory;
             _httpClientFactory = httpClientFactory;

+ 2 - 2
src/DataSharing/DataExchange/DataExchangeHttpClientExtensions.cs → src/DataSharing/CityStateDataExchange/CityStateDataExchangeHttpClientExtensions.cs

@@ -1,8 +1,8 @@
 using System.Net.Http.Headers;
 
-namespace DataSharing.DataExchange
+namespace DataSharing.CityStateDataExchange
 {
-    public static class DataExchangeHttpClientExtensions
+    public static class CityStateDataExchangeHttpClientExtensions
     {
         public static HttpClient BuildHeader(this HttpClient httpClient)
         {

+ 9 - 9
src/DataSharing/DataExchange/DataExchangePusherProviderService.cs → src/DataSharing/CityStateDataExchange/CityStateDataExchangePusherProviderService.cs

@@ -1,17 +1,17 @@
 using DataSharing.RawData;
 using DataSharing.SendTask;
-using DataSharing.Share.Dtos.DataExchange;
+using DataSharing.Share.Dtos.CityStateDataExchange;
 using DotNetCore.CAP;
 using Microsoft.Extensions.Logging;
 using XF.Domain.Dependency;
 using XF.Domain.Repository;
 
-namespace DataSharing.DataExchange
+namespace DataSharing.CityStateDataExchange
 {
-    public class DataExchangePusherProviderService : IDataExchangePusherProviderService, IScopeDependency
+    public class CityStateDataExchangePusherProviderService : ICityStateDataExchangePusherProviderService, IScopeDependency
     {
-        private readonly ILogger<DataExchangePusherProviderService> _logger;
-        private readonly DataExchangeClient _dataExchangeClient;
+        private readonly ILogger<CityStateDataExchangePusherProviderService> _logger;
+        private readonly CityStateDataExchangeClient _dataExchangeClient;
         private readonly IRepository<DsSendTask> _dsSendTaskRepository;
         private readonly ICapPublisher _capPublisher;
         private readonly IRepository<DsSendTaskInfo> _dsSendTaskInfoRepository;
@@ -26,8 +26,8 @@ namespace DataSharing.DataExchange
         /// <param name="capPublisher"></param>
         /// <param name="dsSendTaskInfoRepository"></param>
         /// <param name="dsUserTokenInfoRepository"></param>
-        public DataExchangePusherProviderService(ILogger<DataExchangePusherProviderService> logger,
-             DataExchangeClient dataExchangeClient,
+        public CityStateDataExchangePusherProviderService(ILogger<CityStateDataExchangePusherProviderService> logger,
+             CityStateDataExchangeClient dataExchangeClient,
             IRepository<DsSendTask> dsSendTaskRepository,
             ICapPublisher capPublisher,
             IRepository<DsSendTaskInfo> dsSendTaskInfoRepository,
@@ -61,7 +61,7 @@ namespace DataSharing.DataExchange
             if (!baseAddress.EndsWith('/'))
                 baseAddress += "/";
 
-            var response = await _dataExchangeClient.ExecuteAsync<DataExchangeResponseDto>(baseAddress + dto.Path, dto.HttpMethod, dto.Request, cancellationToken);
+            var response = await _dataExchangeClient.ExecuteAsync<CityStateDataExchangeResponseDto>(baseAddress + dto.Path, dto.HttpMethod, dto.Request, cancellationToken);
             //写入推送明细表
             DsSendTaskInfo dsSendTaskInfo = new() { TaskId = dto.Id, RequestInfo = System.Text.Json.JsonSerializer.Serialize(response) };
             //如果推送成功修改数据状态
@@ -80,7 +80,7 @@ namespace DataSharing.DataExchange
                     dsSendTaskInfo.IsSuccess = true;
                 }
 
-                CityTranspondRawDataDto cityRawDataDto = new()
+                CityStateTranspondRawDataDto cityRawDataDto = new()
                 {
                     OrderCode = dto.ProvinceNo,
                     SendTimes = dto.SendTimes,

+ 195 - 0
src/DataSharing/CityStateDataExchange/CityStateDataExchangeService.cs

@@ -0,0 +1,195 @@
+using DataSharing.RawData;
+using DataSharing.SendTask;
+using DataSharing.Share.Enums;
+using Hotline.Share.Dtos.Order;
+using Hotline.Share.Enums.Order;
+using MapsterMapper;
+using Microsoft.Extensions.Logging;
+using System.Security.Cryptography;
+using System.Text;
+using System.Web;
+using XF.Domain.Dependency;
+using XF.Domain.Repository;
+
+namespace DataSharing.CityStateDataExchange
+{
+    /// <summary>
+    /// 市州工单互转
+    /// </summary>
+    public class CityStateDataExchangeService : ICityStateDataExchangeService, IScopeDependency
+    {
+        private readonly IMapper _mapper;
+        private readonly ILogger<CityStateDataExchangeService> _logger;
+        private readonly IInitPushDataService _initPushDataService;
+        private readonly IRepository<DsUserTokenInfo> _dsUserTokenInfoRepository;
+        private readonly ISharingConfigurationManager _sharingConfigurationManager;
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="mapper"></param>
+        /// <param name="logger"></param>
+        /// <param name="initPushDataService"></param>
+        /// <param name="dsUserTokenInfoRepository"></param>
+        /// <param name="sharingConfigurationManager"></param>
+        public CityStateDataExchangeService(IMapper mapper,
+            ILogger<CityStateDataExchangeService> logger,
+            IInitPushDataService initPushDataService,
+            IRepository<DsUserTokenInfo> dsUserTokenInfoRepository,
+            ISharingConfigurationManager sharingConfigurationManager)
+        {
+            _mapper = mapper;
+            _logger = logger;
+            _initPushDataService = initPushDataService;
+            _dsUserTokenInfoRepository = dsUserTokenInfoRepository;
+            _sharingConfigurationManager = sharingConfigurationManager;
+        }
+
+        /// <summary>
+        /// 市州工单互转
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <param name="platformSource"></param>
+        /// <param name="cancellationToken"></param>
+        /// <returns></returns>
+        public async Task InitCityDataAsync(OrderDto dto, string platformSource, CancellationToken cancellationToken)
+        {
+            var userInfo = await _dsUserTokenInfoRepository.GetAsync(p => p.PlatformSource == platformSource && p.State == "1", cancellationToken);
+            if (userInfo is null)
+                return;
+
+            string source = userInfo.PlatformSourceName;
+            string secretKey = GetMD5(source + userInfo.AccountSecret);
+
+            var serverName = dto.IdentityType == EIdentityType.Enterprise ? "企业" : "市民";
+            Dictionary<string, string> dicParam = new()
+            {
+                { "Code", secretKey },
+                { "FSHCode", dto.No },
+                { "ServerName", HttpUtility.UrlEncode(serverName)},
+                { "PurTypeName",HttpUtility.UrlEncode(dto.AcceptType) },
+                { "ConTypeName",HttpUtility.UrlEncode( dto.HotspotSpliceName)},
+                { "Title", HttpUtility.UrlEncode(dto.Title)},
+                { "LinkName", HttpUtility.UrlEncode(dto.FromName)},
+                { "Gender",dto.FromGender switch
+                    {
+                        EGender.Female => "2",
+                        EGender.Male => "1",
+                        _ => "0",
+                    }
+                },
+                { "Mobile", dto.Contact},
+                { "Mail","" },
+                { "Address", HttpUtility.UrlEncode( dto.FullAddress )},
+                { "Content", HttpUtility.UrlEncode(dto.Content)},
+                { "Source",HttpUtility.UrlEncode( source )}
+            };
+
+            var config = _sharingConfigurationManager.GetYiBinConfig().CityHandOver;
+            if (config == null)
+                return;
+
+            string path = "";
+            if (config.IsNew)
+                path = config.NewPushOrder;
+            else
+                path = config.PushOrder;
+            //写入待推送数据
+            await _initPushDataService.InitPushDataAsync(platformSource, path, System.Text.Json.JsonSerializer.Serialize(dicParam), dto.No, platformSource: EPlatformSource.CityDataExchange, cancellationToken: cancellationToken);
+
+        }
+
+        /// <summary>
+        /// 办理意见推送
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <param name="cancellationToken"></param>
+        /// <returns></returns>
+        public async Task UndertakAdviceAsync(OrderDto dto, CancellationToken cancellationToken)
+        {
+            string areaCode = _sharingConfigurationManager.GetCityCode();
+            //判断推送市州
+            string platformSource = "";
+            switch (areaCode)
+            {
+                case "510500":  //转泸州12345
+                    platformSource = "CityDataExchangeLz";
+                    break;
+                case "510300"://转自贡12345
+                    platformSource = "CityDataExchangeZG";
+                    break;
+                case "511500"://转宜宾12345
+                    platformSource = "CityDataExchangeYB";
+                    break;
+                case "511000"://转内江12345
+                    platformSource = "CityDataExchangeNJ";
+                    break;
+
+                default:
+                    break;
+            }
+            var userInfoSend = await _dsUserTokenInfoRepository.GetAsync(p => p.PlatformSource == platformSource && p.State == "1", cancellationToken);
+            if (userInfoSend is null)
+                return;
+            string source = userInfoSend.PlatformSourceName;
+            string secretKey = GetMD5(source + userInfoSend.AccountSecret);
+
+            var userInfo = await _dsUserTokenInfoRepository.GetAsync(p => p.PlatformSource == dto.Source.ToString() && p.State == "1", cancellationToken);
+            if (userInfo is null)
+                return;
+
+            Dictionary<string, object> dic = new()
+            {
+                { "Code", secretKey }, //请求Code
+                { "SCDRCode", dto.ExternalId }, //工单编号
+                { "UndertakAdvice", HttpUtility.UrlEncode(dto.ActualOpinion.Trim()) }, //承办意见
+                { "Source", HttpUtility.UrlEncode(source) } //来源
+            };
+
+            var config = _sharingConfigurationManager.GetYiBinConfig().CityHandOver;
+            if (config == null)
+                return;
+
+            string path = "";
+            if (config.IsNew)
+                path = config.NewPushOpinion;
+            else
+                path = config.PushOpinion;
+
+            //写入待推送数据
+            await _initPushDataService.InitPushDataAsync(userInfo.PlatformSource, path, System.Text.Json.JsonSerializer.Serialize(dic), dto.No, platformSource: EPlatformSource.CityDataExchange, cancellationToken: cancellationToken);
+
+        }
+
+        #region MD5 32位加密
+        /// <summary>
+        /// MD5 32位加密
+        /// </summary>
+        /// <param name="myString"></param>
+        /// <returns></returns>
+        private static string GetMD5(string myString)
+        {
+            string cl = myString;
+            string pwd = "";
+            try
+            {
+                //实例化一个md5对像
+                MD5 md5 = MD5.Create();
+                // 加密后是一个字节类型的数组,这里要注意编码UTF8/Unicode等的选择 
+                byte[] s = md5.ComputeHash(Encoding.UTF8.GetBytes(cl));
+                // 通过使用循环,将字节类型的数组转换为字符串,此字符串是常规字符格式化所得
+                for (int i = 0; i < s.Length; i++)
+                {
+                    // 将得到的字符串使用十六进制类型格式。格式后的字符是小写的字母,如果使用大写(X)则格式后的字符是大写字符 
+                    pwd = pwd + s[i].ToString("X2");
+                }
+            }
+            catch (Exception)
+            {
+            }
+            return pwd;
+        }
+
+        #endregion
+    }
+}

+ 1 - 1
src/DataSharing/DataExchange/DsReceiveDataExchangeData.cs → src/DataSharing/CityStateDataExchange/DsReceiveDataExchangeData.cs

@@ -2,7 +2,7 @@
 using System.ComponentModel;
 using XF.Domain.Repository;
 
-namespace DataSharing.DataExchange
+namespace DataSharing.CityStateDataExchange
 {
     /// <summary>
     /// 数据交换调用接口数据

+ 2 - 2
src/DataSharing/DataExchange/IDataExchangePusherProviderService.cs → src/DataSharing/CityStateDataExchange/ICityStateDataExchangePusherProviderService.cs

@@ -1,8 +1,8 @@
 using DataSharing.SendTask;
 
-namespace DataSharing.DataExchange
+namespace DataSharing.CityStateDataExchange
 {
-    public interface IDataExchangePusherProviderService
+    public interface ICityStateDataExchangePusherProviderService
     {
         /// <summary>
         /// 市州数据交换推送数据

+ 24 - 0
src/DataSharing/CityStateDataExchange/ICityStateDataExchangeService.cs

@@ -0,0 +1,24 @@
+using Hotline.Share.Dtos.Order;
+
+namespace DataSharing.CityStateDataExchange
+{
+    public interface ICityStateDataExchangeService
+    {
+        /// <summary>
+        /// 市州工单互转
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <param name="platformSource"></param>
+        /// <param name="cancellationToken"></param>
+        /// <returns></returns>
+        Task InitCityDataAsync(OrderDto dto, string platformSource, CancellationToken cancellationToken);
+
+        /// <summary>
+        /// 办理意见推送
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <param name="cancellationToken"></param>
+        /// <returns></returns>
+        Task UndertakAdviceAsync(OrderDto dto, CancellationToken cancellationToken);
+    }
+}

+ 1 - 0
src/DataSharing/DataSharing.csproj

@@ -7,6 +7,7 @@
   </PropertyGroup>
 
   <ItemGroup>
+    <PackageReference Include="Hotline.Share" Version="1.0.79" />
     <PackageReference Include="Portable.BouncyCastle" Version="1.9.0" />
     <PackageReference Include="Quartz.Jobs" Version="3.8.0" />
     <PackageReference Include="RestSharp" Version="110.2.0" />

+ 30 - 0
src/DataSharing/SendTask/IInitPushDataService.cs

@@ -0,0 +1,30 @@
+using DataSharing.Share.Dtos;
+using DataSharing.Share.Enums;
+
+namespace DataSharing.SendTask
+{
+    public interface IInitPushDataService
+    {
+        /// 初始化待推送数据
+        /// </summary>
+        /// <param name="taskType">任务类型</param>
+        /// <param name="path">请求地址</param>
+        /// <param name="request">请求参数</param>
+        /// <param name="ProvinceNo">省编号</param>
+        /// <param name="pathType"></param>
+        /// <param name="cancellationToken"></param>
+        /// <param name="httpMethod">请求方式</param>
+        /// <param name="platformSource">推送平台</param>
+        /// <param name="taskPriority">任务优先级(0:最低级别)</param>
+        /// <param name="fileJson">附件</param>
+        /// <returns></returns>
+        Task<string> InitPushDataAsync(string taskType, string path, string request, string ProvinceNo,
+           string httpMethod = "Post",
+           EPlatformSource platformSource = EPlatformSource.Province,
+           EPathType pathType = EPathType.Other,
+           int taskPriority = 0,
+           DateTime? GenerationTime = null,
+           List<FileJson>? fileJson = null,
+           CancellationToken cancellationToken = default);
+    }
+}

+ 73 - 0
src/DataSharing/SendTask/InitPushDataService.cs

@@ -0,0 +1,73 @@
+using DataSharing.Share.Dtos;
+using DataSharing.Share.Enums;
+using MapsterMapper;
+using Microsoft.Extensions.Logging;
+using XF.Domain.Dependency;
+using XF.Domain.Repository;
+
+namespace DataSharing.SendTask
+{
+    /// <summary>
+    /// 初始化推送数据
+    /// </summary>
+    public class InitPushDataService : IInitPushDataService, IScopeDependency
+    {
+        private readonly IMapper _mapper;
+        private readonly ILogger<InitPushDataService> _logger;
+        private readonly IRepository<DsSendTask> _dsSendTaskRepository;
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="mapper"></param>
+        /// <param name="logger"></param>
+        /// <param name="dsSendTaskRepository"></param>
+        public InitPushDataService(IMapper mapper,
+            ILogger<InitPushDataService> logger,
+            IRepository<DsSendTask> dsSendTaskRepository)
+        {
+            _mapper = mapper;
+            _logger = logger;
+            _dsSendTaskRepository = dsSendTaskRepository;
+        }
+
+        /// 初始化待推送数据
+        /// </summary>
+        /// <param name="taskType">任务类型</param>
+        /// <param name="path">请求地址</param>
+        /// <param name="request">请求参数</param>
+        /// <param name="ProvinceNo">省编号</param>
+        /// <param name="pathType"></param>
+        /// <param name="cancellationToken"></param>
+        /// <param name="httpMethod">请求方式</param>
+        /// <param name="platformSource">推送平台</param>
+        /// <param name="taskPriority">任务优先级(0:最低级别)</param>
+        /// <param name="fileJson">附件</param>
+        /// <returns></returns>
+        public async Task<string> InitPushDataAsync(string taskType, string path, string request, string ProvinceNo,
+            string httpMethod = "Post",
+            EPlatformSource platformSource = EPlatformSource.Province,
+            EPathType pathType = EPathType.Other,
+            int taskPriority = 0,
+            DateTime? GenerationTime = null,
+            List<FileJson>? fileJson = null,
+            CancellationToken cancellationToken = default)
+        {
+            //组装参数
+            DsSendTask dsSendTask = new()
+            {
+                ProvinceNo = ProvinceNo,
+                TaskPriority = taskPriority,
+                TaskType = taskType,
+                HttpMethod = httpMethod,
+                Path = path,
+                PlatformSource = platformSource,
+                FileJson = fileJson,
+                Request = request,
+                GenerationTime = GenerationTime,
+                PathType = pathType
+            };
+            return await _dsSendTaskRepository.AddAsync(dsSendTask, cancellationToken);
+        }
+    }
+}

+ 1 - 1
src/DataSharing/SendTask/TaskCaseDistrecordJob.cs

@@ -143,7 +143,7 @@ namespace DataSharing.SendTask
                             Traces = Traces
                         };
                         //往业务系统推送数据
-                        await _capPublisher.PublishAsync(DataSharing.Share.Mq.EventNames.SharingOrderAddTraces, addOrderTracesDto, cancellationToken: context.CancellationToken);
+                        await _capPublisher.PublishAsync(Hotline.Share.Mq.EventNames.SharingOrderAddTraces, addOrderTracesDto, cancellationToken: context.CancellationToken);
                     }
 
                     Thread.Sleep(2000);