|
@@ -608,22 +608,23 @@ public class OrderController : BaseController
|
|
|
/// <returns></returns>
|
|
|
[Permission(EPermission.ApplyDelay)]
|
|
|
[HttpPost("delay")]
|
|
|
- public async Task ApplyDelay([FromBody] ApplyDelayDto dto)
|
|
|
+ public async Task ApplyDelay([FromBody] DelayStartFlowDto dto)
|
|
|
{
|
|
|
+ var delaydto = _mapper.Map<ApplyDelayDto>(dto.Data);
|
|
|
//验证工单是否可以申请
|
|
|
- var order = await _orderRepository.GetAsync(dto.OrderId, HttpContext.RequestAborted);
|
|
|
+ var order = await _orderRepository.GetAsync(delaydto.OrderId, HttpContext.RequestAborted);
|
|
|
if (order is null)
|
|
|
throw UserFriendlyException.SameMessage("无效工单");
|
|
|
//验证工单是否在办理中
|
|
|
if (order.Status == EOrderStatus.WaitForAccept || order.Status == EOrderStatus.Filed)
|
|
|
throw UserFriendlyException.SameMessage("当前工单状态不能申请延期");
|
|
|
|
|
|
- bool IsHas = await _orderDelayRepository.AnyAsync(x => x.OrderId == dto.OrderId && x.DelayState == EDelayState.Examining, HttpContext.RequestAborted);
|
|
|
+ bool IsHas = await _orderDelayRepository.AnyAsync(x => x.OrderId == delaydto.OrderId && x.DelayState == EDelayState.Examining, HttpContext.RequestAborted);
|
|
|
if (IsHas)
|
|
|
throw UserFriendlyException.SameMessage("该存在延期申请正在审核");
|
|
|
//验证延期次数
|
|
|
var setting = _systemSettingCacheManager.GetSetting(SettingConstants.DelayNum);
|
|
|
- int count = await _orderDelayRepository.CountAsync(x => x.OrderId == dto.OrderId);
|
|
|
+ int count = await _orderDelayRepository.CountAsync(x => x.OrderId == delaydto.OrderId);
|
|
|
if (count > int.Parse(setting?.SettingValue[0]))
|
|
|
throw UserFriendlyException.SameMessage("延期申请已超过系统预定设置,不能申请");
|
|
|
|
|
@@ -635,11 +636,24 @@ public class OrderController : BaseController
|
|
|
model.DelayState = EDelayState.Examining;
|
|
|
if (model.BeforeDelay != null)
|
|
|
{
|
|
|
- model.AfterDelay = _timeLimitDomainService.CalcEndTime(model.BeforeDelay.Value, dto.DelayUnit, dto.DelayNum, false)?.EndTime;
|
|
|
+ model.AfterDelay = _timeLimitDomainService.CalcEndTime(model.BeforeDelay.Value, delaydto.DelayUnit, delaydto.DelayNum, false)?.EndTime;
|
|
|
}
|
|
|
model.ApplyDelayTime = DateTime.Now;
|
|
|
model.No = order.No;
|
|
|
- await _orderDelayRepository.AddAsync(model, HttpContext.RequestAborted);
|
|
|
+ var id = await _orderDelayRepository.AddAsync(model, HttpContext.RequestAborted);
|
|
|
+ try
|
|
|
+ {
|
|
|
+
|
|
|
+ var startDto = _mapper.Map<StartWorkflowDto>(dto.Workflow);
|
|
|
+ startDto.DefinitionModuleCode = WorkflowModuleConsts.OrderDelay;
|
|
|
+ startDto.Title = model.DelayReason;
|
|
|
+ await _workflowApplication.StartWorkflowAsync(startDto, id, HttpContext.RequestAborted);
|
|
|
+ }
|
|
|
+ catch (Exception ex)
|
|
|
+ {
|
|
|
+ await _orderDelayRepository.RemoveAsync(id, false, HttpContext.RequestAborted);
|
|
|
+ throw new UserFriendlyException($"工单延期流程失败!, {ex.Message}", "工单延期流程失败");
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
/// <summary>
|