|
@@ -2752,31 +2752,41 @@ public class OrderController : BaseController
|
|
|
var twoSendBack = bool.Parse(_systemSettingCacheManager.GetSetting(SettingConstants.TwoOrgSendBack)?.SettingValue[0]);
|
|
|
if (oneSendBack || twoSendBack)
|
|
|
{
|
|
|
- var (currentStep, prevStep,isOrgToCenter, isSecondToFirstOrgLevel) = await _workflowApplication.GetPreviousInformationAsync(
|
|
|
+ var workflow = await _workflowDomainService.GetWorkflowAsync(dto.WorkflowId, withSteps: true, cancellationToken: HttpContext.RequestAborted);
|
|
|
+ var (currentStep, prevStep,isOrgToCenter, isSecondToFirstOrgLevel) = await _workflowApplication.GetPreviousInformationAsync(
|
|
|
dto.WorkflowId, _sessionContext.RequiredUserId, _sessionContext.RequiredOrgId, HttpContext.RequestAborted);
|
|
|
- if ((oneSendBack && isOrgToCenter) || (twoSendBack && isSecondToFirstOrgLevel))
|
|
|
- {
|
|
|
- var workflow = await _workflowDomainService.GetWorkflowAsync(dto.WorkflowId, withSteps: true, cancellationToken: HttpContext.RequestAborted);
|
|
|
- var audit = new OrderSendBackAudit
|
|
|
- {
|
|
|
- OrderId = workflow.ExternalId,
|
|
|
- State = ESendBackAuditState.Apply,
|
|
|
- Content = dto.Opinion,
|
|
|
- SendBackData = dto,
|
|
|
- ApplyOrgId = currentStep.AcceptorOrgId,
|
|
|
- ApplyOrgName = currentStep!.AcceptorOrgName,
|
|
|
- SendBackOrgId = prevStep.HandlerOrgId,//prevStep.AcceptorOrgId,
|
|
|
- SendBackOrgName = prevStep.HandlerOrgName,//prevStep!.AcceptorOrgName,
|
|
|
- WorkflowOrgId = _sessionContext.RequiredOrgId,
|
|
|
- WorkflowUserId = _sessionContext.RequiredUserId
|
|
|
- };
|
|
|
- await _orderSendBackAuditRepository.AddAsync(audit, HttpContext.RequestAborted);
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- await _workflowApplication.PreviousAsync(dto, HttpContext.RequestAborted);
|
|
|
- //发送短信TODO
|
|
|
- }
|
|
|
+ var sendBack = await _orderSendBackAuditRepository.Queryable().Where(x => x.OrderId == workflow.ExternalId && x.State == ESendBackAuditState.Apply).AnyAsync();
|
|
|
+ if (sendBack)
|
|
|
+ throw UserFriendlyException.SameMessage("当前工单已经生成退回记录");
|
|
|
+
|
|
|
+ var order = await _orderRepository
|
|
|
+ .Queryable()
|
|
|
+ .Includes(d => d.Workflow)
|
|
|
+ .FirstAsync(d => d.Id == workflow.ExternalId);
|
|
|
+ if (order.Workflow.IsInCountersign) throw UserFriendlyException.SameMessage("工单会签中,无法进行退回!");
|
|
|
+ if ((oneSendBack && isOrgToCenter) || (twoSendBack && isSecondToFirstOrgLevel))
|
|
|
+ {
|
|
|
+
|
|
|
+ var audit = new OrderSendBackAudit
|
|
|
+ {
|
|
|
+ OrderId = workflow.ExternalId,
|
|
|
+ State = ESendBackAuditState.Apply,
|
|
|
+ Content = dto.Opinion,
|
|
|
+ SendBackData = dto,
|
|
|
+ ApplyOrgId = currentStep.AcceptorOrgId,
|
|
|
+ ApplyOrgName = currentStep!.AcceptorOrgName,
|
|
|
+ SendBackOrgId = prevStep.HandlerOrgId,//prevStep.AcceptorOrgId,
|
|
|
+ SendBackOrgName = prevStep.HandlerOrgName,//prevStep!.AcceptorOrgName,
|
|
|
+ WorkflowOrgId = _sessionContext.RequiredOrgId,
|
|
|
+ WorkflowUserId = _sessionContext.RequiredUserId
|
|
|
+ };
|
|
|
+ await _orderSendBackAuditRepository.AddAsync(audit, HttpContext.RequestAborted);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ await _workflowApplication.PreviousAsync(dto, HttpContext.RequestAborted);
|
|
|
+ //发送短信TODO
|
|
|
+ }
|
|
|
}
|
|
|
else
|
|
|
{
|