|
@@ -60,6 +60,8 @@ using Hotline.Repository.SqlSugar.Orders;
|
|
|
using Quartz.Simpl;
|
|
|
using J2N.Text;
|
|
|
using Hotline.Application.FlowEngine;
|
|
|
+using Hotline.Article;
|
|
|
+using Hotline.Share.Dtos.CallCenter;
|
|
|
|
|
|
namespace Hotline.Application.Orders;
|
|
|
|
|
@@ -110,6 +112,7 @@ public class OrderApplication : IOrderApplication, IScopeDependency
|
|
|
private readonly IRepository<KnowledgeQuote> _knowledgeQuoteRepository;
|
|
|
private readonly IRepository<OrderSpecial> _orderSpecialRepository;
|
|
|
private readonly IWorkflowApplication _workflowApplication;
|
|
|
+ private readonly ICircularRecordDomainService _circularRecordDomainService;
|
|
|
|
|
|
public OrderApplication(
|
|
|
IOrderDomainService orderDomainService,
|
|
@@ -155,7 +158,8 @@ public class OrderApplication : IOrderApplication, IScopeDependency
|
|
|
IRepository<OrderTsDetails> orderTsDetailsRepository,
|
|
|
IRepository<KnowledgeQuote> knowledgeQuoteRepository,
|
|
|
IRepository<OrderSpecial> orderSpecialRepository,
|
|
|
- IWorkflowApplication workflowApplication)
|
|
|
+ IWorkflowApplication workflowApplication,
|
|
|
+ ICircularRecordDomainService circularRecordDomainService)
|
|
|
{
|
|
|
_orderDomainService = orderDomainService;
|
|
|
_workflowDomainService = workflowDomainService;
|
|
@@ -201,7 +205,7 @@ public class OrderApplication : IOrderApplication, IScopeDependency
|
|
|
_knowledgeQuoteRepository = knowledgeQuoteRepository;
|
|
|
_orderSpecialRepository = orderSpecialRepository;
|
|
|
_workflowApplication = workflowApplication;
|
|
|
-
|
|
|
+ _circularRecordDomainService = circularRecordDomainService;
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
@@ -738,9 +742,13 @@ public class OrderApplication : IOrderApplication, IScopeDependency
|
|
|
|
|
|
var order = await _orderRepository.Queryable()
|
|
|
.FirstAsync(d => d.Id == dto.Id || d.No == dto.OrderNo, cancellationToken);
|
|
|
+
|
|
|
if (order != null && dto.Files != null && dto.Files.Any())
|
|
|
{
|
|
|
- order.FileJson = await _fileRepository.AddFileAsync(dto.Files, order.Id, "", cancellationToken);
|
|
|
+ List<FileJson> file = order.FileJson;
|
|
|
+ List<FileJson> fileNew = await _fileRepository.AddFileAsync(dto.Files, order.Id, cancellationToken);
|
|
|
+ file.AddRange(fileNew);
|
|
|
+ order.FileJson = file;
|
|
|
await _orderRepository.UpdateAsync(order, cancellationToken);
|
|
|
}
|
|
|
}
|
|
@@ -1273,6 +1281,7 @@ public class OrderApplication : IOrderApplication, IScopeDependency
|
|
|
{
|
|
|
visit.EmployeeId = _sessionContextProvider.SessionContext.UserId;
|
|
|
}
|
|
|
+
|
|
|
visit.CallId = dto.CallId;
|
|
|
if (first != null)
|
|
|
{
|
|
@@ -1549,7 +1558,9 @@ public class OrderApplication : IOrderApplication, IScopeDependency
|
|
|
.WhereIF(dto.FiledType is FiledType.OrgFiled, d => d.FileOrgIsCenter == false) //d => d.ProcessType == EProcessType.Jiaoban
|
|
|
//.WhereIF(!string.IsNullOrEmpty(dto.OrderTagCode), d => d.OrderTagCode == dto.OrderTagCode)// 工单标签
|
|
|
.WhereIF(!string.IsNullOrEmpty(dto.OrderTagCode), d => d.OrderTags.Any(ot => ot.DicDataValue == dto.OrderTagCode)) //工单标签
|
|
|
- .WhereIF(!string.IsNullOrEmpty(dto.FocusOnEvents), d => d.FocusOnEvents.Contains(dto.FocusOnEvents))//!string.IsNullOrEmpty(d.FocusOnEvents) && SqlFunc.SplitIn(d.FocusOnEvents, dto.FocusOnEvents))
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.FocusOnEvents),
|
|
|
+ d => d.FocusOnEvents.Contains(dto
|
|
|
+ .FocusOnEvents)) //!string.IsNullOrEmpty(d.FocusOnEvents) && SqlFunc.SplitIn(d.FocusOnEvents, dto.FocusOnEvents))
|
|
|
.OrderByIF(string.IsNullOrEmpty(dto.SortField), d => d.CreationTime, OrderByType.Desc) //默认排序时间为创建时间
|
|
|
.OrderByIF(dto is { SortField: "no", SortRule: 0 }, d => d.No, OrderByType.Asc) //工单编号升序
|
|
|
.OrderByIF(dto is { SortField: "no", SortRule: 1 }, d => d.No, OrderByType.Desc) //工单编号降序
|
|
@@ -3072,6 +3083,7 @@ public class OrderApplication : IOrderApplication, IScopeDependency
|
|
|
.Where(x => x.HandlerName != null && x.HandlerName != "")
|
|
|
.WhereIF(dto.AuditType is 1, x => x.Name == "班长审批")
|
|
|
.WhereIF(dto.AuditType is 2, x => x.Name == "中心领导")
|
|
|
+ .WhereIF(_appOptions.Value.IsZiGong && dto.AuditType is 3, x => x.Name == "中心初审")
|
|
|
.GroupBy(x => new { x.HandlerName })
|
|
|
.Select(x => new OrderScreenAuditVo
|
|
|
{
|
|
@@ -3263,33 +3275,30 @@ public class OrderApplication : IOrderApplication, IScopeDependency
|
|
|
// x => SqlFunc.JsonListObjectAny(x.OrgHandledAttitude, "Key", dto.OrgHandledAttitude))
|
|
|
//.WhereIF(!string.IsNullOrEmpty(dto.OrgNoSatisfiedReason),
|
|
|
// x => SqlFunc.JsonField(x.OrgNoSatisfiedReason, "Key") == dto.OrgNoSatisfiedReason)
|
|
|
- .Where(x => x.OrderVisit.VisitState == EVisitState.Visited && x.OrderVisit.IsCanHandle);
|
|
|
+ .Where(x => x.OrderVisit.VisitState == EVisitState.Visited && x.OrderVisit.IsCanHandle)
|
|
|
+ .WhereIF(dto.DataScope is 1, x => x.VisitOrgCode == _sessionContext.OrgId);
|
|
|
if (_sessionContext.OrgId != null && !_sessionContext.OrgIsCenter)
|
|
|
{
|
|
|
- query.WhereIF(!string.IsNullOrEmpty(dto.Keyword),
|
|
|
- x => x.OrderVisit.Order.Title.Contains(dto.Keyword!) ||
|
|
|
- x.OrderVisit.Order.No.Contains(dto.Keyword!))
|
|
|
- .Where(x => x.VisitTarget == EVisitTarget.Org && x.VisitOrgCode == _sessionContext.OrgId && (
|
|
|
+ query.WhereIF(!string.IsNullOrEmpty(dto.Keyword), x => x.OrderVisit.Order.Title.Contains(dto.Keyword!) || x.OrderVisit.Order.No.Contains(dto.Keyword!))
|
|
|
+ .Where(x => x.VisitTarget == EVisitTarget.Org && (
|
|
|
SqlFunc.JsonField(x.OrgProcessingResults, "Key") == "1" ||
|
|
|
SqlFunc.JsonField(x.OrgProcessingResults, "Key") == "2" ||
|
|
|
SqlFunc.JsonField(x.OrgHandledAttitude, "Key") == "1" ||
|
|
|
SqlFunc.JsonField(x.OrgHandledAttitude, "Key") == "2"
|
|
|
- ));
|
|
|
+ ))
|
|
|
+ .WhereIF(dto.DataScope is 0, x => x.VisitOrgCode.StartsWith(_sessionContext.OrgId))
|
|
|
+ ;
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- query.WhereIF(!string.IsNullOrEmpty(dto.Keyword),
|
|
|
- x => x.OrderVisit.Order.Title.Contains(dto.Keyword!) ||
|
|
|
- x.OrderVisit.Order.No.Contains(dto.Keyword!))
|
|
|
+ query.WhereIF(!string.IsNullOrEmpty(dto.Keyword), x => x.OrderVisit.Order.Title.Contains(dto.Keyword!) || x.OrderVisit.Order.No.Contains(dto.Keyword!))
|
|
|
.WhereIF(dto.ScreenType == EOrderScreenType.Org, x => x.VisitTarget == EVisitTarget.Org && (
|
|
|
SqlFunc.JsonField(x.OrgProcessingResults, "Key") == "1" ||
|
|
|
SqlFunc.JsonField(x.OrgProcessingResults, "Key") == "2" ||
|
|
|
SqlFunc.JsonField(x.OrgHandledAttitude, "Key") == "1" ||
|
|
|
SqlFunc.JsonField(x.OrgHandledAttitude, "Key") == "2"
|
|
|
))
|
|
|
- .WhereIF(dto.ScreenType == EOrderScreenType.Seat,
|
|
|
- x => x.VisitTarget == EVisitTarget.Seat &&
|
|
|
- (x.SeatEvaluate == ESeatEvaluate.VeryNoSatisfied || x.SeatEvaluate == ESeatEvaluate.NoSatisfied))
|
|
|
+ .WhereIF(dto.ScreenType == EOrderScreenType.Seat, x => x.VisitTarget == EVisitTarget.Seat && (x.SeatEvaluate == ESeatEvaluate.VeryNoSatisfied || x.SeatEvaluate == ESeatEvaluate.NoSatisfied))
|
|
|
;
|
|
|
}
|
|
|
|
|
@@ -3301,7 +3310,7 @@ public class OrderApplication : IOrderApplication, IScopeDependency
|
|
|
.OrderByIF(dto is { SortRule: 1, SortField: "order.filedTime" }, x => x.OrderVisit.Order.FiledTime, OrderByType.Desc)
|
|
|
.OrderByIF(dto is { SortRule: 0, SortField: "orderVisit.visitTime" }, x => x.OrderVisit.VisitTime, OrderByType.Asc)
|
|
|
.OrderByIF(dto is { SortRule: 1, SortField: "orderVisit.visitTime" }, x => x.OrderVisit.VisitTime, OrderByType.Desc)
|
|
|
- .OrderByIF(dto is { SortRule: 0, SortField: "screenByEndTime" }, x => x.ScreenByEndTime, OrderByType.Asc)
|
|
|
+ .OrderByIF(dto is { SortRule: 0, SortField: "screenByEndTime" }, x => x.ScreenByEndTime, OrderByType.Asc)//截止申请日期排序
|
|
|
.OrderByIF(dto is { SortRule: 1, SortField: "screenByEndTime" }, x => x.ScreenByEndTime, OrderByType.Desc)
|
|
|
.OrderByIF(dto.SortRule is null, x => x.CreationTime, OrderByType.Desc);
|
|
|
}
|
|
@@ -3462,7 +3471,8 @@ public class OrderApplication : IOrderApplication, IScopeDependency
|
|
|
.WhereIF(dto.IsAiVisit.HasValue && dto.IsAiVisit == true, d => d.AiVisitCount <= 0) //(未建立过)
|
|
|
.WhereIF(!string.IsNullOrEmpty(dto.Channel), d => d.Order.SourceChannelCode == dto.Channel)
|
|
|
.WhereIF(!string.IsNullOrEmpty(dto.OrderTagCode),
|
|
|
- d => SqlFunc.Subqueryable<OrderRelationTag>().InnerJoin<SystemDicData>((s, p) => s.TagId == p.Id).Where((s, p) => p.DicDataValue == dto.OrderTagCode && d.OrderId == s.OrderId).Any())//工单标签
|
|
|
+ d => SqlFunc.Subqueryable<OrderRelationTag>().InnerJoin<SystemDicData>((s, p) => s.TagId == p.Id)
|
|
|
+ .Where((s, p) => p.DicDataValue == dto.OrderTagCode && d.OrderId == s.OrderId).Any()) //工单标签
|
|
|
.OrderByIF(dto.VisitStateQuery != EVisitStateQuery.Visited, d => d.Order.IsUrgent, OrderByType.Desc)
|
|
|
.OrderByDescending(d => d.PublishTime);
|
|
|
return query;
|
|
@@ -3630,7 +3640,9 @@ public class OrderApplication : IOrderApplication, IScopeDependency
|
|
|
_sessionContext.ChangeSession(startStep.HandlerId);
|
|
|
var isAutoFillSummaryOpinion = _systemSettingCacheManager.IsAutoFillSummaryOpinion;
|
|
|
|
|
|
- await _workflowDomainService.NextAsync(operater, nextDto, order.ExpiredTime, isAutoFillSummaryOpinion,
|
|
|
+ await _workflowDomainService.NextAsync(operater, nextDto,
|
|
|
+ expiredTime: order.ExpiredTime,
|
|
|
+ isAutoFillSummaryOpinion: isAutoFillSummaryOpinion,
|
|
|
cancellationToken: cancellationToken);
|
|
|
}
|
|
|
|
|
@@ -4099,6 +4111,12 @@ public class OrderApplication : IOrderApplication, IScopeDependency
|
|
|
},
|
|
|
cancellation);
|
|
|
|
|
|
+
|
|
|
+ //if (order.ActualHandleOrgCode != OrgSeedData.CenterId && order.Status < EOrderStatus.Filed)
|
|
|
+ //{
|
|
|
+ // await _circularRecordDomainService.OrderSpecialCircularMessage(special, order, cancellation);
|
|
|
+ //}
|
|
|
+
|
|
|
if (_appOptions.Value.IsZiGong && dto.BusinessType == EBusinessType.Send)
|
|
|
{
|
|
|
special.NextHandlers = new List<StepAssignInfo> { newStep.GetWorkflowStepHandler() };
|
|
@@ -4785,8 +4803,8 @@ public class OrderApplication : IOrderApplication, IScopeDependency
|
|
|
.WhereIF(dto.IsUrgent.HasValue, d => d.IsUrgent == dto.IsUrgent!.Value)
|
|
|
.WhereIF(dto.Status.HasValue, d => d.Status == dto.Status) //工单状态
|
|
|
.WhereIF(!string.IsNullOrEmpty(dto.CurrentStepCode), d => d.CurrentStepCode == dto.CurrentStepCode) //当前办理节点
|
|
|
- .WhereIF(!string.IsNullOrEmpty(dto.OrderTagCode), d => d.OrderTags.Any(ot => ot.DicDataValue == dto.OrderTagCode))//工单标签
|
|
|
- //.OrderByDescending(d => d.IsUrgent)
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.OrderTagCode), d => d.OrderTags.Any(ot => ot.DicDataValue == dto.OrderTagCode)) //工单标签
|
|
|
+ //.OrderByDescending(d => d.IsUrgent)
|
|
|
.OrderByIF(string.IsNullOrEmpty(dto.SortField), d => d.IsUrgent, OrderByType.Desc)
|
|
|
.OrderByIF(string.IsNullOrEmpty(dto.SortField), d => d.StartTime, OrderByType.Desc)
|
|
|
.OrderByIF(dto is { SortField: "creationTime", SortRule: 0 }, d => d.CreationTime, OrderByType.Asc) //创建时间升序
|
|
@@ -5004,17 +5022,15 @@ public class OrderApplication : IOrderApplication, IScopeDependency
|
|
|
/// </summary>
|
|
|
/// <param name="dto"></param>
|
|
|
/// <returns></returns>
|
|
|
-
|
|
|
public ISugarQueryable<ExtendedSendBackVo> ExtendedSendBackStatistics(PagedKeywordRequest dto)
|
|
|
{
|
|
|
-
|
|
|
var query = _orderSendBackAuditRepository.Queryable()
|
|
|
- .Where(x => x.ApplyOrgId.Length == 6)
|
|
|
+ .Where(x => x.ApplyOrgId.Length == 6 && x.CreationTime > x.OrderExpiredTime)
|
|
|
+ .WhereIF(!_sessionContext.OrgIsCenter, x => x.ApplyOrgId == _sessionContext.OrgId)
|
|
|
.WhereIF(dto.StartTime.HasValue && dto.EndTime.HasValue, x => x.CreationTime >= dto.StartTime && x.CreationTime <= dto.EndTime)
|
|
|
.GroupBy(x => new { x.ApplyOrgId, x.ApplyOrgName })
|
|
|
.Select(x => new ExtendedSendBackVo()
|
|
|
{
|
|
|
-
|
|
|
OrgId = x.ApplyOrgId,
|
|
|
OrgName = x.ApplyOrgName,
|
|
|
TotalNum = SqlFunc.AggregateSum(1),
|
|
@@ -5034,37 +5050,38 @@ public class OrderApplication : IOrderApplication, IScopeDependency
|
|
|
public ISugarQueryable<OrderSendBackAudit> ExtendedSendBackDetail(ExtendedSendBackRequest dto)
|
|
|
{
|
|
|
var query = _orderSendBackAuditRepository.Queryable()
|
|
|
- .Includes(x => x.Order)
|
|
|
- .Where(x => x.ApplyOrgId.Length == 6)
|
|
|
- .WhereIF(dto.StartTime.HasValue && dto.EndTime.HasValue, x => x.CreationTime >= dto.StartTime && x.CreationTime <= dto.EndTime)
|
|
|
- .WhereIF(!_sessionContext.OrgIsCenter, x => x.ApplyOrgId == _sessionContext.RequiredOrgId)
|
|
|
- .WhereIF(!string.IsNullOrEmpty(dto.No), x => x.Order.No.Contains(dto.No!))
|
|
|
- .WhereIF(!string.IsNullOrEmpty(dto.Titel), x => x.Order.Title.Contains(dto.Titel!))
|
|
|
- .WhereIF(!string.IsNullOrEmpty(dto.OrgId), x => x.ApplyOrgId == dto.OrgId)
|
|
|
- .WhereIF(dto.Type is ExtendedSendBackType.PassNum, x => x.State == ESendBackAuditState.End)
|
|
|
- .WhereIF(dto.Type is ExtendedSendBackType.NoPassNum, x => x.State == ESendBackAuditState.Refuse)
|
|
|
- .WhereIF(dto.Type is ExtendedSendBackType.AuditNum, x => x.State == ESendBackAuditState.Apply)
|
|
|
- .WhereIF(!string.IsNullOrEmpty(dto.AcceptType), x => x.Order.AcceptTypeCode == dto.AcceptType) //受理类型
|
|
|
- .WhereIF(!string.IsNullOrEmpty(dto.Channel), x => x.Order.SourceChannelCode == dto.Channel) //来源渠道
|
|
|
- .WhereIF(!string.IsNullOrEmpty(dto.Hotspot), x => x.Order.HotspotSpliceName != null && x.Order.HotspotSpliceName.Contains(dto.Hotspot))//热点分类
|
|
|
- .WhereIF(dto.CreationTimeStart.HasValue, x => x.Order.CreationTime >= dto.CreationTimeStart) //受理时间开始
|
|
|
- .WhereIF(dto.CreationTimeEnd.HasValue, x => x.Order.CreationTime <= dto.CreationTimeEnd) //受理时间结束
|
|
|
- .WhereIF(!string.IsNullOrEmpty(dto.ApplyOrgName), x => x.ApplyOrgName == dto.ApplyOrgName!) //申请部门
|
|
|
- .WhereIF(!string.IsNullOrEmpty(dto.ApplyUserName), x => x.CreatorName == dto.ApplyUserName!) //申请人
|
|
|
- .WhereIF(dto.State.HasValue, x => x.State == dto.State) //退回审批状态
|
|
|
- .WhereIF(!string.IsNullOrEmpty(dto.AuditUser), x => x.AuditUser == dto.AuditUser!) //审批人
|
|
|
- .WhereIF(dto.AuditTimeStart.HasValue && dto.AuditTimeEnd.HasValue, x => x.AuditTime >= dto.AuditTimeStart && x.AuditTime <= dto.AuditTimeEnd)// 审批时间
|
|
|
- .WhereIF(!string.IsNullOrEmpty(dto.AuditContent), x => x.AuditContent.Contains(dto.AuditContent!))//审批意见
|
|
|
- .OrderByIF(string.IsNullOrEmpty(dto.SortField), x => x.CreationTime, OrderByType.Desc)
|
|
|
- .OrderByIF(dto is { SortField: "order.startTime", SortRule: 0 }, x => x.Order.StartTime, OrderByType.Asc)
|
|
|
- .OrderByIF(dto is { SortField: "order.startTime", SortRule: 1 }, x => x.Order.StartTime, OrderByType.Desc)
|
|
|
- .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: "auditTime", SortRule: 0 }, x => x.AuditTime, OrderByType.Asc)
|
|
|
- .OrderByIF(dto is { SortField: "auditTime", SortRule: 1 }, x => x.AuditTime, OrderByType.Desc)
|
|
|
+ .Includes(x => x.Order)
|
|
|
+ .Where(x => x.ApplyOrgId.Length == 6 && x.CreationTime > x.OrderExpiredTime)
|
|
|
+ .WhereIF(dto.StartTime.HasValue && dto.EndTime.HasValue, x => x.CreationTime >= dto.StartTime && x.CreationTime <= dto.EndTime)
|
|
|
+ .WhereIF(!_sessionContext.OrgIsCenter, x => x.ApplyOrgId == _sessionContext.RequiredOrgId)
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.No), x => x.Order.No.Contains(dto.No!))
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.Title), x => x.Order.Title.Contains(dto.Title!))
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.OrgId), x => x.ApplyOrgId == dto.OrgId)
|
|
|
+ .WhereIF(dto.Type is ExtendedSendBackType.PassNum, x => x.State == ESendBackAuditState.End)
|
|
|
+ .WhereIF(dto.Type is ExtendedSendBackType.NoPassNum, x => x.State == ESendBackAuditState.Refuse)
|
|
|
+ .WhereIF(dto.Type is ExtendedSendBackType.AuditNum, x => x.State == ESendBackAuditState.Apply)
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.AcceptType), x => x.Order.AcceptTypeCode == dto.AcceptType) //受理类型
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.Channel), x => x.Order.SourceChannelCode == dto.Channel) //来源渠道
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.Hotspot),
|
|
|
+ x => x.Order.HotspotSpliceName != null && x.Order.HotspotSpliceName.Contains(dto.Hotspot)) //热点分类
|
|
|
+ .WhereIF(dto.CreationTimeStart.HasValue, x => x.Order.CreationTime >= dto.CreationTimeStart) //受理时间开始
|
|
|
+ .WhereIF(dto.CreationTimeEnd.HasValue, x => x.Order.CreationTime <= dto.CreationTimeEnd) //受理时间结束
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.ApplyOrgName), x => x.ApplyOrgName == dto.ApplyOrgName!) //申请部门
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.ApplyUserName), x => x.CreatorName == dto.ApplyUserName!) //申请人
|
|
|
+ .WhereIF(dto.State.HasValue, x => x.State == dto.State) //退回审批状态
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.AuditUser), x => x.AuditUser == dto.AuditUser!) //审批人
|
|
|
+ .WhereIF(dto.AuditTimeStart.HasValue && dto.AuditTimeEnd.HasValue,
|
|
|
+ x => x.AuditTime >= dto.AuditTimeStart && x.AuditTime <= dto.AuditTimeEnd) // 审批时间
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.AuditContent), x => x.AuditContent.Contains(dto.AuditContent!)) //审批意见
|
|
|
+ .OrderByIF(string.IsNullOrEmpty(dto.SortField), x => x.CreationTime, OrderByType.Desc)
|
|
|
+ .OrderByIF(dto is { SortField: "order.startTime", SortRule: 0 }, x => x.Order.StartTime, OrderByType.Asc)
|
|
|
+ .OrderByIF(dto is { SortField: "order.startTime", SortRule: 1 }, x => x.Order.StartTime, OrderByType.Desc)
|
|
|
+ .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: "auditTime", SortRule: 0 }, x => x.AuditTime, OrderByType.Asc)
|
|
|
+ .OrderByIF(dto is { SortField: "auditTime", SortRule: 1 }, x => x.AuditTime, OrderByType.Desc)
|
|
|
;
|
|
|
return query;
|
|
|
-
|
|
|
}
|
|
|
|
|
|
|
|
@@ -5098,33 +5115,32 @@ public class OrderApplication : IOrderApplication, IScopeDependency
|
|
|
}
|
|
|
|
|
|
return query
|
|
|
- .Includes(d => d.Order)
|
|
|
- .Includes(d => d.Workflow)
|
|
|
- //如果查询全部
|
|
|
- //1.1、热线中心用户看系统中所有已申请延期的工单(需排除取消延期的工单)和自动延期的工单
|
|
|
- //1.2、部门用户看部门及其下级部门已申请延期的工单(需排除取消延期的工单)和部门办理中时自动延期的工单
|
|
|
- .WhereIF(dto.DataScope is 0, d => (d.AutomaticDelayNum == 0 || d.AutomaticDelayNum == null) && d.DelayState != EDelayState.Withdraw)
|
|
|
- .WhereIF(dto.DataScope is 0 && !_sessionContext.OrgIsCenter, d => d.CreatorOrgId.StartsWith(_sessionContext.RequiredOrgId))
|
|
|
- .WhereIF(!string.IsNullOrEmpty(dto.Keyword),
|
|
|
- d => d.Order.Title.Contains(dto.Keyword!) || d.Order.No.Contains(dto.Keyword!))
|
|
|
- .WhereIF(dto.IsApply == true, d => d.DelayState != EDelayState.Examining)
|
|
|
- .WhereIF(dto.IsApply == false, d => d.DelayState == EDelayState.Examining)
|
|
|
- .WhereIF(dto.DelayState != null, d => d.DelayState == dto.DelayState)
|
|
|
- //延期列表页面数据范围快捷查询条件选中“我的“时需排除取消延期的工单
|
|
|
- .WhereIF(dto.DataScope is 1, d => d.CreatorId == _sessionContext.RequiredUserId && d.DelayState != EDelayState.Withdraw)
|
|
|
- .WhereIF(dto.QueryDelayState is EQueryDelayState.Examining, d => d.DelayState == EDelayState.Examining)
|
|
|
- .WhereIF(dto.QueryDelayState is EQueryDelayState.Pass, d => d.DelayState == EDelayState.Pass)
|
|
|
- .WhereIF(dto.QueryDelayState is EQueryDelayState.NoPass, d => d.DelayState == EDelayState.NoPass)
|
|
|
- .WhereIF(!string.IsNullOrEmpty(dto.CurrentStepName),
|
|
|
- d => !SqlFunc.IsNullOrEmpty(d.WorkflowId) && d.Workflow.ActualHandleStepName == dto.CurrentStepName) //当前节点
|
|
|
- .WhereIF(!string.IsNullOrEmpty(dto.ActualHandlerName),
|
|
|
- d => !SqlFunc.IsNullOrEmpty(d.WorkflowId) && d.Workflow.ActualHandlerName == dto.ActualHandlerName) // 审批人
|
|
|
- .WhereIF(!string.IsNullOrEmpty(dto.OrgLevelOneName), d => d.Order.OrgLevelOneName == dto.OrgLevelOneName) //一级部门
|
|
|
- .WhereIF(dto.StartCreationTime.HasValue && dto.EndCreationTime.HasValue,
|
|
|
- d => d.CreationTime >= dto.StartCreationTime && d.CreationTime <= dto.EndCreationTime) // 申请时间
|
|
|
- .OrderByDescending(d => d.ApplyDelayTime)
|
|
|
- ;
|
|
|
-
|
|
|
+ .Includes(d => d.Order)
|
|
|
+ .Includes(d => d.Workflow)
|
|
|
+ //如果查询全部
|
|
|
+ //1.1、热线中心用户看系统中所有已申请延期的工单(需排除取消延期的工单)和自动延期的工单
|
|
|
+ //1.2、部门用户看部门及其下级部门已申请延期的工单(需排除取消延期的工单)和部门办理中时自动延期的工单
|
|
|
+ .WhereIF(dto.DataScope is 0, d => (d.AutomaticDelayNum == 0 || d.AutomaticDelayNum == null) && d.DelayState != EDelayState.Withdraw)
|
|
|
+ .WhereIF(dto.DataScope is 0 && !_sessionContext.OrgIsCenter, d => d.CreatorOrgId.StartsWith(_sessionContext.RequiredOrgId))
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.Keyword),
|
|
|
+ d => d.Order.Title.Contains(dto.Keyword!) || d.Order.No.Contains(dto.Keyword!))
|
|
|
+ .WhereIF(dto.IsApply == true, d => d.DelayState != EDelayState.Examining)
|
|
|
+ .WhereIF(dto.IsApply == false, d => d.DelayState == EDelayState.Examining)
|
|
|
+ .WhereIF(dto.DelayState != null, d => d.DelayState == dto.DelayState)
|
|
|
+ //延期列表页面数据范围快捷查询条件选中“我的“时需排除取消延期的工单
|
|
|
+ .WhereIF(dto.DataScope is 1, d => d.CreatorId == _sessionContext.RequiredUserId && d.DelayState != EDelayState.Withdraw)
|
|
|
+ .WhereIF(dto.QueryDelayState is EQueryDelayState.Examining, d => d.DelayState == EDelayState.Examining)
|
|
|
+ .WhereIF(dto.QueryDelayState is EQueryDelayState.Pass, d => d.DelayState == EDelayState.Pass)
|
|
|
+ .WhereIF(dto.QueryDelayState is EQueryDelayState.NoPass, d => d.DelayState == EDelayState.NoPass)
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.CurrentStepName),
|
|
|
+ d => !SqlFunc.IsNullOrEmpty(d.WorkflowId) && d.Workflow.ActualHandleStepName == dto.CurrentStepName) //当前节点
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.ActualHandlerName),
|
|
|
+ d => !SqlFunc.IsNullOrEmpty(d.WorkflowId) && d.Workflow.ActualHandlerName == dto.ActualHandlerName) // 审批人
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.OrgLevelOneName), d => d.Order.OrgLevelOneName == dto.OrgLevelOneName) //一级部门
|
|
|
+ .WhereIF(dto.StartCreationTime.HasValue && dto.EndCreationTime.HasValue,
|
|
|
+ d => d.CreationTime >= dto.StartCreationTime && d.CreationTime <= dto.EndCreationTime) // 申请时间
|
|
|
+ .OrderByDescending(d => d.ApplyDelayTime)
|
|
|
+ ;
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
@@ -5136,17 +5152,17 @@ public class OrderApplication : IOrderApplication, IScopeDependency
|
|
|
var isAdmin = _orderDomainService.IsCheckAdmin();
|
|
|
var isHandled = dto.IsApply.HasValue && dto.IsApply.Value;
|
|
|
var query = _orderDelayRepository
|
|
|
- .Queryable(hasHandled: isHandled, isAdmin: isAdmin)
|
|
|
- .Includes(d => d.Order)
|
|
|
- .Includes(d => d.Workflow)
|
|
|
- .WhereIF(!string.IsNullOrEmpty(dto.Keyword),
|
|
|
- d => d.Order.Title.Contains(dto.Keyword!) || d.No.Contains(dto.Keyword!))
|
|
|
- //.WhereIF(dto.IsApply == true, d => d.DelayState != EDelayState.Examining)
|
|
|
- .WhereIF(dto.IsApply == false, d => d.DelayState == EDelayState.Examining)
|
|
|
- //.WhereIF(dto.DelayState != null, x => x.DelayState == dto.DelayState)
|
|
|
- //.Where(x=>x.DelayState == EDelayState.Examining)
|
|
|
- .OrderByDescending(d => d.ApplyDelayTime)
|
|
|
- ;
|
|
|
+ .Queryable(hasHandled: isHandled, isAdmin: isAdmin)
|
|
|
+ .Includes(d => d.Order)
|
|
|
+ .Includes(d => d.Workflow)
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.Keyword),
|
|
|
+ d => d.Order.Title.Contains(dto.Keyword!) || d.No.Contains(dto.Keyword!))
|
|
|
+ //.WhereIF(dto.IsApply == true, d => d.DelayState != EDelayState.Examining)
|
|
|
+ .WhereIF(dto.IsApply == false, d => d.DelayState == EDelayState.Examining)
|
|
|
+ //.WhereIF(dto.DelayState != null, x => x.DelayState == dto.DelayState)
|
|
|
+ //.Where(x=>x.DelayState == EDelayState.Examining)
|
|
|
+ .OrderByDescending(d => d.ApplyDelayTime)
|
|
|
+ ;
|
|
|
|
|
|
return query;
|
|
|
}
|
|
@@ -5155,47 +5171,12 @@ public class OrderApplication : IOrderApplication, IScopeDependency
|
|
|
|
|
|
public async Task OrderPrevious(OrderSendBackAudit sendBack, Order order, CancellationToken cancellationToken)
|
|
|
{
|
|
|
-
|
|
|
- //var (workflow, currentStep, prevDefine, prevStep, newStep, flowDirection) =
|
|
|
- // await _workflowApplication.PreviousAsync(sendBack.SendBackData,
|
|
|
- // async (workflow1, currentStep1, prevStepDefine, prevStep1, newStep) =>
|
|
|
- // {
|
|
|
- // var stepAssignInfo =
|
|
|
- // await GetOrderPreviousAssignInfoAsync(workflow1, prevStepDefine, prevStep1, cancellationToken);
|
|
|
- // if (stepAssignInfo is null) return;
|
|
|
- // var validator = new StepAssignInfoValidator();
|
|
|
- // await validator.ValidateAndThrowAsync(stepAssignInfo);
|
|
|
- // newStep.Assign(stepAssignInfo);
|
|
|
- // if (sendBack.AssignStepId != prevStep1.Id) prevStep1.HandleMode = EHandleMode.PreviousNoDisplay;
|
|
|
- // },
|
|
|
- // cancellationToken);
|
|
|
-
|
|
|
- //if (sendBack.IsAssign.Value)
|
|
|
- //{
|
|
|
- // while (sendBack.AssignStepId != prevStep.Id)
|
|
|
- // {
|
|
|
- // (workflow, currentStep, prevDefine, prevStep, newStep, flowDirection) =
|
|
|
- // await _workflowApplication.PreviousAsync(sendBack.SendBackData,
|
|
|
- // async (workflow1, currentStep1, prevStepDefine, prevStep1, newStep) =>
|
|
|
- // {
|
|
|
- // var stepAssignInfo =
|
|
|
- // await GetOrderPreviousAssignInfoAsync(workflow1, prevStepDefine, prevStep1, cancellationToken);
|
|
|
- // if (stepAssignInfo is null) return;
|
|
|
- // var validator = new StepAssignInfoValidator();
|
|
|
- // await validator.ValidateAndThrowAsync(stepAssignInfo);
|
|
|
- // newStep.Assign(stepAssignInfo);
|
|
|
- // if (sendBack.AssignStepId != prevStep.Id) prevStep1.HandleMode = EHandleMode.PreviousNoDisplay;
|
|
|
- // },
|
|
|
- // cancellationToken);
|
|
|
- // }
|
|
|
- //}
|
|
|
-
|
|
|
var handleMode = EHandleMode.Previous;
|
|
|
WorkflowStep? currentStep, prevStep, newStep, startStep = null;
|
|
|
EFlowDirection flowDirection;
|
|
|
- var userId = _sessionContextProvider.SessionContext.RequiredUserId;
|
|
|
- var orgId = _sessionContextProvider.SessionContext.RequiredOrgId;
|
|
|
- var roles = _sessionContextProvider.SessionContext.Roles;
|
|
|
+ var userId = sendBack.WorkflowUserId;
|
|
|
+ var orgId = sendBack.WorkflowOrgId;
|
|
|
+ var roles = sendBack.WorkflowRoleIds.ToArray();
|
|
|
do
|
|
|
{
|
|
|
(_, currentStep, _, prevStep, newStep, flowDirection) =
|
|
@@ -5209,16 +5190,17 @@ public class OrderApplication : IOrderApplication, IScopeDependency
|
|
|
var validator = new StepAssignInfoValidator();
|
|
|
await validator.ValidateAndThrowAsync(stepAssignInfo);
|
|
|
newStep.Assign(stepAssignInfo);
|
|
|
-
|
|
|
- if (sendBack.AssignStepId != prevStep1.Id) handleMode = EHandleMode.PreviousNoDisplay;
|
|
|
},
|
|
|
cancellationToken);
|
|
|
|
|
|
+ if (sendBack.AssignStepId != prevStep.Id) handleMode = EHandleMode.PreviousNoDisplay;
|
|
|
startStep ??= currentStep;
|
|
|
userId = prevStep.HandlerId;
|
|
|
orgId = prevStep.HandlerOrgId;
|
|
|
roles = [prevStep.RoleId];
|
|
|
- } while (sendBack.AssignStepId != prevStep.Id && prevStep.StepType is not EStepType.Start && !prevStep.IsOrigin);
|
|
|
+ } while (!string.IsNullOrEmpty(sendBack.AssignStepId) &&
|
|
|
+ sendBack.AssignStepId != prevStep.Id &&
|
|
|
+ prevStep.StepType is not EStepType.Start);
|
|
|
|
|
|
sendBack.ApplyOrgId = currentStep.AcceptorOrgId;
|
|
|
sendBack.ApplyOrgName = currentStep!.AcceptorOrgName;
|
|
@@ -5240,17 +5222,20 @@ public class OrderApplication : IOrderApplication, IScopeDependency
|
|
|
if (prevStep.BusinessType == EBusinessType.Send)
|
|
|
{
|
|
|
await _orderRepository.Updateable().SetColumns(o => new Order()
|
|
|
- { CenterToOrgHandlerId = newStep.HandlerId, CenterToOrgHandlerName = newStep.HandlerName, ProcessType = processType, SendBackNum = order.SendBackNum })
|
|
|
+ {
|
|
|
+ CenterToOrgHandlerId = newStep.HandlerId,
|
|
|
+ CenterToOrgHandlerName = newStep.HandlerName,
|
|
|
+ ProcessType = processType,
|
|
|
+ SendBackNum = order.SendBackNum
|
|
|
+ })
|
|
|
.Where(o => o.Id == order.Id).ExecuteCommandAsync(cancellationToken);
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
await _orderRepository.Updateable().SetColumns(o => new Order() { ProcessType = processType, SendBackNum = order.SendBackNum })
|
|
|
- .Where(o => o.Id == order.Id).ExecuteCommandAsync(cancellationToken);
|
|
|
+ .Where(o => o.Id == order.Id).ExecuteCommandAsync(cancellationToken);
|
|
|
}
|
|
|
-
|
|
|
-
|
|
|
- await _orderSendBackAuditRepository.AddAsync(sendBack, cancellationToken);
|
|
|
}
|
|
|
+
|
|
|
#endregion
|
|
|
}
|