Browse Source

Merge branch 'master' of http://110.188.24.182:10023/Fengwo/hotline

田爽 1 year ago
parent
commit
34f241c25a

+ 29 - 14
src/Hotline.Api/Controllers/OrderController.cs

@@ -14,6 +14,7 @@ using Hotline.FlowEngine.Workflows;
 using Hotline.Import;
 using Hotline.Orders;
 using Hotline.Orders.Notifications;
+using Hotline.OrderTranspond;
 using Hotline.Permissions;
 using Hotline.Push.FWMessage;
 using Hotline.Push.Notifies;
@@ -104,6 +105,7 @@ public class OrderController : BaseController
     private readonly IRepository<OrderSendBackAudit> _orderSendBackAuditRepository;
     private readonly IRepository<User> _userRepository;
     private readonly IExportApplication _exportApplication;
+    private readonly IRepository<TranspondCityRawData> _transpondCityRawDataRepository;
 
     public OrderController(
         IOrderDomainService orderDomainService,
@@ -153,7 +155,8 @@ public class OrderController : BaseController
         ITypedCache<YbEnterpriseToken> cacheResponse,
         IRepository<OrderSendBackAudit> orderSendBackAuditRepository,
         IRepository<User> userRepository,
-        IExportApplication exportApplication
+        IExportApplication exportApplication,
+        IRepository<TranspondCityRawData> transpondCityRawDataRepository
         )
     {
         _orderDomainService = orderDomainService;
@@ -204,6 +207,7 @@ public class OrderController : BaseController
         _orderSendBackAuditRepository = orderSendBackAuditRepository;
         _userRepository = userRepository;
         _exportApplication = exportApplication;
+        _transpondCityRawDataRepository = transpondCityRawDataRepository;
     }
 
     #region 工单发布
@@ -2493,20 +2497,31 @@ public class OrderController : BaseController
 
         try
         {
-	        // 平均派单
-	        if (dto.Workflow.BusinessType == EBusinessType.Send)
-	        {
-		        dto.Workflow.NextHandlers = await _orderDomainService.AverageOrder(HttpContext.RequestAborted);
-	        }
+            // 平均派单
+            if (dto.Workflow.BusinessType == EBusinessType.Send)
+            {
+                dto.Workflow.NextHandlers = await _orderDomainService.AverageOrder(HttpContext.RequestAborted);
+            }
             //是否市州互转
-            if (dto.Data.Transpond.HasValue  && dto.Data.Transpond.Value)
+            if (dto.Data.Transpond.HasValue && dto.Data.Transpond.Value)
             {
                 var order = await _orderRepository.GetAsync(id, HttpContext.RequestAborted);
                 var orderDto = _mapper.Map<OrderDto>(order);
-				await _capPublisher.PublishAsync(Hotline.Share.Mq.EventNames.HotlineOrderTranspondCity, orderDto);
-			}
+                await _capPublisher.PublishAsync(Hotline.Share.Mq.EventNames.HotlineOrderTranspondCity, orderDto);
+                //保存本地数据
+                TranspondCityRawData cityRawData = new TranspondCityRawData
+                {
+                    OrderCode = order.No,
+                    TransferOutTime = DateTime.Now,
+                    CityName = order.TranspondCityName,
+                    Direction = ETranspondDirection.Out
+                };
+
+                await _transpondCityRawDataRepository.AddAsync(cityRawData, HttpContext.RequestAborted);
 
-			var startDto = _mapper.Map<StartWorkflowDto>(dto.Workflow);
+            }
+
+            var startDto = _mapper.Map<StartWorkflowDto>(dto.Workflow);
             startDto.DefinitionModuleCode = WorkflowModuleConsts.OrderHandle;
             startDto.Title = dto.Data.Title;
             await _workflowApplication.StartWorkflowAsync(startDto, id, dto.Data.ExpiredTime, HttpContext.RequestAborted);
@@ -2647,8 +2662,8 @@ public class OrderController : BaseController
         var definition = wfModule.Definition;
         var rsp = new
         {
-			TranspondCity = _sysDicDataCacheManager.GetSysDicDataCache(SysDicTypeConsts.TranspondCity),
-			AcceptTypeOptions = _sysDicDataCacheManager.GetSysDicDataCache(SysDicTypeConsts.AcceptType),
+            TranspondCity = _sysDicDataCacheManager.GetSysDicDataCache(SysDicTypeConsts.TranspondCity),
+            AcceptTypeOptions = _sysDicDataCacheManager.GetSysDicDataCache(SysDicTypeConsts.AcceptType),
             ChannelOptions = _sysDicDataCacheManager.GetSysDicDataCache(TimeLimitBaseDataConsts.SourceChannel),
             OrgsOptions = await _organizeRepository.GetOrgJson(),
             EmergencyLevelOptions = EnumExts.GetDescriptions<EEmergencyLevel>(),
@@ -2669,8 +2684,8 @@ public class OrderController : BaseController
     {
         var rsp = new
         {
-	        TranspondCity = _sysDicDataCacheManager.GetSysDicDataCache(SysDicTypeConsts.TranspondCity),
-			ChannelOptions = _sysDicDataCacheManager.GetSysDicDataCache(TimeLimitBaseDataConsts.SourceChannel),
+            TranspondCity = _sysDicDataCacheManager.GetSysDicDataCache(SysDicTypeConsts.TranspondCity),
+            ChannelOptions = _sysDicDataCacheManager.GetSysDicDataCache(TimeLimitBaseDataConsts.SourceChannel),
             AcceptTypeOptions = _sysDicDataCacheManager.GetSysDicDataCache(SysDicTypeConsts.AcceptType),
             EmergencyLevelOptions = EnumExts.GetDescriptions<EEmergencyLevel>(),
             PushTypeOptions = _sysDicDataCacheManager.GetSysDicDataCache(SysDicTypeConsts.PushType),

+ 73 - 0
src/Hotline.Api/Controllers/TranspondCityController.cs

@@ -0,0 +1,73 @@
+using Hotline.OrderTranspond;
+using Hotline.Share.Dtos;
+using Hotline.Share.Dtos.OrderTranspond;
+using Hotline.Share.Enums.Order;
+using MapsterMapper;
+using Microsoft.AspNetCore.Mvc;
+using SqlSugar;
+using XF.Domain.Repository;
+
+namespace Hotline.Api.Controllers
+{
+    public class TranspondCityController : BaseController
+    {
+
+        private readonly IRepository<TranspondCityRawData> _transpondCityRawDataRepository;
+
+        private readonly IMapper _mapper;
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="transpondCityRawDataRepository"></param>
+        /// <param name="mapper"></param>
+        public TranspondCityController(IRepository<TranspondCityRawData> transpondCityRawDataRepository,
+           IMapper mapper)
+        {
+            _transpondCityRawDataRepository = transpondCityRawDataRepository;
+            _mapper = mapper;
+        }
+
+        /// <summary>
+        /// 转出
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        [HttpGet("order_transfer_out_list")]
+        public async Task<PagedDto<TranspondCityRawDataDto>> OrderTransferOutList([FromQuery] QueryTranspondCityDto dto)
+        {
+            RefAsync<int> total = 0;
+            var items = await _transpondCityRawDataRepository.Queryable()
+                .Where(p => p.Direction == ETranspondDirection.Out)
+                .WhereIF(!string.IsNullOrEmpty(dto.OrderCode), p => p.OrderCode.Contains(dto.OrderCode))
+                .WhereIF(dto.StartTime.HasValue, p => p.TransferOutTime >= dto.StartTime)
+                   .WhereIF(dto.EndTime.HasValue, p => p.TransferOutTime <= dto.EndTime)
+                             .WhereIF(!string.IsNullOrEmpty(dto.CiryName), p => p.CityName.Contains(dto.CiryName))
+                 .OrderByDescending(d => d.CreationTime)
+                 .ToPageListAsync(dto.PageIndex, dto.PageSize, total);
+            //返回数据
+            return new PagedDto<TranspondCityRawDataDto>(total.Value, _mapper.Map<IReadOnlyList<TranspondCityRawDataDto>>(items));
+        }
+
+        /// <summary>
+        /// 转入
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        [HttpGet("order_receive_in_list")]
+        public async Task<PagedDto<TranspondCityRawDataDto>> OrderReceiveInList([FromQuery] QueryTranspondCityDto dto)
+        {
+            RefAsync<int> total = 0;
+            var items = await _transpondCityRawDataRepository.Queryable()
+                .Where(p => p.Direction == ETranspondDirection.In)
+                .WhereIF(!string.IsNullOrEmpty(dto.OrderCode), p => p.OrderCode.Contains(dto.OrderCode))
+                .WhereIF(dto.StartTime.HasValue, p => p.TransferOutTime >= dto.StartTime)
+                   .WhereIF(dto.EndTime.HasValue, p => p.TransferOutTime <= dto.EndTime)
+                             .WhereIF(!string.IsNullOrEmpty(dto.CiryName), p => p.CityName.Contains(dto.CiryName))
+                 .OrderByDescending(d => d.CreationTime)
+                 .ToPageListAsync(dto.PageIndex, dto.PageSize, total);
+            //返回数据
+            return new PagedDto<TranspondCityRawDataDto>(total.Value, _mapper.Map<IReadOnlyList<TranspondCityRawDataDto>>(items));
+        }
+    }
+}

+ 36 - 5
src/Hotline.Application/Subscribers/DatasharingSubscriber.cs

@@ -18,6 +18,8 @@ using XF.Domain.Repository;
 using System.Security.Permissions;
 using MediatR;
 using Hotline.Settings;
+using Hotline.OrderTranspond;
+using Hotline.Share.Dtos.OrderTranspond;
 
 namespace Hotline.Application.Subscribers
 {
@@ -46,8 +48,9 @@ namespace Hotline.Application.Subscribers
         private readonly IRepository<OrderExtension> _orderExtensionRepository;
         private readonly IRepository<SystemDicData> _systemDicDataRepository;
         private readonly ISystemOrganizeRepository _systemOrganizeRepository;
+        private readonly IRepository<TranspondCityRawData> _transpondCityRawDataRepository;
 
-		public DataSharingSubscriber(
+        public DataSharingSubscriber(
             IRepository<OrderVisit> orderVisitRepository,
             IRepository<OrderVisitDetail> orderVisitDetailRepository,
             IMapper mapper,
@@ -66,7 +69,8 @@ namespace Hotline.Application.Subscribers
             IRepository<OrderExtension> orderExtensionRepository,
             IFileRepository fileRepository,
             IRepository<SystemDicData> systemDicDataRepository,
-            ISystemOrganizeRepository systemOrganizeRepository)
+            ISystemOrganizeRepository systemOrganizeRepository,
+            IRepository<TranspondCityRawData> transpondCityRawDataRepository)
         {
             _orderSendBackRepository = orderSendBackRepository;
             _workflowApplication = workflowApplication;
@@ -86,7 +90,9 @@ namespace Hotline.Application.Subscribers
             _orderDelayRepository = orderDelayRepository;
             _systemDicDataRepository = systemDicDataRepository;
             _systemOrganizeRepository = systemOrganizeRepository;
-		}
+            _transpondCityRawDataRepository = transpondCityRawDataRepository;
+
+        }
 
         /// <summary>
         /// 接收工单退回结果
@@ -153,13 +159,13 @@ namespace Hotline.Application.Subscribers
         {
             var order = await _orderRepository.Queryable().Where(x => x.ProvinceNo == dto.ProvinceOrderSuperviseDto!.CaseSerial).FirstAsync(cancellationToken);
             var org = await _systemOrganizeRepository.GetAsync(x => x.Name == dto.ProvinceOrderSuperviseDto!.SuperviseRsvDept, cancellationToken);
-			var model = new OrderSupervise();
+            var model = new OrderSupervise();
             model.InitId();
             model.OrderId = order.Id;
             model.ReplyLimitTime = dto.ProvinceOrderSuperviseDto.SuperviseReturnDate;
             model.OrgName = org.Name;
             model.OrgId = org.Id;
-			model.LaunchOrgName = dto.ProvinceOrderSuperviseDto.SuperviseSendDept;
+            model.LaunchOrgName = dto.ProvinceOrderSuperviseDto.SuperviseSendDept;
             model.State = 0;
             model.Province = true;
             model.ApplyContent = dto.ProvinceOrderSuperviseDto.SuperviseContent;
@@ -523,5 +529,30 @@ namespace Hotline.Application.Subscribers
         {
             await _orderDomainService.AddOrderComplementAsync(dto, cancellationToken);
         }
+
+        /// <summary>
+        /// 接收市州互转返回数据
+        /// </summary>
+        [CapSubscribe(EventNames.SharingOrderTranspondCity)]
+        public async Task RecTranspondCityRawDataAsync(TranspondCityRawDataDto dto, CancellationToken cancellationToken)
+        {
+            var data = await _transpondCityRawDataRepository.GetAsync(p => p.OrderCode == dto.OrderCode && p.Direction == ETranspondDirection.Out, cancellationToken);
+            if (data != null)
+            {
+                data.IsSuccess = dto.IsSuccess;
+                data.SendTimes = dto.SendTimes;
+                data.Result = dto.Result;
+                await _transpondCityRawDataRepository.UpdateAsync(data, cancellationToken);
+            }
+        }
+
+        /// <summary>
+        /// 接收市州互转接收原始数据
+        /// </summary>
+        [CapSubscribe(EventNames.SharingOrderReceiveTranspondCity)]
+        public async Task RecTranspondCityReceiveRawDataAsync(TranspondCityRawDataDto dto, CancellationToken cancellationToken)
+        {
+            await _transpondCityRawDataRepository.AddAsync(_mapper.Map<TranspondCityRawData>(dto), cancellationToken);
+        }
     }
 }

+ 34 - 0
src/Hotline.Share/Dtos/OrderTranspond/QueryTranspondCityDto.cs

@@ -0,0 +1,34 @@
+using Hotline.Share.Requests;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Hotline.Share.Dtos.OrderTranspond
+{
+    public record QueryTranspondCityDto: PagedRequest
+    {
+        /// <summary>
+        /// 编号
+        /// </summary>
+        public string? OrderCode { get; set; }
+
+        /// <summary>
+        /// 开始时间
+        /// </summary>
+        public DateTime? StartTime { get; set; }
+
+        /// <summary>
+        /// 结束时间
+        /// </summary>
+        public DateTime? EndTime { get; set; }
+
+        /// <summary>
+        /// 名称
+        /// </summary>
+        public string? CiryName { get; set;}
+
+
+    }
+}

+ 42 - 0
src/Hotline.Share/Dtos/OrderTranspond/TranspondCityRawDataDto.cs

@@ -0,0 +1,42 @@
+using Hotline.Share.Enums.Order;
+
+namespace Hotline.Share.Dtos.OrderTranspond
+{
+    public class TranspondCityRawDataDto
+    {
+        /// <summary>
+        /// 工单编号
+        /// </summary>
+        public string OrderCode { get; set; }
+
+        /// <summary>
+        /// 转出/转入时间  
+        /// </summary>
+        public DateTime? TransferOutTime { get; set; }
+
+        /// <summary>
+        /// 推送次数
+        /// </summary>
+        public int SendTimes { get; set; }
+
+        /// <summary>
+        /// 推送成功
+        /// </summary>
+        public bool IsSuccess { get; set; }
+
+        /// <summary>
+        /// 请求结果/转入数据
+        /// </summary>
+        public string? Result { get; set; }
+
+        /// <summary>
+        /// 市州名称
+        /// </summary>
+        public string? CityName { get; set; }
+
+        /// <summary>
+        /// 转出或者转入
+        /// </summary>
+        public ETranspondDirection Direction { get; set; }
+    }
+}

+ 13 - 0
src/Hotline.Share/Enums/Order/ETranspondDirection.cs

@@ -0,0 +1,13 @@
+using System.ComponentModel;
+
+namespace Hotline.Share.Enums.Order
+{
+    public enum ETranspondDirection
+    {
+        [Description("转出")]
+        Out = 0,
+
+        [Description("转入")]
+        In = 1,
+    }
+}

+ 1 - 1
src/Hotline.Share/Hotline.Share.csproj

@@ -7,7 +7,7 @@
     <GenerateDocumentationFile>True</GenerateDocumentationFile>
     <NoWarn>$(NoWarn);1591;8618;</NoWarn>
     <GeneratePackageOnBuild>True</GeneratePackageOnBuild>
-    <Version>1.0.65</Version>
+    <Version>1.0.67</Version>
   </PropertyGroup>
 
   <ItemGroup>

+ 9 - 0
src/Hotline.Share/Mq/EventNames.Share.cs

@@ -85,5 +85,14 @@
         /// </summary>
         public const string SharingOrderUpdataFiles = "sharing.order.visit.update.files";
 
+        /// <summary>
+        /// 市州互转数据返回
+        /// </summary>
+        public const string SharingOrderTranspondCity = "sharing.order.transpond.city";
+
+        /// <summary>
+        /// 市州互转 接收原始数据
+        /// </summary>
+        public const string SharingOrderReceiveTranspondCity = "sharing.order.receive.transpond.city";
     }
 }

+ 51 - 0
src/Hotline/OrderTranspond/TranspondCityRawData.cs

@@ -0,0 +1,51 @@
+using Hotline.Share.Enums.Order;
+using SqlSugar;
+using XF.Domain.Repository;
+
+namespace Hotline.OrderTranspond
+{
+    public class TranspondCityRawData : CreationEntity
+    {
+        /// <summary>
+        /// 工单编号
+        /// </summary>
+        [SugarColumn(ColumnDescription = "工单编号")]
+        public string OrderCode { get; set; }
+
+        /// <summary>
+        /// 转出/转入时间  
+        /// </summary>
+        [SugarColumn(ColumnDescription = "转出/转入时间  ")]
+        public DateTime? TransferOutTime { get; set; }
+
+        /// <summary>
+        /// 推送次数
+        /// </summary>
+        [SugarColumn(ColumnDescription = "推送次数")]
+        public int SendTimes { get; set; }
+
+        /// <summary>
+        /// 推送成功
+        /// </summary>
+        [SugarColumn(ColumnDescription = "推送成功")]
+        public bool IsSuccess { get; set; }
+
+        /// <summary>
+        /// 请求结果/转入数据
+        /// </summary>
+        [SugarColumn(ColumnDataType = "text", ColumnDescription = "返回数据")]
+        public string? Result { get; set; }
+
+        /// <summary>
+        /// 市州名称
+        /// </summary>
+        [SugarColumn(ColumnDescription = "市州名称")]
+        public string? CityName { get; set; }
+
+        /// <summary>
+        /// 转出或者转入
+        /// </summary>
+        [SugarColumn(ColumnDescription = "转出或者转入")]
+        public ETranspondDirection Direction { get; set; }
+    }
+}