Explorar el Código

Merge branch 'release' of http://110.188.24.182:10023/Fengwo/hotline into release

田爽 hace 6 meses
padre
commit
b2365dca70

+ 81 - 2
src/Hotline.Api/Controllers/DataSharingController.cs

@@ -16,6 +16,7 @@ using Hotline.Share.Enums.Article;
 using Hotline.Share.Enums.FlowEngine;
 using Hotline.Share.Enums.Order;
 using Hotline.Share.Enums.Push;
+using Hotline.WebPortal;
 using MapsterMapper;
 using MediatR;
 using Microsoft.AspNetCore.Authorization;
@@ -40,6 +41,7 @@ namespace Hotline.Api.Controllers
         private readonly IRepository<WorkflowTrace> _workflowTraceRepository;
         private readonly IRepository<Hotspot> _hotspotTypeRepository;
         private readonly IMediator _mediator;
+        private readonly IRepository<OldPublicData> _oldPublicDataRepository;
 
         /// <summary>
         /// 
@@ -52,6 +54,7 @@ namespace Hotline.Api.Controllers
         /// <param name="workflowTraceRepository"></param>
         /// <param name="hotspotTypeRepository"></param>
         /// <param name="mediator"></param>
+        /// <param name="oldPublicDataRepository"></param>
         public DataSharingController(IMapper mapper,
             IOrderRepository orderRepository,
             IRepository<Bulletin> bulletinRepository,
@@ -59,7 +62,8 @@ namespace Hotline.Api.Controllers
             ISystemDicDataCacheManager sysDicDataCacheManager,
             IRepository<WorkflowTrace> workflowTraceRepository,
             IRepository<Hotspot> hotspotTypeRepository,
-            IMediator mediator)
+            IMediator mediator,
+            IRepository<OldPublicData> oldPublicDataRepository)
         {
             _mapper = mapper;
             _orderRepository = orderRepository;
@@ -69,6 +73,7 @@ namespace Hotline.Api.Controllers
             _workflowTraceRepository = workflowTraceRepository;
             _hotspotTypeRepository = hotspotTypeRepository;
             _mediator = mediator;
+            _oldPublicDataRepository = oldPublicDataRepository;
         }
 
         /// <summary>
@@ -193,6 +198,80 @@ namespace Hotline.Api.Controllers
             return new PagedDto<PublishDto>(total, _mapper.Map<IReadOnlyList<PublishDto>>(items));
         }
 
+        /// <summary>
+        /// 查询工单发布后公开的数据
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        [HttpPost("get_order_list_publish_all")]
+        [AllowAnonymous]
+        public async Task<PagedDto<PublishOrderAllDto>> GetOrderByListAllOpen([FromBody] GetOrderList dto)
+        {
+            var queryNew = _orderRepository.Queryable()
+                .Where(p => p.IsPublicity == true)
+                .WhereIF(!string.IsNullOrEmpty(dto.No), p => p.No == dto.No)
+                .WhereIF(!string.IsNullOrEmpty(dto.Title), p => p.Title.Contains(dto.Title))
+                .WhereIF(!string.IsNullOrEmpty(dto.Mobile), p => p.Contact.Contains(dto.Mobile))
+                .WhereIF(!string.IsNullOrEmpty(dto.AcceptTypeCode), p => p.AcceptTypeCode == dto.AcceptTypeCode)
+                .WhereIF(dto.StartTime.HasValue, p => p.CreationTime >= dto.StartTime)
+                .WhereIF(dto.EndTime.HasValue, p => p.CreationTime < dto.EndTime)
+                .WhereIF(!string.IsNullOrEmpty(dto.AreaCode), p => p.AreaCode == dto.AreaCode)
+                .OrderByDescending(p => p.CreationTime)
+               .Select(p => new PublishOrderAllDto
+               {
+                   OrderId = p.Id,
+                   FromName = p.FromName,
+                   Contact = p.Contact,
+                   OrderNo = p.No,
+                   Title = p.Title,
+                   SourceChannel = p.SourceChannel,
+                   SourceChannelCode = p.SourceChannelCode,
+                   AcceptType = p.AcceptType,
+                   AcceptTypeCode = p.AcceptTypeCode,
+                   HotspotName = p.HotspotName,
+                   Content = p.Content,
+                   State = p.Status >= EOrderStatus.Filed ? "办理完成" : "办理中",
+                   ActualOpinion = p.ActualOpinion,
+                   AcceptTime = p.CreationTime,
+                   PubDate = p.OrderPublish.CreationTime,
+                   FiledTime = p.FiledTime
+               });
+
+            var queryold = _oldPublicDataRepository.Queryable()
+                      .WhereIF(!string.IsNullOrEmpty(dto.No), p => p.OrderNo == dto.No)
+                      .WhereIF(!string.IsNullOrEmpty(dto.Title), p => p.Title.Contains(dto.Title))
+                      .WhereIF(!string.IsNullOrEmpty(dto.Mobile), p => p.Contact.Contains(dto.Mobile))
+                      .WhereIF(!string.IsNullOrEmpty(dto.AcceptTypeCode), p => p.AcceptTypeCode == dto.AcceptTypeCode)
+                      .WhereIF(dto.StartTime.HasValue, p => p.PubDate >= dto.StartTime)
+                      .WhereIF(dto.EndTime.HasValue, p => p.PubDate < dto.EndTime)
+                      .OrderByDescending(p => p.PubDate)
+                       .Select(p => new PublishOrderAllDto
+                       {
+                           OrderId = p.OrderId,
+                           FromName = p.FromName,
+                           Contact = p.Contact,
+                           OrderNo = p.OrderNo,
+                           Title = p.Title,
+                           SourceChannel = p.SourceChannel,
+                           SourceChannelCode = p.SourceChannelCode,
+                           AcceptType = p.AcceptType,
+                           AcceptTypeCode = p.AcceptTypeCode,
+                           HotspotName = p.HotspotName,
+                           Content = p.Content,
+                           State = p.State == "1" ? "办理完成" : "办理中",
+                           ActualOpinion = p.ActualOpinion,
+                           AcceptTime = p.CreationTime,
+                           PubDate = p.PubDate,
+                           FiledTime = p.FiledTime
+                       });
+
+            var (total, items) = await _orderRepository.UnionAll(queryNew, queryold)
+                .OrderByDescending(p => p.PubDate)
+                 .ToPagedListAsync(dto.PageIndex, dto.PageSize, HttpContext.RequestAborted);
+
+            return new PagedDto<PublishOrderAllDto>(total, items);
+        }
+
         /// <summary>
         /// 根据工单编号和密码查询流程
         /// </summary>
@@ -379,7 +458,7 @@ namespace Hotline.Api.Controllers
             if (dto.SendType == "2")
             {
                 messageDto.TemplateCode = "1011";
-                messageDto.PushBusiness= EPushBusiness.OrderExpire;
+                messageDto.PushBusiness = EPushBusiness.OrderExpire;
             }
 
             await _mediator.Publish(new PushMessageNotify(messageDto), HttpContext.RequestAborted);

+ 80 - 0
src/Hotline.Share/Dtos/Order/PublishedDto.cs

@@ -606,4 +606,84 @@ public record AboutToExpireListDto : PagedKeywordRequest
     /// 0 全部  1 是  2 否
     /// </summary>
     public int? Delay { get; set; }
+}
+
+public class PublishOrderAllDto
+{
+    /// <summary>
+    /// 工单id
+    /// </summary>
+    public string OrderId { get; set; }
+
+    /// <summary>
+    /// 来电/信人姓名
+    /// </summary>
+    public string? FromName { get; set; }
+
+    /// <summary>
+    /// 联系电话
+    /// </summary>
+    public string? Contact { get; set; }
+
+    /// <summary>
+    /// 工单编号
+    /// </summary>
+    public string OrderNo { get; set; }
+
+    /// <summary>
+    /// 工单标题
+    /// </summary>
+    public string Title { get; set; }
+
+    /// <summary>
+    /// 来源渠道(电话、网站、APP等)
+    /// </summary>
+    public string? SourceChannel { get; set; }
+
+    public string? SourceChannelCode { get; set; }
+
+    /// <summary>
+    /// 受理类型(咨询、投诉等)
+    /// </summary>
+    public string? AcceptType { get; set; }
+
+    /// <summary>
+    /// 受理类型代码
+    /// </summary>
+    public string? AcceptTypeCode { get; set; }
+
+    /// <summary>
+    /// 热点名称
+    /// </summary>
+    public string? HotspotName { get; set; }
+
+    /// <summary>
+    /// 诉求内容
+    /// </summary>
+    public string Content { get; set; }
+
+    /// <summary>
+    /// 工单状态 0:办理中;1办理完成
+    /// </summary>
+    public string State { get; set; }
+
+    /// <summary>
+    /// 实际办理意见(办理中...or 最终办理意见)
+    /// </summary>
+    public string ActualOpinion { get; set; }
+
+    /// <summary>
+    /// 工单创建时间
+    /// </summary>
+    public DateTime? AcceptTime { get; set; }
+
+    /// <summary>
+    /// 发布时间
+    /// </summary>
+    public DateTime? PubDate { get; set; }
+
+    /// <summary>
+    /// 归档时间
+    /// </summary>
+    public DateTime? FiledTime { get; set; }
 }