Ver Fonte

修改部分BUG,新增智慧宜宾对接接口

tangjiang há 11 meses atrás
pai
commit
4e588d3a90

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

@@ -8,7 +8,7 @@
 
   <ItemGroup>
     <PackageReference Include="Hotline.Api.Sdk" Version="1.0.7" />
-    <PackageReference Include="Hotline.Share" Version="1.0.74" />
+    <PackageReference Include="Hotline.Share" Version="1.0.75" />
     <PackageReference Include="Polly.Core" Version="8.2.0" />
     <PackageReference Include="FluentValidation" Version="11.6.0" />
   </ItemGroup>

+ 11 - 0
src/DataSharing.Application/Mappers/MapperConfigs.cs

@@ -1,5 +1,6 @@
 using DataSharing.RawData;
 using DataSharing.Share.Dtos.Enterprise;
+using DataSharing.Share.Dtos.OtherPlatformsYB;
 using DataSharing.Share.Dtos.Province.Extend;
 using DataSharing.Share.Dtos.Province.HuiJu;
 using DataSharing.Share.Dtos.Province.XieTong.Receive;
@@ -693,6 +694,16 @@ namespace DataSharing.Application.Mappers
             ;
 
             #endregion
+
+            config.ForType<DsOrderWorkFlow, GetFlowInfoReturnDto>()
+            .Map(d => d.AcceptName, x => x.HandlerOrgName)
+            .Map(d => d.AcceptUser, x => x.HandlerName)
+            .Map(d => d.AcceptContent, x => x.Opinion)
+            .Map(d => d.AcceptState, x => "已完成")
+            .Map(d => d.AcceptDate, x => x.HandleTime)
+            .Map(d => d.AcceptEnd, x => "0")
+       ;
+            
         }
     }
 

+ 12 - 3
src/DataSharing.Application/Receivers/ProvinceReceiver.cs

@@ -7,7 +7,6 @@ using DataSharing.RawData;
 using DataSharing.SendTask;
 using DataSharing.Share.Consts;
 using DataSharing.Share.Dtos;
-using DataSharing.Share.Dtos.DataExchange;
 using DataSharing.Share.Dtos.Enterprise;
 using DataSharing.Share.Dtos.HotlineWeb;
 using DataSharing.Share.Dtos.Province;
@@ -19,7 +18,6 @@ using DataSharing.Share.Dtos.Province.XieTong.Send;
 using DataSharing.Share.Enums;
 using DataSharing.WebPortal;
 using DotNetCore.CAP;
-using Hotline.Share.Dtos.DataSharing.PusherHotlineDto;
 using Hotline.Share.Dtos.Knowledge;
 using Hotline.Share.Dtos.Order;
 using Hotline.Share.Dtos.TrCallCenter;
@@ -27,7 +25,6 @@ using Hotline.Share.Enums.CallCenter;
 using Hotline.Share.Enums.FlowEngine;
 using Hotline.Share.Enums.Order;
 using MapsterMapper;
-using Microsoft.AspNetCore.Http;
 using Microsoft.Extensions.Logging;
 using System.Security.Cryptography;
 using System.Text;
@@ -500,6 +497,13 @@ namespace DataSharing.Application.Receivers
                 //将待推送数据写入待推送表
                 await InitPushDataAsync("SubmitCaseInfo", "submit_case_info", jsonData, data.CaseSerial, pathType: EPathType.HuiJu, taskPriority: 10, GenerationTime: dto.StartTime, cancellationToken: cancellationToken);
             }
+            //修改工单的期满时间
+            var dataOrder = await _dsOrderRepository.GetAsync(p => p.OrderId == dto.Id, cancellationToken);
+            if (dataOrder != null)
+            {
+                dataOrder.ExpiredTime = dto.ExpiredTime;
+                await _dsOrderRepository.UpdateAsync(dataOrder, cancellationToken);
+            }
         }
 
         /// <summary>
@@ -633,9 +637,12 @@ namespace DataSharing.Application.Receivers
                 dataOrder.HandleState = "办理完成";
                 dataOrder.ActualHandleOrgName = dto.Order.ActualHandleOrgName;
                 dataOrder.ActualHandleOrgCode = dto.Order.ActualHandleOrgCode;
+                dataOrder.ActualHandlerId = dto.Order.ActualHandlerId;
+                dataOrder.ActualHandlerName = dto.Order.ActualHandlerName;
                 dataOrder.ActualOpinion = string.IsNullOrEmpty(dto.Order.ActualOpinion) == false ? dto.Order.ActualOpinion : dto.WorkflowTrace.Opinion;
                 dataOrder.ActualHandleTime = dto.Order.FiledTime;
                 dataOrder.AllDuration = dto.Order.AllDuration;
+                dataOrder.ExpiredTime = dto.Order.ExpiredTime;
                 await _dsOrderRepository.UpdateAsync(dataOrder, cancellationToken);
             }
             else
@@ -667,6 +674,8 @@ namespace DataSharing.Application.Receivers
                     HandleState = "办理完成",
                     ActualHandleOrgName = order.ActualHandleOrgName,
                     ActualHandleOrgCode = order.ActualHandleOrgCode,
+                    ActualHandlerId = order.ActualHandlerId,
+                    ActualHandlerName = order.ActualHandlerName,
                     ActualOpinion = string.IsNullOrEmpty(order.ActualOpinion) == false ? order.ActualOpinion : dto.WorkflowTrace.Opinion,
                     ActualHandleTime = order.FiledTime,
                     StartTime = order.StartTime,

+ 6 - 0
src/DataSharing.Host/Controllers/BaseController.cs

@@ -8,4 +8,10 @@ namespace DataSharing.Host.Controllers
     public class BaseController : ControllerBase
     {
     }
+
+    [ApiController]
+    [Route("api/v1/[controller]")]
+    public class BaseDataController : ControllerBase
+    {
+    }
 }

+ 251 - 0
src/DataSharing.Host/Controllers/OtherPlatformsYBController.cs

@@ -0,0 +1,251 @@
+using DataSharing.Common;
+using DataSharing.ConvergenceMedia;
+using DataSharing.FwDataExchange;
+using DataSharing.RawData;
+using DataSharing.Share.Dtos;
+using DataSharing.Share.Dtos.Common;
+using DataSharing.Share.Dtos.HotlineSetting;
+using DataSharing.Share.Dtos.OtherPlatformsYB;
+using DotNetCore.CAP;
+using Hotline.Api.Sdk;
+using MapsterMapper;
+using MediatR;
+using Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Mvc;
+using XF.Domain.Filters;
+using XF.Domain.Repository;
+
+namespace DataSharing.Host.Controllers
+{
+    /// <summary>
+    /// 智慧宜宾
+    /// </summary>
+    public class OtherPlatformsYBController : BaseDataController
+    {
+        private readonly IMapper _mapper;
+        private readonly IMediator _mediator;
+        private readonly ICapPublisher _capPublisher;
+        private readonly IRepository<DsOrder> _dataOrderRepository;
+        private readonly IRepository<DsOrderWorkFlow> _dataOrderWorkFlowRepository;
+        private readonly IRepository<DsReceiveMediaData> _dsReceiveMediaDataRepository;
+        private readonly IRepository<DsUserTokenInfo> _dsUserTokenInfoRepository;
+        private readonly FwClient _fwClient;
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="mapper"></param>
+        /// <param name="mediator"></param>
+        /// <param name="capPublisher"></param>
+        /// <param name="dataOrderRepository"></param>
+        /// <param name="dataOrderWorkFlowRepository"></param>
+        /// <param name="dsReceiveMediaDataRepository"></param>
+        /// <param name="dsUserTokenInfoRepository"></param>
+        /// <param name="fwClient"></param>
+        public OtherPlatformsYBController(IMapper mapper, IMediator mediator,
+            ICapPublisher capPublisher,
+            IRepository<DsOrder> dataOrderRepository,
+            IRepository<DsOrderWorkFlow> dataOrderWorkFlowRepository,
+            IRepository<DsReceiveMediaData> dsReceiveMediaDataRepository,
+            IRepository<DsUserTokenInfo> dsUserTokenInfoRepository,
+            FwClient fwClient)
+        {
+            _mapper = mapper;
+            _mediator = mediator;
+            _capPublisher = capPublisher;
+            _dataOrderRepository = dataOrderRepository;
+            _dataOrderWorkFlowRepository = dataOrderWorkFlowRepository;
+            _dsReceiveMediaDataRepository = dsReceiveMediaDataRepository;
+            _dsUserTokenInfoRepository = dsUserTokenInfoRepository;
+            _fwClient = fwClient;
+        }
+
+        /// <summary>
+        /// 2.3.1查询受理类型
+        /// </summary>
+        /// <param name="strVailCode"></param>
+        /// <returns></returns>
+        [HttpPost("e_GetTypeID")]
+        [AllowAnonymous]
+        public async Task<OpenResponse> GetAcceptType([FromForm] string strVailCode)
+        {
+            var accountDto = await CheckAccountAsync(strVailCode);
+            if (accountDto is null || accountDto.IsCheckAccount == false)
+                return OpenResponse.Ok(OtherPlatformsDeResponse<string>.Failed("密钥错误", "-900"));
+            List<AcceptTypeListDto> acceptTypeListDtos = new()
+            {
+                new() { Name = "咨询", Value = "10" },
+                new() { Name = "建议", Value = "15" },
+                new() { Name = "求助", Value = "20" },
+                new() { Name = "表扬", Value = "25" },
+                new() { Name = "举报", Value = "30" },
+                new() { Name = "投诉", Value = "35" },
+                new() { Name = "其他", Value = "40" },
+                new() { Name = "意见", Value = "1" },
+                new() { Name = "惠民帮助", Value = "2" },
+                new() { Name = "大气污染举报", Value = "3" }
+            };
+
+            return OpenResponse.Ok(OtherPlatformsDeResponse<List<AcceptTypeListDto>>.Success(acceptTypeListDtos));
+        }
+
+        /// <summary>
+        /// 2.3.2网上写信
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        [HttpPost("e_WriteInfo")]
+        [AllowAnonymous]
+        public async Task<OpenResponse> WriteInfo([FromForm] AddWriteInfoDto dto)
+        {
+            var accountDto = await CheckAccountAsync(dto.strVailCode);
+            if (accountDto is null || accountDto.IsCheckAccount == false)
+                return OpenResponse.Ok(OtherPlatformsDeResponse<string>.Failed("密钥错误", "-900"));
+
+            //验证数据
+            string strResult = dto.Validate();
+            if (!string.IsNullOrEmpty(strResult))
+                return OpenResponse.Ok(OtherPlatformsDeResponse<string>.Failed(strResult, "0"));
+
+            //写入原始数据
+            DsReceiveMediaData dsReceiveMediaData = new()
+            {
+                ServiceInterface = "e_WriteInfo",
+                ReceiveData = System.Text.Json.JsonSerializer.Serialize(dto)
+            };
+            dsReceiveMediaData.Id = await _dsReceiveMediaDataRepository.AddAsync(dsReceiveMediaData, HttpContext.RequestAborted);
+
+            Hotline.Share.Dtos.Order.AddOrderDto data = new()
+            {
+                Title = dto.strTitle,
+                FromName = dto.strUserName,
+                Contact = dto.strPhone,
+                Address = dto.strAddress,
+                Content = dto.strContent,
+                IsSecret = false,
+                AcceptType = dto.strTypeID,
+                Source = (Hotline.Share.Enums.Order.ESource)Enum.Parse(typeof(Hotline.Share.Enums.Order.ESource), accountDto.PlatformSource),
+                FromGender = dto.strGender switch
+                {
+                    "1" => Hotline.Share.Enums.Order.EGender.Male,
+                    "2" => Hotline.Share.Enums.Order.EGender.Female,
+                    _ => Hotline.Share.Enums.Order.EGender.Unknown,
+                },
+                IdentityType = Hotline.Share.Enums.Order.EIdentityType.Citizen,
+                Transpond = false,
+                IsEnforcementOrder = false
+            };
+
+            data.SourceChannel = "智慧宜宾";
+            data.SourceChannelCode = "ZHYB";
+
+            //调用工单创建接口
+            var result = await _fwClient.RequestNoTokenAsync<HotlineClientResponse>("api/v1/Order/add-anonymous", "Post", System.Text.Json.JsonSerializer.Serialize(data));
+            if (result != null && result.code == 0)
+            {
+                dsReceiveMediaData.ExternalId = result.result.id;
+                dsReceiveMediaData.OrderCode = result.result.no;
+                await _dsReceiveMediaDataRepository.UpdateAsync(dsReceiveMediaData, HttpContext.RequestAborted);
+
+                return OpenResponse.Ok(OtherPlatformsDeResponse<WriteInfoReturnDto>.Success(new WriteInfoReturnDto() { LetterCode = result.result.no, LetterPwd = result.result.password }));
+            }
+            else
+                return OpenResponse.Ok(OtherPlatformsDeResponse<string>.Failed("接口调用失败!", "0"));
+
+        }
+
+        /// <summary>
+        /// 2.3.3查询办理进度
+        /// </summary>
+        /// <param name=""></param>
+        /// <returns></returns>
+        [HttpPost("e_GetFlowInfo")]
+        [AllowAnonymous]
+        public async Task<OpenResponse> GetFlowInfo([FromForm] GetFlowDetailDto dto)
+        {
+            var accountDto = await CheckAccountAsync(dto.strVailCode);
+            if (accountDto is null || accountDto.IsCheckAccount == false)
+                return OpenResponse.Ok(OtherPlatformsDeResponse<string>.Failed("密钥错误", "-900"));
+
+            //验证数据
+            string strResult = dto.Validate();
+            if (!string.IsNullOrEmpty(strResult))
+                return OpenResponse.Ok(OtherPlatformsDeResponse<string>.Failed(strResult, "0"));
+
+            var dataOrder = await _dsReceiveMediaDataRepository.GetAsync(p => p.OrderCode == dto.strCode, HttpContext.RequestAborted);
+            if (dataOrder == null)
+                return OpenResponse.Ok(OtherPlatformsDeResponse<string>.Failed("编号或密码错误", "0"));
+
+            var data = await _dataOrderRepository.GetAsync(p => p.OrderId == dataOrder.ExternalId, HttpContext.RequestAborted);
+            if (data == null)
+                return OpenResponse.Ok(OtherPlatformsDeResponse<string>.Failed("信件正在受理中", "0"));
+
+            var dataFlow = _dataOrderWorkFlowRepository.Queryable()
+                .Where(p => p.OrderId == dataOrder.ExternalId)
+                .OrderBy(p => p.CreationTime)
+                .ToListAsync();
+            var list = _mapper.Map<List<GetFlowInfoReturnDto>>(dataFlow);
+
+            if (list != null && list.Count > 0 && data.HandleState == "办理完成")
+                list[list.Count - 1].AcceptEnd = "1";
+            return OpenResponse.Ok(OtherPlatformsDeResponse<List<GetFlowInfoReturnDto>>.Success(list));
+        }
+
+        /// <summary>
+        /// 2.3.4查询办理结果
+        /// </summary>
+        /// <param name=""></param>
+        /// <returns></returns>
+        [HttpPost("e_GetFlowDetail")]
+        [AllowAnonymous]
+        public async Task<OpenResponse> GetFlowDetail([FromForm] GetFlowDetailDto dto)
+        {
+            var accountDto = await CheckAccountAsync(dto.strVailCode);
+            if (accountDto is null || accountDto.IsCheckAccount == false)
+                return OpenResponse.Ok(OtherPlatformsDeResponse<string>.Failed("密钥错误", "-900"));
+
+            //验证数据
+            string strResult = dto.Validate();
+            if (!string.IsNullOrEmpty(strResult))
+                return OpenResponse.Ok(OtherPlatformsDeResponse<string>.Failed(strResult, "0"));
+
+            var dataOrder = await _dsReceiveMediaDataRepository.GetAsync(p => p.OrderCode == dto.strCode, HttpContext.RequestAborted);
+            if (dataOrder == null)
+                return OpenResponse.Ok(OtherPlatformsDeResponse<string>.Failed("编号或密码错误", "0"));
+
+            var data = await _dataOrderRepository.GetAsync(p => p.OrderId == dataOrder.ExternalId, HttpContext.RequestAborted);
+            if (data == null)
+                return OpenResponse.Ok(OtherPlatformsDeResponse<string>.Failed("信件正在受理中", "0"));
+
+            GetFlowDetailReturnDto getFlowDetailReturn = new()
+            {
+                state = data.HandleState == "办理完成" ? "1" : "0",
+                content = data.ActualOpinion,
+                AcceptName = data.ActualHandleOrgName,
+                AcceptUser = data.ActualHandlerName,
+                AcceptDate = data.ActualHandleTime
+            };
+            return OpenResponse.Ok(OtherPlatformsDeResponse<GetFlowDetailReturnDto>.Success(getFlowDetailReturn));
+        }
+
+        /// <summary>
+        /// 验证密钥
+        /// </summary>
+        /// <param name="Code"></param>
+        /// <returns></returns>
+        private async Task<CheckAccountDto> CheckAccountAsync(string Code)
+        {
+            CheckAccountDto accountDto = new() { IsCheckAccount = false };
+            var data = await _dsUserTokenInfoRepository.GetAsync(p => p.AccountId == Code && p.State == "1", HttpContext.RequestAborted);
+            if (data is not null)
+            {
+                accountDto.PlatformSource = data.PlatformSource;
+                accountDto.IsCheckAccount = true;
+                return accountDto;
+            }
+
+            accountDto.Message = "授权账号或密码验证不通过";
+            return accountDto;
+        }
+    }
+}

+ 19 - 19
src/DataSharing.Host/StartupHelper.cs

@@ -201,25 +201,25 @@ namespace DataSharing.Host
                     .WithCronSchedule("0/1 * * * * ? ")
                 );
 
-                ////2小时定时拉取12315的办理过程
-                //var taskCaseDistrecordJobKey = new JobKey("task-case-distrecord-job", "task case distrecord job");
-                //d.AddJob<TaskCaseDistrecordJob>(taskCaseDistrecordJobKey);
-                //d.AddTrigger(t => t
-                //    .WithIdentity("task-case-distrecord-job-trigger")
-                //    .ForJob(taskCaseDistrecordJobKey)
-                //    .StartNow()
-                //    .WithCronSchedule("0 0 */2 * * ?")//
-                //);
-
-                ////每天凌晨1点推送业务汇聚-统计数据
-                //var taskSubmitCaseTotalJobKey = new JobKey("task-submit-case-total-job", "task submit case total job");
-                //d.AddJob<TaskSubmitCaseTotalJob>(taskSubmitCaseTotalJobKey);
-                //d.AddTrigger(t => t
-                //    .WithIdentity("task-submit-case-total-job-trigger")
-                //    .ForJob(taskSubmitCaseTotalJobKey)
-                //   .StartNow()
-                //    .WithCronSchedule("0 0 1 * * ?")//0 0 1 * * ?
-                //);
+                //2小时定时拉取12315的办理过程
+                var taskCaseDistrecordJobKey = new JobKey("task-case-distrecord-job", "task case distrecord job");
+                d.AddJob<TaskCaseDistrecordJob>(taskCaseDistrecordJobKey);
+                d.AddTrigger(t => t
+                    .WithIdentity("task-case-distrecord-job-trigger")
+                    .ForJob(taskCaseDistrecordJobKey)
+                    .StartNow()
+                    .WithCronSchedule("0 0 */2 * * ?")//
+                );
+
+                //每天凌晨1点推送业务汇聚-统计数据
+                var taskSubmitCaseTotalJobKey = new JobKey("task-submit-case-total-job", "task submit case total job");
+                d.AddJob<TaskSubmitCaseTotalJob>(taskSubmitCaseTotalJobKey);
+                d.AddTrigger(t => t
+                    .WithIdentity("task-submit-case-total-job-trigger")
+                    .ForJob(taskSubmitCaseTotalJobKey)
+                   .StartNow()
+                    .WithCronSchedule("0 0 1 * * ?")//0 0 1 * * ?
+                );
 
             });
             ///

+ 1 - 1
src/DataSharing.Share/Dtos/ConvergenceMedia/MediaDataReceiveDto.cs

@@ -43,7 +43,7 @@
         /// </summary>
         [MDisplayName("联系电话")]
         [VRequired]
-        [VStringLength(0, 12)]
+        [VStringLength(0, 20)]
         public string Mobile { get; set; }
 
         /// <summary>

+ 92 - 0
src/DataSharing.Share/Dtos/OtherPlatformsYB/AcceptTypeListDto.cs

@@ -0,0 +1,92 @@
+namespace DataSharing.Share.Dtos.OtherPlatformsYB
+{
+    public class AcceptTypeListDto
+    {
+        /// <summary>
+        /// 
+        /// </summary>
+        public string Name { get; set; }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public string Value { get; set; }
+    }
+
+    /// <summary>
+    /// 2.3.3查询办理进度参数
+    /// </summary>
+    public class WriteInfoReturnDto
+    {
+        public string LetterCode { get; set; }
+
+        public string LetterPwd { get; set; }
+    }
+
+    /// <summary>
+    /// 2.3.3查询办理进度
+    /// </summary>
+    public class GetFlowInfoReturnDto
+    {
+        /// <summary>
+        /// 办理部门
+        /// </summary>
+        public string AcceptName { get; set; }
+
+        /// <summary>
+        /// 办理人
+        /// </summary>
+        public string AcceptUser { get; set; }
+
+        /// <summary>
+        /// 办理意见
+        /// </summary>
+        public string AcceptContent { get; set; }
+
+        /// <summary>
+        /// 办理状态
+        /// </summary>
+        public string AcceptState { get; set; }
+
+        /// <summary>
+        /// 办理时间
+        /// </summary>
+        public string AcceptDate { get; set; }
+
+        /// <summary>
+        /// 是否完结
+        /// </summary>
+        public string AcceptEnd { get; set; }
+    }
+
+    /// <summary>
+    /// 2.3.4查询办理结果
+    /// </summary>
+    public class GetFlowDetailReturnDto
+    {
+        /// <summary>
+        /// 办理状态 0办理中  1已完成
+        /// </summary>
+        public string state { get; set; }
+
+        /// <summary>
+        /// 办理结果内容
+        /// </summary>
+        public string content { get; set; }
+
+        /// <summary>
+        /// 办理部门
+        /// </summary>
+        public string AcceptName { get; set; }
+
+        /// <summary>
+        /// 办理用户
+        /// </summary>
+        public string AcceptUser { get; set; }
+
+        /// <summary>
+        /// 办理时间
+        /// </summary>
+        public DateTime? AcceptDate { get; set; }
+    }
+}

+ 91 - 0
src/DataSharing.Share/Dtos/OtherPlatformsYB/AddWriteInfoDto.cs

@@ -0,0 +1,91 @@
+namespace DataSharing.Share.Dtos.OtherPlatformsYB
+{
+    /// <summary>
+    /// 受理
+    /// </summary>
+    public class AddWriteInfoDto : BaseVailCodeDto
+    {
+        /// <summary>
+        /// 姓名
+        /// </summary>
+        [MDisplayName("姓名")]
+        [VRequired]
+        [VStringLength(0, 20)]
+        public string strUserName { get; set; }
+
+        /// <summary>
+        /// 性别 
+        /// </summary>
+        [MDisplayName("性别 ")]
+        [VRequired]
+        [VStringLength(0, 1)]
+        public string strGender { get; set; }
+
+        /// <summary>
+        /// 邮箱 
+        /// </summary>
+        [MDisplayName("邮箱 ")]
+        [VStringLength(0, 100)]
+        public string strEmail { get; set; }
+
+        /// <summary>
+        /// 电话 
+        /// </summary>
+        [MDisplayName("电话 ")]
+        [VStringLength(0, 20)]
+        public string strPhone { get; set; }
+
+        /// <summary>
+        /// 地址
+        /// </summary>
+        [MDisplayName("地址")]
+        [VStringLength(0, 200)]
+        public string strAddress { get; set; }
+
+        /// <summary>
+        /// 受理类型code
+        /// </summary>
+        [MDisplayName("受理类型code")]
+        [VRequired]
+        [VStringLength(0, 6)]
+        public string strTypeID { get; set; }
+
+        /// <summary>
+        /// 标题
+        /// </summary>
+        [MDisplayName("标题")]
+        [VRequired]
+        [VStringLength(0, 200)]
+        public string strTitle { get; set; }
+
+        /// <summary>
+        /// 内容
+        /// </summary>
+        [MDisplayName("内容")]
+        [VRequired]
+        [VStringLength(0, 7000)]
+        public string strContent { get; set; }
+    }
+
+    /// <summary>
+    /// 2.3.3查询办理进度/查询办理结果
+    /// </summary>
+    public class GetFlowDetailDto : BaseVailCodeDto
+    {
+        /// <summary>
+        /// 查询编号
+        /// </summary>
+        [MDisplayName("查询编号")]
+        [VRequired]
+        [VStringLength(0, 30)]
+        public string strCode { get; set; }
+
+        /// <summary>
+        /// 查询密码
+        /// </summary>
+        [MDisplayName("查询密码")]
+        [VRequired]
+        [VStringLength(0, 10)]
+        public string strPwd { get; set; }
+    }
+}

+ 12 - 0
src/DataSharing.Share/Dtos/OtherPlatformsYB/BaseVailCodeDto.cs

@@ -0,0 +1,12 @@
+namespace DataSharing.Share.Dtos.OtherPlatformsYB
+{
+    public class BaseVailCodeDto
+    {
+        /// <summary>
+        /// 接口密钥
+        /// </summary>
+        [MDisplayName("接口密钥")]
+        [VRequired]
+        public string strVailCode { get; set; }
+    }
+}

+ 44 - 0
src/DataSharing.Share/Dtos/OtherPlatformsYB/OtherPlatformsDeResponse.cs

@@ -0,0 +1,44 @@
+namespace DataSharing.Share.Dtos.OtherPlatformsYB
+{
+    public class OtherPlatformsDeResponse<TData>
+    {
+        /// <summary>
+        /// 状态
+        /// </summary>
+        public string code { get; set; }
+
+        /// <summary>
+        /// 描述
+        /// </summary>
+        public TData msg { get; set; }
+
+        /// <summary>
+        /// 成功
+        /// </summary>
+        /// <param name="data"></param>
+        /// <returns></returns>
+        public static OtherPlatformsDeResponse<TData> Success(TData data)
+        {
+            return new OtherPlatformsDeResponse<TData>
+            {
+                code = "1",
+                msg = data
+            };
+        }
+
+        /// <summary>
+        /// 失败
+        /// </summary>
+        /// <param name="data"></param>
+        /// <param name="code"></param>
+        /// <returns></returns>
+        public static OtherPlatformsDeResponse<TData> Failed(TData data, string? code = "0")
+        {
+            return new OtherPlatformsDeResponse<TData>
+            {
+                code = code,
+                msg = data
+            };
+        }
+    }
+}

+ 1 - 1
src/DataSharing.Share/Dtos/Province/XieTong/Send/SendCaseInfo.cs

@@ -113,7 +113,7 @@ public class SendCaseInfo
     /// 是否回访-工单是否需要回访
     /// </summary>
     [JsonPropertyName("CASE_ISVISIT")]
-    public string CaseIsVisit { get; set; } = "0";
+    public string CaseIsVisit { get; set; } = "1";
 
     /// <summary>
     /// 紧急程度

+ 4 - 0
src/DataSharing/DataSharing.csproj

@@ -25,4 +25,8 @@
     <ProjectReference Include="..\DataSharing.Share\DataSharing.Share.csproj" />
   </ItemGroup>
 
+  <ItemGroup>
+    <Folder Include="OtherPlatformsYB\" />
+  </ItemGroup>
+
 </Project>

+ 10 - 0
src/DataSharing/RawData/DsOrder.cs

@@ -173,6 +173,16 @@ namespace DataSharing.RawData
         [SugarColumn(ColumnDescription = "办理状态--默认办理中,归档的时候更新为办理完成", IsNullable = true)]
         public string? HandleState { get; set; } = "办理中";
 
+        /// <summary>
+        /// 实际办理人Code
+        /// </summary>
+        public string? ActualHandlerId { get; set; }
+
+        /// <summary>
+        /// 实际办理人名称
+        /// </summary>
+        public string? ActualHandlerName { get; set; }
+
         /// <summary>
         /// 实际办理部门名称
         /// </summary>