|
@@ -89,6 +89,7 @@ public class OrderApplication : IOrderApplication, IScopeDependency
|
|
|
private readonly IFileRepository _fileRepository;
|
|
|
private readonly IRepository<OrderVisit> _orderVisitRepository;
|
|
|
private readonly IRepository<OrderVisitDetail> _orderVisitDetailRepository;
|
|
|
+ private readonly IRepository<OrderVisitRecord> _orderVisitRecordRepository;
|
|
|
private readonly IQualityApplication _qualityApplication;
|
|
|
private readonly ICapPublisher _capPublisher;
|
|
|
private readonly IRepository<SystemOrganize> _systemOrganizeRepository;
|
|
@@ -137,6 +138,7 @@ public class OrderApplication : IOrderApplication, IScopeDependency
|
|
|
ISessionContext sessionContext,
|
|
|
IRepository<OrderVisit> orderVisitRepository,
|
|
|
IRepository<OrderVisitDetail> orderVisitDetailRepository,
|
|
|
+ IRepository<OrderVisitRecord> orderVisitRecordRepository,
|
|
|
IQualityApplication qualityApplication,
|
|
|
ICapPublisher capPublisher,
|
|
|
IRepository<SystemOrganize> systemOrganizeRepository,
|
|
@@ -190,6 +192,7 @@ public class OrderApplication : IOrderApplication, IScopeDependency
|
|
|
_repositoryts = repositoryts;
|
|
|
_fileRepository = fileRepository;
|
|
|
_orderVisitRepository = orderVisitRepository;
|
|
|
+ _orderVisitRecordRepository = orderVisitRecordRepository;
|
|
|
_orderVisitDetailRepository = orderVisitDetailRepository;
|
|
|
_qualityApplication = qualityApplication;
|
|
|
_capPublisher = capPublisher;
|
|
@@ -4571,6 +4574,118 @@ public class OrderApplication : IOrderApplication, IScopeDependency
|
|
|
return query;
|
|
|
}
|
|
|
|
|
|
+ /// <summary>
|
|
|
+ /// 回访量明细
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="dto"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ public ISugarQueryable<OrderVisit> QueryOrderVisitQuantityListAsync(QueryOrderVisitListDto dto)
|
|
|
+ {
|
|
|
+ var query = _orderVisitRepository.Queryable()
|
|
|
+ .Includes(d => d.Order, d => d.OrderTags)
|
|
|
+ .Includes(d => d.Employee)
|
|
|
+ .Includes(d => d.OrderVisitDetails)
|
|
|
+ .Where(d => d.VisitTime >= dto.StartTime && d.VisitTime <= dto.EndTime && d.VisitType != null && d.EmployeeId != "" && d.EmployeeId != null)
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.UserID), d => !string.IsNullOrEmpty(d.EmployeeId) && d.EmployeeId == dto.UserID)
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.UserName), d => d.Employee.Name == dto.UserName)
|
|
|
+ .WhereIF(dto.FieldName == "callVisitCount", d => d.VisitType == EVisitType.CallVisit)
|
|
|
+ .WhereIF(dto.FieldName == "defaultVisitCount", d => d.VisitType == EVisitType.ArtificialVisit)
|
|
|
+ .WhereIF(dto.FieldName == "smsVisitCount", d => d.VisitType == EVisitType.SmsVisit)
|
|
|
+ .WhereIF(dto.FieldName == "totalVisitCount", d => d.VisitType == EVisitType.CallVisit || d.VisitType == EVisitType.ArtificialVisit || d.VisitType == EVisitType.SmsVisit);
|
|
|
+
|
|
|
+ query = query
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.No), d => d.No == dto.No) // 工单编号
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.Title), d => d.Order.Title.Contains(dto.Title!)) // 标题
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.ActualHandleOrgName), d => d.Order.ActualHandleOrgName.Contains(dto.ActualHandleOrgName)) // 接办部门
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.AcceptType), d => d.Order.AcceptTypeCode == dto.AcceptType) // 受理类型
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.AcceptorName), d => d.Order.AcceptorName == dto.AcceptorName!) // 受理人
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.ActualHandlerName), d => d.Order.ActualHandlerName == dto.ActualHandlerName) // 接办人
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.FromPhone), d => d.Order.FromPhone.Contains(dto.FromPhone!)) // 来电号码
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.Contact), d => d.Order.Contact == dto.Contact) // 联系电话
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.FromName), d => d.Order.FromName == dto.FromName) // 来电人姓名
|
|
|
+ .WhereIF(dto.CreationTimeStart.HasValue, d => d.Order.CreationTime >= dto.CreationTimeStart) // 受理时间开始
|
|
|
+ .WhereIF(dto.CreationTimeEnd.HasValue, d => d.Order.CreationTime <= dto.CreationTimeEnd) // 受理时间结束
|
|
|
+ .WhereIF(dto.ExpiredTimeStart.HasValue, d => d.Order.ExpiredTime >= dto.ExpiredTimeStart) // 期满时间开始
|
|
|
+ .WhereIF(dto.ExpiredTimeEnd.HasValue, d => d.Order.ExpiredTime <= dto.ExpiredTimeEnd) // 期满时间结束
|
|
|
+ .WhereIF(dto.Status.HasValue, d => d.Order.Status == dto.Status) // 工单状态
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.AreaCode), d => d.Order.AreaCode == dto.AreaCode) // 区域
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.Channel), d => d.Order.SourceChannelCode == dto.Channel) // 来源渠道
|
|
|
+ .WhereIF(dto.IsScreen.HasValue && dto.IsScreen.Value, d => SqlFunc.Subqueryable<OrderScreen>().Where(q => q.OrderId == d.OrderId && q.VisitDetailId == d.Id).Any()) // 是否甄别
|
|
|
+ .WhereIF(dto.IsScreen.HasValue && dto.IsScreen.Value == false, d => SqlFunc.Subqueryable<OrderScreen>().Where(q => q.OrderId == d.OrderId && q.VisitDetailId == d.Id).NotAny())
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.CurrentStepName), d => d.Order.CurrentStepName == dto.CurrentStepName) // 当前办理节点
|
|
|
+ .WhereIF(dto.FiledTimeStart.HasValue, d => d.Order.FiledTime >= dto.FiledTimeStart) // 办结时间开始
|
|
|
+ .WhereIF(dto.FiledTimeEnd.HasValue, d => d.Order.FiledTime <= dto.FiledTimeEnd) // 办结时间结束
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.Hotspot), d => d.Order.HotspotSpliceName != null && d.Order.HotspotSpliceName.Contains(dto.Hotspot)) // 热点类型
|
|
|
+ .WhereIF(dto.IsSecret.HasValue, d => d.Order.IsSecret == dto.IsSecret) // 是否紧急
|
|
|
+
|
|
|
+ .OrderByIF(_appOptions.Value.IsZiGong == false, d => d.PublishTime, OrderByType.Desc)
|
|
|
+ .OrderByIF(dto is { SortField: "publishTime", SortRule: 0 }, x => x.PublishTime, OrderByType.Asc) // 发布时间升序
|
|
|
+ .OrderByIF(dto is { SortField: "publishTime", SortRule: 1 }, x => x.PublishTime, OrderByType.Desc)// 发布时间升序
|
|
|
+ .OrderByIF(dto is { SortField: "order.creationTime", SortRule: 0 }, x => x.Order.CreationTime, OrderByType.Asc) // 受理时间升序
|
|
|
+ .OrderByIF(dto is { SortField: "order.creationTime", SortRule: 1 }, x => x.Order.CreationTime, OrderByType.Desc) // 受理时间升序
|
|
|
+ .OrderByIF(dto is { SortField: "order.filedTime", SortRule: 0 }, x => x.Order.FiledTime, OrderByType.Asc) // 办结时间升序
|
|
|
+ .OrderByIF(dto is { SortField: "order.filedTime", SortRule: 1 }, x => x.Order.FiledTime, OrderByType.Desc) // 办结时间升序
|
|
|
+ .OrderByIF(dto is { SortField: "visitTime", SortRule: 0 }, x => x.VisitTime, OrderByType.Asc) // 回访时间升序
|
|
|
+ .OrderByIF(dto is { SortField: "visitTime", SortRule: 1 }, x => x.VisitTime, OrderByType.Desc) // 回访时间升序
|
|
|
+ .OrderByIF(_appOptions.Value.IsZiGong && string.IsNullOrEmpty(dto.SortField), d => d.PublishTime, OrderByType.Desc)
|
|
|
+ ;
|
|
|
+ return query;
|
|
|
+ }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 回访量明细自贡
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="dto"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ public ISugarQueryable<OrderVisitRecord> QueryOrderVisitQuantityListByZgAsync(QueryOrderVisitListDto dto)
|
|
|
+ {
|
|
|
+ var query = _orderVisitRecordRepository.Queryable()
|
|
|
+ .Includes(d => d.Order, d => d.OrderTags)
|
|
|
+ .Includes(d => d.Employee)
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.UserID), d => !string.IsNullOrEmpty(d.EmployeeId) && d.EmployeeId == dto.UserID)
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.UserName), d => d.Employee.Name == dto.UserName)
|
|
|
+ .WhereIF(dto.StartTime != null, d => d.VisitTime >= dto.StartTime && d.VisitType != null && d.EmployeeId != "" && d.EmployeeId != null)
|
|
|
+ .WhereIF(dto.EndTime != null, d => d.VisitTime <= dto.EndTime && d.VisitType != null && d.EmployeeId != "" && d.EmployeeId != null)
|
|
|
+ .WhereIF(dto.FieldName == "callVisitCount", d => d.VisitType == EVisitType.CallVisit)
|
|
|
+ .WhereIF(dto.FieldName == "defaultVisitCount", d => d.VisitType == EVisitType.ArtificialVisit)
|
|
|
+ .WhereIF(dto.FieldName == "smsVisitCount", d => d.VisitType == EVisitType.SmsVisit)
|
|
|
+ .WhereIF(dto.FieldName == "totalVisitCount", d => d.VisitType == EVisitType.CallVisit || d.VisitType == EVisitType.ArtificialVisit || d.VisitType == EVisitType.SmsVisit);
|
|
|
+
|
|
|
+ query = query
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.No), d => d.No == dto.No) // 工单编号
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.Title), d => d.Order.Title.Contains(dto.Title!)) // 标题
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.ActualHandleOrgName), d => d.Order.ActualHandleOrgName.Contains(dto.ActualHandleOrgName)) // 接办部门
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.AcceptType), d => d.Order.AcceptTypeCode == dto.AcceptType) // 受理类型
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.AcceptorName), d => d.Order.AcceptorName == dto.AcceptorName!) // 受理人
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.ActualHandlerName), d => d.Order.ActualHandlerName == dto.ActualHandlerName) // 接办人
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.FromPhone), d => d.Order.FromPhone.Contains(dto.FromPhone!)) // 来电号码
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.Contact), d => d.Order.Contact == dto.Contact) // 联系电话
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.FromName), d => d.Order.FromName == dto.FromName) // 来电人姓名
|
|
|
+ .WhereIF(dto.CreationTimeStart.HasValue, d => d.Order.CreationTime >= dto.CreationTimeStart) // 受理时间开始
|
|
|
+ .WhereIF(dto.CreationTimeEnd.HasValue, d => d.Order.CreationTime <= dto.CreationTimeEnd) // 受理时间结束
|
|
|
+ .WhereIF(dto.ExpiredTimeStart.HasValue, d => d.Order.ExpiredTime >= dto.ExpiredTimeStart) // 期满时间开始
|
|
|
+ .WhereIF(dto.ExpiredTimeEnd.HasValue, d => d.Order.ExpiredTime <= dto.ExpiredTimeEnd) // 期满时间结束
|
|
|
+ .WhereIF(dto.Status.HasValue, d => d.Order.Status == dto.Status) // 工单状态
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.AreaCode), d => d.Order.AreaCode == dto.AreaCode) // 区域
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.Channel), d => d.Order.SourceChannelCode == dto.Channel) // 来源渠道
|
|
|
+ .WhereIF(dto.IsScreen.HasValue && dto.IsScreen.Value, d => SqlFunc.Subqueryable<OrderScreen>().Where(q => q.OrderId == d.OrderId && q.VisitDetailId == d.Id).Any()) // 是否甄别
|
|
|
+ .WhereIF(dto.IsScreen.HasValue && dto.IsScreen.Value == false, d => SqlFunc.Subqueryable<OrderScreen>().Where(q => q.OrderId == d.OrderId && q.VisitDetailId == d.Id).NotAny())
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.CurrentStepName), d => d.Order.CurrentStepName == dto.CurrentStepName) // 当前办理节点
|
|
|
+ .WhereIF(dto.FiledTimeStart.HasValue, d => d.Order.FiledTime >= dto.FiledTimeStart) // 办结时间开始
|
|
|
+ .WhereIF(dto.FiledTimeEnd.HasValue, d => d.Order.FiledTime <= dto.FiledTimeEnd) // 办结时间结束
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.Hotspot), d => d.Order.HotspotSpliceName != null && d.Order.HotspotSpliceName.Contains(dto.Hotspot)) // 热点类型
|
|
|
+ .WhereIF(dto.IsSecret.HasValue, d => d.Order.IsSecret == dto.IsSecret) // 是否紧急
|
|
|
+
|
|
|
+ .OrderByIF(dto is { SortField: "order.creationTime", SortRule: 0 }, x => x.Order.CreationTime, OrderByType.Asc) // 受理时间升序
|
|
|
+ .OrderByIF(dto is { SortField: "order.creationTime", SortRule: 1 }, x => x.Order.CreationTime, OrderByType.Desc) // 受理时间升序
|
|
|
+ .OrderByIF(dto is { SortField: "order.filedTime", SortRule: 0 }, x => x.Order.FiledTime, OrderByType.Asc) // 办结时间升序
|
|
|
+ .OrderByIF(dto is { SortField: "order.filedTime", SortRule: 1 }, x => x.Order.FiledTime, OrderByType.Desc) // 办结时间升序
|
|
|
+ .OrderByIF(dto is { SortField: "visitTime", SortRule: 0 }, x => x.VisitTime, OrderByType.Asc) // 回访时间升序
|
|
|
+ .OrderByIF(dto is { SortField: "visitTime", SortRule: 1 }, x => x.VisitTime, OrderByType.Desc) // 回访时间升序
|
|
|
+ ;
|
|
|
+ return query;
|
|
|
+ }
|
|
|
+
|
|
|
/// <summary>
|
|
|
/// 热点类型小类统计明细
|
|
|
/// </summary>
|