|
@@ -24,6 +24,7 @@ using XF.Domain.Authentications;
|
|
using XF.Domain.Dependency;
|
|
using XF.Domain.Dependency;
|
|
using XF.Domain.Repository;
|
|
using XF.Domain.Repository;
|
|
using System.Collections.Generic;
|
|
using System.Collections.Generic;
|
|
|
|
+using Hotline.SeedData;
|
|
|
|
|
|
namespace Hotline.Repository.SqlSugar.Orders
|
|
namespace Hotline.Repository.SqlSugar.Orders
|
|
{
|
|
{
|
|
@@ -37,7 +38,7 @@ namespace Hotline.Repository.SqlSugar.Orders
|
|
private readonly ISystemSettingCacheManager _systemSettingCacheManager;
|
|
private readonly ISystemSettingCacheManager _systemSettingCacheManager;
|
|
private readonly IRepository<AiOrderVisitDetail> _aiOrderVisitDetailRepository;
|
|
private readonly IRepository<AiOrderVisitDetail> _aiOrderVisitDetailRepository;
|
|
|
|
|
|
- public OrderRepository(ISugarUnitOfWork<HotlineDbContext> uow,
|
|
|
|
|
|
+ public OrderRepository(ISugarUnitOfWork<HotlineDbContext> uow,
|
|
IDataPermissionFilterBuilder dataPermissionFilterBuilder,
|
|
IDataPermissionFilterBuilder dataPermissionFilterBuilder,
|
|
IRepository<OrderSendBackAudit> orderSendBackAuditRepository,
|
|
IRepository<OrderSendBackAudit> orderSendBackAuditRepository,
|
|
IRepository<OrderVisit> orderVisitRepository,
|
|
IRepository<OrderVisit> orderVisitRepository,
|
|
@@ -45,7 +46,7 @@ namespace Hotline.Repository.SqlSugar.Orders
|
|
IRepository<OrderVisitDetail> orderVisitDetailRepository,
|
|
IRepository<OrderVisitDetail> orderVisitDetailRepository,
|
|
ISystemSettingCacheManager systemSettingCacheManager,
|
|
ISystemSettingCacheManager systemSettingCacheManager,
|
|
IRepository<AiOrderVisitDetail> aiOrderVisitDetailRepository
|
|
IRepository<AiOrderVisitDetail> aiOrderVisitDetailRepository
|
|
- ) : base(uow, dataPermissionFilterBuilder)
|
|
|
|
|
|
+ ) : base(uow, dataPermissionFilterBuilder)
|
|
{
|
|
{
|
|
_dataPermissionFilterBuilder = dataPermissionFilterBuilder;
|
|
_dataPermissionFilterBuilder = dataPermissionFilterBuilder;
|
|
_orderSendBackAuditRepository = orderSendBackAuditRepository;
|
|
_orderSendBackAuditRepository = orderSendBackAuditRepository;
|
|
@@ -1059,40 +1060,40 @@ namespace Hotline.Repository.SqlSugar.Orders
|
|
/// <returns></returns>
|
|
/// <returns></returns>
|
|
public ISugarQueryable<OrderCenterAcceptHourVo> OrderCenterAcceptHour(OrderCenterAcceptPagedRequest dto)
|
|
public ISugarQueryable<OrderCenterAcceptHourVo> OrderCenterAcceptHour(OrderCenterAcceptPagedRequest dto)
|
|
{
|
|
{
|
|
- if (dto.EndTime.HasValue)
|
|
|
|
- dto.EndTime = dto.EndTime.Value.AddDays(1).AddSeconds(-1);
|
|
|
|
- var sendBack = _orderSendBackAuditRepository.Queryable()
|
|
|
|
- .Where(x => x.State == ESendBackAuditState.End)
|
|
|
|
- .GroupBy(x => x.OrderId).Select(x => new { OrderId = x.OrderId });
|
|
|
|
-
|
|
|
|
- List<int> dts = new();
|
|
|
|
- for (int i = 0; i < 24; i++)
|
|
|
|
- {
|
|
|
|
- dts.Add(i);
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- var listHour = Db.Reportable(dts).ToQueryable<int>();
|
|
|
|
-
|
|
|
|
- var data = Db.Queryable<Order>()
|
|
|
|
- .LeftJoin(sendBack, (d, s) => d.Id == s.OrderId)
|
|
|
|
- .WhereIF(dto.StartTime.HasValue && dto.EndTime.HasValue, d => d.CreationTime >= dto.StartTime && d.CreationTime <= dto.EndTime)
|
|
|
|
- .WhereIF(dto.TypeCode != null && dto.TypeCode == 1, d => d.IdentityType == EIdentityType.Citizen)
|
|
|
|
- .WhereIF(dto.TypeCode != null && dto.TypeCode == 2, d => d.IdentityType == EIdentityType.Enterprise)
|
|
|
|
- .GroupBy(d => d.CreationTime.Hour.ToString())
|
|
|
|
- .Select((d, s) => new OrderCenterAcceptHourVo
|
|
|
|
- {
|
|
|
|
- Hour = d.CreationTime.Hour.ToString(),
|
|
|
|
- AcceptNum = SqlFunc.AggregateCount(1),
|
|
|
|
- ValidNum = SqlFunc.AggregateSum(SqlFunc.IIF(d.AcceptType != "无效", 1, 0)),
|
|
|
|
- RepetitionNum = SqlFunc.AggregateSum(SqlFunc.IIF(d.DuplicateIds == null || SqlFunc.JsonArrayLength(d.DuplicateIds) > 0, 1, 0)),
|
|
|
|
- InvalidNum = SqlFunc.AggregateSum(SqlFunc.IIF(d.AcceptType == "无效", 1, 0)),
|
|
|
|
- HandleNum = SqlFunc.AggregateSum(SqlFunc.IIF(d.Status >= EOrderStatus.Filed, 1, 0)),
|
|
|
|
- NoHandleNum = SqlFunc.AggregateSum(SqlFunc.IIF(d.Status < EOrderStatus.Filed, 1, 0)),
|
|
|
|
- BackNum = SqlFunc.AggregateSum(SqlFunc.IIF(s.OrderId != null && s.OrderId != "", 1, 0)),
|
|
|
|
- DutyDeskNum = SqlFunc.AggregateDistinctCount(d.AcceptorId)
|
|
|
|
- });
|
|
|
|
|
|
+ if (dto.EndTime.HasValue)
|
|
|
|
+ dto.EndTime = dto.EndTime.Value.AddDays(1).AddSeconds(-1);
|
|
|
|
+ var sendBack = _orderSendBackAuditRepository.Queryable()
|
|
|
|
+ .Where(x => x.State == ESendBackAuditState.End)
|
|
|
|
+ .GroupBy(x => x.OrderId).Select(x => new { OrderId = x.OrderId });
|
|
|
|
+
|
|
|
|
+ List<int> dts = new();
|
|
|
|
+ for (int i = 0; i < 24; i++)
|
|
|
|
+ {
|
|
|
|
+ dts.Add(i);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ var listHour = Db.Reportable(dts).ToQueryable<int>();
|
|
|
|
+
|
|
|
|
+ var data = Db.Queryable<Order>()
|
|
|
|
+ .LeftJoin(sendBack, (d, s) => d.Id == s.OrderId)
|
|
|
|
+ .WhereIF(dto.StartTime.HasValue && dto.EndTime.HasValue, d => d.CreationTime >= dto.StartTime && d.CreationTime <= dto.EndTime)
|
|
|
|
+ .WhereIF(dto.TypeCode != null && dto.TypeCode == 1, d => d.IdentityType == EIdentityType.Citizen)
|
|
|
|
+ .WhereIF(dto.TypeCode != null && dto.TypeCode == 2, d => d.IdentityType == EIdentityType.Enterprise)
|
|
|
|
+ .GroupBy(d => d.CreationTime.Hour.ToString())
|
|
|
|
+ .Select((d, s) => new OrderCenterAcceptHourVo
|
|
|
|
+ {
|
|
|
|
+ Hour = d.CreationTime.Hour.ToString(),
|
|
|
|
+ AcceptNum = SqlFunc.AggregateCount(1),
|
|
|
|
+ ValidNum = SqlFunc.AggregateSum(SqlFunc.IIF(d.AcceptType != "无效", 1, 0)),
|
|
|
|
+ RepetitionNum = SqlFunc.AggregateSum(SqlFunc.IIF(d.DuplicateIds == null || SqlFunc.JsonArrayLength(d.DuplicateIds) > 0, 1, 0)),
|
|
|
|
+ InvalidNum = SqlFunc.AggregateSum(SqlFunc.IIF(d.AcceptType == "无效", 1, 0)),
|
|
|
|
+ HandleNum = SqlFunc.AggregateSum(SqlFunc.IIF(d.Status >= EOrderStatus.Filed, 1, 0)),
|
|
|
|
+ NoHandleNum = SqlFunc.AggregateSum(SqlFunc.IIF(d.Status < EOrderStatus.Filed, 1, 0)),
|
|
|
|
+ BackNum = SqlFunc.AggregateSum(SqlFunc.IIF(s.OrderId != null && s.OrderId != "", 1, 0)),
|
|
|
|
+ DutyDeskNum = SqlFunc.AggregateDistinctCount(d.AcceptorId)
|
|
|
|
+ });
|
|
var query = listHour.LeftJoin(data, (h, d) => h.ColumnName.ToString() == d.Hour)
|
|
var query = listHour.LeftJoin(data, (h, d) => h.ColumnName.ToString() == d.Hour)
|
|
- .GroupBy((h,d)=> h.ColumnName)
|
|
|
|
|
|
+ .GroupBy((h, d) => h.ColumnName)
|
|
.OrderBy((h, d) => h.ColumnName)
|
|
.OrderBy((h, d) => h.ColumnName)
|
|
.Select((h, d) => new OrderCenterAcceptHourVo
|
|
.Select((h, d) => new OrderCenterAcceptHourVo
|
|
{
|
|
{
|
|
@@ -1105,10 +1106,10 @@ namespace Hotline.Repository.SqlSugar.Orders
|
|
NoHandleNum = SqlFunc.AggregateSum(d.NoHandleNum),
|
|
NoHandleNum = SqlFunc.AggregateSum(d.NoHandleNum),
|
|
BackNum = SqlFunc.AggregateSum(d.BackNum),
|
|
BackNum = SqlFunc.AggregateSum(d.BackNum),
|
|
DutyDeskNum = SqlFunc.AggregateSum(d.DutyDeskNum)
|
|
DutyDeskNum = SqlFunc.AggregateSum(d.DutyDeskNum)
|
|
- });
|
|
|
|
- return query;
|
|
|
|
|
|
+ });
|
|
|
|
+ return query;
|
|
}
|
|
}
|
|
- public ISugarQueryable<SelectOrderId> OrderListUnionAll(ISugarQueryable<SelectOrderId> t1, ISugarQueryable<SelectOrderId> t2)
|
|
|
|
|
|
+ public ISugarQueryable<SelectOrderId> OrderListUnionAll(ISugarQueryable<SelectOrderId> t1, ISugarQueryable<SelectOrderId> t2)
|
|
{
|
|
{
|
|
return Db.UnionAll(t1, t2).Select(it => new SelectOrderId { Id = it.Id }).MergeTable();
|
|
return Db.UnionAll(t1, t2).Select(it => new SelectOrderId { Id = it.Id }).MergeTable();
|
|
}
|
|
}
|
|
@@ -1152,11 +1153,11 @@ namespace Hotline.Repository.SqlSugar.Orders
|
|
.WhereIF(!string.IsNullOrEmpty(dto.PhoneNo), x => x.Contact == dto.PhoneNo!) //联系电话
|
|
.WhereIF(!string.IsNullOrEmpty(dto.PhoneNo), x => x.Contact == dto.PhoneNo!) //联系电话
|
|
.WhereIF(dto.IdentityType.HasValue, x => x.IdentityType == dto.IdentityType) //来电主体
|
|
.WhereIF(dto.IdentityType.HasValue, x => x.IdentityType == dto.IdentityType) //来电主体
|
|
.WhereIF(dto.FromGender.HasValue, x => x.FromGender == dto.FromGender) //来电性别
|
|
.WhereIF(dto.FromGender.HasValue, x => x.FromGender == dto.FromGender) //来电性别
|
|
- //.WhereIF(!string.IsNullOrEmpty(dto.PushTypeCode), x => x.PushTypeCode == dto.PushTypeCode)//推送分类
|
|
|
|
- .WhereIF(!string.IsNullOrEmpty(dto.PushTypeCode), x => x.OrderPushTypes.Any(opt=>opt.PushTypeCode == dto.PushTypeCode))//推送分类
|
|
|
|
- .WhereIF(dto.ExpiredStatus.HasValue && dto.ExpiredStatus == EExpiredStatusEx.Normal,x=> (x.ExpiredTime.HasValue && DateTime.Now < x.ExpiredTime && x.Status>= EOrderStatus.Filed) || (x.NearlyExpiredTime.HasValue && DateTime.Now < x.NearlyExpiredTime && x.Status< EOrderStatus.Filed)) //超期状态:正常
|
|
|
|
- .WhereIF(dto.ExpiredStatus.HasValue && dto.ExpiredStatus == EExpiredStatusEx.GoingToExpired,x=> (x.Status< EOrderStatus.Filed && DateTime.Now> x.NearlyExpiredTime && DateTime.Now < x.ExpiredTime) || (x.Status >= EOrderStatus.Filed && x.FiledTime > x.NearlyExpiredTime && x.FiledTime< x.ExpiredTime)) // 超期状态:即将超期
|
|
|
|
- .WhereIF(dto.ExpiredStatus.HasValue && dto.ExpiredStatus == EExpiredStatusEx.Expired,x=> (x.Status< EOrderStatus.Filed && DateTime.Now > x.ExpiredTime) || (x.Status>= EOrderStatus.Filed && x.FiledTime > x.ExpiredTime))
|
|
|
|
|
|
+ //.WhereIF(!string.IsNullOrEmpty(dto.PushTypeCode), x => x.PushTypeCode == dto.PushTypeCode)//推送分类
|
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.PushTypeCode), x => x.OrderPushTypes.Any(opt => opt.PushTypeCode == dto.PushTypeCode))//推送分类
|
|
|
|
+ .WhereIF(dto.ExpiredStatus.HasValue && dto.ExpiredStatus == EExpiredStatusEx.Normal, x => (x.ExpiredTime.HasValue && DateTime.Now < x.ExpiredTime && x.Status >= EOrderStatus.Filed) || (x.NearlyExpiredTime.HasValue && DateTime.Now < x.NearlyExpiredTime && x.Status < EOrderStatus.Filed)) //超期状态:正常
|
|
|
|
+ .WhereIF(dto.ExpiredStatus.HasValue && dto.ExpiredStatus == EExpiredStatusEx.GoingToExpired, x => (x.Status < EOrderStatus.Filed && DateTime.Now > x.NearlyExpiredTime && DateTime.Now < x.ExpiredTime) || (x.Status >= EOrderStatus.Filed && x.FiledTime > x.NearlyExpiredTime && x.FiledTime < x.ExpiredTime)) // 超期状态:即将超期
|
|
|
|
+ .WhereIF(dto.ExpiredStatus.HasValue && dto.ExpiredStatus == EExpiredStatusEx.Expired, x => (x.Status < EOrderStatus.Filed && DateTime.Now > x.ExpiredTime) || (x.Status >= EOrderStatus.Filed && x.FiledTime > x.ExpiredTime))
|
|
.Select(x => new OrderDataInventoryRep()
|
|
.Select(x => new OrderDataInventoryRep()
|
|
{
|
|
{
|
|
Id = x.Id,
|
|
Id = x.Id,
|
|
@@ -1168,7 +1169,7 @@ namespace Hotline.Repository.SqlSugar.Orders
|
|
CurrentStepName = x.CurrentStepName,
|
|
CurrentStepName = x.CurrentStepName,
|
|
ReTransactNum = x.ReTransactNum,
|
|
ReTransactNum = x.ReTransactNum,
|
|
//甄别状态
|
|
//甄别状态
|
|
- OrderScreenStatus = SqlFunc.Subqueryable<OrderScreen>().Where(q=>q.OrderId == x.Id).OrderByDesc(q=>q.CreationTime).Select(q=>q.Status), //x.OrderScreens.FirstOrDefault().Status,
|
|
|
|
|
|
+ OrderScreenStatus = SqlFunc.Subqueryable<OrderScreen>().Where(q => q.OrderId == x.Id).OrderByDesc(q => q.CreationTime).Select(q => q.Status), //x.OrderScreens.FirstOrDefault().Status,
|
|
No = x.No,
|
|
No = x.No,
|
|
ProvinceNo = x.ProvinceNo,
|
|
ProvinceNo = x.ProvinceNo,
|
|
CreationTime = x.CreationTime,
|
|
CreationTime = x.CreationTime,
|
|
@@ -1193,11 +1194,11 @@ namespace Hotline.Repository.SqlSugar.Orders
|
|
//坐席评价
|
|
//坐席评价
|
|
SeatEvaluate = SqlFunc.Subqueryable<OrderVisitDetail>()
|
|
SeatEvaluate = SqlFunc.Subqueryable<OrderVisitDetail>()
|
|
.Where(w => w.VisitId == SqlFunc.Subqueryable<OrderVisit>().Where(q => q.OrderId == x.Id && q.VisitState == EVisitState.Visited).Select(q => q.Id) && w.VisitTarget == EVisitTarget.Seat)
|
|
.Where(w => w.VisitId == SqlFunc.Subqueryable<OrderVisit>().Where(q => q.OrderId == x.Id && q.VisitState == EVisitState.Visited).Select(q => q.Id) && w.VisitTarget == EVisitTarget.Seat)
|
|
- .Select(w =>w.SeatEvaluate),
|
|
|
|
|
|
+ .Select(w => w.SeatEvaluate),
|
|
//办结结果
|
|
//办结结果
|
|
OrgProcessingResults = SqlFunc.Subqueryable<OrderVisitDetail>()
|
|
OrgProcessingResults = SqlFunc.Subqueryable<OrderVisitDetail>()
|
|
.Where(w => w.VisitId == SqlFunc.Subqueryable<OrderVisit>().Where(q => q.OrderId == x.Id && q.VisitState == EVisitState.Visited).Select(q => q.Id) && w.VisitTarget == EVisitTarget.Org)
|
|
.Where(w => w.VisitId == SqlFunc.Subqueryable<OrderVisit>().Where(q => q.OrderId == x.Id && q.VisitState == EVisitState.Visited).Select(q => q.Id) && w.VisitTarget == EVisitTarget.Org)
|
|
- .Select(w =>SqlFunc.JsonField(w.OrgProcessingResults,"Value")),
|
|
|
|
|
|
+ .Select(w => SqlFunc.JsonField(w.OrgProcessingResults, "Value")),
|
|
PushType = x.PushType,
|
|
PushType = x.PushType,
|
|
Content = x.Content,
|
|
Content = x.Content,
|
|
ActualOpinion = x.ActualOpinion,
|
|
ActualOpinion = x.ActualOpinion,
|
|
@@ -1258,7 +1259,11 @@ namespace Hotline.Repository.SqlSugar.Orders
|
|
.Includes(x => x.OrderVisit, x => x.Employee)
|
|
.Includes(x => x.OrderVisit, x => x.Employee)
|
|
.Where(x => x.OrderVisit.VisitState == EVisitState.Visited && x.VisitTarget == EVisitTarget.Org)
|
|
.Where(x => x.OrderVisit.VisitState == EVisitState.Visited && x.VisitTarget == EVisitTarget.Org)
|
|
.WhereIF(IsCenter == false, x => x.VisitOrgCode.StartsWith(_sessionContext.RequiredOrgId))
|
|
.WhereIF(IsCenter == false, x => x.VisitOrgCode.StartsWith(_sessionContext.RequiredOrgId))
|
|
- .WhereIF(dto.OrgVisitStatisticsType.HasValue, x => x.OrderVisit.Order.ProcessType == (EProcessType)((int)dto.OrgVisitStatisticsType))
|
|
|
|
|
|
+ // .WhereIF(dto.OrgVisitStatisticsType.HasValue, x => x.OrderVisit.Order.ProcessType == (EProcessType)((int)dto.OrgVisitStatisticsType))
|
|
|
|
+ .WhereIF(dto.OrgVisitStatisticsType.HasValue && dto.OrgVisitStatisticsType == EOrgVisitStatisticsType.CallCenter,
|
|
|
|
+ x => x.OrderVisit.Order.ActualHandleOrgCode == OrgSeedData.CenterId)
|
|
|
|
+ .WhereIF(dto.OrgVisitStatisticsType.HasValue && dto.OrgVisitStatisticsType == EOrgVisitStatisticsType.Org,
|
|
|
|
+ x => x.OrderVisit.Order.ActualHandleOrgCode != OrgSeedData.CenterId)
|
|
.WhereIF(dto.Keyword.NotNullOrEmpty(), x => x.OrderVisit.Order.Title.Contains(dto.Keyword)) // 根据关键字匹配
|
|
.WhereIF(dto.Keyword.NotNullOrEmpty(), x => x.OrderVisit.Order.Title.Contains(dto.Keyword)) // 根据关键字匹配
|
|
.WhereIF(dto.TypeCode != 0, x => x.OrderVisit.Order.IdentityType == (EIdentityType)dto.TypeCode)
|
|
.WhereIF(dto.TypeCode != 0, x => x.OrderVisit.Order.IdentityType == (EIdentityType)dto.TypeCode)
|
|
.WhereIF(!string.IsNullOrEmpty(dto.OrgProcessingResults), dto.AttitudeType == EAttitudeType.ProcessingResult ? x => SqlFunc.JsonField(x.OrgProcessingResults, "Key") == dto.OrgProcessingResults : x => SqlFunc.JsonField(x.OrgHandledAttitude, "Key") == dto.OrgProcessingResults)
|
|
.WhereIF(!string.IsNullOrEmpty(dto.OrgProcessingResults), dto.AttitudeType == EAttitudeType.ProcessingResult ? x => SqlFunc.JsonField(x.OrgProcessingResults, "Key") == dto.OrgProcessingResults : x => SqlFunc.JsonField(x.OrgHandledAttitude, "Key") == dto.OrgProcessingResults)
|
|
@@ -1267,17 +1272,17 @@ namespace Hotline.Repository.SqlSugar.Orders
|
|
.WhereIF(!string.IsNullOrEmpty(dto.Title), x => x.OrderVisit.Order.Title.Contains(dto.Title))
|
|
.WhereIF(!string.IsNullOrEmpty(dto.Title), x => x.OrderVisit.Order.Title.Contains(dto.Title))
|
|
.WhereIF(!string.IsNullOrEmpty(dto.OrgId), x => x.VisitOrgCode == dto.OrgId)//接办部门
|
|
.WhereIF(!string.IsNullOrEmpty(dto.OrgId), x => x.VisitOrgCode == dto.OrgId)//接办部门
|
|
.WhereIF(!string.IsNullOrEmpty(dto.Hotspot), x => x.OrderVisit.Order.HotspotSpliceName != null && x.OrderVisit.Order.HotspotSpliceName.Contains(dto.Hotspot))//热点类型
|
|
.WhereIF(!string.IsNullOrEmpty(dto.Hotspot), x => x.OrderVisit.Order.HotspotSpliceName != null && x.OrderVisit.Order.HotspotSpliceName.Contains(dto.Hotspot))//热点类型
|
|
- .WhereIF(!string.IsNullOrEmpty(dto.Channel), x => x.OrderVisit.Order.SourceChannelCode == dto.Channel)//受理类型
|
|
|
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.Channel), x => x.OrderVisit.Order.SourceChannelCode == dto.Channel)//来源渠道
|
|
.WhereIF(dto.CreationTimeStart.HasValue, x => x.OrderVisit.Order.CreationTime >= dto.CreationTimeStart) //受理时间开始
|
|
.WhereIF(dto.CreationTimeStart.HasValue, x => x.OrderVisit.Order.CreationTime >= dto.CreationTimeStart) //受理时间开始
|
|
.WhereIF(dto.CreationTimeEnd.HasValue, x => x.OrderVisit.Order.CreationTime <= dto.CreationTimeEnd) //受理时间结束
|
|
.WhereIF(dto.CreationTimeEnd.HasValue, x => x.OrderVisit.Order.CreationTime <= dto.CreationTimeEnd) //受理时间结束
|
|
.WhereIF(dto.ActualHandleTimeStart.HasValue, x => x.OrderVisit.Order.ActualHandleTime >= dto.ActualHandleTimeStart) //办结时间开始
|
|
.WhereIF(dto.ActualHandleTimeStart.HasValue, x => x.OrderVisit.Order.ActualHandleTime >= dto.ActualHandleTimeStart) //办结时间开始
|
|
.WhereIF(dto.ActualHandleTimeEnd.HasValue, x => x.OrderVisit.Order.ActualHandleTime <= dto.ActualHandleTimeEnd)//办结时间结束
|
|
.WhereIF(dto.ActualHandleTimeEnd.HasValue, x => x.OrderVisit.Order.ActualHandleTime <= dto.ActualHandleTimeEnd)//办结时间结束
|
|
.WhereIF(dto.VisitTimeStart.HasValue, x => x.OrderVisit.VisitTime >= dto.VisitTimeStart) //回访时间
|
|
.WhereIF(dto.VisitTimeStart.HasValue, x => x.OrderVisit.VisitTime >= dto.VisitTimeStart) //回访时间
|
|
.WhereIF(dto.VisitTimeEnd.HasValue, x => x.OrderVisit.VisitTime < dto.VisitTimeEnd) //回访时间
|
|
.WhereIF(dto.VisitTimeEnd.HasValue, x => x.OrderVisit.VisitTime < dto.VisitTimeEnd) //回访时间
|
|
- .WhereIF(dto.VisitType != null,x=>x.OrderVisit.VisitType == dto.VisitType) //回访方式
|
|
|
|
|
|
+ .WhereIF(dto.VisitType != null, x => x.OrderVisit.VisitType == dto.VisitType) //回访方式
|
|
.Select(x => new OrgVisitDetailListResp()
|
|
.Select(x => new OrgVisitDetailListResp()
|
|
{
|
|
{
|
|
- Id = x.Id,
|
|
|
|
|
|
+ Id = x.Id,
|
|
OrderId = x.OrderVisit.Order.Id,
|
|
OrderId = x.OrderVisit.Order.Id,
|
|
VisitId = x.OrderVisit.Id,
|
|
VisitId = x.OrderVisit.Id,
|
|
No = x.OrderVisit.No,
|
|
No = x.OrderVisit.No,
|
|
@@ -1333,7 +1338,7 @@ namespace Hotline.Repository.SqlSugar.Orders
|
|
.WhereIF(dto.TypeId is 1, x => SqlFunc.JsonField(x.OrgProcessingResults, "Key") == dto.DateValue)
|
|
.WhereIF(dto.TypeId is 1, x => SqlFunc.JsonField(x.OrgProcessingResults, "Key") == dto.DateValue)
|
|
.WhereIF(dto.TypeId is 2, x => SqlFunc.JsonField(x.OrgHandledAttitude, "Key") == dto.DateValue)
|
|
.WhereIF(dto.TypeId is 2, x => SqlFunc.JsonField(x.OrgHandledAttitude, "Key") == dto.DateValue)
|
|
.WhereIF(!string.IsNullOrEmpty(dto.LineNum), x => x.OrderVisit.Order.CallRecord.Gateway == dto.LineNum)
|
|
.WhereIF(!string.IsNullOrEmpty(dto.LineNum), x => x.OrderVisit.Order.CallRecord.Gateway == dto.LineNum)
|
|
- .WhereIF(dto.VisitType!= null,x=> x.OrderVisit.VisitType == dto.VisitType)
|
|
|
|
|
|
+ .WhereIF(dto.VisitType != null, x => x.OrderVisit.VisitType == dto.VisitType)
|
|
.Select(x => new OrgVisitDetailListResp
|
|
.Select(x => new OrgVisitDetailListResp
|
|
{
|
|
{
|
|
Id = x.Id,
|
|
Id = x.Id,
|
|
@@ -1366,68 +1371,68 @@ namespace Hotline.Repository.SqlSugar.Orders
|
|
.OrderByIF(dto is { SortField: "filedTime", SortRule: 1 }, x => x.FiledTime, OrderByType.Desc); //办结时间降序;
|
|
.OrderByIF(dto is { SortField: "filedTime", SortRule: 1 }, x => x.FiledTime, OrderByType.Desc); //办结时间降序;
|
|
}
|
|
}
|
|
|
|
|
|
- /// <summary>
|
|
|
|
- /// 部门满意度明细 排除不满意 非常不满意 未作评价
|
|
|
|
- /// </summary>
|
|
|
|
- /// <param name="dto"></param>
|
|
|
|
- /// <returns></returns>
|
|
|
|
- public ISugarQueryable<OrgVisitDetailListResp> OrgVisitDetailFiltrationList(OrgVisitDetailListReq dto, string orgId)
|
|
|
|
- {
|
|
|
|
- var IsCenter = _sessionContext.OrgIsCenter;
|
|
|
|
- var hiddenOrder = _systemSettingCacheManager.GetSetting(SettingConstants.OrgVisitDetailHiddenOrderNo).SettingValue;
|
|
|
|
-
|
|
|
|
- return _orderVisitDetailRepository.Queryable()
|
|
|
|
- .Includes(x => x.OrderVisit, x => x.Order)
|
|
|
|
- .Includes(x => x.OrderVisit, x => x.Employee)
|
|
|
|
- .Where(x => x.OrderVisit.VisitState == EVisitState.Visited && x.VisitTarget == EVisitTarget.Org)
|
|
|
|
- .WhereIF(hiddenOrder.Any(), x =>!hiddenOrder.Contains(x.OrderVisit.Order.No))
|
|
|
|
|
|
+ /// <summary>
|
|
|
|
+ /// 部门满意度明细 排除不满意 非常不满意 未作评价
|
|
|
|
+ /// </summary>
|
|
|
|
+ /// <param name="dto"></param>
|
|
|
|
+ /// <returns></returns>
|
|
|
|
+ public ISugarQueryable<OrgVisitDetailListResp> OrgVisitDetailFiltrationList(OrgVisitDetailListReq dto, string orgId)
|
|
|
|
+ {
|
|
|
|
+ var IsCenter = _sessionContext.OrgIsCenter;
|
|
|
|
+ var hiddenOrder = _systemSettingCacheManager.GetSetting(SettingConstants.OrgVisitDetailHiddenOrderNo).SettingValue;
|
|
|
|
+
|
|
|
|
+ return _orderVisitDetailRepository.Queryable()
|
|
|
|
+ .Includes(x => x.OrderVisit, x => x.Order)
|
|
|
|
+ .Includes(x => x.OrderVisit, x => x.Employee)
|
|
|
|
+ .Where(x => x.OrderVisit.VisitState == EVisitState.Visited && x.VisitTarget == EVisitTarget.Org)
|
|
|
|
+ .WhereIF(hiddenOrder.Any(), x => !hiddenOrder.Contains(x.OrderVisit.Order.No))
|
|
.WhereIF(IsCenter == false, x => x.VisitOrgCode.StartsWith(orgId))
|
|
.WhereIF(IsCenter == false, x => x.VisitOrgCode.StartsWith(orgId))
|
|
- .WhereIF(dto.OrgVisitStatisticsType.HasValue, x => x.OrderVisit.Order.ProcessType == (EProcessType)((int)dto.OrgVisitStatisticsType))
|
|
|
|
- .WhereIF(dto.Keyword.NotNullOrEmpty(), x => x.OrderVisit.Order.Title.Contains(dto.Keyword)) // 根据关键字匹配
|
|
|
|
- .WhereIF(dto.TypeCode != 0, x => x.OrderVisit.Order.IdentityType == (EIdentityType)dto.TypeCode)
|
|
|
|
- .WhereIF(!string.IsNullOrEmpty(dto.OrgProcessingResults), dto.AttitudeType == EAttitudeType.ProcessingResult ? x => SqlFunc.JsonField(x.OrgProcessingResults, "Key") == dto.OrgProcessingResults : x => SqlFunc.JsonField(x.OrgHandledAttitude, "Key") == dto.OrgProcessingResults)
|
|
|
|
- .WhereIF(!string.IsNullOrEmpty(dto.VisitUser), x => x.OrderVisit.Employee.Name.Contains(dto.VisitUser))
|
|
|
|
- .WhereIF(!string.IsNullOrEmpty(dto.No), x => x.OrderVisit.Order.No == dto.No)
|
|
|
|
- .WhereIF(!string.IsNullOrEmpty(dto.Title), x => x.OrderVisit.Order.Title.Contains(dto.Title))
|
|
|
|
- .WhereIF(!string.IsNullOrEmpty(dto.OrgId), x => x.VisitOrgCode == dto.OrgId)//接办部门
|
|
|
|
- .WhereIF(!string.IsNullOrEmpty(dto.Hotspot), x => x.OrderVisit.Order.HotspotSpliceName != null && x.OrderVisit.Order.HotspotSpliceName.Contains(dto.Hotspot))//热点类型
|
|
|
|
- .WhereIF(!string.IsNullOrEmpty(dto.Channel), x => x.OrderVisit.Order.SourceChannelCode == dto.Channel)//受理类型
|
|
|
|
- .WhereIF(dto.CreationTimeStart.HasValue, x => x.OrderVisit.Order.CreationTime >= dto.CreationTimeStart) //受理时间开始
|
|
|
|
- .WhereIF(dto.CreationTimeEnd.HasValue, x => x.OrderVisit.Order.CreationTime <= dto.CreationTimeEnd) //受理时间结束
|
|
|
|
- .WhereIF(dto.ActualHandleTimeStart.HasValue, x => x.OrderVisit.Order.ActualHandleTime >= dto.ActualHandleTimeStart) //办结时间开始
|
|
|
|
- .WhereIF(dto.ActualHandleTimeEnd.HasValue, x => x.OrderVisit.Order.ActualHandleTime <= dto.ActualHandleTimeEnd)//办结时间结束
|
|
|
|
- .WhereIF(dto.VisitTimeStart.HasValue, x => x.OrderVisit.VisitTime >= dto.VisitTimeStart) //回访时间
|
|
|
|
- .WhereIF(dto.VisitTimeEnd.HasValue, x => x.OrderVisit.VisitTime < dto.VisitTimeEnd) //回访时间
|
|
|
|
- //特殊需求:要求新增查询条件【一级部门】,如查询【富顺县人民政府】则显示该一级部门以及下级部门的工单数据
|
|
|
|
- .WhereIF(!string.IsNullOrEmpty(dto.LevelOneOrg), x=> x.OrderVisit.Order.OrgLevelOneName == dto.LevelOneOrg || x.OrderVisit.Order.OrgLevelOneCode == dto.LevelOneOrg)
|
|
|
|
-
|
|
|
|
- .Where(x=> SqlFunc.JsonField(x.OrgProcessingResults, "Key") != "2" && SqlFunc.JsonField(x.OrgProcessingResults, "Key") != "-1" && SqlFunc.JsonField(x.OrgProcessingResults, "Key") != "0" && SqlFunc.JsonField(x.OrgProcessingResults, "Key") != "7")
|
|
|
|
- .Where(x=>x.VisitOrgCode.StartsWith(orgId))
|
|
|
|
- .Select(x => new OrgVisitDetailListResp()
|
|
|
|
- {
|
|
|
|
- Id = x.Id,
|
|
|
|
|
|
+ .WhereIF(dto.OrgVisitStatisticsType.HasValue, x => x.OrderVisit.Order.ProcessType == (EProcessType)((int)dto.OrgVisitStatisticsType))
|
|
|
|
+ .WhereIF(dto.Keyword.NotNullOrEmpty(), x => x.OrderVisit.Order.Title.Contains(dto.Keyword)) // 根据关键字匹配
|
|
|
|
+ .WhereIF(dto.TypeCode != 0, x => x.OrderVisit.Order.IdentityType == (EIdentityType)dto.TypeCode)
|
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.OrgProcessingResults), dto.AttitudeType == EAttitudeType.ProcessingResult ? x => SqlFunc.JsonField(x.OrgProcessingResults, "Key") == dto.OrgProcessingResults : x => SqlFunc.JsonField(x.OrgHandledAttitude, "Key") == dto.OrgProcessingResults)
|
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.VisitUser), x => x.OrderVisit.Employee.Name.Contains(dto.VisitUser))
|
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.No), x => x.OrderVisit.Order.No == dto.No)
|
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.Title), x => x.OrderVisit.Order.Title.Contains(dto.Title))
|
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.OrgId), x => x.VisitOrgCode == dto.OrgId)//接办部门
|
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.Hotspot), x => x.OrderVisit.Order.HotspotSpliceName != null && x.OrderVisit.Order.HotspotSpliceName.Contains(dto.Hotspot))//热点类型
|
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.Channel), x => x.OrderVisit.Order.SourceChannelCode == dto.Channel)//受理类型
|
|
|
|
+ .WhereIF(dto.CreationTimeStart.HasValue, x => x.OrderVisit.Order.CreationTime >= dto.CreationTimeStart) //受理时间开始
|
|
|
|
+ .WhereIF(dto.CreationTimeEnd.HasValue, x => x.OrderVisit.Order.CreationTime <= dto.CreationTimeEnd) //受理时间结束
|
|
|
|
+ .WhereIF(dto.ActualHandleTimeStart.HasValue, x => x.OrderVisit.Order.ActualHandleTime >= dto.ActualHandleTimeStart) //办结时间开始
|
|
|
|
+ .WhereIF(dto.ActualHandleTimeEnd.HasValue, x => x.OrderVisit.Order.ActualHandleTime <= dto.ActualHandleTimeEnd)//办结时间结束
|
|
|
|
+ .WhereIF(dto.VisitTimeStart.HasValue, x => x.OrderVisit.VisitTime >= dto.VisitTimeStart) //回访时间
|
|
|
|
+ .WhereIF(dto.VisitTimeEnd.HasValue, x => x.OrderVisit.VisitTime < dto.VisitTimeEnd) //回访时间
|
|
|
|
+ //特殊需求:要求新增查询条件【一级部门】,如查询【富顺县人民政府】则显示该一级部门以及下级部门的工单数据
|
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.LevelOneOrg), x => x.OrderVisit.Order.OrgLevelOneName == dto.LevelOneOrg || x.OrderVisit.Order.OrgLevelOneCode == dto.LevelOneOrg)
|
|
|
|
+
|
|
|
|
+ .Where(x => SqlFunc.JsonField(x.OrgProcessingResults, "Key") != "2" && SqlFunc.JsonField(x.OrgProcessingResults, "Key") != "-1" && SqlFunc.JsonField(x.OrgProcessingResults, "Key") != "0" && SqlFunc.JsonField(x.OrgProcessingResults, "Key") != "7")
|
|
|
|
+ .Where(x => x.VisitOrgCode.StartsWith(orgId))
|
|
|
|
+ .Select(x => new OrgVisitDetailListResp()
|
|
|
|
+ {
|
|
|
|
+ Id = x.Id,
|
|
OrderId = x.OrderVisit.Order.Id,
|
|
OrderId = x.OrderVisit.Order.Id,
|
|
- VisitId = x.OrderVisit.Id,
|
|
|
|
- No = x.OrderVisit.No,
|
|
|
|
- ReTransactNum = x.OrderVisit.Order.ReTransactNum,
|
|
|
|
- OrderScreenStatus = SqlFunc.Subqueryable<OrderScreen>().Where(q => q.OrderId == x.OrderVisit.OrderId && q.VisitDetailId == x.Id).OrderByDesc(q => q.CreationTime).Select(q => q.Status),
|
|
|
|
- VisitContent = x.VisitContent,
|
|
|
|
- HotspotSpliceName = x.OrderVisit.Order.HotspotSpliceName,
|
|
|
|
- OrgLevelOneName = x.OrderVisit.Order.OrgLevelOneName,
|
|
|
|
- CurrentHandleOrgName = x.OrderVisit.Order.CurrentHandleOrgName,
|
|
|
|
- CreationTime = x.OrderVisit.Order.CreationTime,
|
|
|
|
- Title = x.OrderVisit.Order.Title,
|
|
|
|
- VisitUser = x.OrderVisit.Employee.Name,
|
|
|
|
- VisitType = x.OrderVisit.VisitType,
|
|
|
|
- VisitTime = x.OrderVisit.VisitTime,
|
|
|
|
- OrgProcessingResults = dto.AttitudeType == EAttitudeType.ProcessingResult ? SqlFunc.JsonField(x.OrgProcessingResults, "Value")
|
|
|
|
- : SqlFunc.JsonField(x.OrgHandledAttitude, "Value"),
|
|
|
|
- Content = x.OrderVisit.Order.Content,
|
|
|
|
- FileOpinion = x.OrderVisit.Order.FileOpinion,
|
|
|
|
- FiledTime = x.OrderVisit.Order.FiledTime,
|
|
|
|
- VisitOrgName = x.VisitOrgName,
|
|
|
|
- ActualHandleOrgName = x.OrderVisit.Order.ActualHandleOrgName
|
|
|
|
- }).MergeTable()
|
|
|
|
|
|
+ VisitId = x.OrderVisit.Id,
|
|
|
|
+ No = x.OrderVisit.No,
|
|
|
|
+ ReTransactNum = x.OrderVisit.Order.ReTransactNum,
|
|
|
|
+ OrderScreenStatus = SqlFunc.Subqueryable<OrderScreen>().Where(q => q.OrderId == x.OrderVisit.OrderId && q.VisitDetailId == x.Id).OrderByDesc(q => q.CreationTime).Select(q => q.Status),
|
|
|
|
+ VisitContent = x.VisitContent,
|
|
|
|
+ HotspotSpliceName = x.OrderVisit.Order.HotspotSpliceName,
|
|
|
|
+ OrgLevelOneName = x.OrderVisit.Order.OrgLevelOneName,
|
|
|
|
+ CurrentHandleOrgName = x.OrderVisit.Order.CurrentHandleOrgName,
|
|
|
|
+ CreationTime = x.OrderVisit.Order.CreationTime,
|
|
|
|
+ Title = x.OrderVisit.Order.Title,
|
|
|
|
+ VisitUser = x.OrderVisit.Employee.Name,
|
|
|
|
+ VisitType = x.OrderVisit.VisitType,
|
|
|
|
+ VisitTime = x.OrderVisit.VisitTime,
|
|
|
|
+ OrgProcessingResults = dto.AttitudeType == EAttitudeType.ProcessingResult ? SqlFunc.JsonField(x.OrgProcessingResults, "Value")
|
|
|
|
+ : SqlFunc.JsonField(x.OrgHandledAttitude, "Value"),
|
|
|
|
+ Content = x.OrderVisit.Order.Content,
|
|
|
|
+ FileOpinion = x.OrderVisit.Order.FileOpinion,
|
|
|
|
+ FiledTime = x.OrderVisit.Order.FiledTime,
|
|
|
|
+ VisitOrgName = x.VisitOrgName,
|
|
|
|
+ ActualHandleOrgName = x.OrderVisit.Order.ActualHandleOrgName
|
|
|
|
+ }).MergeTable()
|
|
.OrderByIF(string.IsNullOrEmpty(dto.SortField), x => x.VisitTime, OrderByType.Desc)
|
|
.OrderByIF(string.IsNullOrEmpty(dto.SortField), x => x.VisitTime, OrderByType.Desc)
|
|
.OrderByIF(dto is { SortField: "creationTime", SortRule: 0 }, x => x.CreationTime, OrderByType.Asc) //受理时间升序
|
|
.OrderByIF(dto is { SortField: "creationTime", SortRule: 0 }, x => x.CreationTime, OrderByType.Asc) //受理时间升序
|
|
.OrderByIF(dto is { SortField: "creationTime", SortRule: 1 }, x => x.CreationTime, OrderByType.Desc) //受理时间降序
|
|
.OrderByIF(dto is { SortField: "creationTime", SortRule: 1 }, x => x.CreationTime, OrderByType.Desc) //受理时间降序
|
|
@@ -1437,7 +1442,7 @@ namespace Hotline.Repository.SqlSugar.Orders
|
|
.OrderByIF(dto is { SortField: "filedTime", SortRule: 1 }, x => x.FiledTime, OrderByType.Desc) //办结时间降序
|
|
.OrderByIF(dto is { SortField: "filedTime", SortRule: 1 }, x => x.FiledTime, OrderByType.Desc) //办结时间降序
|
|
;
|
|
;
|
|
|
|
|
|
- }
|
|
|
|
|
|
+ }
|
|
|
|
|
|
/// <summary>
|
|
/// <summary>
|
|
/// 智能回访数据统计
|
|
/// 智能回访数据统计
|
|
@@ -1446,14 +1451,14 @@ namespace Hotline.Repository.SqlSugar.Orders
|
|
/// <returns></returns>
|
|
/// <returns></returns>
|
|
public async Task<QueryAiVisitStatisticsResp> QueryAiVisitStatistics(QueryAiVisitStatisticsRequest dto)
|
|
public async Task<QueryAiVisitStatisticsResp> QueryAiVisitStatistics(QueryAiVisitStatisticsRequest dto)
|
|
{
|
|
{
|
|
- var list = await _aiOrderVisitDetailRepository.Queryable().Includes(x=>x.OrderVisit).Where(x => x.CreationTime >= dto.StartTime && x.CreationTime <= dto.EndTime && x.OrderVisit.VisitState == EVisitState.Visited).ToListAsync();
|
|
|
|
|
|
+ var list = await _aiOrderVisitDetailRepository.Queryable().Includes(x => x.OrderVisit).Where(x => x.CreationTime >= dto.StartTime && x.CreationTime <= dto.EndTime && x.OrderVisit.VisitState == EVisitState.Visited).ToListAsync();
|
|
return new QueryAiVisitStatisticsResp()
|
|
return new QueryAiVisitStatisticsResp()
|
|
{
|
|
{
|
|
AiVisitCount = list.Count,
|
|
AiVisitCount = list.Count,
|
|
- AiVisitSuccessCount = list.Where(x=>x.OrderVisit.IsEffectiveAiVisit==true).Count(), // SqlFunc.AggregateSum(SqlFunc.IIF(x.OrderVisit.IsEffectiveAiVisit == true, 1, 0)),
|
|
|
|
|
|
+ AiVisitSuccessCount = list.Where(x => x.OrderVisit.IsEffectiveAiVisit == true).Count(), // SqlFunc.AggregateSum(SqlFunc.IIF(x.OrderVisit.IsEffectiveAiVisit == true, 1, 0)),
|
|
AiVisitArtificialReviewCount = list.Where(x => x.OrderVisit.IsEffectiveAiVisit == false).Count(),
|
|
AiVisitArtificialReviewCount = list.Where(x => x.OrderVisit.IsEffectiveAiVisit == false).Count(),
|
|
- AiVisitCallReviewCount = list.Where(x=> x.OrderVisit.IsEffectiveAiVisit == false && !string.IsNullOrEmpty(x.OrderVisit.CallId)).Count(),
|
|
|
|
- AiVisitHandReviewCount = list.Where(x=>x.OrderVisit.IsEffectiveAiVisit == false && string.IsNullOrEmpty(x.OrderVisit.CallId)).Count()
|
|
|
|
|
|
+ AiVisitCallReviewCount = list.Where(x => x.OrderVisit.IsEffectiveAiVisit == false && !string.IsNullOrEmpty(x.OrderVisit.CallId)).Count(),
|
|
|
|
+ AiVisitHandReviewCount = list.Where(x => x.OrderVisit.IsEffectiveAiVisit == false && string.IsNullOrEmpty(x.OrderVisit.CallId)).Count()
|
|
};
|
|
};
|
|
}
|
|
}
|
|
|
|
|
|
@@ -1468,17 +1473,17 @@ namespace Hotline.Repository.SqlSugar.Orders
|
|
return new QueryAiVisitEffectiveAnalysisResp()
|
|
return new QueryAiVisitEffectiveAnalysisResp()
|
|
{
|
|
{
|
|
AiVisitCount = list.Count,
|
|
AiVisitCount = list.Count,
|
|
- AiVisitSuccessCount =list.Where(x=> x.OrderVisit.IsEffectiveAiVisit == true).Count(),
|
|
|
|
- AiVisitCallTwoFailCount = list.Where(x=> x.CallTimes>=1 && x.AiIsContact ==null && x.AiVolved ==null && (x.AiOrgProcessingResults == null || x.AiOrgProcessingResults?.Key == null)).Count(),
|
|
|
|
- AiVisitHaveOneAnswerCount = list.Where(x=>x.OrderVisit.IsEffectiveAiVisit == false &&
|
|
|
|
- (x.AiIsContact!= null && x.AiVolved==null && (x.AiOrgProcessingResults == null || x.AiOrgProcessingResults.Key == null)) ||
|
|
|
|
|
|
+ AiVisitSuccessCount = list.Where(x => x.OrderVisit.IsEffectiveAiVisit == true).Count(),
|
|
|
|
+ AiVisitCallTwoFailCount = list.Where(x => x.CallTimes >= 1 && x.AiIsContact == null && x.AiVolved == null && (x.AiOrgProcessingResults == null || x.AiOrgProcessingResults?.Key == null)).Count(),
|
|
|
|
+ AiVisitHaveOneAnswerCount = list.Where(x => x.OrderVisit.IsEffectiveAiVisit == false &&
|
|
|
|
+ (x.AiIsContact != null && x.AiVolved == null && (x.AiOrgProcessingResults == null || x.AiOrgProcessingResults.Key == null)) ||
|
|
(x.AiIsContact == null && x.AiVolved != null && (x.AiOrgProcessingResults == null || x.AiOrgProcessingResults?.Key == null)) ||
|
|
(x.AiIsContact == null && x.AiVolved != null && (x.AiOrgProcessingResults == null || x.AiOrgProcessingResults?.Key == null)) ||
|
|
(x.AiIsContact == null && x.AiVolved == null && (x.AiOrgProcessingResults != null || x.AiOrgProcessingResults?.Key != null))).Count(), //只有一个答案
|
|
(x.AiIsContact == null && x.AiVolved == null && (x.AiOrgProcessingResults != null || x.AiOrgProcessingResults?.Key != null))).Count(), //只有一个答案
|
|
- AiVisitHaveTwoAnswerCount = list.Where(x=> x.OrderVisit.IsEffectiveAiVisit == false &&
|
|
|
|
|
|
+ AiVisitHaveTwoAnswerCount = list.Where(x => x.OrderVisit.IsEffectiveAiVisit == false &&
|
|
(x.AiIsContact != null && x.AiVolved != null && (x.AiOrgProcessingResults == null || x.AiOrgProcessingResults?.Key == null)) ||
|
|
(x.AiIsContact != null && x.AiVolved != null && (x.AiOrgProcessingResults == null || x.AiOrgProcessingResults?.Key == null)) ||
|
|
(x.AiIsContact != null && x.AiVolved == null && (x.AiOrgProcessingResults != null || x.AiOrgProcessingResults?.Key != null)) ||
|
|
(x.AiIsContact != null && x.AiVolved == null && (x.AiOrgProcessingResults != null || x.AiOrgProcessingResults?.Key != null)) ||
|
|
(x.AiIsContact == null && x.AiVolved != null && (x.AiOrgProcessingResults != null || x.AiOrgProcessingResults?.Key != null))).Count(),//只有两个答案
|
|
(x.AiIsContact == null && x.AiVolved != null && (x.AiOrgProcessingResults != null || x.AiOrgProcessingResults?.Key != null))).Count(),//只有两个答案
|
|
- AiVisitHaveThreeAnswerCount = list.Where(x=> x.OrderVisit.IsEffectiveAiVisit == false && x.AiIsContact != null && x.AiVolved != null && (x.AiOrgProcessingResults != null || x.AiOrgProcessingResults?.Key != null)).Count()//有三个答案
|
|
|
|
|
|
+ AiVisitHaveThreeAnswerCount = list.Where(x => x.OrderVisit.IsEffectiveAiVisit == false && x.AiIsContact != null && x.AiVolved != null && (x.AiOrgProcessingResults != null || x.AiOrgProcessingResults?.Key != null)).Count()//有三个答案
|
|
};
|
|
};
|
|
}
|
|
}
|
|
|
|
|
|
@@ -1493,12 +1498,12 @@ namespace Hotline.Repository.SqlSugar.Orders
|
|
|
|
|
|
public class OrderTerminateRepository : BaseRepositoryWorkflow<OrderTerminate>, IOrderTerminateRepository, IScopeDependency
|
|
public class OrderTerminateRepository : BaseRepositoryWorkflow<OrderTerminate>, IOrderTerminateRepository, IScopeDependency
|
|
{
|
|
{
|
|
- public OrderTerminateRepository(ISugarUnitOfWork<HotlineDbContext> uow, IDataPermissionFilterBuilder dataPermissionFilterBuilder) : base(uow, dataPermissionFilterBuilder)
|
|
|
|
- {
|
|
|
|
- }
|
|
|
|
|
|
+ public OrderTerminateRepository(ISugarUnitOfWork<HotlineDbContext> uow, IDataPermissionFilterBuilder dataPermissionFilterBuilder) : base(uow, dataPermissionFilterBuilder)
|
|
|
|
+ {
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|
|
- public class OrderDelayRepository : BaseRepositoryWorkflow<OrderDelay>, IOrderDelayRepository, IScopeDependency
|
|
|
|
|
|
+ public class OrderDelayRepository : BaseRepositoryWorkflow<OrderDelay>, IOrderDelayRepository, IScopeDependency
|
|
{
|
|
{
|
|
public OrderDelayRepository(ISugarUnitOfWork<HotlineDbContext> uow, IDataPermissionFilterBuilder dataPermissionFilterBuilder) : base(uow, dataPermissionFilterBuilder)
|
|
public OrderDelayRepository(ISugarUnitOfWork<HotlineDbContext> uow, IDataPermissionFilterBuilder dataPermissionFilterBuilder) : base(uow, dataPermissionFilterBuilder)
|
|
{
|
|
{
|