|
@@ -2362,16 +2362,22 @@ public class OrderController : BaseController
|
|
|
var fail = 0;
|
|
|
var success = 0;
|
|
|
var workflowDto = dto.NextWorkflow;
|
|
|
- foreach (var item in dto.DelayId)
|
|
|
+ var delays = await _orderDelayRepository.Queryable()
|
|
|
+ .Includes(x => x.Order)
|
|
|
+ .Includes(x => x.Workflow, d => d.WorkflowDefinition)
|
|
|
+ .Includes(x => x.Workflow, d => d.Steps)
|
|
|
+ .Includes(x => x.Workflow, d => d.Traces)
|
|
|
+ .Includes(x => x.Workflow, d => d.Countersigns)
|
|
|
+ .Where(x => dto.DelayId.Contains(x.Id))
|
|
|
+ .ToListAsync(HttpContext.RequestAborted);
|
|
|
+
|
|
|
+ var updateDelays = new List<OrderDelay>();
|
|
|
+ foreach (var delay in delays)
|
|
|
{
|
|
|
try
|
|
|
{
|
|
|
- var delay = await _orderDelayRepository.Queryable().Includes(x => x.Order).Where(x => x.Id == item)
|
|
|
- .FirstAsync(HttpContext.RequestAborted);
|
|
|
- workflowDto.WorkflowId = delay.WorkflowId;
|
|
|
- var workflowEntuty = await _workflowDomainService.GetWorkflowAsync(workflowDto.WorkflowId, withDefine: true, withSteps: true,
|
|
|
- cancellationToken: HttpContext.RequestAborted);
|
|
|
- var currentStep = workflowEntuty.Steps.FirstOrDefault(d =>
|
|
|
+
|
|
|
+ var currentStep = delay.Workflow.Steps.FirstOrDefault(d =>
|
|
|
d.Status == EWorkflowStepStatus.WaitForAccept || d.Status == EWorkflowStepStatus.WaitForHandle);
|
|
|
|
|
|
NextStepsWithOpinionDto<NextStepOption> next = null;
|
|
@@ -2414,8 +2420,44 @@ public class OrderController : BaseController
|
|
|
workflowDto.StepId = next.StepId;
|
|
|
workflowDto.ReviewResult = dto.IsPass ? EReviewResult.Approval : EReviewResult.Failed;
|
|
|
|
|
|
- if (workflowDto.ReviewResult == EReviewResult.Approval)
|
|
|
+ if (dto.IsPass)
|
|
|
{
|
|
|
+ //处理工单延期
|
|
|
+ var order = delay.Order;
|
|
|
+ var expiredTimeBase = DateTime.Now;
|
|
|
+ if (_appOptions.Value.IsZiGong)
|
|
|
+ {
|
|
|
+ expiredTimeBase = order.ExpiredTime.Value;
|
|
|
+ }
|
|
|
+
|
|
|
+ var startTime = DateTime.Now;
|
|
|
+ if (order.CenterToOrgTime.HasValue)
|
|
|
+ {
|
|
|
+ startTime = order.CenterToOrgTime!.Value;
|
|
|
+ }
|
|
|
+
|
|
|
+ var expiredTimeConfig =
|
|
|
+ await _expireTime.CalcEndTime(expiredTimeBase, startTime, new TimeConfig(delay.DelayNum, delay.DelayUnit), order.AcceptTypeCode);
|
|
|
+ order.ExpiredTime = expiredTimeConfig.ExpiredTime;
|
|
|
+ order.NearlyExpiredTime = expiredTimeConfig.NearlyExpiredTime;
|
|
|
+ order.NearlyExpiredTimeOne = expiredTimeConfig.NearlyExpiredTimeOne;
|
|
|
+ //TODO发送短信即将超期
|
|
|
+ if (delay.IsProDelay)
|
|
|
+ {
|
|
|
+ order.ExpiredTimeProvince = expiredTimeConfig.ExpiredTime;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (string.IsNullOrEmpty(order.WorkflowId))
|
|
|
+ throw new UserFriendlyException("该工单流程id异常");
|
|
|
+ await _workflowDomainService.UpdateUnhandleExpiredTimeAsync(order.WorkflowId, expiredTimeConfig.ExpiredTime, cancellationToken);
|
|
|
+
|
|
|
+ await _orderRepository.UpdateAsync(order, cancellationToken);
|
|
|
+
|
|
|
+ var orderDto = _mapper.Map<OrderDto>(order);
|
|
|
+ await _capPublisher.PublishAsync(Hotline.Share.Mq.EventNames.HotlineOrderExpiredTimeUpdate, orderDto,
|
|
|
+ cancellationToken: cancellationToken);
|
|
|
+
|
|
|
+
|
|
|
var isBatch = next.Steps.Where(x => x.Value == workflowDto.NextStepName).Any();
|
|
|
if (isBatch)
|
|
|
{
|
|
@@ -2430,7 +2472,8 @@ public class OrderController : BaseController
|
|
|
continue;
|
|
|
}
|
|
|
|
|
|
- await _workflowDomainService.NextAsync(workflowDto, cancellationToken: HttpContext.RequestAborted);
|
|
|
+ await _workflowDomainService.NextAsync(delay.Workflow, workflowDto,
|
|
|
+ cancellationToken: HttpContext.RequestAborted);
|
|
|
}
|
|
|
else
|
|
|
{
|
|
@@ -2439,6 +2482,13 @@ public class OrderController : BaseController
|
|
|
}
|
|
|
|
|
|
success++;
|
|
|
+
|
|
|
+ delay.DelayState = dto.IsPass ? EDelayState.Pass : EDelayState.NoPass;
|
|
|
+ updateDelays.Add(delay);
|
|
|
+ //await _orderDelayRepository.Updateable(delay)
|
|
|
+ // .UpdateColumns(d => d.DelayState)
|
|
|
+ // .ExecuteCommandAsync(cancellationToken);
|
|
|
+
|
|
|
}
|
|
|
catch (UserFriendlyException e)
|
|
|
{
|
|
@@ -5219,7 +5269,7 @@ public class OrderController : BaseController
|
|
|
|
|
|
// 随手拍业务处理
|
|
|
await _orderSnapshotApplication.SaveOrderWorkflowInfo(dto);
|
|
|
-
|
|
|
+
|
|
|
//await _workflowApplication.NextAsync(dto.WorkflowDto, order.ExpiredTime, HttpContext.RequestAborted);
|
|
|
var startStep = workflow.Steps.First(d => d.Id == dto.Workflow.StepId);
|
|
|
await HandleOrderAsync(order, workflow, startStep, dto.Data, dto.Workflow, HttpContext.RequestAborted);
|
|
@@ -5600,7 +5650,7 @@ public class OrderController : BaseController
|
|
|
if (string.IsNullOrEmpty(order.WorkflowId))
|
|
|
throw UserFriendlyException.SameMessage("该工单未开启流程");
|
|
|
var dto = await _workflowApplication.GetNextStepsAsync(order.WorkflowId, HttpContext.RequestAborted);
|
|
|
-
|
|
|
+
|
|
|
dto.ExpiredTime = order.ExpiredTime;
|
|
|
dto.Content = order.Content;
|
|
|
var rsp = _mapper.Map<NextStepsWithOpinionDto<RecommendStepOption>>(dto);
|