|
@@ -1,4 +1,5 @@
|
|
|
-using DotNetCore.CAP;
|
|
|
+using Consul;
|
|
|
+using DotNetCore.CAP;
|
|
|
using Hotline.Api.Filter;
|
|
|
using Hotline.Application.ExportExcel;
|
|
|
using Hotline.Application.FlowEngine;
|
|
@@ -1475,7 +1476,7 @@ public class OrderController : BaseController
|
|
|
{
|
|
|
var isHandled = dto.IsApply.HasValue && dto.IsApply.Value;
|
|
|
var (total, items) = await _orderDelayRepository
|
|
|
- .Queryable(hasHandled: !isHandled)
|
|
|
+ .Queryable(hasHandled: isHandled)
|
|
|
.Includes(d => d.Order)
|
|
|
.Includes(d => d.Workflow)
|
|
|
.WhereIF(!string.IsNullOrEmpty(dto.Keyword),
|
|
@@ -1644,7 +1645,7 @@ public class OrderController : BaseController
|
|
|
var view = dto.source == 1;
|
|
|
var handler = dto.source == 1 && dto.Status is EScreenStatus.Apply;
|
|
|
|
|
|
- var query = _orderScreenRepository.Queryable(canView: view, hasHandled: handler)
|
|
|
+ var query = _orderScreenRepository.Queryable(hasHandled: !handler)
|
|
|
.Includes(d => d.Order)
|
|
|
.Includes(d => d.VisitDetail)
|
|
|
.Includes(d => d.Visit, v => v.Order)
|
|
@@ -1939,7 +1940,7 @@ public class OrderController : BaseController
|
|
|
OrderId = order.Id,
|
|
|
PushPlatform = EPushPlatform.Sms,
|
|
|
Remark = order.Title,
|
|
|
- Name = user.PhoneNo,
|
|
|
+ Name = user.Name,
|
|
|
TemplateCode = "1003",
|
|
|
Params = new List<string>() { order.No },
|
|
|
TelNumber = user.PhoneNo,
|
|
@@ -2182,7 +2183,7 @@ public class OrderController : BaseController
|
|
|
OrderId = order.Id,
|
|
|
PushPlatform = EPushPlatform.Sms,
|
|
|
Remark = order.Title,
|
|
|
- Name = user.PhoneNo,
|
|
|
+ Name = user.Name,
|
|
|
TemplateCode = "1002",
|
|
|
Params = new List<string>() { order.No },
|
|
|
TelNumber = user.PhoneNo,
|
|
@@ -2416,7 +2417,7 @@ public class OrderController : BaseController
|
|
|
//{
|
|
|
// if (roles != null && roles.Contains(item)) dto.CanHandle = true;
|
|
|
//}
|
|
|
- if (!string.IsNullOrEmpty(order.WorkflowId))
|
|
|
+ if (!string.IsNullOrEmpty(order.WorkflowId))
|
|
|
{
|
|
|
var result = await _workflowDomainService.GetWorkflowHandlePermissionAsync(
|
|
|
order.WorkflowId, _sessionContext.RequiredUserId, _sessionContext.RequiredOrgId, _sessionContext.Roles,
|
|
@@ -2425,6 +2426,7 @@ public class OrderController : BaseController
|
|
|
dto.CountersignId = result.CountersignId;
|
|
|
dto.CanHandle = result.CanHandle;
|
|
|
dto.CanPrevious = result.CanPrevious;
|
|
|
+ dto.PreviousOpinion = result.previousOpinion;
|
|
|
|
|
|
await _mediator.Publish(new GetOrderDetailNotify(result.Workflow,
|
|
|
_sessionContext.RequiredUserId, _sessionContext.UserName,
|
|
@@ -2500,16 +2502,16 @@ public class OrderController : BaseController
|
|
|
dto.RepeatableEventDetails = repeatables;
|
|
|
if (!string.IsNullOrEmpty(dto.WorkflowId))
|
|
|
{
|
|
|
- var workflow = await _workflowDomainService.GetWorkflowAsync(dto.WorkflowId, withSteps: true,
|
|
|
- cancellationToken: HttpContext.RequestAborted);
|
|
|
- var centerOpinion = workflow.Steps.Where(x => x.HandlerOrgId == OrgSeedData.CenterId).OrderByDescending(x=>x.CreationTime).Select(x=>x.Opinion).First();
|
|
|
- dto.CenterOpinion = string.IsNullOrEmpty(centerOpinion)? string.Empty: centerOpinion;
|
|
|
- var sendBack = await _orderSendBackAuditRepository.Queryable().Where(x => x.OrderId == dto.Id).OrderByDescending(x=>x.CreationTime).FirstAsync();
|
|
|
- dto.SendBackOpinion = sendBack is { Id: not null } && !string.IsNullOrEmpty(sendBack.AuditContent) ? sendBack.AuditContent : string.Empty;
|
|
|
- List<OrderRemarksDto> remarks = workflow.Steps.Where(x=> !string.IsNullOrEmpty(x.Remark)).Select(x => new OrderRemarksDto { Remark = x.Remark, RemarkTime = x.CreationTime, RemarkUser = x.CreatorName }).ToList();
|
|
|
+ var workflow = await _workflowDomainService.GetWorkflowAsync(dto.WorkflowId, withSteps: true,
|
|
|
+ cancellationToken: HttpContext.RequestAborted);
|
|
|
+ var centerOpinion = workflow.Steps.Where(x => x.HandlerOrgId == OrgSeedData.CenterId).OrderByDescending(x => x.CreationTime).Select(x => x.Opinion).First();
|
|
|
+ dto.CenterOpinion = string.IsNullOrEmpty(centerOpinion) ? string.Empty : centerOpinion;
|
|
|
+ var sendBack = await _orderSendBackAuditRepository.Queryable().Where(x => x.OrderId == dto.Id).OrderByDescending(x => x.CreationTime).FirstAsync();
|
|
|
+ dto.SendBackOpinion = sendBack is { Id: not null } && !string.IsNullOrEmpty(sendBack.Content) ? sendBack.Content : string.Empty;
|
|
|
+ List<OrderRemarksDto> remarks = workflow.Steps.Where(x => !string.IsNullOrEmpty(x.Remark)).Select(x => new OrderRemarksDto { Remark = x.Remark, RemarkTime = x.CreationTime, RemarkUser = x.CreatorName }).ToList();
|
|
|
dto.OrderRemarks = remarks;
|
|
|
- }
|
|
|
- return dto;
|
|
|
+ }
|
|
|
+ return dto;
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
@@ -3080,81 +3082,81 @@ public class OrderController : BaseController
|
|
|
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));
|
|
|
- }
|
|
|
+ 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);
|
|
|
|
|
|
+ //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));
|
|
|
+ //}
|
|
|
+ return new PagedDto<OrderDto>(total, _mapper.Map<IReadOnlyList<OrderDto>>(items));
|
|
|
}
|
|
|
-
|
|
|
-
|
|
|
+
|
|
|
/// <summary>
|
|
|
/// 查询坐席待办
|
|
|
/// </summary>
|
|
@@ -3170,58 +3172,75 @@ public class OrderController : BaseController
|
|
|
if (dto.EndTime.HasValue)
|
|
|
dto.EndTime = dto.EndTime.Value.AddDays(1).AddSeconds(-1);
|
|
|
|
|
|
- //var (total, items) = await _orderRepository.Queryable(canView: false)
|
|
|
- // .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.No.Contains(dto.Keyword!) || d.Title.Contains(dto.Keyword!))
|
|
|
- // .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)//即将超期 未办
|
|
|
- // .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(x => x.Source < ESource.MLSQ || x.Source > ESource.WZSC)
|
|
|
- // .Where(x => x.Status != EOrderStatus.BackToProvince && x.Status < EOrderStatus.Filed)
|
|
|
- // .OrderBy(d => d.Status)
|
|
|
- // .OrderByIF(dto.IsHandled == true, d => d.StartTime, OrderByType.Desc)
|
|
|
- // .OrderByIF(dto.IsHandled == false, d => d.CreationTime, OrderByType.Desc)
|
|
|
- // .ToPagedListAsync(dto, HttpContext.RequestAborted);
|
|
|
+ var query = _orderRepository.Queryable();
|
|
|
+ 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 == _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)))).Any() ||
|
|
|
+ (string.IsNullOrEmpty(d.WorkflowId) &&
|
|
|
+ (string.IsNullOrEmpty(d.SignerId) || d.SignerId == _sessionContext.RequiredUserId))
|
|
|
+ );
|
|
|
+ }
|
|
|
|
|
|
- var (total, items) = await _orderRepository.Queryable()
|
|
|
- .LeftJoin<WorkflowStep>((d, step) => d.Id == step.ExternalId)
|
|
|
- .Where((d, step) =>
|
|
|
- ((string.IsNullOrEmpty(d.WorkflowId) && (string.IsNullOrEmpty(d.SignerId) || d.SignerId == _sessionContext.RequiredUserId)) ||
|
|
|
- (!string.IsNullOrEmpty(d.WorkflowId) &&
|
|
|
- ((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))) &&
|
|
|
- (((dto.IsHandled.HasValue && dto.IsHandled == false) && step.Status != EWorkflowStepStatus.Handled) ||
|
|
|
- ((dto.IsHandled.HasValue && dto.IsHandled == true) && step.Status == EWorkflowStepStatus.Handled)))))
|
|
|
+ var (total, items) = await query
|
|
|
.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.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)//即将超期 未办
|
|
|
.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)
|
|
|
.WhereIF(dto.IsUrgent.HasValue, d => d.IsUrgent == dto.IsUrgent.Value)
|
|
|
- .Where(d => d.Source < ESource.MLSQ || d.Source > ESource.WZSC)
|
|
|
- .Where(d => d.Status != EOrderStatus.BackToProvince && d.Status < EOrderStatus.Filed)
|
|
|
+ .Where(x => x.Source < ESource.MLSQ || x.Source > ESource.WZSC)
|
|
|
+ .Where(x => x.Status != EOrderStatus.BackToProvince && x.Status < EOrderStatus.Filed)
|
|
|
.OrderBy(d => d.Status)
|
|
|
.OrderByIF(dto.IsHandled == true, d => d.StartTime, OrderByType.Desc)
|
|
|
.OrderByIF(dto.IsHandled == false, d => d.CreationTime, OrderByType.Desc)
|
|
|
- .Select((d, step) => d)
|
|
|
.ToPagedListAsync(dto, HttpContext.RequestAborted);
|
|
|
|
|
|
+ //var (total, items) = await _orderRepository.Queryable()
|
|
|
+ // .LeftJoin<WorkflowStep>((d, step) => d.Id == step.ExternalId)
|
|
|
+ // .Where((d, step) =>
|
|
|
+ // ((string.IsNullOrEmpty(d.WorkflowId) && (string.IsNullOrEmpty(d.SignerId) || d.SignerId == _sessionContext.RequiredUserId)) ||
|
|
|
+ // (!string.IsNullOrEmpty(d.WorkflowId) &&
|
|
|
+ // ((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))) &&
|
|
|
+ // (((dto.IsHandled.HasValue && dto.IsHandled == false) && step.Status != EWorkflowStepStatus.Handled) ||
|
|
|
+ // ((dto.IsHandled.HasValue && dto.IsHandled == true) && step.Status == EWorkflowStepStatus.Handled)))))
|
|
|
+ // .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(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)//即将超期 未办
|
|
|
+ // .WhereIF(dto.StartTime.HasValue, d => d.CreationTime >= dto.StartTime)
|
|
|
+ // .WhereIF(dto.EndTime.HasValue, d => d.CreationTime <= dto.EndTime)
|
|
|
+ // .WhereIF(dto.IsUrgent.HasValue, d => d.IsUrgent == dto.IsUrgent.Value)
|
|
|
+ // .Where(d => d.Source < ESource.MLSQ || d.Source > ESource.WZSC)
|
|
|
+ // .Where(d => d.Status != EOrderStatus.BackToProvince && d.Status < EOrderStatus.Filed)
|
|
|
+ // .OrderBy(d => d.Status)
|
|
|
+ // .OrderByIF(dto.IsHandled == true, d => d.StartTime, OrderByType.Desc)
|
|
|
+ // .OrderByIF(dto.IsHandled == false, d => d.CreationTime, OrderByType.Desc)
|
|
|
+ // .Select((d, step) => d)
|
|
|
+ // .ToPagedListAsync(dto, HttpContext.RequestAborted);
|
|
|
+
|
|
|
return new PagedDto<OrderDto>(total, _mapper.Map<IReadOnlyList<OrderDto>>(items));
|
|
|
}
|
|
|
-
|
|
|
-
|
|
|
+
|
|
|
/// <summary>
|
|
|
/// 查询中心待办
|
|
|
/// </summary>
|
|
@@ -3233,33 +3252,58 @@ public class OrderController : BaseController
|
|
|
if (dto.StartTimeEnd.HasValue)
|
|
|
dto.StartTimeEnd = dto.StartTimeEnd.Value.AddDays(1).AddSeconds(-1);
|
|
|
|
|
|
+ //var (total, items) = await _orderRepository.Queryable()
|
|
|
+ // //.LeftJoin<WorkflowStep>((d, step) => d.Id == step.ExternalId)
|
|
|
+ // //.Where((d, step) =>
|
|
|
+ // // ((string.IsNullOrEmpty(d.WorkflowId) && (string.IsNullOrEmpty(d.SignerId) || d.SignerId == _sessionContext.RequiredUserId)) ||
|
|
|
+ // // (!string.IsNullOrEmpty(d.WorkflowId) &&
|
|
|
+ // // ((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 )
|
|
|
+ // // )))
|
|
|
+ // //.Where(d => d.Workflow.Steps.Any(s => s.Status < EWorkflowStepStatus.Handled && s.HandlerOrgId == OrgSeedData.CenterId))
|
|
|
+ // .LeftJoin<WorkflowStep>((d, step) => d.Id == step.ExternalId)
|
|
|
+ // .Where((d, step) => (step.Id == null || (step.HandlerOrgId == OrgSeedData.CenterId && step.Status < EWorkflowStepStatus.Handled)))
|
|
|
+ // .Where(d => d.Source < ESource.MLSQ || d.Source > ESource.WZSC)
|
|
|
+ // .Where(d => d.Status != EOrderStatus.BackToProvince && d.Status < EOrderStatus.Filed)
|
|
|
+ // .WhereIF(!string.IsNullOrEmpty(dto.No), d => d.No!.Contains(dto.No!))
|
|
|
+ // .WhereIF(!string.IsNullOrEmpty(dto.Title), d => d.Title!.Contains(dto.Title!))
|
|
|
+ // .WhereIF(dto is { StCreationTime: not null, EndCreationTime: not null }, d => d.CreationTime >= dto.StCreationTime && d.CreationTime <= dto.EndCreationTime)
|
|
|
+ // .WhereIF(dto is { StartTimeSt: not null, StartTimeEnd: not null }, d => d.StartTime >= dto.StartTimeSt && d.StartTime <= dto.StartTimeEnd)
|
|
|
+ // .WhereIF(!string.IsNullOrEmpty(dto.StepName), d => d.ActualHandleStepName == dto.StepName)
|
|
|
+ // .WhereIF(!string.IsNullOrEmpty(dto.ActualHandleOrgName), d => d.ActualHandleOrgName!.Contains(dto.ActualHandleOrgName!))
|
|
|
+ // .WhereIF(dto.Status.HasValue, d => d.Status == dto.Status)
|
|
|
+ // .WhereIF(!string.IsNullOrEmpty(dto.AcceptorName), d => d.AcceptorName!.Contains(dto.AcceptorName!))
|
|
|
+ // .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.Expired, d => DateTime.Now >= d.ExpiredTime)
|
|
|
+ // .WhereIF(dto.IsUrgent.HasValue, d => d.IsUrgent == dto.IsUrgent.Value)
|
|
|
+ // .OrderBy(d => d.Status)
|
|
|
+ // .OrderBy(d => d.CreationTime, OrderByType.Desc)
|
|
|
+ // .ToPagedListAsync(dto, HttpContext.RequestAborted);
|
|
|
+
|
|
|
var (total, items) = await _orderRepository.Queryable()
|
|
|
- //.LeftJoin<WorkflowStep>((d, step) => d.Id == step.ExternalId)
|
|
|
- //.Where((d, step) =>
|
|
|
- // ((string.IsNullOrEmpty(d.WorkflowId) && (string.IsNullOrEmpty(d.SignerId) || d.SignerId == _sessionContext.RequiredUserId)) ||
|
|
|
- // (!string.IsNullOrEmpty(d.WorkflowId) &&
|
|
|
- // ((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 )
|
|
|
- // )))
|
|
|
- //.Where(d => d.Workflow.Steps.Any(s => s.Status < EWorkflowStepStatus.Handled && s.HandlerOrgId == OrgSeedData.CenterId))
|
|
|
- .LeftJoin<WorkflowStep>((d, step) => d.Id == step.ExternalId)
|
|
|
- .Where((d, step) => (step.Id == null || (step.HandlerOrgId == OrgSeedData.CenterId && step.Status < EWorkflowStepStatus.Handled)))
|
|
|
+ .Where(d => SqlFunc.Subqueryable<WorkflowTrace>()
|
|
|
+ .Where(step => step.ExternalId == d.Id &&
|
|
|
+ step.HandlerOrgId == OrgSeedData.CenterId &&
|
|
|
+ step.Status < EWorkflowStepStatus.Handled).Any() ||
|
|
|
+ string.IsNullOrEmpty(d.WorkflowId)
|
|
|
+ )
|
|
|
.Where(d => d.Source < ESource.MLSQ || d.Source > ESource.WZSC)
|
|
|
.Where(d => d.Status != EOrderStatus.BackToProvince && d.Status < EOrderStatus.Filed)
|
|
|
- .WhereIF(!string.IsNullOrEmpty(dto.No), d => d.No!.Contains(dto.No!))
|
|
|
- .WhereIF(!string.IsNullOrEmpty(dto.Title), d => d.Title!.Contains(dto.Title!))
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.No), d => d.No == dto.No!)
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.Title), d => d.Title.StartsWith(dto.Title!))
|
|
|
.WhereIF(dto is { StCreationTime: not null, EndCreationTime: not null }, d => d.CreationTime >= dto.StCreationTime && d.CreationTime <= dto.EndCreationTime)
|
|
|
.WhereIF(dto is { StartTimeSt: not null, StartTimeEnd: not null }, d => d.StartTime >= dto.StartTimeSt && d.StartTime <= dto.StartTimeEnd)
|
|
|
.WhereIF(!string.IsNullOrEmpty(dto.StepName), d => d.ActualHandleStepName == dto.StepName)
|
|
|
- .WhereIF(!string.IsNullOrEmpty(dto.ActualHandleOrgName), d => d.ActualHandleOrgName!.Contains(dto.ActualHandleOrgName!))
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.ActualHandleOrgName), d => d.ActualHandleOrgName == dto.ActualHandleOrgName!)
|
|
|
.WhereIF(dto.Status.HasValue, d => d.Status == dto.Status)
|
|
|
.WhereIF(!string.IsNullOrEmpty(dto.AcceptorName), d => d.AcceptorName!.Contains(dto.AcceptorName!))
|
|
|
.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.Expired, d => DateTime.Now >= d.ExpiredTime)
|
|
|
- .WhereIF(dto.IsUrgent.HasValue, d => d.IsUrgent == dto.IsUrgent.Value)
|
|
|
+ .WhereIF(dto.IsUrgent.HasValue, d => d.IsUrgent == dto.IsUrgent!.Value)
|
|
|
.OrderBy(d => d.Status)
|
|
|
.OrderBy(d => d.CreationTime, OrderByType.Desc)
|
|
|
.ToPagedListAsync(dto, HttpContext.RequestAborted);
|
|
@@ -3296,7 +3340,7 @@ public class OrderController : BaseController
|
|
|
if (dto.EndTime.HasValue)
|
|
|
dto.EndTime = dto.EndTime.Value.AddDays(1).AddSeconds(-1);
|
|
|
var (total, items) = await _orderRepository
|
|
|
- .Queryable(hasHandled: !isHandled)
|
|
|
+ .Queryable(hasHandled: isHandled)
|
|
|
.Includes(d => d.OrderSpecials)
|
|
|
.WhereIF(dto.IsProvince.HasValue, d => d.IsProvince == dto.IsProvince)
|
|
|
.WhereIF(!string.IsNullOrEmpty(dto.Keyword), d => d.No.Contains(dto.Keyword) || d.Title.Contains(dto.Keyword))
|