|
@@ -83,7 +83,7 @@ public class OrderApplication : IOrderApplication, IScopeDependency
|
|
|
private readonly IOrderDomainService _orderDomainService;
|
|
|
private readonly IWorkflowDomainService _workflowDomainService;
|
|
|
private readonly ISessionContext _sessionContext;
|
|
|
- private readonly IOrderRepository _orderRepository;
|
|
|
+ private readonly IOrderRepository _orderRepository;
|
|
|
|
|
|
//private readonly ITimeLimitDomainService _timeLimitDomainService;
|
|
|
private readonly IMapper _mapper;
|
|
@@ -111,7 +111,7 @@ public class OrderApplication : IOrderApplication, IScopeDependency
|
|
|
private readonly IOrderTerminateRepository _orderTerminateRepository;
|
|
|
private readonly IRepository<OrderPublishHistory> _orderPublishHistoryRepository;
|
|
|
|
|
|
- public OrderApplication(
|
|
|
+ public OrderApplication(
|
|
|
IOrderDomainService orderDomainService,
|
|
|
IOrderRepository orderRepository,
|
|
|
IWorkflowDomainService workflowDomainService,
|
|
@@ -185,7 +185,7 @@ public class OrderApplication : IOrderApplication, IScopeDependency
|
|
|
_orderTerminateRepository = orderTerminateRepository;
|
|
|
_orderPublishHistoryRepository = orderPublishHistoryRepository;
|
|
|
_sessionContext = sessionContext;
|
|
|
- }
|
|
|
+ }
|
|
|
|
|
|
/// <summary>
|
|
|
/// 更新工单办理期满时间(延期调用,其他不调用)
|
|
@@ -961,6 +961,35 @@ public class OrderApplication : IOrderApplication, IScopeDependency
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ public async Task<List<OrderDto>> QueryOrdersAsync(QueryOrderDto dto, int queryIndex)
|
|
|
+ {
|
|
|
+ var query = QueryOrders(dto);
|
|
|
+ var items = await query.ToFixedListAsync(queryIndex);
|
|
|
+ var dtoItems = new List<OrderDto>();
|
|
|
+ foreach (var item in items)
|
|
|
+ {
|
|
|
+ var orderDto = item.Adapt<OrderDto>();
|
|
|
+ var visitEntity = item.OrderVisits
|
|
|
+ .OrderByDescending(m => m.CreationTime)
|
|
|
+ .FirstOrDefault();
|
|
|
+ if (visitEntity != null)
|
|
|
+ {
|
|
|
+ var now = visitEntity?.NowEvaluate;
|
|
|
+ if (now != null)
|
|
|
+ {
|
|
|
+ orderDto.OrgEvaluate = now;
|
|
|
+ orderDto.OrgEvaluateValue = now.Value;
|
|
|
+ }
|
|
|
+ orderDto.SeatEvaluate = visitEntity.OrderVisitDetails.Where(m => m.VisitTarget == EVisitTarget.Seat)
|
|
|
+ .FirstOrDefault()?.SeatEvaluate;
|
|
|
+ }
|
|
|
+
|
|
|
+ orderDto.OrderVisits = null;
|
|
|
+ dtoItems.Add(orderDto);
|
|
|
+ }
|
|
|
+ return dtoItems;
|
|
|
+ }
|
|
|
+
|
|
|
public ISugarQueryable<Order> QueryOrders(QueryOrderDto dto)
|
|
|
{
|
|
|
var isCenter = _sessionContextProvider.SessionContext.OrgIsCenter;
|
|
@@ -978,75 +1007,78 @@ public class OrderApplication : IOrderApplication, IScopeDependency
|
|
|
}
|
|
|
|
|
|
return query
|
|
|
- .Includes(x => x.OrderScreens)
|
|
|
- .WhereIF(!string.IsNullOrEmpty(dto.Keyword), d => d.Title.Contains(dto.Keyword!)) //标题
|
|
|
- .WhereIF(!string.IsNullOrEmpty(dto.ProvinceNo), d => d.ProvinceNo == dto.ProvinceNo) //省本地编号
|
|
|
- .WhereIF(!string.IsNullOrEmpty(dto.ReceiveProvinceNo), d => d.ReceiveProvinceNo == dto.ReceiveProvinceNo) //省编号
|
|
|
- .WhereIF(!string.IsNullOrEmpty(dto.No), d => d.No == dto.No) //工单编码
|
|
|
- .WhereIF(!string.IsNullOrEmpty(dto.AcceptType), d => d.AcceptTypeCode == dto.AcceptType) //受理类型
|
|
|
- //.WhereIF(dto.AcceptTypes.Any(), d => dto.AcceptTypes.Contains(d.AcceptTypeCode)) //受理类型
|
|
|
- .WhereIF(!string.IsNullOrEmpty(dto.Channel), d => d.SourceChannelCode == dto.Channel)
|
|
|
- //.WhereIF(dto.Channels.Any(), d => dto.Channels.Contains(d.SourceChannelCode)) //来源渠道
|
|
|
- //.WhereIF(dto.HotspotIds.Any(), d => dto.HotspotIds.Contains(d.HotspotId)) //热点类型
|
|
|
- .WhereIF(!string.IsNullOrEmpty(dto.Hotspot), d => d.HotspotSpliceName != null && d.HotspotSpliceName.Contains(dto.Hotspot))
|
|
|
- .WhereIF(!string.IsNullOrEmpty(dto.TransferPhone), d => d.TransferPhone == dto.TransferPhone!) //转接号码
|
|
|
- //.WhereIF(dto.OrgCodes.Any(), d => d.Workflow.Assigns.Any(s => dto.OrgCodes.Contains(s.OrgCode)))
|
|
|
- //.WhereIF(dto.OrgCodes.Any(), d => dto.OrgCodes.Contains(d.ActualHandleOrgCode)) //接办部门
|
|
|
- //.WhereIF(!string.IsNullOrEmpty(dto.OrgId), d => d.CurrentHandleOrgId == dto.OrgId)//接办部门
|
|
|
- .WhereIF(!string.IsNullOrEmpty(dto.OrgLevelOneName), d => d.OrgLevelOneName.Contains(dto.OrgLevelOneName)) //一级部门
|
|
|
- .WhereIF(!string.IsNullOrEmpty(dto.ActualHandleOrgName), d => d.ActualHandleOrgName.Contains(dto.ActualHandleOrgName)) //接办部门(综合查询模糊)
|
|
|
- .WhereIF(!string.IsNullOrEmpty(dto.NameOrNo), d => d.AcceptorName == dto.NameOrNo! || d.AcceptorStaffNo == dto.NameOrNo!) //受理人/坐席
|
|
|
- .WhereIF(dto.CreationTimeStart.HasValue, d => d.CreationTime >= dto.CreationTimeStart) //受理时间开始
|
|
|
- .WhereIF(dto.CreationTimeEnd.HasValue, d => d.CreationTime <= dto.CreationTimeEnd) //受理时间结束
|
|
|
- //.WhereIF(dto.EmergencyLevels.Any(), d => dto.EmergencyLevels.Contains(d.EmergencyLevel)) //紧急程度
|
|
|
- .WhereIF(!string.IsNullOrEmpty(dto.FromPhone), d => d.FromPhone == dto.FromPhone) //来电号码
|
|
|
- .WhereIF(!string.IsNullOrEmpty(dto.PhoneNo), d => d.Contact == dto.PhoneNo!) //联系电话
|
|
|
- //.WhereIF(!string.IsNullOrEmpty(dto.PushTypeCode), d => d.PushTypeCode == dto.PushTypeCode) //推送分类
|
|
|
- .WhereIF(!string.IsNullOrEmpty(dto.PushTypeCode), x => x.OrderPushTypes.Any(opt => opt.PushTypeCode == dto.PushTypeCode)) //推送分类
|
|
|
- .WhereIF(dto.ExpiredTimeStart.HasValue, d => d.ExpiredTime >= dto.ExpiredTimeStart) //超期时间开始
|
|
|
- .WhereIF(dto.ExpiredTimeEnd.HasValue, d => d.ExpiredTime <= dto.ExpiredTimeEnd) //超期时间结束
|
|
|
- //.WhereIF(dto.Statuses.Any(), d => dto.Statuses.Contains(d.Status)) //工单状态
|
|
|
- .WhereIF(dto.Status.HasValue, d => d.Status == dto.Status) //工单状态
|
|
|
- //.WhereIF(dto.Statuses.Any(d => d == EOrderStatus.SpecialToUnAccept), d => d.Status <= EOrderStatus.SpecialToUnAccept)
|
|
|
- .WhereIF(!string.IsNullOrEmpty(dto.ActualHandlerName), d => d.ActualHandlerName == dto.ActualHandlerName) //接办人
|
|
|
- .WhereIF(dto.IsScreen == true, d => d.OrderScreens.Any(x => x.Status != EScreenStatus.Refuse)) //有甄别
|
|
|
- .WhereIF(dto.IsScreen == false, d => !d.OrderScreens.Any(x => x.Status != EScreenStatus.Refuse)) //无甄别
|
|
|
- .WhereIF(!string.IsNullOrEmpty(dto.CurrentStepCode), d => d.CurrentStepCode == dto.CurrentStepCode) //当前办理节点
|
|
|
- .WhereIF(dto.ActualHandleTimeStart.HasValue, d => d.ActualHandleTime >= dto.ActualHandleTimeStart) //办结时间开始
|
|
|
- .WhereIF(dto.ActualHandleTimeEnd.HasValue, d => d.ActualHandleTime <= dto.ActualHandleTimeEnd) //办结时间结束
|
|
|
- .WhereIF(dto.IsOverTime == true,
|
|
|
- d => (d.ExpiredTime < DateTime.Now && d.Status < EOrderStatus.Filed) ||
|
|
|
- (d.ExpiredTime < d.ActualHandleTime && d.Status >= EOrderStatus.Filed)) //是 超期
|
|
|
- .WhereIF(dto.IsOverTime == false,
|
|
|
- d => (d.ExpiredTime > DateTime.Now && d.Status < EOrderStatus.Filed) ||
|
|
|
- (d.ExpiredTime > d.ActualHandleTime && d.Status >= EOrderStatus.Filed)) //否 超期
|
|
|
- .WhereIF(dto.IdentityType != null, d => d.IdentityType == dto.IdentityType) //来电主体
|
|
|
- .WhereIF(!string.IsNullOrEmpty(dto.FromName), d => d.FromName == dto.FromName) //来电人姓名
|
|
|
- //.WhereIF(dto.AreaCodes.Any(), d => dto.AreaCodes.Contains(d.AreaCode)) //区域
|
|
|
- //.WhereIF(!string.IsNullOrEmpty(dto.AreaCode), d => d.AreaCode == dto.AreaCode)//区域
|
|
|
- .WhereIF(!string.IsNullOrEmpty(dto.AreaCode) && dto.AreaCode.LastIndexOf("00") > 0,
|
|
|
- d => d.AreaCode.StartsWith(SqlFunc.Substring(dto.AreaCode, 0, 4)))
|
|
|
- .WhereIF(!string.IsNullOrEmpty(dto.AreaCode) && dto.AreaCode.LastIndexOf("00") <= 0, d => d.AreaCode.StartsWith(dto.AreaCode))
|
|
|
- .WhereIF(dto.IsProvinceOrder.HasValue && dto.IsProvinceOrder == true, d => d.Source == ESource.ProvinceStraight)
|
|
|
- .WhereIF(dto.IsProvinceOrder.HasValue && dto.IsProvinceOrder == false, d => d.Source != ESource.ProvinceStraight)
|
|
|
- .WhereIF(!string.IsNullOrEmpty(dto.SensitiveWord), d => SqlFunc.JsonArrayAny(d.Sensitive, dto.SensitiveWord))
|
|
|
- .WhereIF(dto.IsSensitiveWord.HasValue && dto.IsSensitiveWord == true,
|
|
|
- d => d.Sensitive != null && SqlFunc.JsonArrayLength(d.Sensitive) > 0)
|
|
|
- .WhereIF(dto.IsUrgent.HasValue, d => d.IsUrgent == dto.IsUrgent.Value)
|
|
|
- .WhereIF(!string.IsNullOrEmpty(dto.ProvinceChannel) && dto.ProvinceChannel == "1", d => d.Source == ESource.ProvinceStraight &&
|
|
|
- d.SourceChannelCode == "SZMHD" && d.IsProvince == false) //政民互动直派
|
|
|
- .WhereIF(!string.IsNullOrEmpty(dto.ProvinceChannel) && dto.ProvinceChannel == "2", d => d.Source == ESource.ProvinceStraight &&
|
|
|
- d.SourceChannelCode == "SZMHD" && d.IsProvince == true) //政民互动
|
|
|
- .WhereIF(!string.IsNullOrEmpty(dto.ProvinceChannel) && dto.ProvinceChannel == "3", d => d.Source == ESource.ProvinceStraight &&
|
|
|
- d.SourceChannelCode == "S12345" && d.IsProvince == true) //省12345
|
|
|
- .WhereIF(!string.IsNullOrEmpty(dto.ContentRetrieval),
|
|
|
- d => d.Title.Contains(dto.ContentRetrieval) || d.Content.Contains(dto.ContentRetrieval) || d.FileOpinion.Contains(dto.ContentRetrieval) || d.ActualOpinion.Contains(dto.ContentRetrieval))
|
|
|
- .WhereIF(dto.IsSgin.HasValue && dto.IsSgin == true, d => d.CurrentStepAcceptTime!=null)
|
|
|
- .WhereIF(dto.IsSgin.HasValue && dto.IsSgin == false, d => d.CurrentStepAcceptTime == null)
|
|
|
- .WhereIF(dto.FiledType is FiledType.CenterFiled, d => d.ProcessType == EProcessType.Zhiban)
|
|
|
- .WhereIF(dto.FiledType is FiledType.OrgFiled, d => d.ProcessType == EProcessType.Jiaoban)
|
|
|
- .WhereIF(!string.IsNullOrEmpty(dto.OrderTagCode),d=>d.OrderTagCode == dto.OrderTagCode)
|
|
|
- .OrderByDescending(d => d.CreationTime);
|
|
|
+ .Includes(x => x.OrderScreens)
|
|
|
+ .Includes(x => x.OrderVisits.Where(m => m.VisitState == EVisitState.Visited).ToList())
|
|
|
+ .Includes(x => x.OrderVisits.Where(m => m.VisitState == EVisitState.Visited).ToList(), ovd => ovd.OrderVisitDetails)
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.Keyword), d => d.Title.Contains(dto.Keyword!)) //标题
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.ProvinceNo), d => d.ProvinceNo == dto.ProvinceNo) //省本地编号
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.ReceiveProvinceNo), d => d.ReceiveProvinceNo == dto.ReceiveProvinceNo) //省编号
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.No), d => d.No == dto.No) //工单编码
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.AcceptType), d => d.AcceptTypeCode == dto.AcceptType) //受理类型
|
|
|
+ //.WhereIF(dto.AcceptTypes.Any(), d => dto.AcceptTypes.Contains(d.AcceptTypeCode)) //受理类型
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.Channel), d => d.SourceChannelCode == dto.Channel)
|
|
|
+ //.WhereIF(dto.Channels.Any(), d => dto.Channels.Contains(d.SourceChannelCode)) //来源渠道
|
|
|
+ //.WhereIF(dto.HotspotIds.Any(), d => dto.HotspotIds.Contains(d.HotspotId)) //热点类型
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.Hotspot), d => d.HotspotSpliceName != null && d.HotspotSpliceName.Contains(dto.Hotspot))
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.TransferPhone), d => d.TransferPhone == dto.TransferPhone!) //转接号码
|
|
|
+ //.WhereIF(dto.OrgCodes.Any(), d => d.Workflow.Assigns.Any(s => dto.OrgCodes.Contains(s.OrgCode)))
|
|
|
+ //.WhereIF(dto.OrgCodes.Any(), d => dto.OrgCodes.Contains(d.ActualHandleOrgCode)) //接办部门
|
|
|
+ //.WhereIF(!string.IsNullOrEmpty(dto.OrgId), d => d.CurrentHandleOrgId == dto.OrgId)//接办部门
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.OrgLevelOneName), d => d.OrgLevelOneName.Contains(dto.OrgLevelOneName)) //一级部门
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.ActualHandleOrgName), d => d.ActualHandleOrgName.Contains(dto.ActualHandleOrgName)) //接办部门(综合查询模糊)
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.NameOrNo), d => d.AcceptorName == dto.NameOrNo! || d.AcceptorStaffNo == dto.NameOrNo!) //受理人/坐席
|
|
|
+ .WhereIF(dto.CreationTimeStart.HasValue, d => d.CreationTime >= dto.CreationTimeStart) //受理时间开始
|
|
|
+ .WhereIF(dto.CreationTimeEnd.HasValue, d => d.CreationTime <= dto.CreationTimeEnd) //受理时间结束
|
|
|
+ //.WhereIF(dto.EmergencyLevels.Any(), d => dto.EmergencyLevels.Contains(d.EmergencyLevel)) //紧急程度
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.FromPhone), d => d.FromPhone == dto.FromPhone) //来电号码
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.PhoneNo), d => d.Contact == dto.PhoneNo!) //联系电话
|
|
|
+ //.WhereIF(!string.IsNullOrEmpty(dto.PushTypeCode), d => d.PushTypeCode == dto.PushTypeCode) //推送分类
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.PushTypeCode), x => x.OrderPushTypes.Any(opt => opt.PushTypeCode == dto.PushTypeCode)) //推送分类
|
|
|
+ .WhereIF(dto.ExpiredTimeStart.HasValue, d => d.ExpiredTime >= dto.ExpiredTimeStart) //超期时间开始
|
|
|
+ .WhereIF(dto.ExpiredTimeEnd.HasValue, d => d.ExpiredTime <= dto.ExpiredTimeEnd) //超期时间结束
|
|
|
+ //.WhereIF(dto.Statuses.Any(), d => dto.Statuses.Contains(d.Status)) //工单状态
|
|
|
+ .WhereIF(dto.Status.HasValue, d => d.Status == dto.Status) //工单状态
|
|
|
+ //.WhereIF(dto.Statuses.Any(d => d == EOrderStatus.SpecialToUnAccept), d => d.Status <= EOrderStatus.SpecialToUnAccept)
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.ActualHandlerName), d => d.ActualHandlerName == dto.ActualHandlerName) //接办人
|
|
|
+ .WhereIF(dto.IsScreen == true, d => d.OrderScreens.Any(x => x.Status != EScreenStatus.Refuse)) //有甄别
|
|
|
+ .WhereIF(dto.IsScreen == false, d => !d.OrderScreens.Any(x => x.Status != EScreenStatus.Refuse)) //无甄别
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.CurrentStepCode), d => d.CurrentStepCode == dto.CurrentStepCode) //当前办理节点
|
|
|
+ .WhereIF(dto.ActualHandleTimeStart.HasValue, d => d.ActualHandleTime >= dto.ActualHandleTimeStart) //办结时间开始
|
|
|
+ .WhereIF(dto.ActualHandleTimeEnd.HasValue, d => d.ActualHandleTime <= dto.ActualHandleTimeEnd) //办结时间结束
|
|
|
+ .WhereIF(dto.IsOverTime == true,
|
|
|
+ d => (d.ExpiredTime < DateTime.Now && d.Status < EOrderStatus.Filed) ||
|
|
|
+ (d.ExpiredTime < d.ActualHandleTime && d.Status >= EOrderStatus.Filed)) //是 超期
|
|
|
+ .WhereIF(dto.IsOverTime == false,
|
|
|
+ d => (d.ExpiredTime > DateTime.Now && d.Status < EOrderStatus.Filed) ||
|
|
|
+ (d.ExpiredTime > d.ActualHandleTime && d.Status >= EOrderStatus.Filed)) //否 超期
|
|
|
+ .WhereIF(dto.IdentityType != null, d => d.IdentityType == dto.IdentityType) //来电主体
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.FromName), d => d.FromName == dto.FromName) //来电人姓名
|
|
|
+ //.WhereIF(dto.AreaCodes.Any(), d => dto.AreaCodes.Contains(d.AreaCode)) //区域
|
|
|
+ //.WhereIF(!string.IsNullOrEmpty(dto.AreaCode), d => d.AreaCode == dto.AreaCode)//区域
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.AreaCode) && dto.AreaCode.LastIndexOf("00") > 0,
|
|
|
+ d => d.AreaCode.StartsWith(SqlFunc.Substring(dto.AreaCode, 0, 4)))
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.AreaCode) && dto.AreaCode.LastIndexOf("00") <= 0, d => d.AreaCode.StartsWith(dto.AreaCode))
|
|
|
+ .WhereIF(dto.IsProvinceOrder.HasValue && dto.IsProvinceOrder == true, d => d.Source == ESource.ProvinceStraight)
|
|
|
+ .WhereIF(dto.IsProvinceOrder.HasValue && dto.IsProvinceOrder == false, d => d.Source != ESource.ProvinceStraight)
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.SensitiveWord), d => SqlFunc.JsonArrayAny(d.Sensitive, dto.SensitiveWord))
|
|
|
+ .WhereIF(dto.IsSensitiveWord.HasValue && dto.IsSensitiveWord == true,
|
|
|
+ d => d.Sensitive != null && SqlFunc.JsonArrayLength(d.Sensitive) > 0)
|
|
|
+ .WhereIF(dto.IsUrgent.HasValue, d => d.IsUrgent == dto.IsUrgent.Value)
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.ProvinceChannel) && dto.ProvinceChannel == "1", d => d.Source == ESource.ProvinceStraight &&
|
|
|
+ d.SourceChannelCode == "SZMHD" && d.IsProvince == false) //政民互动直派
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.ProvinceChannel) && dto.ProvinceChannel == "2", d => d.Source == ESource.ProvinceStraight &&
|
|
|
+ d.SourceChannelCode == "SZMHD" && d.IsProvince == true) //政民互动
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.ProvinceChannel) && dto.ProvinceChannel == "3", d => d.Source == ESource.ProvinceStraight &&
|
|
|
+ d.SourceChannelCode == "S12345" && d.IsProvince == true) //省12345
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.ContentRetrieval),
|
|
|
+ d => d.Title.Contains(dto.ContentRetrieval) || d.Content.Contains(dto.ContentRetrieval) || d.FileOpinion.Contains(dto.ContentRetrieval) || d.ActualOpinion.Contains(dto.ContentRetrieval))
|
|
|
+ .WhereIF(dto.IsSgin.HasValue && dto.IsSgin == true, d => d.CurrentStepAcceptTime != null)
|
|
|
+ .WhereIF(dto.IsSgin.HasValue && dto.IsSgin == false, d => d.CurrentStepAcceptTime == null)
|
|
|
+ .WhereIF(dto.FiledType is FiledType.CenterFiled, d => d.ProcessType == EProcessType.Zhiban)
|
|
|
+ .WhereIF(dto.FiledType is FiledType.OrgFiled, d => d.ProcessType == EProcessType.Jiaoban)
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.OrderTagCode), d => d.OrderTagCode == dto.OrderTagCode)
|
|
|
+ .OrderByDescending(d => d.CreationTime);
|
|
|
+
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
@@ -2267,41 +2299,42 @@ public class OrderApplication : IOrderApplication, IScopeDependency
|
|
|
}
|
|
|
|
|
|
#region 甄别
|
|
|
- public ISugarQueryable<OrderScreen> OrderScreenList(ScreenListDto dto) {
|
|
|
- var handler = dto.TabStatus is EScreenStatus.Apply;
|
|
|
- var isAdmin = _orderDomainService.IsCheckAdmin();
|
|
|
- ISugarQueryable<OrderScreen> query;
|
|
|
-
|
|
|
- if (dto.source == 1)
|
|
|
- {
|
|
|
- query = _orderScreenRepository.Queryable(hasHandled: !handler, isAdmin: isAdmin);
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- query = _orderScreenRepository.Queryable(isAdmin: isAdmin)
|
|
|
- .WhereIF(!isAdmin, x => x.CreatorOrgId.StartsWith(_sessionContext.RequiredOrgId));
|
|
|
- }
|
|
|
-
|
|
|
- query = query
|
|
|
- .Includes(d => d.Order)
|
|
|
- .Includes(d => d.VisitDetail)
|
|
|
- .Includes(d => d.Visit, v => v.Order)
|
|
|
- .Includes(d => d.Workflow)
|
|
|
- .Includes(d => d.ScreenDetails.Where(sd => sd.AuditUserId == _sessionContext.UserId).OrderByDescending(sd => sd.AuditTime).Take(1)
|
|
|
- .ToList())
|
|
|
- .WhereIF(!string.IsNullOrEmpty(dto.Title), d => d.Visit.Order.Title.Contains(dto.Title!))
|
|
|
- .WhereIF(!string.IsNullOrEmpty(dto.No), d => d.Visit.Order.No.Contains(dto.No!));
|
|
|
- if (dto.TabStatus is EScreenStatus.Apply)
|
|
|
- {
|
|
|
- query.Where(d =>
|
|
|
- (d.Status == EScreenStatus.Apply || d.Status == EScreenStatus.Approval ||
|
|
|
- (d.Status == EScreenStatus.SendBack && d.SendBackApply == false)));
|
|
|
- }
|
|
|
-
|
|
|
- if (dto.TabStatus.HasValue && dto.Status == EScreenStatus.MyHandle)
|
|
|
- {
|
|
|
- query.Where(d => (d.Status != EScreenStatus.Apply));
|
|
|
- }
|
|
|
+ public ISugarQueryable<OrderScreen> OrderScreenList(ScreenListDto dto)
|
|
|
+ {
|
|
|
+ var handler = dto.TabStatus is EScreenStatus.Apply;
|
|
|
+ var isAdmin = _orderDomainService.IsCheckAdmin();
|
|
|
+ ISugarQueryable<OrderScreen> query;
|
|
|
+
|
|
|
+ if (dto.source == 1)
|
|
|
+ {
|
|
|
+ query = _orderScreenRepository.Queryable(hasHandled: !handler, isAdmin: isAdmin);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ query = _orderScreenRepository.Queryable(isAdmin: isAdmin)
|
|
|
+ .WhereIF(!isAdmin, x => x.CreatorOrgId.StartsWith(_sessionContext.RequiredOrgId));
|
|
|
+ }
|
|
|
+
|
|
|
+ query = query
|
|
|
+ .Includes(d => d.Order)
|
|
|
+ .Includes(d => d.VisitDetail)
|
|
|
+ .Includes(d => d.Visit, v => v.Order)
|
|
|
+ .Includes(d => d.Workflow)
|
|
|
+ .Includes(d => d.ScreenDetails.Where(sd => sd.AuditUserId == _sessionContext.UserId).OrderByDescending(sd => sd.AuditTime).Take(1)
|
|
|
+ .ToList())
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.Title), d => d.Visit.Order.Title.Contains(dto.Title!))
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.No), d => d.Visit.Order.No.Contains(dto.No!));
|
|
|
+ if (dto.TabStatus is EScreenStatus.Apply)
|
|
|
+ {
|
|
|
+ query.Where(d =>
|
|
|
+ (d.Status == EScreenStatus.Apply || d.Status == EScreenStatus.Approval ||
|
|
|
+ (d.Status == EScreenStatus.SendBack && d.SendBackApply == false)));
|
|
|
+ }
|
|
|
+
|
|
|
+ if (dto.TabStatus.HasValue && dto.Status == EScreenStatus.MyHandle)
|
|
|
+ {
|
|
|
+ query.Where(d => (d.Status != EScreenStatus.Apply));
|
|
|
+ }
|
|
|
return query
|
|
|
.WhereIF(dto.DataScope is 1, x => x.CreatorId == _sessionContext.RequiredUserId)
|
|
|
.WhereIF(dto.Status.HasValue, x => x.Status == dto.Status)
|
|
@@ -2332,17 +2365,17 @@ public class OrderApplication : IOrderApplication, IScopeDependency
|
|
|
.WhereIF(!string.IsNullOrEmpty(dto.FromPhone), x => x.Order!.FromPhone! == dto.FromPhone!)
|
|
|
.OrderByIF(dto is { SortRule: 0, SortField: "creationTime" }, x => x.CreationTime, OrderByType.Asc)
|
|
|
.OrderByIF(dto is { SortRule: 1, SortField: "creationTime" } || dto.SortRule is null, x => x.CreationTime, OrderByType.Desc);
|
|
|
- }
|
|
|
- #endregion
|
|
|
-
|
|
|
- #region private
|
|
|
- /// <summary>
|
|
|
- /// 接受外部工单(除省平台)
|
|
|
- /// </summary>
|
|
|
- /// <param name="dto"></param>
|
|
|
- /// <param name="cancellationToken"></param>
|
|
|
- /// <returns></returns>
|
|
|
- private async Task<AddOrderResponse> ReceiveOrderFromOtherPlatformAsync(AddOrderDto dto, List<FileDto> files, CancellationToken cancellationToken)
|
|
|
+ }
|
|
|
+ #endregion
|
|
|
+
|
|
|
+ #region private
|
|
|
+ /// <summary>
|
|
|
+ /// 接受外部工单(除省平台)
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="dto"></param>
|
|
|
+ /// <param name="cancellationToken"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ private async Task<AddOrderResponse> ReceiveOrderFromOtherPlatformAsync(AddOrderDto dto, List<FileDto> files, CancellationToken cancellationToken)
|
|
|
{
|
|
|
if (string.IsNullOrEmpty(dto.ExternalId))
|
|
|
throw new UserFriendlyException("工单外部编号不能为空");
|
|
@@ -2448,7 +2481,7 @@ public class OrderApplication : IOrderApplication, IScopeDependency
|
|
|
}
|
|
|
await _orderRepository.UpdateAsync(order, cancellationToken);
|
|
|
//处理回访和发布信息
|
|
|
-
|
|
|
+
|
|
|
var publish = await _orderPublishRepository.GetAsync(x => x.OrderId == order.Id);
|
|
|
if (publish != null)
|
|
|
{
|
|
@@ -2464,11 +2497,11 @@ public class OrderApplication : IOrderApplication, IScopeDependency
|
|
|
await _orderPublishRepository.RemoveAsync(publish, false, cancellationToken);
|
|
|
}
|
|
|
|
|
|
- var visit = await _orderVisitRepository.GetAsync(x => x.OrderId == order.Id&& x.VisitState != EVisitState.None);
|
|
|
+ var visit = await _orderVisitRepository.GetAsync(x => x.OrderId == order.Id && x.VisitState != EVisitState.None);
|
|
|
if (visit != null)
|
|
|
{
|
|
|
visit.VisitState = EVisitState.None;
|
|
|
- await _orderVisitRepository.UpdateAsync(visit,cancellationToken);
|
|
|
+ await _orderVisitRepository.UpdateAsync(visit, cancellationToken);
|
|
|
}
|
|
|
|
|
|
}
|
|
@@ -2673,18 +2706,18 @@ public class OrderApplication : IOrderApplication, IScopeDependency
|
|
|
if (dto.IsHandled.HasValue)
|
|
|
{
|
|
|
var hasHandled = dto.IsHandled.Value;
|
|
|
- query = query.Where(d => SqlFunc.Subqueryable<WorkflowTrace>()
|
|
|
- .Where(step => step.ExternalId == d.Id &&
|
|
|
- (hasHandled || step.Status != EWorkflowStepStatus.Handled) &&
|
|
|
- (!hasHandled || step.Status == EWorkflowStepStatus.Handled &&
|
|
|
- step.TraceState != EWorkflowTraceState.StepRemoveByPrevious) &&
|
|
|
- ((step.FlowAssignType == EFlowAssignType.User && !string.IsNullOrEmpty(step.HandlerId) &&
|
|
|
- step.HandlerId == _sessionContextProvider.SessionContext.RequiredUserId) ||
|
|
|
- (step.FlowAssignType == EFlowAssignType.Org && !string.IsNullOrEmpty(step.HandlerOrgId) &&
|
|
|
- step.HandlerOrgId == _sessionContextProvider.SessionContext.RequiredOrgId) ||
|
|
|
+ query = query.Where(d => SqlFunc.Subqueryable<WorkflowTrace>()
|
|
|
+ .Where(step => step.ExternalId == d.Id &&
|
|
|
+ (hasHandled || step.Status != EWorkflowStepStatus.Handled) &&
|
|
|
+ (!hasHandled || step.Status == EWorkflowStepStatus.Handled &&
|
|
|
+ step.TraceState != EWorkflowTraceState.StepRemoveByPrevious) &&
|
|
|
+ ((step.FlowAssignType == EFlowAssignType.User && !string.IsNullOrEmpty(step.HandlerId) &&
|
|
|
+ step.HandlerId == _sessionContextProvider.SessionContext.RequiredUserId) ||
|
|
|
+ (step.FlowAssignType == EFlowAssignType.Org && !string.IsNullOrEmpty(step.HandlerOrgId) &&
|
|
|
+ step.HandlerOrgId == _sessionContextProvider.SessionContext.RequiredOrgId) ||
|
|
|
(step.FlowAssignType == EFlowAssignType.Role && !string.IsNullOrEmpty(step.RoleId) &&
|
|
|
- _sessionContextProvider.SessionContext.Roles.Contains(step.RoleId)))).Any() ||
|
|
|
- (string.IsNullOrEmpty(d.WorkflowId) &&
|
|
|
+ _sessionContextProvider.SessionContext.Roles.Contains(step.RoleId)))).Any() ||
|
|
|
+ (string.IsNullOrEmpty(d.WorkflowId) &&
|
|
|
(string.IsNullOrEmpty(d.SignerId) || d.SignerId == _sessionContextProvider.SessionContext.RequiredUserId))
|
|
|
);
|
|
|
}
|
|
@@ -2693,14 +2726,14 @@ public class OrderApplication : IOrderApplication, IScopeDependency
|
|
|
// 交办件:已派单其他节点的工单,该选项卡下工单若办结就不显示
|
|
|
.WhereIF(dto.TypeCode.HasValue == true && dto.TypeCode == 1, d => d.ProcessType == EProcessType.Jiaoban && d.Status < EOrderStatus.Filed)
|
|
|
// 办结件:当前登录坐席作为最初受理人已办结的工单
|
|
|
- .WhereIF(dto.TypeCode.HasValue == true && dto.TypeCode == 2, d=> d.Status >= EOrderStatus.Filed && d.AcceptorId == _sessionContextProvider.SessionContext.RequiredUserId)
|
|
|
- .WhereIF(dto.IsProvince.HasValue, d => d.IsProvince == dto.IsProvince)
|
|
|
- .WhereIF(dto.IsHandled.HasValue, d => handleStatuses.Contains(d.Status))
|
|
|
- .WhereIF(!string.IsNullOrEmpty(dto.Keyword), d => d.Title.StartsWith(dto.Keyword!))
|
|
|
- .WhereIF(!string.IsNullOrEmpty(dto.No), d => d.No == dto.No)
|
|
|
- .WhereIF(!string.IsNullOrEmpty(dto.AreaCode), d => d.AreaCode == dto.AreaCode)
|
|
|
- .WhereIF(dto.IsCounterSign.HasValue && dto.IsCounterSign == true, d => d.CounterSignType.HasValue)
|
|
|
- .WhereIF(dto.IsCounterSign.HasValue && dto.IsCounterSign == false, d => d.CounterSignType == null)
|
|
|
+ .WhereIF(dto.TypeCode.HasValue == true && dto.TypeCode == 2, d => d.Status >= EOrderStatus.Filed && d.AcceptorId == _sessionContextProvider.SessionContext.RequiredUserId)
|
|
|
+ .WhereIF(dto.IsProvince.HasValue, d => d.IsProvince == dto.IsProvince)
|
|
|
+ .WhereIF(dto.IsHandled.HasValue, d => handleStatuses.Contains(d.Status))
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.Keyword), d => d.Title.StartsWith(dto.Keyword!))
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.No), d => d.No == dto.No)
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.AreaCode), d => d.AreaCode == dto.AreaCode)
|
|
|
+ .WhereIF(dto.IsCounterSign.HasValue && dto.IsCounterSign == true, d => d.CounterSignType.HasValue)
|
|
|
+ .WhereIF(dto.IsCounterSign.HasValue && dto.IsCounterSign == false, d => d.CounterSignType == null)
|
|
|
.WhereIF(dto.ExpiredOrAlmostOverdue.HasValue && dto.ExpiredOrAlmostOverdue == true,
|
|
|
d => (d.ExpiredTime < DateTime.Now && d.Status < EOrderStatus.Filed) ||
|
|
|
(d.ExpiredTime < d.ActualHandleTime && d.Status >= EOrderStatus.Filed)) //超期 未办
|
|
@@ -2708,8 +2741,8 @@ public class OrderApplication : IOrderApplication, IScopeDependency
|
|
|
d => d.NearlyExpiredTime < DateTime.Now && d.ExpiredTime > DateTime.Now) //即将超期 未办
|
|
|
.WhereIF(dto.StartTime.HasValue, d => d.CreationTime >= dto.StartTime)
|
|
|
.WhereIF(dto.EndTime.HasValue, d => d.CreationTime <= dto.EndTime)
|
|
|
- //.Where(d => (string.IsNullOrEmpty(d.WorkflowId) && (string.IsNullOrEmpty(d.SignerId) || d.SignerId == _sessionContext.RequiredUserId)))
|
|
|
- //.Where(d => string.IsNullOrEmpty(d.SignerId) || d.SignerId == _sessionContext.RequiredUserId)
|
|
|
+ //.Where(d => (string.IsNullOrEmpty(d.WorkflowId) && (string.IsNullOrEmpty(d.SignerId) || d.SignerId == _sessionContext.RequiredUserId)))
|
|
|
+ //.Where(d => string.IsNullOrEmpty(d.SignerId) || d.SignerId == _sessionContext.RequiredUserId)
|
|
|
.WhereIF(dto.IsUrgent.HasValue, d => d.IsUrgent == dto.IsUrgent.Value)
|
|
|
.Where(x => x.Source < ESource.MLSQ || x.Source > ESource.WZSC)
|
|
|
.Where(x => x.Status != EOrderStatus.BackToProvince)
|