|
@@ -28,17 +28,22 @@ namespace Hotline.Repository.SqlSugar.Orders
|
|
|
private readonly IDataPermissionFilterBuilder _dataPermissionFilterBuilder;
|
|
|
private readonly IRepository<OrderSendBackAudit> _orderSendBackAuditRepository;
|
|
|
private readonly IRepository<OrderVisit> _orderVisitRepository;
|
|
|
+ private readonly ISessionContext _sessionContext;
|
|
|
+ private readonly IRepository<OrderVisitDetail> _orderVisitDetailRepository;
|
|
|
|
|
|
- public OrderRepository(ISugarUnitOfWork<HotlineDbContext> uow,
|
|
|
+ public OrderRepository(ISugarUnitOfWork<HotlineDbContext> uow,
|
|
|
IDataPermissionFilterBuilder dataPermissionFilterBuilder,
|
|
|
IRepository<OrderSendBackAudit> orderSendBackAuditRepository,
|
|
|
- IRepository<OrderVisit> orderVisitRepository
|
|
|
- ) : base(uow, dataPermissionFilterBuilder)
|
|
|
+ IRepository<OrderVisit> orderVisitRepository,
|
|
|
+ ISessionContext sessionContext,
|
|
|
+ IRepository<OrderVisitDetail> orderVisitDetailRepository) : base(uow, dataPermissionFilterBuilder)
|
|
|
{
|
|
|
_dataPermissionFilterBuilder = dataPermissionFilterBuilder;
|
|
|
_orderSendBackAuditRepository = orderSendBackAuditRepository;
|
|
|
_orderVisitRepository = orderVisitRepository;
|
|
|
- }
|
|
|
+ _sessionContext = sessionContext;
|
|
|
+ _orderVisitDetailRepository = orderVisitDetailRepository;
|
|
|
+ }
|
|
|
|
|
|
public async Task<string> AddOrderNavAsync(Order order, CancellationToken cancellationToken)
|
|
|
{
|
|
@@ -1078,7 +1083,7 @@ namespace Hotline.Repository.SqlSugar.Orders
|
|
|
.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)
|
|
|
+ .GroupBy(d => d.CreationTime.Hour.ToString())
|
|
|
.Select((d, s) => new OrderCenterAcceptHourVo
|
|
|
{
|
|
|
Hour = d.CreationTime.Hour.ToString(),
|
|
@@ -1088,8 +1093,9 @@ namespace Hotline.Repository.SqlSugar.Orders
|
|
|
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))
|
|
|
- });
|
|
|
+ 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)
|
|
|
.GroupBy((h,d)=> h.ColumnName)
|
|
|
.OrderBy((h, d) => h.ColumnName)
|
|
@@ -1102,8 +1108,9 @@ namespace Hotline.Repository.SqlSugar.Orders
|
|
|
InvalidNum = SqlFunc.AggregateSum(d.InvalidNum),
|
|
|
HandleNum = SqlFunc.AggregateSum(d.HandleNum),
|
|
|
NoHandleNum = SqlFunc.AggregateSum(d.NoHandleNum),
|
|
|
- BackNum = SqlFunc.AggregateSum(d.BackNum)
|
|
|
- });
|
|
|
+ BackNum = SqlFunc.AggregateSum(d.BackNum),
|
|
|
+ DutyDeskNum = SqlFunc.AggregateSum(d.DutyDeskNum)
|
|
|
+ });
|
|
|
return query;
|
|
|
}
|
|
|
public ISugarQueryable<SelectOrderId> OrderListUnionAll(ISugarQueryable<SelectOrderId> t1, ISugarQueryable<SelectOrderId> t2)
|
|
@@ -1238,6 +1245,60 @@ namespace Hotline.Repository.SqlSugar.Orders
|
|
|
.WhereIF(!string.IsNullOrEmpty(dto.TransferPhone), x => x.Order.TransferPhone == dto.TransferPhone)
|
|
|
.OrderByDescending(x => x.VisitTime);
|
|
|
}
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 满意度明细
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="dto"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ public ISugarQueryable<OrgVisitDetailListResp> OrgVisitDetailList(OrgVisitDetailListReq dto)
|
|
|
+ {
|
|
|
+ var IsCenter = _sessionContext.OrgIsCenter;
|
|
|
+
|
|
|
+ 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(IsCenter == false, x => x.VisitOrgCode.StartsWith(_sessionContext.RequiredOrgId))
|
|
|
+ .WhereIF(dto.OrgVisitStatisticsType.HasValue, x => x.OrderVisit.Order.ProcessType == (EProcessType)((int)dto.OrgVisitStatisticsType))
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.OrgProcessingResults), x => SqlFunc.JsonField(x.OrgProcessingResults, "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) //回访时间
|
|
|
+ .OrderByDescending(x => x.OrderVisit.VisitTime)
|
|
|
+ .Select(x => new OrgVisitDetailListResp()
|
|
|
+ {
|
|
|
+ Id = 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).OrderByDesc(q => q.CreationTime).Select(q => q.Status),
|
|
|
+ VisitContent = x.VisitContent,
|
|
|
+ HotspotSpliceName = x.OrderVisit.Order.HotspotSpliceName,
|
|
|
+ OrgLevelOneName = x.OrderVisit.Order.OrgLevelOneName,
|
|
|
+ ActualHandleOrgName = x.OrderVisit.Order.ActualHandleOrgName,
|
|
|
+ CreationTime = x.CreationTime,
|
|
|
+ Title = x.OrderVisit.Order.Title,
|
|
|
+ VisitUser = x.OrderVisit.Employee.Name,
|
|
|
+ VisitType = x.OrderVisit.VisitType,
|
|
|
+ VisitTime = x.OrderVisit.VisitTime,
|
|
|
+ OrgProcessingResults = SqlFunc.JsonField(x.OrgProcessingResults, "Value"),
|
|
|
+ Content = x.OrderVisit.Order.Content,
|
|
|
+ FileOpinion = x.OrderVisit.Order.FileOpinion,
|
|
|
+ FiledTime = x.OrderVisit.Order.FiledTime,
|
|
|
+ VisitOrgName = x.VisitOrgName
|
|
|
+ });
|
|
|
+
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
public class OrderScreenRepository : BaseRepositoryWorkflow<OrderScreen>, IOrderScreenRepository, IScopeDependency
|