TANG JIANG 1 yıl önce
ebeveyn
işleme
1bce201436

+ 37 - 1
src/Sharing.Api/Controllers/HotlineMessageReceiveController.cs

@@ -8,9 +8,11 @@ using Sharing.Application;
 using Sharing.Notifications.HuiJu;
 using Sharing.Notifications.Knowledge;
 using Sharing.Notifications.XieTong;
+using Sharing.Province.Dtos;
 using Sharing.Province.Dtos.HuiJu.Send;
 using Sharing.Province.Dtos.XieTong.Knowledge;
 using Sharing.Province.Dtos.XieTong.Send;
+using Sharing.Province.Extend;
 using Sharing.Province.HuiJu.Send;
 using Sharing.Province.XieTong.Knowledge;
 using Sharing.Province.XieTong.Receive;
@@ -50,6 +52,7 @@ namespace Sharing.Api.Controllers
         private readonly ISendRealTimeStatusRepository _sendRealTimeStatusRepository;
         private readonly IScreenCaseInfoSendRepository _screenCaseInfoSendRepository;
         private readonly IZMHDCaseInfoPublicRepository _zMHDCaseInfoPublicRepository;
+        private readonly IReceiveCaseExtendsRepository _receiveCaseExtendsRepository;
 
         /// <summary>
         /// 
@@ -80,6 +83,7 @@ namespace Sharing.Api.Controllers
         /// <param name="sendRealTimeStatusRepository"></param>
         /// <param name="screenCaseInfoSendRepository"></param>
         /// <param name="zMHDCaseInfoPublicRepository"></param>
+        /// <param name="receiveCaseExtendsRepository"></param>
         public HotlineMessageReceiveController(IMediator mediator, ILogger<HotlineMsgReceiver> logger, IMapper mapper
             , IGetCaseResultReceiveRepository getCaseResultReceiveRepository, IGetCaseProcessReceiveRepository getCaseProcessReceiveRepository
             , IGetVisitInfoReceiveRepository getVisitInfoReceiveRepository, IGetCaseBackApplyRepository getCaseBackApplyRepository
@@ -92,7 +96,7 @@ namespace Sharing.Api.Controllers
             , IRemindCaseInfoRepository remindCaseInfoRepository, IGetKnowledgeInfoSendRepository getKnowledgeInfoSendRepository
             , IGetKnowledgeInfoUpdateRepository getKnowledgeInfoUpdateRepository, IGetKnowledgeInfoAbandonRepository getKnowledgeInfoAbandonRepository
             , ISendRealTimeStatusRepository sendRealTimeStatusRepository, IScreenCaseInfoSendRepository screenCaseInfoSendRepository
-            , IZMHDCaseInfoPublicRepository zMHDCaseInfoPublicRepository)
+            , IZMHDCaseInfoPublicRepository zMHDCaseInfoPublicRepository, IReceiveCaseExtendsRepository receiveCaseExtendsRepository)
         {
             _mediator = mediator;
             _logger = logger;
@@ -120,6 +124,7 @@ namespace Sharing.Api.Controllers
             _sendRealTimeStatusRepository = sendRealTimeStatusRepository;
             _screenCaseInfoSendRepository = screenCaseInfoSendRepository;
             _zMHDCaseInfoPublicRepository = zMHDCaseInfoPublicRepository;
+            _receiveCaseExtendsRepository = receiveCaseExtendsRepository;
         }
         #endregion
 
@@ -542,6 +547,37 @@ namespace Sharing.Api.Controllers
             //信息上报
             await _mediator.Publish(new SubmitCaseTotalNotification(data));
         }
+
+        /// <summary>
+        /// 服务工单拓展信息
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        [NonAction]
+        [CapSubscribe("SubmitCaseExtends")]
+        public async Task SubmitCaseExtends(SubmitCaseExtendsInfo dto)
+        {
+            //扩展主表信息
+            ReceiveCaseExtends receiveCaseExtends = new()
+            {
+                CaseSerial = dto.CaseSerial,
+                FormType = dto.FormType,
+                SyncState = "0",
+                Direction = "1"
+            };
+
+            //将上报信息写入本地库
+            var id = await _receiveCaseExtendsRepository.AddAsync(receiveCaseExtends);
+
+            SubmitCaseExtendsInfoId submitCaseExtendsInfoId = new()
+            {
+                Id = id,
+                Info = dto
+            };
+
+            //信息上报
+            await _mediator.Publish(new SubmitCaseExtendsNotification(Newtonsoft.Json.JsonConvert.SerializeObject(submitCaseExtendsInfoId)));
+        }
         #endregion
 
         #region 协同-第三批次

+ 4 - 4
src/Sharing.Province/Controllers/ProvinceController.cs

@@ -55,14 +55,14 @@ namespace Sharing.Province.Controllers
         /// <returns></returns>
         [HttpPost("getcaseresultreceive")]
         [AllowAnonymous]
-        public async Task<string> GetCaseResultReceive([FromBody] KnowledgeInfoSendInfo dto)
+        public async Task<string> GetCaseResultReceive([FromBody] SubmitCaseExtendsInfo dto)
         {
 
-            await _capPublisher.PublishAsync(Hotline.Share.Mq.EventNames.HotlineKnowledgeInfoSend, dto, cancellationToken: HttpContext.RequestAborted);
+            await _capPublisher.PublishAsync("SubmitCaseExtends", dto, cancellationToken: HttpContext.RequestAborted);
 
-            await _capPublisher.PublishAsync(Hotline.Share.Mq.EventNames.HotlineKnowledgeInfoUpdate, dto, cancellationToken: HttpContext.RequestAborted);
+            //await _capPublisher.PublishAsync(Hotline.Share.Mq.EventNames.HotlineKnowledgeInfoUpdate, dto, cancellationToken: HttpContext.RequestAborted);
 
-            await _capPublisher.PublishAsync(Hotline.Share.Mq.EventNames.HotlineKnowledgeInfoAbandon, dto, cancellationToken: HttpContext.RequestAborted);
+            //await _capPublisher.PublishAsync(Hotline.Share.Mq.EventNames.HotlineKnowledgeInfoAbandon, dto, cancellationToken: HttpContext.RequestAborted);
             //var data = _mapper.Map<GetKnowledgeInfoSend>(dto);
 
             ////将上报信息写入本地库

+ 162 - 2
src/Sharing.Province/Controllers/ReceiveController.cs

@@ -5,6 +5,7 @@ using Microsoft.AspNetCore.Authorization;
 using Microsoft.AspNetCore.Mvc;
 using Sharing.Province.Dtos;
 using Sharing.Province.Dtos.XieTong.Receive;
+using Sharing.Province.Extend;
 using Sharing.Province.XieTong.Receive;
 using Sharing.WebCore;
 
@@ -31,6 +32,18 @@ namespace Sharing.Province.Controllers
         private readonly ISendCaseEvlResultRepository _sendCaseEvlResultRepository;
         private readonly IGetCaseReultSendRepository _getCaseReultSendRepository;
         private readonly IGetVisitInfoSendRepository _getVisitInfoSendRepository;
+        private readonly IFormEnvironMentRepository _formEnvironMentRepository;
+        private readonly IFormTrafficRepository _formTrafficRepository;
+        private readonly IFormExpressWayRepository _formExpressWayRepository;
+        private readonly IFormMedicalRepository _formMedicalRepository;
+        private readonly IFormNetWorktecRepository _formNetWorktecRepository;
+        private readonly IFormPostRepository _formPostRepository;
+        private readonly IFormReturnexChangeRepository _formReturnexChangeRepository;
+        private readonly IFormShamPubRepository _formShamPubRepository;
+        private readonly IFormTaxationComplaintRepository _formTaxationComplaintRepository;
+        private readonly IFormTaxationConsultingRepository _formTaxationConsultingRepository;
+        private readonly IReceiveCaseExtendsRepository _receiveCaseExtendsRepository;
+
 
         /// <summary>
         /// 
@@ -49,13 +62,29 @@ namespace Sharing.Province.Controllers
         /// <param name="sendCaseEvlResultRepository"></param>
         /// <param name="getCaseReultSendRepository"></param>
         /// <param name="getVisitInfoSendRepository"></param>
+        /// <param name="formEnvironMentRepository"></param>
+        /// <param name="formTrafficRepository"></param>
+        /// <param name="formExpressWayRepository"></param>
+        /// <param name="formMedicalRepository"></param>
+        /// <param name="formNetWorktecRepository"></param>
+        /// <param name="formPostRepository"></param>
+        /// <param name="formReturnexChangeRepository"></param>
+        /// <param name="formShamPubRepository"></param>
+        /// <param name="formTaxationComplaintRepository"></param>
+        /// <param name="formTaxationConsultingRepository"></param>
+        /// <param name="receiveCaseExtendsRepository"></param>
         public ReceiveController(IMapper mapper, ICapPublisher capPublisher, IReceiveCaseInfoRepository receiveCaseInfoRepository,
             IGetCaseBackResultRepository getCaseBackResultRepository, IDelayCaseResultRepository delayCaseResultRepository
             , ISupplyCaseInfoRepository supplyCaseInfoRepository, IRevokeCaseInfoRepository revokeCaseInfoRepository
             , IRemindCaseInfoRepository remindCaseInfoRepository, ISendWarnInfoRepository sendWarnInfoRepository
             , ISendSuperviseInfoRepository sendSuperviseInfoRepository, IScreenCaseResultReceiveRepository screenCaseResultReceiveRepository
             , ISendCaseEvlResultRepository sendCaseEvlResultRepository, IGetCaseReultSendRepository getCaseReultSendRepository
-            , IGetVisitInfoSendRepository getVisitInfoSendRepository)
+            , IGetVisitInfoSendRepository getVisitInfoSendRepository, IFormEnvironMentRepository formEnvironMentRepository
+            , IFormTrafficRepository formTrafficRepository, IFormExpressWayRepository formExpressWayRepository
+            , IFormMedicalRepository formMedicalRepository, IFormNetWorktecRepository formNetWorktecRepository
+            , IFormPostRepository formPostRepository, IFormReturnexChangeRepository formReturnexChangeRepository
+            , IFormShamPubRepository formShamPubRepository, IFormTaxationComplaintRepository formTaxationComplaintRepository
+            , IFormTaxationConsultingRepository formTaxationConsultingRepository, IReceiveCaseExtendsRepository receiveCaseExtendsRepository)
         {
             _mapper = mapper;
             _capPublisher = capPublisher;
@@ -71,6 +100,17 @@ namespace Sharing.Province.Controllers
             _sendCaseEvlResultRepository = sendCaseEvlResultRepository;
             _getCaseReultSendRepository = getCaseReultSendRepository;
             _getVisitInfoSendRepository = getVisitInfoSendRepository;
+            _formEnvironMentRepository = formEnvironMentRepository;
+            _formTrafficRepository = formTrafficRepository;
+            _formExpressWayRepository = formExpressWayRepository;
+            _formMedicalRepository = formMedicalRepository;
+            _formNetWorktecRepository = formNetWorktecRepository;
+            _formPostRepository = formPostRepository;
+            _formReturnexChangeRepository = formReturnexChangeRepository;
+            _formShamPubRepository = formShamPubRepository;
+            _formTaxationComplaintRepository = formTaxationComplaintRepository;
+            _formTaxationConsultingRepository = formTaxationConsultingRepository;
+            _receiveCaseExtendsRepository = receiveCaseExtendsRepository;
         }
         #endregion
 
@@ -635,6 +675,126 @@ namespace Sharing.Province.Controllers
                 return Reponse.Failed("接口调用失败!");
         }
 
-        //还缺拓展字段和附件的
+        /// <summary>
+        /// 服务工单拓展信息交办
+        /// </summary>
+        /// <param name="receiveCaseExtendsRequest">服务工单拓展信息交办</param>
+        /// <returns></returns>
+        [HttpPost]
+        [Route("receive_case_extends")]
+        [AllowAnonymous]
+        public async Task<Reponse> ReceiveCaseExtends([FromBody] ReceiveCaseExtendsRequest receiveCaseExtendsRequest)
+        {
+            // 验证
+            if (receiveCaseExtendsRequest is null || receiveCaseExtendsRequest.paras is null)
+                return Reponse.Failed("数据解析失败");
+
+            string strResult = receiveCaseExtendsRequest.paras.Validate();
+            if (!string.IsNullOrEmpty(strResult))
+                return Reponse.Failed(strResult);
+
+            var data = receiveCaseExtendsRequest.paras;
+
+            //扩展主表信息
+            ReceiveCaseExtends receiveCaseExtends = new()
+            {
+                CaseSerial = data.CaseSerial,
+                FormType = data.FormType,
+                SyncState = "1",
+                Direction = "2"
+            };
+            var id = await _receiveCaseExtendsRepository.AddAsync(receiveCaseExtends, HttpContext.RequestAborted);
+            if (!string.IsNullOrEmpty(id))
+                return Reponse.Failed("数据提交失败");
+
+            //扩展信息写入
+            switch (data.FormType.ToLower())
+            {
+                case "yl"://医疗表单
+                    //转换数据
+                    var dtoyl = _mapper.Map<FormMedical>(data.FormMedical);
+                    dtoyl.RCEId = id;
+                    //添加数据
+                    await _formMedicalRepository.AddAsync(dtoyl, HttpContext.RequestAborted);
+                    break;
+                case "zwfw"://四川政务服务网技术工单
+                    //转换数据
+                    var dtozwfw = _mapper.Map<FormNetWorktec>(data.FormNetWorktec);
+                    dtozwfw.RCEId = id;
+                    //添加数据
+                    await _formNetWorktecRepository.AddAsync(dtozwfw, HttpContext.RequestAborted);
+                    break;
+                case "th"://电视购物及商铺购买退换货工单
+                    //转换数据
+                    var dtoth = _mapper.Map<FormReturnexChange>(data.FormReturnexChange);
+                    dtoth.RCEId = id;
+                    //添加数据
+                    await _formReturnexChangeRepository.AddAsync(dtoth, HttpContext.RequestAborted);
+                    break;
+                case "gsgl"://高速公路工单
+                    //转换数据
+                    var dtogsgl = _mapper.Map<FormExpressWay>(data.FormExpressWay);
+                    dtogsgl.RCEId = id;
+                    //添加数据
+                    await _formExpressWayRepository.AddAsync(dtogsgl, HttpContext.RequestAborted);
+                    break;
+                case "xjgg"://电视台虚假广告工单
+                    //转换数据
+                    var dtoxjgg = _mapper.Map<FormShamPub>(data.FormShamPub);
+                    dtoxjgg.RCEId = id;
+                    //添加数据
+                    await _formShamPubRepository.AddAsync(dtoxjgg, HttpContext.RequestAborted);
+                    break;
+                case "swfwsq"://12366热线诉求交办
+                    //转换数据
+                    var dtoswfwsq = _mapper.Map<FormTaxationComplaint>(data.FormTaxationComplaint);
+                    dtoswfwsq.RCEId = id;
+                    //添加数据
+                    await _formTaxationComplaintRepository.AddAsync(dtoswfwsq, HttpContext.RequestAborted);
+                    break;
+                case "swfwzx"://12366热线咨询交办
+                    //转换数据
+                    var dtoswfwzx = _mapper.Map<FormTaxationConsulting>(data.FormTaxationConsulting);
+                    dtoswfwzx.RCEId = id;
+                    //添加数据
+                    await _formTaxationConsultingRepository.AddAsync(dtoswfwzx, HttpContext.RequestAborted);
+                    break;
+                case "jtfwjd"://12328服务监督
+                    //转换数据
+                    var dtojtfwjd = _mapper.Map<FormTraffic>(data.FormTraffic);
+                    dtojtfwjd.RCEId = id;
+                    //添加数据
+                    await _formTrafficRepository.AddAsync(dtojtfwjd, HttpContext.RequestAborted);
+                    break;
+                case "yzxf"://邮政业消费者申诉
+                    //转换数据
+                    var dtoyzxf = _mapper.Map<FormPost>(data.FormPost);
+                    dtoyzxf.RCEId = id;
+                    //添加数据
+                    await _formPostRepository.AddAsync(dtoyzxf, HttpContext.RequestAborted);
+                    break;
+                case "hbjb"://环保举报业务
+                    //转换数据
+                    var dtohbjb = _mapper.Map<FormEnvironMent>(data.FormEnvironMent);
+                    dtohbjb.RCEId = id;
+                    //添加数据
+                    await _formEnvironMentRepository.AddAsync(dtohbjb, HttpContext.RequestAborted);
+                    break;
+                case "scjgj"://12315个性化表单
+                    break;
+                default:
+                    break;
+            }
+
+            //向业务系统推送消息
+            // await _capPublisher.PublishAsync(Hotline.Share.Mq.EventNames.HotlineOrderReceiveCaseExtends, dto, cancellationToken: HttpContext.RequestAborted);
+            if (!string.IsNullOrEmpty(id))
+                return Reponse.Success("您已成功提交数据!");
+            else
+                return Reponse.Failed("接口调用失败!");
+        }
+
+
+        //还缺附件的
     }
 }

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

@@ -207,8 +207,20 @@ public class DefaultPusher : IProvincePusher
         var response = await _huiJuClient.RequestAsync<SubmitCaseTotalRequest, ProvinceResponse>(request, cancellationToken);
         return response?.ReturnInfo;
     }
-    #endregion
 
+    /// <summary>
+    /// 服务工单拓展信息
+    /// </summary>
+    /// <param name="request"></param>
+    /// <param name="cancellationToken"></param>
+    /// <returns></returns>
+    public async Task<BaseProvinceResponse> PushSubmitCaseExtendsAsync(SubmitCaseExtendsRequest request, CancellationToken cancellationToken)
+    {
+        var response = await _huiJuClient.RequestAsync<SubmitCaseExtendsRequest, ProvinceResponse>(request, cancellationToken);
+        return response?.ReturnInfo;
+    }
+    #endregion
+    
     #region 协同-第三批次
     /// <summary>
     /// 服务工单上报

+ 112 - 0
src/Sharing.Province/Dtos/HuiJu/Send/SubmitCaseExtendsRequest.cs

@@ -0,0 +1,112 @@
+using Microsoft.AspNetCore.Http;
+using Sharing.Province.Dtos.Extend;
+using System.Text.Json.Serialization;
+
+namespace Sharing.Province.Dtos.HuiJu.Send
+{
+    /// <summary>
+    /// 服务工单拓展信息
+    /// </summary>
+    public class SubmitCaseExtendsRequest : ProvinceRequest<SubmitCaseExtendsInfo>
+    {
+        //业务汇聚-服务工单受理接口
+
+        public override string GetRequestUrl() => "submit_case_extends";
+
+        public override string GetHttpMethod() => HttpMethods.Post;
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class SubmitCaseExtendsInfoId
+    {
+        /// <summary>
+        /// 
+        /// </summary>
+        public string Id { get; set; }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public SubmitCaseExtendsInfo Info { get; set; }
+    }
+
+    /// <summary>
+    /// 服务工单拓展信息
+    /// </summary>
+    public class SubmitCaseExtendsInfo
+    {
+        /// <summary>
+        /// 服务工单编号
+        /// </summary>
+        [JsonPropertyName("CASE_SERIAL")]
+        public string CaseSerial { get; set; }
+
+        /// <summary>
+        /// 表单类型
+        /// </summary>
+        [JsonPropertyName("FORM_TYPE")]
+        public string FormType { get; set; }
+
+        /// <summary>
+        /// 医疗工单
+        /// </summary>
+        [JsonPropertyName("FORM_MEDICAL")]
+        public FormMedicalInfo FormMedical { get; set; }
+
+        /// <summary>
+        /// 电视购物及商铺购买退换货工单
+        /// </summary>
+        [JsonPropertyName("FORM_RETURNEXCHANGE")]
+        public FormReturnexChangeInfo FormReturnexChange { get; set; }
+
+        /// <summary>
+        /// 电视台虚假广告工单
+        /// </summary>
+        [JsonPropertyName("FORM_SHAMPUB")]
+        public FormShamPubInfo FormShamPub { get; set; }
+
+        /// <summary>
+        /// 高速公路工单
+        /// </summary>
+        [JsonPropertyName("FORM_EXPRESSWAY")]
+        public FormExpressWayInfo FormExpressWay { get; set; }
+
+        /// <summary>
+        /// 四川政务服务网技术工单
+        /// </summary>
+        [JsonPropertyName("FORM_NETWORKTEC")]
+        public FormNetWorktecInfo FormNetWorktec { get; set; }
+
+        /// <summary>
+        /// 12366投诉表单
+        /// </summary>
+        [JsonPropertyName("FORM_TAXATION_COMPLAINT")]
+        public FormTaxationComplaintInfo FormTaxationComplaint { get; set; }
+
+        /// <summary>
+        /// 四川省12366热线咨询交办单
+        /// </summary>
+        [JsonPropertyName("FORM_TAXATION_CONSULTING")]
+        public FormTaxationConsultingInfo FormTaxationConsulting { get; set; }
+
+        /// <summary>
+        /// 12328服务监督中心受理单
+        /// </summary>
+        [JsonPropertyName("FORM_TRAFFIC")]
+        public FormTrafficInfo FormTraffic { get; set; }
+
+        /// <summary>
+        /// 邮政业消费者申诉受理信息
+        /// </summary>
+        [JsonPropertyName("FORM_POST")]
+        public FormPostInfo FormPost { get; set; }
+
+        /// <summary>
+        /// 环保举报业务专业表单
+        /// </summary>
+        [JsonPropertyName("FORM_ENVIRONMENT")]
+        public FormEnvironMentInfo FormEnvironMent { get; set; }
+    }
+}

+ 105 - 0
src/Sharing.Province/Dtos/XieTong/Receive/ReceiveCaseExtendsRequest.cs

@@ -0,0 +1,105 @@
+using Sharing.Province.Dtos.Extend;
+using System.Text.Json.Serialization;
+
+namespace Sharing.Province.Dtos.XieTong.Receive
+{
+    /// <summary>
+    /// 
+    /// </summary>
+    public class ReceiveCaseExtendsRequest
+    {
+        /// <summary>
+        /// 
+        /// </summary>
+        public ClientInfo token { get; set; }
+
+        /// <summary>
+        /// 数据
+        /// </summary>
+        public ReceiveCaseExtendsModel paras { get; set; }
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class ReceiveCaseExtendsModel
+    {
+        /// <summary>
+        /// 服务工单编号
+        /// </summary>
+        [JsonPropertyName("CASE_SERIAL")]
+        [MDisplayName("服务工单编号")]
+        [VRequired]
+        [VStringLength(0, 50)]
+        public string CaseSerial { get; set; }
+
+        /// <summary>
+        /// 表单类型
+        /// </summary>
+        [JsonPropertyName("FORM_TYPE")]
+        [MDisplayName("表单类型")]
+        [VRequired]
+        [VStringLength(0, 50)]
+        public string FormType { get; set; }
+
+        /// <summary>
+        /// 医疗工单
+        /// </summary>
+        [JsonPropertyName("FORM_MEDICAL")]
+        public FormMedicalInfo FormMedical { get; set; }
+
+        /// <summary>
+        /// 电视购物及商铺购买退换货工单
+        /// </summary>
+        [JsonPropertyName("FORM_RETURNEXCHANGE")]
+        public FormReturnexChangeInfo FormReturnexChange { get; set; }
+
+        /// <summary>
+        /// 电视台虚假广告工单
+        /// </summary>
+        [JsonPropertyName("FORM_SHAMPUB")]
+        public FormShamPubInfo FormShamPub { get; set; }
+
+        /// <summary>
+        /// 高速公路工单
+        /// </summary>
+        [JsonPropertyName("FORM_EXPRESSWAY")]
+        public FormExpressWayInfo FormExpressWay { get; set; }
+
+        /// <summary>
+        /// 四川政务服务网技术工单
+        /// </summary>
+        [JsonPropertyName("FORM_NETWORKTEC")]
+        public FormNetWorktecInfo FormNetWorktec { get; set; }
+
+        /// <summary>
+        /// 12366投诉表单
+        /// </summary>
+        [JsonPropertyName("FORM_TAXATION_COMPLAINT")]
+        public FormTaxationComplaintInfo FormTaxationComplaint { get; set; }
+
+        /// <summary>
+        /// 四川省12366热线咨询交办单
+        /// </summary>
+        [JsonPropertyName("FORM_TAXATION_CONSULTING")]
+        public FormTaxationConsultingInfo FormTaxationConsulting { get; set; }
+
+        /// <summary>
+        /// 12328服务监督中心受理单
+        /// </summary>
+        [JsonPropertyName("FORM_TRAFFIC")]
+        public FormTrafficInfo FormTraffic { get; set; }
+
+        /// <summary>
+        /// 邮政业消费者申诉受理信息
+        /// </summary>
+        [JsonPropertyName("FORM_POST")]
+        public FormPostInfo FormPost { get; set; }
+
+        /// <summary>
+        /// 环保举报业务专业表单
+        /// </summary>
+        [JsonPropertyName("FORM_ENVIRONMENT")]
+        public FormEnvironMentInfo FormEnvironMent { get; set; }
+    }
+}

+ 82 - 0
src/Sharing.Province/Handlers/HuiJu/SubmitCaseExtendsHandler.cs

@@ -0,0 +1,82 @@
+using MapsterMapper;
+using MediatR;
+using Sharing.Notifications.HuiJu;
+using Sharing.Province.Dtos;
+using Sharing.Province.Dtos.HuiJu.Send;
+using Sharing.Province.Extend;
+using Sharing.Province.HuiJu.Send;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Sharing.Province.Handlers.HuiJu
+{
+    /// <summary>
+    /// 服务工单拓展信息
+    /// </summary>
+    public class SubmitCaseExtendsHandler : INotificationHandler<SubmitCaseExtendsNotification>
+    {
+        private readonly IChannelConfigurationManager _channelConfigurationManager;
+        private readonly PusherProvider _pusherProvider;
+        private readonly IMapper _mapper;
+        private readonly IReceiveCaseExtendsRepository _receiveCaseExtendsRepository;
+
+       /// <summary>
+       /// 
+       /// </summary>
+       /// <param name="channelConfigurationManager"></param>
+       /// <param name="pusherProvider"></param>
+       /// <param name="mapper"></param>
+       /// <param name="receiveCaseExtendsRepository"></param>
+        public SubmitCaseExtendsHandler(IChannelConfigurationManager channelConfigurationManager, PusherProvider pusherProvider, IMapper mapper,IReceiveCaseExtendsRepository receiveCaseExtendsRepository)
+        {
+            _channelConfigurationManager = channelConfigurationManager;
+            _pusherProvider = pusherProvider;
+            _mapper = mapper;
+            _receiveCaseExtendsRepository = receiveCaseExtendsRepository;
+        }
+
+        /// <summary>
+        /// 服务工单拓展信息
+        /// </summary>
+        /// <param name="notification"></param>
+        /// <param name="cancellationToken"></param>
+        /// <returns></returns>
+        public async Task Handle(SubmitCaseExtendsNotification notification, CancellationToken cancellationToken)
+        {
+            var strOrder = notification.DataOrder;
+            if (!string.IsNullOrEmpty(strOrder))
+            {
+                var order = System.Text.Json.JsonSerializer.Deserialize<SubmitCaseExtendsInfoId>(strOrder);
+                if (order != null&& order.Info!=null)
+                {
+                    var data = order.Info;
+                    var pusher = _pusherProvider.CreatePusher(_channelConfigurationManager);
+
+                    var request = new SubmitCaseExtendsRequest();
+                    request.SetData(data);
+
+                    var response = await pusher.PushSubmitCaseExtendsAsync(request, cancellationToken);
+
+                    //如果推送成功修改数据状态
+                    if (response != null)
+                    {
+                        var caseInfo =await _receiveCaseExtendsRepository.GetAsync(p => p.Id == order.Id);
+                        if (caseInfo != null)
+                        {
+                            if (response.Code == "1")
+                                caseInfo.SyncState = "1";
+                            else
+                                caseInfo.SyncState = "2";
+
+                            caseInfo.ReturnResult = Newtonsoft.Json.JsonConvert.SerializeObject(response);
+                            await _receiveCaseExtendsRepository.UpdateAsync(caseInfo);
+                        }
+                    }
+                }
+            }
+        }
+    }
+}

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

@@ -132,6 +132,15 @@ public interface IProvincePusher
     /// <param name="cancellationToken"></param>
     /// <returns></returns>
     Task<BaseProvinceResponse> PushSubmitCaseTotalAsync(SubmitCaseTotalRequest request, CancellationToken cancellationToken);
+
+    /// <summary>
+    /// 服务工单拓展信息
+    /// </summary>
+    /// <param name="request"></param>
+    /// <param name="cancellationToken"></param>
+    /// <returns></returns>
+    Task<BaseProvinceResponse> PushSubmitCaseExtendsAsync(SubmitCaseExtendsRequest request, CancellationToken cancellationToken);
+
     #endregion
 
     #region 协同-第三批次

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

@@ -178,6 +178,17 @@ public class SmartPusher : IProvincePusher
     {
         throw new NotImplementedException();
     }
+
+    /// <summary>
+    /// 服务工单拓展信息
+    /// </summary>
+    /// <param name="request"></param>
+    /// <param name="cancellationToken"></param>
+    /// <returns></returns>
+    public async Task<BaseProvinceResponse> PushSubmitCaseExtendsAsync(SubmitCaseExtendsRequest request, CancellationToken cancellationToken)
+    {
+        throw new NotImplementedException();
+    }
     #endregion
 
     #region 协同-第三批次

+ 14 - 0
src/Sharing.Repository/Province/Extend/ReceiveCaseExtendsRepository.cs

@@ -0,0 +1,14 @@
+using Sharing.Province.Extend;
+using SqlSugar;
+using XF.Domain.Dependency;
+
+namespace Sharing.Repository.Province.Extend
+{
+    public class ReceiveCaseExtendsRepository : BaseRepository<ReceiveCaseExtends>, IReceiveCaseExtendsRepository, IScopeDependency
+    {
+        public ReceiveCaseExtendsRepository(ISugarUnitOfWork<SharingDbContext> uow) : base(uow)
+        {
+
+        }
+    }
+}

+ 6 - 0
src/Sharing/Notifications/HuiJu/SubmitCaseExtendsNotification.cs

@@ -0,0 +1,6 @@
+using MediatR;
+
+namespace Sharing.Notifications.HuiJu
+{
+    public record SubmitCaseExtendsNotification(string DataOrder) : INotification;
+}

+ 3 - 3
src/Sharing/Province/Extend/ExtendStateEntity.cs

@@ -6,9 +6,9 @@ namespace Sharing.Province.Extend
     public class ExtendStateEntity : FullStateEntity
     {
         /// <summary>
-        /// 服务工单编号  
+        /// 扩展主表ID  
         /// </summary>
-        [SugarColumn(ColumnDescription = "服务工单编号", ColumnDataType = "varchar(50)")]
-        public string CaseSerial { get; set; }
+        [SugarColumn(ColumnDescription = "扩展主表ID", ColumnDataType = "varchar(50)")]
+        public string RCEId { get; set; }
     }
 }

+ 8 - 0
src/Sharing/Province/Extend/IReceiveCaseExtendsRepository.cs

@@ -0,0 +1,8 @@
+using XF.Domain.Repository;
+
+namespace Sharing.Province.Extend
+{
+    public interface IReceiveCaseExtendsRepository : IRepository<ReceiveCaseExtends>
+    {
+    }
+}

+ 43 - 0
src/Sharing/Province/Extend/ReceiveCaseExtends.cs

@@ -0,0 +1,43 @@
+using SqlSugar;
+using System.ComponentModel;
+using XF.Domain.Repository;
+
+namespace Sharing.Province.Extend
+{
+    /// <summary>
+    /// 服务工单拓展信息表
+    /// </summary>
+    [Description("服务工单拓展信息表")]
+    public class ReceiveCaseExtends : FullStateEntity
+    {
+        /// <summary>
+        /// 服务工单编号  
+        /// </summary>
+        [SugarColumn(ColumnDescription = "服务工单编号", ColumnDataType = "varchar(50)")]
+        public string CaseSerial { get; set; }
+
+        /// <summary>
+        /// 表单类型
+        /// </summary>
+        [SugarColumn(ColumnDescription = "表单类型", ColumnDataType = "varchar(50)")]
+        public string FormType { get; set; }
+
+        /// <summary>
+        /// 接口返回结果
+        /// </summary>
+        [SugarColumn(ColumnDataType = "json", IsJson = true, IsNullable = true)]
+        public string ReturnResult { get; set; }
+
+        /// <summary>
+        /// 同步状态 0:待同步;	  1:同步成功;	 2:同步失败;
+        /// </summary>
+        [SugarColumn(ColumnDescription = "同步状态", ColumnDataType = "varchar(1)", IsNullable = true)]
+        public string SyncState { get; set; } = "0";
+
+        /// <summary>
+        ///推送方向 1:市州数据向省上推送;2:省上数据向市州推送;
+        /// </summary>
+        [SugarColumn(ColumnDescription = "推送方向 1:市州数据向省上推送;2:省上数据向市州推送;", ColumnDataType = "varchar(1)")]
+        public string Direction { get; set; }
+    }
+}