|
@@ -5190,6 +5190,7 @@ public class OrderController : BaseController
|
|
|
.Includes(d => d.OrderPublish)
|
|
|
.Includes(d => d.OrderVisit, x => x.OrderVisitDetails)
|
|
|
.Where(d => d.WorkflowId == workflowId)
|
|
|
+ .Where(d=>d.HandleMode != EHandleMode.PreviousNoDisplay)
|
|
|
.OrderBy(d => d.CreationTime)
|
|
|
.ToTreeAsync(d => d.Traces, d => d.ParentId, null);
|
|
|
|
|
@@ -5506,54 +5507,25 @@ public class OrderController : BaseController
|
|
|
var oneSendBack = bool.Parse(_systemSettingCacheManager.GetSetting(SettingConstants.OneOrgSendBack)?.SettingValue[0]);
|
|
|
var twoSendBack = bool.Parse(_systemSettingCacheManager.GetSetting(SettingConstants.TwoOrgSendBack)?.SettingValue[0]);
|
|
|
//var workflow = await _workflowDomainService.GetWorkflowAsync(dto.WorkflowId, withSteps: true, cancellationToken: HttpContext.RequestAborted);
|
|
|
- var order = await _orderRepository
|
|
|
- .Queryable()
|
|
|
- .Includes(d => d.Workflow)
|
|
|
- .FirstAsync(d => d.Id == dto.OrderId);
|
|
|
+ var order = await _orderRepository.Queryable().Includes(d => d.Workflow).FirstAsync(d => d.Id == dto.OrderId);
|
|
|
dto.ExpiredTime = order.ExpiredTime;
|
|
|
- var (currentStep, prevStep, isOrgToCenter, isSecondToFirstOrgLevel) = await _workflowApplication.GetPreviousInformationAsync(
|
|
|
- dto.WorkflowId, _sessionContext.RequiredUserId, _sessionContext.RequiredOrgId, _sessionContext.Roles, HttpContext.RequestAborted);
|
|
|
var audit = new OrderSendBackAudit
|
|
|
{
|
|
|
OrderId = dto.OrderId,
|
|
|
State = ESendBackAuditState.Apply,
|
|
|
Content = dto.Opinion,
|
|
|
SendBackData = dto,
|
|
|
- ApplyOrgId = currentStep.AcceptorOrgId,
|
|
|
- ApplyOrgName = currentStep!.AcceptorOrgName,
|
|
|
- SendBackOrgId = prevStep.HandlerOrgId, //prevStep.AcceptorOrgId,
|
|
|
- SendBackOrgName = prevStep.HandlerOrgName, //prevStep!.AcceptorOrgName,
|
|
|
- SendBackStepName = prevStep.Name,
|
|
|
- WorkflowStepSendBackCrTime = currentStep.CreationTime,
|
|
|
WorkflowOrgId = _sessionContext.RequiredOrgId,
|
|
|
WorkflowUserId = _sessionContext.RequiredUserId,
|
|
|
WorkflowRoleIds = _sessionContext.Roles.ToList(),
|
|
|
Status = order.Status,
|
|
|
- TraceId = currentStep.Id,
|
|
|
- OrderExpiredTime = order.ExpiredTime
|
|
|
+ OrderExpiredTime = order.ExpiredTime,
|
|
|
+ AssignStepId = dto.AssignStepId,
|
|
|
+ IsAssign = !string.IsNullOrEmpty(dto.AssignStepId),
|
|
|
};
|
|
|
audit.InitId();
|
|
|
if (dto.Files.Any())
|
|
|
audit.FileJson = await _fileRepository.AddFileAsync(dto.Files, audit.Id, "", HttpContext.RequestAborted);
|
|
|
- // if (_appOptions.Value.IsZiGong && prevStep.BusinessType == EBusinessType.Send)
|
|
|
- // {
|
|
|
- // // 平均派单
|
|
|
- // var averageSendOrder = bool.Parse(_systemSettingCacheManager.GetSetting(SettingConstants.AverageSendOrder).SettingValue[0]);
|
|
|
- // if (averageSendOrder)
|
|
|
- // {
|
|
|
- // var handler = await _orderDomainService.AverageOrder(HttpContext.RequestAborted);
|
|
|
- // dto.Handler = handler;
|
|
|
- // }
|
|
|
- // }
|
|
|
-
|
|
|
- //todo 需整理各个地市退回业务的需求(指派类型及指派对象)
|
|
|
- //if (workflow.FlowType == EFlowType.Handle) //该逻辑需放在退回操作前依据业务判断
|
|
|
- //{
|
|
|
- // prevStep.FlowAssignType = prevStep.BusinessType is EBusinessType.Seat ? EFlowAssignType.Role :
|
|
|
- // prevStep.BusinessType is EBusinessType.Send ? EFlowAssignType.User : EFlowAssignType.Org;
|
|
|
- //}
|
|
|
-
|
|
|
-
|
|
|
if (oneSendBack || twoSendBack)
|
|
|
{
|
|
|
var sendBack = await _orderSendBackAuditRepository.Queryable()
|
|
@@ -5565,13 +5537,16 @@ public class OrderController : BaseController
|
|
|
.AnyAsync();
|
|
|
if (specialAny) throw UserFriendlyException.SameMessage("工单已存在待审批特提信息!");
|
|
|
if (order.Workflow.IsInCountersign) throw UserFriendlyException.SameMessage("工单会签中,无法进行退回!");
|
|
|
- if (oneSendBack && isOrgToCenter && _appOptions.Value.IsZiGong)
|
|
|
+
|
|
|
+ var (currentStep, prevStep, steps, isOrgToCenter, isSecondToFirstOrgLevel) = await _workflowApplication.GetPreviousInformationAsync(
|
|
|
+ dto.WorkflowId, _sessionContext.RequiredUserId, _sessionContext.RequiredOrgId, _sessionContext.Roles, HttpContext.RequestAborted);
|
|
|
+
|
|
|
+ if (oneSendBack && isOrgToCenter && _appOptions.Value.IsZiGong)
|
|
|
{
|
|
|
if (order.SendBackAuditEndTime.HasValue && order.SendBackAuditEndTime.Value < DateTime.Now)
|
|
|
- throw UserFriendlyException.SameMessage("工单截至退回时间【" + order.SendBackAuditEndTime.Value.ToString("yyyy-MM-dd HH:mm:ss") +
|
|
|
- "】,无法进行退回!");
|
|
|
- var sendBackAgain = await _orderSendBackAuditRepository.Queryable()
|
|
|
- .Where(x => x.OrderId == dto.OrderId && x.IsReturnAgain == false).AnyAsync();
|
|
|
+ throw UserFriendlyException.SameMessage("工单截至退回时间【" + order.SendBackAuditEndTime.Value.ToString("yyyy-MM-dd HH:mm:ss") +"】,无法进行退回!");
|
|
|
+
|
|
|
+ var sendBackAgain = await _orderSendBackAuditRepository.Queryable().Where(x => x.OrderId == dto.OrderId && x.IsReturnAgain == false).AnyAsync();
|
|
|
if (sendBackAgain)
|
|
|
throw UserFriendlyException.SameMessage("工单已不允许退回!");
|
|
|
}
|
|
@@ -5580,102 +5555,39 @@ public class OrderController : BaseController
|
|
|
{
|
|
|
await _orderRepository.Updateable().SetColumns(o => new Orders.Order() { Status = EOrderStatus.SendBackAudit })
|
|
|
.Where(o => o.Id == order.Id).ExecuteCommandAsync(HttpContext.RequestAborted);
|
|
|
- }
|
|
|
+ audit.ApplyOrgId = currentStep.AcceptorOrgId;
|
|
|
+ audit.ApplyOrgName = currentStep!.AcceptorOrgName;
|
|
|
+ ///判断是否指定
|
|
|
+
|
|
|
+ var assignStep = new WorkflowStep();
|
|
|
+ if (audit.IsAssign.Value)
|
|
|
+ {
|
|
|
+ assignStep = steps.FirstOrDefault(x => x.Id == dto.AssignStepId);
|
|
|
+ }
|
|
|
+ audit.SendBackOrgId = audit.IsAssign.Value ? assignStep .HandlerOrgId: prevStep.HandlerOrgId;
|
|
|
+ audit.SendBackOrgName = audit.IsAssign.Value ? assignStep.HandlerOrgName : prevStep.HandlerOrgName;
|
|
|
+ audit.SendBackStepName = audit.IsAssign.Value ? assignStep.Name : prevStep.Name;
|
|
|
+
|
|
|
+ audit.WorkflowStepSendBackCrTime = currentStep.CreationTime;
|
|
|
+ audit.TraceId = currentStep.Id;
|
|
|
+ await _orderSendBackAuditRepository.AddAsync(audit, HttpContext.RequestAborted);
|
|
|
+ }
|
|
|
else
|
|
|
{
|
|
|
audit.State = ESendBackAuditState.End;
|
|
|
audit.AuditUser = "默认通过";
|
|
|
audit.AuditTime = DateTime.Now;
|
|
|
- // if (prevStep.BusinessType == EBusinessType.Send && dto.Handler != null)
|
|
|
- // {
|
|
|
- // await _orderRepository.Updateable().SetColumns(o => new Orders.Order()
|
|
|
- // { CenterToOrgHandlerId = dto.Handler.UserId, CenterToOrgHandlerName = dto.Handler.Username })
|
|
|
- // .Where(o => o.Id == order.Id).ExecuteCommandAsync(HttpContext.RequestAborted);
|
|
|
- // }
|
|
|
-
|
|
|
- var (workflow, currentStep1, prevDefine, prevStep1, newStep, flowDirection) =
|
|
|
- await _workflowApplication.PreviousAsync(dto,
|
|
|
- async (workflow1, currentStep1, prevStepDefine, prevStep1, newStep) =>
|
|
|
- {
|
|
|
- var stepAssignInfo =
|
|
|
- await _orderApplication.GetOrderPreviousAssignInfoAsync(workflow1, prevStepDefine, prevStep1,
|
|
|
- HttpContext.RequestAborted);
|
|
|
- if (stepAssignInfo is null) return;
|
|
|
- var validator = new StepAssignInfoValidator();
|
|
|
- await validator.ValidateAndThrowAsync(stepAssignInfo);
|
|
|
- newStep.Assign(stepAssignInfo);
|
|
|
- },
|
|
|
- HttpContext.RequestAborted);
|
|
|
-
|
|
|
- //记录退回后最新的流程节点
|
|
|
- if (newStep != null && !string.IsNullOrEmpty(newStep.Id))
|
|
|
- audit.NewCurrentStepId = newStep.Id;
|
|
|
-
|
|
|
- if (prevStep.BusinessType == EBusinessType.Send)
|
|
|
- {
|
|
|
- await _orderRepository.Updateable().SetColumns(o => new Order()
|
|
|
- { CenterToOrgHandlerId = newStep.HandlerId, CenterToOrgHandlerName = newStep.HandlerName })
|
|
|
- .Where(o => o.Id == order.Id).ExecuteCommandAsync(HttpContext.RequestAborted);
|
|
|
- }
|
|
|
-
|
|
|
- var processType = flowDirection == EFlowDirection.OrgToCenter || flowDirection == EFlowDirection.CenterToCenter
|
|
|
- ? EProcessType.Zhiban
|
|
|
- : EProcessType.Jiaoban;
|
|
|
- if (currentStep.AcceptorOrgId != OrgSeedData.CenterId && prevStep.BusinessType == EBusinessType.Send)
|
|
|
- order.SendBackNum = order.SendBackNum.HasValue ? order.SendBackNum.Value + 1 : 1;
|
|
|
- await _orderRepository.Updateable().SetColumns(o => new Orders.Order() { ProcessType = processType, SendBackNum = order.SendBackNum })
|
|
|
- .Where(o => o.Id == order.Id).ExecuteCommandAsync(HttpContext.RequestAborted);
|
|
|
- //发送短信TODO
|
|
|
- }
|
|
|
+ await _orderApplication.OrderPrevious(audit, order, HttpContext.RequestAborted);
|
|
|
+ }
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
audit.State = ESendBackAuditState.End;
|
|
|
audit.AuditUser = "默认通过";
|
|
|
audit.AuditTime = DateTime.Now;
|
|
|
- // if (prevStep.BusinessType == EBusinessType.Send && dto.Handler != null)
|
|
|
- // {
|
|
|
- // await _orderRepository.Updateable().SetColumns(o => new Orders.Order()
|
|
|
- // { CenterToOrgHandlerId = dto.Handler.UserId, CenterToOrgHandlerName = dto.Handler.Username })
|
|
|
- // .Where(o => o.Id == order.Id).ExecuteCommandAsync(HttpContext.RequestAborted);
|
|
|
- // }
|
|
|
-
|
|
|
- var (workflow, currentStep1, prevDefine, prevStep1, newStep, flowDirection) =
|
|
|
- await _workflowApplication.PreviousAsync(dto,
|
|
|
- async (workflow1, currentStep1, prevStepDefine, prevStep1, newStep) =>
|
|
|
- {
|
|
|
- var stepAssignInfo =
|
|
|
- await _orderApplication.GetOrderPreviousAssignInfoAsync(workflow1, prevStepDefine, prevStep1, HttpContext.RequestAborted);
|
|
|
- if (stepAssignInfo is null) return;
|
|
|
- var validator = new StepAssignInfoValidator();
|
|
|
- await validator.ValidateAndThrowAsync(stepAssignInfo);
|
|
|
- newStep.Assign(stepAssignInfo);
|
|
|
- },
|
|
|
- HttpContext.RequestAborted);
|
|
|
-
|
|
|
- //记录退回后最新的流程节点
|
|
|
- if (newStep != null && !string.IsNullOrEmpty(newStep.Id))
|
|
|
- audit.NewCurrentStepId = newStep.Id;
|
|
|
+ await _orderApplication.OrderPrevious(audit, order, HttpContext.RequestAborted);
|
|
|
|
|
|
- if (prevStep.BusinessType == EBusinessType.Send)
|
|
|
- {
|
|
|
- await _orderRepository.Updateable().SetColumns(o => new Order()
|
|
|
- { CenterToOrgHandlerId = newStep.HandlerId, CenterToOrgHandlerName = newStep.HandlerName })
|
|
|
- .Where(o => o.Id == order.Id).ExecuteCommandAsync(HttpContext.RequestAborted);
|
|
|
- }
|
|
|
-
|
|
|
- var processType = flowDirection == EFlowDirection.OrgToCenter || flowDirection == EFlowDirection.CenterToCenter
|
|
|
- ? EProcessType.Zhiban
|
|
|
- : EProcessType.Jiaoban;
|
|
|
- if (currentStep.AcceptorOrgId != OrgSeedData.CenterId && prevStep.BusinessType == EBusinessType.Send)
|
|
|
- order.SendBackNum = order.SendBackNum.HasValue ? order.SendBackNum.Value + 1 : 1;
|
|
|
- await _orderRepository.Updateable().SetColumns(o => new Orders.Order() { ProcessType = processType, SendBackNum = order.SendBackNum })
|
|
|
- .Where(o => o.Id == order.Id).ExecuteCommandAsync(HttpContext.RequestAborted);
|
|
|
-
|
|
|
- //发送短信TODO
|
|
|
- }
|
|
|
-
|
|
|
- await _orderSendBackAuditRepository.AddAsync(audit, HttpContext.RequestAborted);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
@@ -5706,7 +5618,7 @@ public class OrderController : BaseController
|
|
|
var order = await _orderRepository.Queryable().Includes(d => d.Workflow).FirstAsync(d => d.Id == sendBack.OrderId);
|
|
|
if (_appOptions.Value.IsZiGong)
|
|
|
{
|
|
|
- var (currentStep, prevStep, isOrgToCenter, isSecondToFirstOrgLevel) = await _workflowApplication.GetPreviousInformationAsync(
|
|
|
+ var (currentStep, prevStep,steps ,isOrgToCenter, isSecondToFirstOrgLevel) = await _workflowApplication.GetPreviousInformationAsync(
|
|
|
order.WorkflowId, sendBack.WorkflowUserId, sendBack.WorkflowOrgId, sendBack.WorkflowRoleIds.ToArray(),
|
|
|
HttpContext.RequestAborted);
|
|
|
|
|
@@ -5719,60 +5631,17 @@ public class OrderController : BaseController
|
|
|
var handler = await _orderDomainService.AverageOrder(HttpContext.RequestAborted);
|
|
|
sendBack.SendBackData.Handler = handler;
|
|
|
}
|
|
|
-
|
|
|
- await _orderRepository.Updateable().SetColumns(o => new Orders.Order()
|
|
|
- {
|
|
|
- CenterToOrgHandlerId = sendBack.SendBackData.Handler.UserId,
|
|
|
- CenterToOrgHandlerName = sendBack.SendBackData.Handler.Username
|
|
|
- })
|
|
|
- .Where(o => o.Id == sendBack.Id).ExecuteCommandAsync(HttpContext.RequestAborted);
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
- //string applicantId, string applicantOrgId, string[] applicantRoleIds,
|
|
|
- // ISessionContext current, CancellationToken cancellationToken);
|
|
|
sendBack.SendBackData.ExpiredTime = order.ExpiredTime;
|
|
|
- //var result = await _workflowApplication.PreviousAsync(sendBack.SendBackData, sendBack.WorkflowUserId,
|
|
|
- // sendBack.WorkflowOrgId, sendBack.WorkflowRoleIds.ToArray(),
|
|
|
- // cancellationToken: HttpContext.RequestAborted);
|
|
|
-
|
|
|
- var (workflow, currentStep1, prevDefine, prevStep1, newStep, flowDirection) =
|
|
|
- await _workflowApplication.PreviousAsync(sendBack.SendBackData,
|
|
|
- sendBack.WorkflowUserId, sendBack.WorkflowOrgId, sendBack.WorkflowRoleIds.ToArray(),
|
|
|
- async (workflow1, currentStep1, prevStepDefine, prevStep1, newStep) =>
|
|
|
- {
|
|
|
- var stepAssignInfo =
|
|
|
- await _orderApplication.GetOrderPreviousAssignInfoAsync(workflow1, prevStepDefine,
|
|
|
- prevStep1, HttpContext.RequestAborted);
|
|
|
- if (stepAssignInfo is null) return;
|
|
|
- var validator = new StepAssignInfoValidator();
|
|
|
- await validator.ValidateAndThrowAsync(stepAssignInfo);
|
|
|
- newStep.Assign(stepAssignInfo);
|
|
|
- },
|
|
|
- HttpContext.RequestAborted);
|
|
|
-
|
|
|
- //var flowDirection = await _workflowApplication.PreviousAsync(sendBack.SendBackData, sendBack.WorkflowUserId, HttpContext.RequestAborted);
|
|
|
- var processType = flowDirection == EFlowDirection.OrgToCenter ||
|
|
|
- flowDirection == EFlowDirection.CenterToCenter
|
|
|
- ? EProcessType.Zhiban
|
|
|
- : EProcessType.Jiaoban;
|
|
|
- if (sendBack.ApplyOrgId != OrgSeedData.CenterId && sendBack.SendBackOrgId == OrgSeedData.CenterId)
|
|
|
- order.SendBackNum = order.SendBackNum.HasValue ? order.SendBackNum.Value + 1 : 1;
|
|
|
- await _orderRepository.Updateable().SetColumns(o => new Orders.Order() { ProcessType = processType, SendBackNum = order.SendBackNum })
|
|
|
- .Where(o => o.Id == sendBack.OrderId).ExecuteCommandAsync(HttpContext.RequestAborted);
|
|
|
-
|
|
|
- //记录退回后最新的流程节点
|
|
|
- if (newStep != null && !string.IsNullOrEmpty(newStep.Id))
|
|
|
- sendBack.NewCurrentStepId = newStep.Id;
|
|
|
- //发送短信TODO
|
|
|
- }
|
|
|
+ await _orderApplication.OrderPrevious(sendBack, order, HttpContext.RequestAborted);
|
|
|
+ }
|
|
|
else
|
|
|
{
|
|
|
await _orderRepository.Updateable().SetColumns(o => new Orders.Order() { Status = sendBack.Status.Value })
|
|
|
.Where(o => o.Id == sendBack.OrderId).ExecuteCommandAsync(HttpContext.RequestAborted);
|
|
|
- }
|
|
|
-
|
|
|
- await _orderSendBackAuditRepository.UpdateAsync(sendBack, HttpContext.RequestAborted);
|
|
|
+ await _orderSendBackAuditRepository.UpdateAsync(sendBack, HttpContext.RequestAborted);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
@@ -5804,7 +5673,7 @@ public class OrderController : BaseController
|
|
|
var order = await _orderRepository.Queryable().Includes(d => d.Workflow).FirstAsync(d => d.Id == sendBack.OrderId);
|
|
|
if (_appOptions.Value.IsZiGong)
|
|
|
{
|
|
|
- var (currentStep, prevStep, isOrgToCenter, isSecondToFirstOrgLevel) = await _workflowApplication.GetPreviousInformationAsync(
|
|
|
+ var (currentStep, prevStep,steps, isOrgToCenter, isSecondToFirstOrgLevel) = await _workflowApplication.GetPreviousInformationAsync(
|
|
|
order.WorkflowId, sendBack.WorkflowUserId, sendBack.WorkflowOrgId, sendBack.WorkflowRoleIds.ToArray(),
|
|
|
HttpContext.RequestAborted);
|
|
|
if (prevStep.BusinessType == EBusinessType.Send)
|
|
@@ -5816,57 +5685,20 @@ public class OrderController : BaseController
|
|
|
var handler = await _orderDomainService.AverageOrder(HttpContext.RequestAborted);
|
|
|
sendBack.SendBackData.Handler = handler;
|
|
|
}
|
|
|
-
|
|
|
- await _orderRepository.Updateable().SetColumns(o => new Orders.Order()
|
|
|
- {
|
|
|
- CenterToOrgHandlerId = sendBack.SendBackData.Handler.UserId,
|
|
|
- CenterToOrgHandlerName = sendBack.SendBackData.Handler.Username
|
|
|
- })
|
|
|
- .Where(o => o.Id == sendBack.Id).ExecuteCommandAsync(HttpContext.RequestAborted);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
sendBack.SendBackData.ExpiredTime = order.ExpiredTime;
|
|
|
- //var result = await _workflowApplication.PreviousAsync(sendBack.SendBackData,
|
|
|
- // sendBack.WorkflowUserId, sendBack.WorkflowOrgId, sendBack.WorkflowRoleIds.ToArray(),
|
|
|
- // cancellationToken: HttpContext.RequestAborted);
|
|
|
- //var flowDirection = await _workflowApplication.PreviousAsync(sendBack.SendBackData, sendBack.WorkflowUserId, HttpContext.RequestAborted);
|
|
|
-
|
|
|
- var (workflow, currentStep1, prevDefine, prevStep1, newStep, flowDirection) =
|
|
|
- await _workflowApplication.PreviousAsync(sendBack.SendBackData,
|
|
|
- sendBack.WorkflowUserId, sendBack.WorkflowOrgId, sendBack.WorkflowRoleIds.ToArray(),
|
|
|
- async (workflow1, currentStep1, prevStepDefine, prevStep1, newStep) =>
|
|
|
- {
|
|
|
- var stepAssignInfo =
|
|
|
- await _orderApplication.GetOrderPreviousAssignInfoAsync(workflow1, prevStepDefine,
|
|
|
- prevStep1, HttpContext.RequestAborted);
|
|
|
- if (stepAssignInfo is null) return;
|
|
|
- var validator = new StepAssignInfoValidator();
|
|
|
- await validator.ValidateAndThrowAsync(stepAssignInfo);
|
|
|
- newStep.Assign(stepAssignInfo);
|
|
|
- },
|
|
|
- HttpContext.RequestAborted);
|
|
|
-
|
|
|
- var processType = flowDirection == EFlowDirection.OrgToCenter || flowDirection == EFlowDirection.CenterToCenter
|
|
|
- ? EProcessType.Zhiban
|
|
|
- : EProcessType.Jiaoban;
|
|
|
- if (sendBack.ApplyOrgId != OrgSeedData.CenterId && sendBack.SendBackOrgId == OrgSeedData.CenterId)
|
|
|
- order.SendBackNum = order.SendBackNum.HasValue ? order.SendBackNum.Value + 1 : 1;
|
|
|
- await _orderRepository.Updateable().SetColumns(o => new Orders.Order() { ProcessType = processType, SendBackNum = order.SendBackNum })
|
|
|
- .Where(o => o.Id == sendBack.OrderId).ExecuteCommandAsync(HttpContext.RequestAborted);
|
|
|
-
|
|
|
- //记录退回后最新的流程节点
|
|
|
- if (newStep != null && !string.IsNullOrEmpty(newStep.Id))
|
|
|
- sendBack.NewCurrentStepId = newStep.Id;
|
|
|
- //发送短信TODO
|
|
|
- }
|
|
|
+ await _orderApplication.OrderPrevious(sendBack, order, HttpContext.RequestAborted);
|
|
|
+ }
|
|
|
else
|
|
|
{
|
|
|
await _orderRepository.Updateable().SetColumns(o => new Orders.Order() { Status = sendBack.Status.Value })
|
|
|
.Where(o => o.Id == sendBack.OrderId).ExecuteCommandAsync(HttpContext.RequestAborted);
|
|
|
- }
|
|
|
+ await _orderSendBackAuditRepository.UpdateAsync(sendBack, HttpContext.RequestAborted);
|
|
|
+ }
|
|
|
|
|
|
- await _orderSendBackAuditRepository.UpdateAsync(sendBack, HttpContext.RequestAborted);
|
|
|
+
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -5965,8 +5797,24 @@ public class OrderController : BaseController
|
|
|
if (string.IsNullOrEmpty(order.WorkflowId))
|
|
|
throw UserFriendlyException.SameMessage("该工单未开启流程");
|
|
|
|
|
|
- var (currentStep, prevStep, isOrgToCenter, isSecondToFirstOrgLevel) = await _workflowApplication.GetPreviousInformationAsync(
|
|
|
+ var (currentStep, prevStep,steps, isOrgToCenter, isSecondToFirstOrgLevel) = await _workflowApplication.GetPreviousInformationAsync(
|
|
|
order.WorkflowId, _sessionContext.RequiredUserId, _sessionContext.RequiredOrgId, _sessionContext.Roles, HttpContext.RequestAborted);
|
|
|
+ ///查询上一节点是否是领导节点
|
|
|
+ ///ture 流程排除领导节点 排除当前节点 prevStep.BusinessType == EBusinessType.DepartmentLeader
|
|
|
+ if (_appOptions.Value.IsYiBin && prevStep.Name.Contains("领导"))
|
|
|
+ {
|
|
|
+ var step = steps.Where(x=> !x.Name.Contains("领导") && x.Code != currentStep.Code).OrderByDescending(x=>x.CreationTime).FirstOrDefault();
|
|
|
+ var resStep = new List<WorkflowStep>
|
|
|
+ {
|
|
|
+ step,
|
|
|
+ prevStep
|
|
|
+ };
|
|
|
+ return new TargetStepInfo {
|
|
|
+ CurrentBusinessType = currentStep.BusinessType,
|
|
|
+ TargetBusinessType = prevStep.BusinessType,
|
|
|
+ Steps = _mapper.Map<List<TargetStep>>(resStep)
|
|
|
+ };
|
|
|
+ }
|
|
|
|
|
|
return new TargetStepInfo
|
|
|
{
|