|
@@ -1581,7 +1581,7 @@ public class OrderController : BaseController
|
|
.Includes(x => x.OrderVisit)
|
|
.Includes(x => x.OrderVisit)
|
|
.Includes(x => x.OrderVisit, y => y.Order)
|
|
.Includes(x => x.OrderVisit, y => y.Order)
|
|
.Includes(x => x.OrderVisit, y => y.Employee)
|
|
.Includes(x => x.OrderVisit, y => y.Employee)
|
|
- .LeftJoin<OrderScreen>((x, s) => x.Id == s.VisitDetailId && s.Status < EScreenStatus.End && s.IsDeleted == false)
|
|
|
|
|
|
+ .LeftJoin<OrderScreen>((x, s) => x.Id == s.VisitDetailId && s.Status < EScreenStatus.End && s.IsDeleted == false)
|
|
.Where((x, s) => s.Id == null)
|
|
.Where((x, s) => s.Id == null)
|
|
.WhereIF(dto.IsHomePage.HasValue && dto.IsHomePage == true, x => x.OrderVisit.VisitTime < dto.CreationTimeEnd && x.OrderVisit.VisitTime > dto.CreationTimeStart)
|
|
.WhereIF(dto.IsHomePage.HasValue && dto.IsHomePage == true, x => x.OrderVisit.VisitTime < dto.CreationTimeEnd && x.OrderVisit.VisitTime > dto.CreationTimeStart)
|
|
.WhereIF(!string.IsNullOrEmpty(dto.No), x => x.OrderVisit.Order!.No!.Contains(dto.No!))
|
|
.WhereIF(!string.IsNullOrEmpty(dto.No), x => x.OrderVisit.Order!.No!.Contains(dto.No!))
|
|
@@ -3107,8 +3107,8 @@ public class OrderController : BaseController
|
|
.Where(d => d.OrderSpecials.Any() == false || d.OrderSpecials.Any(s => s.State > 0))
|
|
.Where(d => d.OrderSpecials.Any() == false || d.OrderSpecials.Any(s => s.State > 0))
|
|
.WhereIF(dto.StartTime.HasValue, d => d.StartTime >= dto.StartTime)
|
|
.WhereIF(dto.StartTime.HasValue, d => d.StartTime >= dto.StartTime)
|
|
.WhereIF(dto.EndTime.HasValue, d => d.StartTime <= dto.EndTime)
|
|
.WhereIF(dto.EndTime.HasValue, d => d.StartTime <= dto.EndTime)
|
|
- .WhereIF(dto.IsUrgent.HasValue, d => d.IsUrgent == dto.IsUrgent.Value)
|
|
|
|
- .OrderByDescending(d => d.StartTime)
|
|
|
|
|
|
+ .WhereIF(dto.IsUrgent.HasValue, d => d.IsUrgent == dto.IsUrgent.Value)
|
|
|
|
+ .OrderByDescending(d => d.StartTime)
|
|
.ToPagedListAsync(dto, HttpContext.RequestAborted);
|
|
.ToPagedListAsync(dto, HttpContext.RequestAborted);
|
|
return new PagedDto<OrderDto>(total, _mapper.Map<IReadOnlyList<OrderDto>>(items));
|
|
return new PagedDto<OrderDto>(total, _mapper.Map<IReadOnlyList<OrderDto>>(items));
|
|
}
|
|
}
|
|
@@ -3136,7 +3136,7 @@ public class OrderController : BaseController
|
|
.WhereIF(dto.StartTime.HasValue, d => d.StartTime >= dto.StartTime)
|
|
.WhereIF(dto.StartTime.HasValue, d => d.StartTime >= dto.StartTime)
|
|
.WhereIF(dto.EndTime.HasValue, d => d.StartTime <= dto.EndTime)
|
|
.WhereIF(dto.EndTime.HasValue, d => d.StartTime <= dto.EndTime)
|
|
.WhereIF(dto.IsUrgent.HasValue, d => d.IsUrgent == dto.IsUrgent.Value)
|
|
.WhereIF(dto.IsUrgent.HasValue, d => d.IsUrgent == dto.IsUrgent.Value)
|
|
- .OrderByDescending(d => d.StartTime)
|
|
|
|
|
|
+ .OrderByDescending(d => d.StartTime)
|
|
|
|
|
|
.ToPagedListAsync(dto, HttpContext.RequestAborted);
|
|
.ToPagedListAsync(dto, HttpContext.RequestAborted);
|
|
return new PagedDto<OrderDto>(total, _mapper.Map<IReadOnlyList<OrderDto>>(items));
|
|
return new PagedDto<OrderDto>(total, _mapper.Map<IReadOnlyList<OrderDto>>(items));
|
|
@@ -3144,6 +3144,91 @@ public class OrderController : BaseController
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ /// <summary>
|
|
|
|
+ /// 查询待办工单
|
|
|
|
+ /// </summary>
|
|
|
|
+ [HttpGet("waited")]
|
|
|
|
+ public async Task<PagedDto<OrderDto>> QueryWaited([FromQuery] QueryOrderWaitedDto dto)
|
|
|
|
+ {
|
|
|
|
+ var isHandled = dto.IsHandled.HasValue && dto.IsHandled.Value;
|
|
|
|
+ if (dto.EndTime.HasValue)
|
|
|
|
+ dto.EndTime = dto.EndTime.Value.AddDays(1).AddSeconds(-1);
|
|
|
|
+
|
|
|
|
+ //var (total, items) = await _orderRepository
|
|
|
|
+ // .Queryable(hasHandled: !isHandled)
|
|
|
|
+ // .Includes(d => d.OrderSpecials)
|
|
|
|
+ // .WhereIF(dto.IsProvince.HasValue, d => d.IsProvince == dto.IsProvince)
|
|
|
|
+ // .WhereIF(!string.IsNullOrEmpty(dto.Keyword), d => d.Title.StartsWith(dto.Keyword))
|
|
|
|
+ // .WhereIF(!string.IsNullOrEmpty(dto.No), d => d.No == dto.No)
|
|
|
|
+ // .WhereIF(dto.IsCounterSign.HasValue && dto.IsCounterSign == true, d => d.CounterSignType.HasValue)
|
|
|
|
+ // .WhereIF(dto.IsCounterSign.HasValue && dto.IsCounterSign == false, d => !d.CounterSignType.HasValue)
|
|
|
|
+ // .WhereIF(dto.ExpiredOrAlmostOverdue.HasValue && dto.ExpiredOrAlmostOverdue == true, d => (d.ExpiredTime < DateTime.Now && d.Status < EOrderStatus.Filed) || (d.ExpiredTime < d.ActualHandleTime && d.Status >= EOrderStatus.Filed)) //超期 未办
|
|
|
|
+ // .WhereIF(dto.ExpiredOrAlmostOverdue.HasValue && dto.ExpiredOrAlmostOverdue == false, d => d.NearlyExpiredTime < DateTime.Now && d.ExpiredTime > DateTime.Now)//即将超期 未办
|
|
|
|
+ // .Where(d => d.Source < ESource.MLSQ || d.Source > ESource.WZSC)
|
|
|
|
+ // .Where(d => d.Status != EOrderStatus.BackToProvince && d.Status < EOrderStatus.Filed)
|
|
|
|
+ // //.Where(d => SqlFunc.Subqueryable<OrderSpecial>().Where(os => os.OrderId == d.Id).NotAny())
|
|
|
|
+ // .Where(d => d.OrderSpecials.Any() == false || d.OrderSpecials.Any(s => s.State > 0))
|
|
|
|
+ // .WhereIF(dto.StartTime.HasValue, d => d.StartTime >= dto.StartTime)
|
|
|
|
+ // .WhereIF(dto.EndTime.HasValue, d => d.StartTime <= dto.EndTime)
|
|
|
|
+ // .OrderByDescending(d => d.StartTime)
|
|
|
|
+ // .ToPagedListAsync(dto, HttpContext.RequestAborted);
|
|
|
|
+
|
|
|
|
+ if (!isHandled)
|
|
|
|
+ {
|
|
|
|
+ var (total, items) = await _orderRepository
|
|
|
|
+ .Queryable(hasHandled: !isHandled)
|
|
|
|
+ .Includes(d => d.OrderSpecials)
|
|
|
|
+ .WhereIF(dto.IsProvince.HasValue, d => d.IsProvince == dto.IsProvince)
|
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.Keyword), d => d.Title.StartsWith(dto.Keyword))
|
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.No), d => d.No == dto.No)
|
|
|
|
+ .WhereIF(dto.IsCounterSign.HasValue && dto.IsCounterSign == true, d => d.CounterSignType.HasValue)
|
|
|
|
+ .WhereIF(dto.IsCounterSign.HasValue && dto.IsCounterSign == false, d => !d.CounterSignType.HasValue)
|
|
|
|
+ .WhereIF(dto.ExpiredOrAlmostOverdue.HasValue && dto.ExpiredOrAlmostOverdue == true, d => (d.ExpiredTime < DateTime.Now && d.Status < EOrderStatus.Filed) || (d.ExpiredTime < d.ActualHandleTime && d.Status >= EOrderStatus.Filed)) //超期 未办
|
|
|
|
+ .WhereIF(dto.ExpiredOrAlmostOverdue.HasValue && dto.ExpiredOrAlmostOverdue == false, d => d.NearlyExpiredTime < DateTime.Now && d.ExpiredTime > DateTime.Now)//即将超期 未办
|
|
|
|
+ .Where(d => d.Source < ESource.MLSQ || d.Source > ESource.WZSC)
|
|
|
|
+ .Where(d => d.Status != EOrderStatus.BackToProvince && d.Status < EOrderStatus.Filed)
|
|
|
|
+ //.Where(d => SqlFunc.Subqueryable<OrderSpecial>().Where(os => os.OrderId == d.Id).NotAny())
|
|
|
|
+ .Where(d => d.OrderSpecials.Any() == false || d.OrderSpecials.Any(s => s.State > 0))
|
|
|
|
+ .WhereIF(dto.StartTime.HasValue, d => d.StartTime >= dto.StartTime)
|
|
|
|
+ .WhereIF(dto.EndTime.HasValue, d => d.StartTime <= dto.EndTime)
|
|
|
|
+ .WhereIF(dto.IsUrgent.HasValue, d => d.IsUrgent == dto.IsUrgent.Value)
|
|
|
|
+ .OrderByDescending(d => d.StartTime)
|
|
|
|
+ .ToPagedListAsync(dto, HttpContext.RequestAborted);
|
|
|
|
+ return new PagedDto<OrderDto>(total, _mapper.Map<IReadOnlyList<OrderDto>>(items));
|
|
|
|
+ }
|
|
|
|
+ else
|
|
|
|
+ {
|
|
|
|
+ var (total, items) = await _orderRepository.Queryable()
|
|
|
|
+ .Where(d => SqlFunc.Subqueryable<WorkflowTrace>()
|
|
|
|
+ .Where(step => step.ExternalId == d.Id && step.TraceState != EWorkflowTraceState.StepRemoveByPrevious &&
|
|
|
|
+ ((step.FlowAssignType == EFlowAssignType.User && !string.IsNullOrEmpty(step.HandlerId) && step.HandlerId == _sessionContext.RequiredUserId) ||
|
|
|
|
+ (step.FlowAssignType == EFlowAssignType.Org && !string.IsNullOrEmpty(step.HandlerOrgId) && step.HandlerOrgId == _sessionContext.RequiredOrgId) ||
|
|
|
|
+ (step.FlowAssignType == EFlowAssignType.Role && !string.IsNullOrEmpty(step.RoleId) && _sessionContext.Roles.Contains(step.RoleId))) &&
|
|
|
|
+ step.Status == EWorkflowStepStatus.Handled).Any())
|
|
|
|
+ .Includes(d => d.OrderSpecials)
|
|
|
|
+ .WhereIF(dto.IsProvince.HasValue, d => d.IsProvince == dto.IsProvince)
|
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.Keyword), d => d.Title.StartsWith(dto.Keyword))
|
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.No), d => d.No == dto.No)
|
|
|
|
+ .WhereIF(dto.IsCounterSign.HasValue && dto.IsCounterSign == true, d => d.CounterSignType.HasValue)
|
|
|
|
+ .WhereIF(dto.IsCounterSign.HasValue && dto.IsCounterSign == false, d => !d.CounterSignType.HasValue)
|
|
|
|
+ .WhereIF(dto.ExpiredOrAlmostOverdue.HasValue && dto.ExpiredOrAlmostOverdue == true, d => (d.ExpiredTime < DateTime.Now && d.Status < EOrderStatus.Filed) || (d.ExpiredTime < d.ActualHandleTime && d.Status >= EOrderStatus.Filed)) //超期 未办
|
|
|
|
+ .WhereIF(dto.ExpiredOrAlmostOverdue.HasValue && dto.ExpiredOrAlmostOverdue == false, d => d.NearlyExpiredTime < DateTime.Now && d.ExpiredTime > DateTime.Now)//即将超期 未办
|
|
|
|
+ .Where(d => d.Source < ESource.MLSQ || d.Source > ESource.WZSC)
|
|
|
|
+ .Where(d => d.Status != EOrderStatus.BackToProvince && d.Status < EOrderStatus.Filed)
|
|
|
|
+ //.Where(d => SqlFunc.Subqueryable<OrderSpecial>().Where(os => os.OrderId == d.Id).NotAny())
|
|
|
|
+ .Where(d => d.OrderSpecials.Any() == false || d.OrderSpecials.Any(s => s.State > 0))
|
|
|
|
+ .WhereIF(dto.StartTime.HasValue, d => d.StartTime >= dto.StartTime)
|
|
|
|
+ .WhereIF(dto.EndTime.HasValue, d => d.StartTime <= dto.EndTime)
|
|
|
|
+ .WhereIF(dto.IsUrgent.HasValue, d => d.IsUrgent == dto.IsUrgent.Value)
|
|
|
|
+ .OrderByDescending(d => d.StartTime)
|
|
|
|
+
|
|
|
|
+ .ToPagedListAsync(dto, HttpContext.RequestAborted);
|
|
|
|
+ return new PagedDto<OrderDto>(total, _mapper.Map<IReadOnlyList<OrderDto>>(items));
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
/// <summary>
|
|
/// <summary>
|
|
/// 查询坐席待办
|
|
/// 查询坐席待办
|
|
/// </summary>
|
|
/// </summary>
|
|
@@ -3199,7 +3284,7 @@ public class OrderController : BaseController
|
|
.WhereIF(dto.StartTime.HasValue, d => d.CreationTime >= dto.StartTime)
|
|
.WhereIF(dto.StartTime.HasValue, d => d.CreationTime >= dto.StartTime)
|
|
.WhereIF(dto.EndTime.HasValue, d => d.CreationTime <= dto.EndTime)
|
|
.WhereIF(dto.EndTime.HasValue, d => d.CreationTime <= dto.EndTime)
|
|
.WhereIF(dto.IsUrgent.HasValue, d => d.IsUrgent == dto.IsUrgent.Value)
|
|
.WhereIF(dto.IsUrgent.HasValue, d => d.IsUrgent == dto.IsUrgent.Value)
|
|
- .Where(d => d.Source < ESource.MLSQ || d.Source > ESource.WZSC)
|
|
|
|
|
|
+ .Where(d => d.Source < ESource.MLSQ || d.Source > ESource.WZSC)
|
|
.Where(d => d.Status != EOrderStatus.BackToProvince && d.Status < EOrderStatus.Filed)
|
|
.Where(d => d.Status != EOrderStatus.BackToProvince && d.Status < EOrderStatus.Filed)
|
|
.OrderBy(d => d.Status)
|
|
.OrderBy(d => d.Status)
|
|
.OrderByIF(dto.IsHandled == true, d => d.StartTime, OrderByType.Desc)
|
|
.OrderByIF(dto.IsHandled == true, d => d.StartTime, OrderByType.Desc)
|
|
@@ -3248,8 +3333,8 @@ public class OrderController : BaseController
|
|
.WhereIF(dto.ExpiredStatus is EExpiredStatus.Normal, d => DateTime.Now < d.NearlyExpiredTime)
|
|
.WhereIF(dto.ExpiredStatus is EExpiredStatus.Normal, d => DateTime.Now < d.NearlyExpiredTime)
|
|
.WhereIF(dto.ExpiredStatus is EExpiredStatus.GoingToExpired, d => DateTime.Now > d.NearlyExpiredTime && DateTime.Now < d.ExpiredTime)
|
|
.WhereIF(dto.ExpiredStatus is EExpiredStatus.GoingToExpired, d => DateTime.Now > d.NearlyExpiredTime && DateTime.Now < d.ExpiredTime)
|
|
.WhereIF(dto.ExpiredStatus is EExpiredStatus.Expired, d => DateTime.Now >= d.ExpiredTime)
|
|
.WhereIF(dto.ExpiredStatus is EExpiredStatus.Expired, d => DateTime.Now >= d.ExpiredTime)
|
|
- .WhereIF(dto.IsUrgent.HasValue, d => d.IsUrgent == dto.IsUrgent.Value)
|
|
|
|
- .OrderBy(d => d.Status)
|
|
|
|
|
|
+ .WhereIF(dto.IsUrgent.HasValue, d => d.IsUrgent == dto.IsUrgent.Value)
|
|
|
|
+ .OrderBy(d => d.Status)
|
|
.OrderBy(d => d.CreationTime, OrderByType.Desc)
|
|
.OrderBy(d => d.CreationTime, OrderByType.Desc)
|
|
.ToPagedListAsync(dto, HttpContext.RequestAborted);
|
|
.ToPagedListAsync(dto, HttpContext.RequestAborted);
|
|
|
|
|
|
@@ -5672,19 +5757,19 @@ public class OrderController : BaseController
|
|
var setting = _systemSettingCacheManager.GetSetting(SettingConstants.RoleZuoXi);
|
|
var setting = _systemSettingCacheManager.GetSetting(SettingConstants.RoleZuoXi);
|
|
if (!string.IsNullOrEmpty(order.WorkflowId))
|
|
if (!string.IsNullOrEmpty(order.WorkflowId))
|
|
{
|
|
{
|
|
- var steps = await _workflowStepRepository.Queryable()
|
|
|
|
- .Where(d => d.ExternalId == orderId && d.Status != EWorkflowStepStatus.Handled)
|
|
|
|
- .ToListAsync(HttpContext.RequestAborted);
|
|
|
|
- if (steps.Count > 1)
|
|
|
|
- throw new UserFriendlyException("多个待办理节点暂不支持平移");
|
|
|
|
- step = steps.First();
|
|
|
|
- if (step.BusinessType is not EBusinessType.Center and not EBusinessType.Send)
|
|
|
|
- throw UserFriendlyException.SameMessage("当前办理节点非中心暂不支持平移");
|
|
|
|
- setting = step.BusinessType is EBusinessType.Center
|
|
|
|
- ? _systemSettingCacheManager.GetSetting(SettingConstants.RoleZuoXi)
|
|
|
|
- : _systemSettingCacheManager.GetSetting(SettingConstants.RolePaiDan);
|
|
|
|
- }
|
|
|
|
- var roles = setting?.SettingValue.ToList();
|
|
|
|
|
|
+ var steps = await _workflowStepRepository.Queryable()
|
|
|
|
+ .Where(d => d.ExternalId == orderId && d.Status != EWorkflowStepStatus.Handled)
|
|
|
|
+ .ToListAsync(HttpContext.RequestAborted);
|
|
|
|
+ if (steps.Count > 1)
|
|
|
|
+ throw new UserFriendlyException("多个待办理节点暂不支持平移");
|
|
|
|
+ step = steps.First();
|
|
|
|
+ if (step.BusinessType is not EBusinessType.Center and not EBusinessType.Send)
|
|
|
|
+ throw UserFriendlyException.SameMessage("当前办理节点非中心暂不支持平移");
|
|
|
|
+ setting = step.BusinessType is EBusinessType.Center
|
|
|
|
+ ? _systemSettingCacheManager.GetSetting(SettingConstants.RoleZuoXi)
|
|
|
|
+ : _systemSettingCacheManager.GetSetting(SettingConstants.RolePaiDan);
|
|
|
|
+ }
|
|
|
|
+ var roles = setting?.SettingValue.ToList();
|
|
var users = await _userRepository.Queryable()
|
|
var users = await _userRepository.Queryable()
|
|
.Includes(d => d.Organization)
|
|
.Includes(d => d.Organization)
|
|
.Includes(d => d.Roles)
|
|
.Includes(d => d.Roles)
|