Selaa lähdekoodia

Merge branch 'dev' of http://git.12345lm.cn/Fengwo/hotline into dev

Dun.Jason 6 kuukautta sitten
vanhempi
commit
454359a8a1

+ 87 - 26
src/Hotline.Api/Controllers/OrderController.cs

@@ -283,9 +283,15 @@ public class OrderController : BaseController
             .Where(x => x.Status == EOrderStatus.Filed)
             .WhereIF(!string.IsNullOrEmpty(dto.Keyword), d => d.Title.StartsWith(dto.Keyword!))
             .WhereIF(!string.IsNullOrEmpty(dto.No), d => d.No == dto.No)
-            .WhereIF(dto.PubState == EPubState.Pub, d => d.Status >= EOrderStatus.Published)
+            .WhereIF(!string.IsNullOrEmpty(dto.Title), d => d.Title == dto.Title)
+			.WhereIF(dto.PubState == EPubState.Pub, d => d.Status >= EOrderStatus.Published)
             .WhereIF(dto.PubState == EPubState.NoPub, d => d.Status < EOrderStatus.Published)
             .WhereIF(!string.IsNullOrEmpty(dto.Channel), d => d.SourceChannelCode == dto.Channel)
+            .WhereIF(!string.IsNullOrEmpty(dto.TagNames), d => d.TagNames.Contains(dto.TagNames!)) //工单标签
+			.WhereIF(!string.IsNullOrEmpty(dto.CenterToOrgHandlerName), d => d.CenterToOrgHandlerName == dto.CenterToOrgHandlerName! ) //派单人
+			.WhereIF(!string.IsNullOrEmpty(dto.NameOrNo), d => d.AcceptorName == dto.NameOrNo! || d.AcceptorStaffNo == dto.NameOrNo!) //受理人/坐席
+			.WhereIF(!string.IsNullOrEmpty(dto.ActualHandleOrgName), d => d.ActualHandleOrgName.Contains(dto.ActualHandleOrgName)) //接办部门(综合查询模糊)
+			.WhereIF(!string.IsNullOrEmpty(dto.FromPhone), d => d.FromPhone == dto.FromPhone) //来电号码
             //.WhereIF(!string.IsNullOrEmpty(dto.PubMan),
             //    d => d.AcceptorName.Contains(dto.PubMan!) || d.AcceptorStaffNo.Contains(dto.PubMan!))
             .WhereIF(dto.PubRange == EPublicState.Pub, d => d.OrderPublish.PublishState)
@@ -650,7 +656,18 @@ public class OrderController : BaseController
             .Includes(x => x.Order)
             .WhereIF(!string.IsNullOrEmpty(dto.Keyword), d => d.Order.Title.StartsWith(dto.Keyword!))
             .WhereIF(!string.IsNullOrEmpty(dto.No), d => d.Order.No == dto.No!)
-            .WhereIF(dto.Resolve.HasValue, x => x.Resolve == dto.Resolve)
+            .WhereIF(!string.IsNullOrEmpty(dto.Title), d => d.Order.Title == dto.Title!)
+            .WhereIF(dto.CreationTimeStart.HasValue, d => d.Order.CreationTime >= dto.CreationTimeStart)
+            .WhereIF(dto.CreationTimeEnd.HasValue, d => d.Order.CreationTime <= dto.CreationTimeEnd)
+            .WhereIF(!string.IsNullOrEmpty(dto.FromPhone), d => d.Order.FromPhone == dto.FromPhone) //来电号码
+            .WhereIF(!string.IsNullOrEmpty(dto.ActualHandleOrgName), d => d.Order.ActualHandleOrgName.Contains(dto.ActualHandleOrgName)) //接办部门(综合查询模糊)
+            .WhereIF(dto.AcceptTypes.Any(), d => dto.AcceptTypes.Contains(d.Order.AcceptType))
+            .WhereIF(dto.HotspotIds.Any(), d => dto.HotspotIds.Contains(d.Order.HotspotId))
+            .WhereIF(!string.IsNullOrEmpty(dto.PublishName), d => d.CreatorName.Contains(dto.PublishName!))
+            .WhereIF(!string.IsNullOrEmpty(dto.NameOrNo), d => d.Order.AcceptorName == dto.NameOrNo! || d.Order.AcceptorStaffNo == dto.NameOrNo!) //受理人/坐席
+            .WhereIF(dto.StartTime.HasValue, d => d.CreationTime >= dto.StartTime)
+            .WhereIF(dto.EndTime.HasValue, d => d.CreationTime <= dto.EndTime)
+			.WhereIF(dto.Resolve.HasValue, x => x.Resolve == dto.Resolve)
             .OrderByDescending(d => d.CreationTime)
             .ToPagedListAsync(dto.PageIndex, dto.PageSize, HttpContext.RequestAborted);
 
@@ -798,8 +815,10 @@ public class OrderController : BaseController
     {
         var rsp = new
         {
-            ChannelOptions = _sysDicDataCacheManager.GetSysDicDataCache(TimeLimitBaseDataConsts.SourceChannel)
-        };
+            ChannelOptions = _sysDicDataCacheManager.GetSysDicDataCache(TimeLimitBaseDataConsts.SourceChannel),
+            AcceptTypeOptions = _sysDicDataCacheManager.GetSysDicDataCache(SysDicTypeConsts.AcceptType),
+            OrderTags = _sysDicDataCacheManager.GetSysDicDataCache(SysDicTypeConsts.OrderTag)
+		};
         return rsp;
     }
 
@@ -5734,40 +5753,82 @@ public class OrderController : BaseController
     [HttpGet("order_observe/list")]
     public async Task<PagedDto<OrderObserveDto>> List([FromQuery] OrderObserveListDto dto)
     {
-        var (total, items) = await _orderObserveRepository.Queryable()
-            .Includes(x => x.Order)
-            .WhereIF(dto.IsProvince.HasValue, x => x.Order.IsProvince == dto.IsProvince)
-            .WhereIF(!string.IsNullOrEmpty(dto.Keyword),
-                x => x.Order.No.Contains(dto.Keyword!) || x.Order.Title.Contains(dto.Keyword!))
-            //.WhereIF(!string.IsNullOrEmpty(dto.Title), x => x.Order.Title.Contains(dto.Title!))
-            //.WhereIF(!string.IsNullOrEmpty(dto.No), x => x.Order.No.Contains(dto.No!))
-            .OrderByDescending(x => x.CreationTime)
-            .ToPagedListAsync(dto.PageIndex, dto.PageSize, HttpContext.RequestAborted);
+        var quer = _orderApplication.OrderObserveList(dto);
+		var (total, items) = await
+			quer.ToPagedListAsync(dto.PageIndex, dto.PageSize, HttpContext.RequestAborted);
         return new PagedDto<OrderObserveDto>(total, _mapper.Map<IReadOnlyList<OrderObserveDto>>(items));
     }
 
     /// <summary>
-    /// 获取工单观察
+    /// 获取工单观察列表导出
     /// </summary>
-    /// <param name="id"></param>
+    /// <param name="dto"></param>
     /// <returns></returns>
-    [HttpGet("order_observe/{id}")]
+    [HttpGet("order_observe/list/export")]
+	public async Task<FileStreamResult> ListExport([FromBody] ExportExcelDto<OrderObserveListDto> dto)
+    {
+	    var query = _orderApplication.OrderObserveList(dto.QueryDto);
+	    List<OrderObserve> data;
+	    if (dto.IsExportAll)
+	    {
+		    data = await query.ToListAsync(HttpContext.RequestAborted);
+	    }
+	    else
+	    {
+		    var (_, items) = await query.ToPagedListAsync(dto.QueryDto, HttpContext.RequestAborted);
+		    data = items;
+	    }
+
+	    var dataDtos = _mapper.Map<ICollection<OrderObserveDto>>(data);
+
+	    dynamic? dynamicClass = DynamicClassHelper.CreateDynamicClass(dto.ColumnInfos);
+
+	    var dtos = dataDtos
+		    .Select(stu => _mapper.Map(stu, typeof(OrderObserveDto), dynamicClass))
+		    .Cast<object>()
+		    .ToList();
+
+	    var stream = ExcelHelper.CreateStream(dtos);
+
+	    return ExcelStreamResult(stream, "工单关注列表");
+    }
+
+	/// <summary>
+	/// 获取工单观察
+	/// </summary>
+	/// <param name="id"></param>
+	/// <returns></returns>
+	[HttpGet("order_observe/{id}")]
     public async Task<OrderObserve> OrderObserveEntity(string id)
     {
         return await _orderObserveRepository.Queryable()
             .FirstAsync(x => x.Id == id);
     }
 
-    #endregion
-
-    #region 工单终结
-
-    /// <summary>
-    /// 新增工单终结
-    /// </summary>
-    /// <param name="dtos"></param>
-    /// <returns></returns>
-    [Permission(EPermission.AddOrderFinality)]
+	/// <summary>
+	/// 列表页面基础数据
+	/// </summary>
+	/// <returns></returns>
+	[HttpGet("order_observe/base-data")]
+	public async Task<object> OrderObserveBaseData()
+	{
+		var rsp = new
+		{
+			AcceptTypeOptions = _sysDicDataCacheManager.GetSysDicDataCache(SysDicTypeConsts.AcceptType)
+		};
+		return rsp;
+	}
+
+	#endregion
+
+	#region 工单终结
+
+	/// <summary>
+	/// 新增工单终结
+	/// </summary>
+	/// <param name="dtos"></param>
+	/// <returns></returns>
+	[Permission(EPermission.AddOrderFinality)]
     [HttpPost("order_finality")]
     [LogFilter("新增工单终结")]
     public async Task Add([FromBody] OrderFinalityAddDto dto)

+ 9 - 1
src/Hotline.Application/Orders/IOrderApplication.cs

@@ -299,5 +299,13 @@ namespace Hotline.Application.Orders
         /// <returns></returns>
         ISugarQueryable<OrderVisitJudeStatisticsRep> OrderVisitJudeStatistics(OrderVisitJudeStatisticsReq dto);
 
-    }
+        /// <summary>
+        /// 观察关注列表
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        ISugarQueryable<OrderObserve> OrderObserveList(OrderObserveListDto dto);
+
+
+	}
 }

+ 32 - 4
src/Hotline.Application/Orders/OrderApplication.cs

@@ -103,9 +103,10 @@ public class OrderApplication : IOrderApplication, IScopeDependency
     private readonly IRepository<OrderSendBackAudit> _orderSendBackAuditRepository;
     private readonly ICalcExpireTime _expireTime;
     private readonly IOptions<CityBaseConfiguration> _cityBaseConfiguration;
+    private readonly IRepository<OrderObserve> _orderObserveRepository;
 
 
-    public OrderApplication(
+	public OrderApplication(
         IOrderDomainService orderDomainService,
         IOrderRepository orderRepository,
         IWorkflowDomainService workflowDomainService,
@@ -138,7 +139,8 @@ public class OrderApplication : IOrderApplication, IScopeDependency
         IOptions<CityBaseConfiguration> cityBaseConfiguration,
         ISystemDicDataCacheManager sysDicDataCacheManager,
         Publisher publisher,
-        IRepository<TranspondCityRawData> transpondCityRawDataRepository)
+        IRepository<TranspondCityRawData> transpondCityRawDataRepository,
+        IRepository<OrderObserve> orderObserveRepository)
     {
         _orderDomainService = orderDomainService;
         _workflowDomainService = workflowDomainService;
@@ -173,7 +175,9 @@ public class OrderApplication : IOrderApplication, IScopeDependency
         _publisher = publisher;
         _transpondCityRawDataRepository = transpondCityRawDataRepository;
         _cityBaseConfiguration = cityBaseConfiguration;
-    }
+        _orderObserveRepository = orderObserveRepository;
+
+	}
 
     /// <summary>
     /// 更新工单办理期满时间(延期调用,其他不调用)
@@ -2314,5 +2318,29 @@ public class OrderApplication : IOrderApplication, IScopeDependency
              });
     }
 
-    #endregion
+    /// <summary>
+    /// 观察关注列表
+    /// </summary>
+    /// <param name="dto"></param>
+    /// <returns></returns>
+	public ISugarQueryable<OrderObserve> OrderObserveList(OrderObserveListDto dto) 
+    {
+        return _orderObserveRepository.Queryable()
+            .Includes(d => d.Order)
+            .WhereIF(dto.IsProvince.HasValue, d => d.Order.IsProvince == dto.IsProvince)
+            //.WhereIF(!string.IsNullOrEmpty(dto.Keyword),
+            //    x => x.Order.No.Contains(dto.Keyword!) || x.Order.Title.Contains(dto.Keyword!))
+            .WhereIF(!string.IsNullOrEmpty(dto.AcceptType), d => d.Order.AcceptTypeCode == dto.AcceptType)//受理类型
+            .WhereIF(!string.IsNullOrEmpty(dto.Hotspot), d => d.Order.HotspotSpliceName != null && d.Order.HotspotSpliceName.Contains(dto.Hotspot)) //热点类型
+            .WhereIF(!string.IsNullOrEmpty(dto.ActualHandleOrgName), d => d.Order.ActualHandleOrgName.Contains(dto.ActualHandleOrgName)) //接办部门(综合查询模糊)
+            .WhereIF(dto.ExpiredTimeStart.HasValue, d => d.Order.ExpiredTime >= dto.ExpiredTimeStart) //超期时间开始
+            .WhereIF(dto.ExpiredTimeEnd.HasValue, d => d.Order.ExpiredTime <= dto.ExpiredTimeEnd) //超期时间结束
+            .WhereIF(dto.StartTime.HasValue, d => d.CreationTime >= dto.StartTime) //受理时间开始
+            .WhereIF(dto.EndTime.HasValue, d => d.CreationTime <= dto.EndTime) //受理时间结束
+            .WhereIF(!string.IsNullOrEmpty(dto.Title), d => d.Order.Title.Contains(dto.Title!))
+            .WhereIF(!string.IsNullOrEmpty(dto.No),d => d.Order.No.Contains(dto.No!))
+            .OrderByDescending(d => d.CreationTime);
+	}
+
+	#endregion
 }

+ 26 - 0
src/Hotline.Share/Dtos/Order/OrderObserveDto.cs

@@ -60,6 +60,32 @@ namespace Hotline.Share.Dtos.Order
 		/// </summary>
 		public bool? IsProvince { get; set; }
 
+		/// <summary>
+		/// 期满开始时间
+		/// </summary>
+		public DateTime? ExpiredTimeStart { get; set; }
+
+		/// <summary>
+		/// 期满结束时间
+		/// </summary>
+		public DateTime? ExpiredTimeEnd { get; set; }
+
+		/// <summary>
+		/// 接办名称(综合查询使用)
+		/// </summary>
+		public string? ActualHandleOrgName { get; set; }
+
+		/// <summary>
+		/// 受理类型(√)
+		/// </summary>
+		public string? AcceptType { get; set; }
+
+		/// <summary>
+		/// 热点分类关键词
+		/// </summary>
+		public string? Hotspot { get; set; }
+
+
 	}
 	public class OrderObserveBaseDto
 	{

+ 41 - 11
src/Hotline.Share/Dtos/Order/Publish/QueryOrderPublishDto.cs

@@ -15,25 +15,50 @@ public record QueryOrderPublishDto : PagedKeywordRequest
     public string? No { get; set; }
 
     /// <summary>
-    /// 发布范围
+    /// 工单标题
     /// </summary>
-    public EPublicState? PubRange { get; set; }
+    public string? Title { get; set; }
 
     /// <summary>
-    /// 受理类型
+    /// 受理时间(工单创建时间)
     /// </summary>
-    public List<string>? AcceptTypes { get; set; } = new();
+    public DateTime? CreationTimeStart { get; set; }
+    public DateTime? CreationTimeEnd { get; set; }
 
     /// <summary>
-    /// 热点分类
+    /// 来电号码(×)
     /// </summary>
-    public List<string>? HotspotIds { get; set; } = new();
+    public string? FromPhone { get; set; }
+
+	/// <summary>
+	/// 接办名称(综合查询使用)
+	/// </summary>
+	public string? ActualHandleOrgName { get; set; }
+
+	/// <summary>
+	/// 受理类型
+	/// </summary>
+	public List<string>? AcceptTypes { get; set; } = new();
+
+	/// <summary>
+	/// 热点分类
+	/// </summary>
+	public List<string>? HotspotIds { get; set; } = new();
+
+	/// <summary>
+	/// 受理坐席名字或工号(×)
+	/// </summary>
+	public string? NameOrNo { get; set; }
 
     /// <summary>
-    /// 受理时间(工单创建时间)
+    /// 派单人
     /// </summary>
-    public DateTime? CreationTimeStart { get; set; }
-    public DateTime? CreationTimeEnd { get; set; }
+	public string? CenterToOrgHandlerName { get; set; }
+
+	/// <summary>
+	/// 发布范围
+	/// </summary>
+	public EPublicState? PubRange { get; set; }
 
     /// <summary>
     /// 归档时间
@@ -42,9 +67,14 @@ public record QueryOrderPublishDto : PagedKeywordRequest
     public DateTime? FiledTimeEnd { get; set; }
 
     /// <summary>
-    /// 归档方式
+    /// 工单标签
     /// </summary>
-    public FiledType? FiledType { get; set; }
+    public string? TagNames { get; set; }
+
+	/// <summary>
+	/// 归档方式
+	/// </summary>
+	public FiledType? FiledType { get; set; }
 
     /// <summary>
     /// 是否会签

+ 41 - 0
src/Hotline.Share/Requests/PagedKeywordRequest.cs

@@ -178,6 +178,47 @@ public record PublishedPagedRequest : PagedKeywordRequest
     /// 工单编号
     /// </summary>
     public string? No { get; set; }
+
+    /// <summary>
+    /// 工单标题
+    /// </summary>
+    public string? Title { get; set; }
+
+    /// <summary>
+    /// 受理时间(工单创建时间)
+    /// </summary>
+    public DateTime? CreationTimeStart { get; set; }
+    public DateTime? CreationTimeEnd { get; set; }
+
+    /// <summary>
+    /// 来电号码(×)
+    /// </summary>
+    public string? FromPhone { get; set; }
+
+    /// <summary>
+    /// 接办名称(综合查询使用)
+    /// </summary>
+    public string? ActualHandleOrgName { get; set; }
+
+    /// <summary>
+    /// 受理类型
+    /// </summary>
+    public List<string>? AcceptTypes { get; set; } = new();
+
+    /// <summary>
+    /// 热点分类
+    /// </summary>
+    public List<string>? HotspotIds { get; set; } = new();
+
+    /// <summary>
+    /// 受理坐席名字或工号(×)
+    /// </summary>
+    public string? NameOrNo { get; set; }
+
+    /// <summary>
+    /// 发布人名称
+    /// </summary>
+    public string? PublishName { get; set; }
 }
 
 public record HotspotSubtotalReportPagedRequest : ReportPagedRequest