|
@@ -97,7 +97,7 @@ public class OrderController : BaseController
|
|
|
private readonly ITypedCache<EnterpriseVo> _cacheResponse;
|
|
|
private readonly IRepository<OrderSendBackAudit> _orderSendBackAuditRepository;
|
|
|
|
|
|
- public OrderController(
|
|
|
+ public OrderController(
|
|
|
IOrderDomainService orderDomainService,
|
|
|
IOrderRepository orderRepository,
|
|
|
IWorkflowApplication workflowApplication,
|
|
@@ -144,7 +144,7 @@ public class OrderController : BaseController
|
|
|
ILogger<OrderController> logger,
|
|
|
ITypedCache<EnterpriseVo> cacheResponse,
|
|
|
IRepository<OrderSendBackAudit> orderSendBackAuditRepository
|
|
|
- )
|
|
|
+ )
|
|
|
{
|
|
|
_orderDomainService = orderDomainService;
|
|
|
_orderRepository = orderRepository;
|
|
@@ -193,7 +193,7 @@ public class OrderController : BaseController
|
|
|
_cacheResponse = cacheResponse;
|
|
|
_orderSendBackAuditRepository = orderSendBackAuditRepository;
|
|
|
|
|
|
- }
|
|
|
+ }
|
|
|
|
|
|
#region 工单发布
|
|
|
|
|
@@ -732,16 +732,17 @@ public class OrderController : BaseController
|
|
|
}, cancellationToken: HttpContext.RequestAborted);
|
|
|
|
|
|
//推门户
|
|
|
- await _capPublisher.PublishAsync(Hotline.Share.Mq.EventNames.HotlineOrderVisitedWeb, new PublishVisitAllDto(){
|
|
|
- Id = visit.Id,
|
|
|
- Order = orderDto,
|
|
|
- OrderVisitDetails = _mapper.Map<List<VisitDetailDto>>(visit.OrderVisitDetails),
|
|
|
- VisitName = _sessionContext.UserName,
|
|
|
- VisitTime = visit.VisitTime,
|
|
|
- VisitType = visit.VisitType,
|
|
|
- VisitState=visit.VisitState,
|
|
|
- PublishTime = visit.PublishTime,
|
|
|
- },cancellationToken:HttpContext.RequestAborted);
|
|
|
+ await _capPublisher.PublishAsync(Hotline.Share.Mq.EventNames.HotlineOrderVisitedWeb, new PublishVisitAllDto()
|
|
|
+ {
|
|
|
+ Id = visit.Id,
|
|
|
+ Order = orderDto,
|
|
|
+ OrderVisitDetails = _mapper.Map<List<VisitDetailDto>>(visit.OrderVisitDetails),
|
|
|
+ VisitName = _sessionContext.UserName,
|
|
|
+ VisitTime = visit.VisitTime,
|
|
|
+ VisitType = visit.VisitType,
|
|
|
+ VisitState = visit.VisitState,
|
|
|
+ PublishTime = visit.PublishTime,
|
|
|
+ }, cancellationToken: HttpContext.RequestAborted);
|
|
|
}
|
|
|
|
|
|
if (first != null)
|
|
@@ -1137,7 +1138,7 @@ public class OrderController : BaseController
|
|
|
if (count >= int.Parse(setting?.SettingValue[0]))
|
|
|
throw UserFriendlyException.SameMessage("延期申请已超过系统预定设置,不能申请");
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
var model = _mapper.Map<OrderDelay>(delaydto);
|
|
|
model.EmployeeId = _sessionContext.RequiredUserId;
|
|
|
model.EmployeeName = _sessionContext.UserName;
|
|
@@ -1150,7 +1151,7 @@ public class OrderController : BaseController
|
|
|
if (model.BeforeDelay != null)
|
|
|
{
|
|
|
model.AfterDelay = _timeLimitDomainService
|
|
|
- .CalcEndTime(model.BeforeDelay.Value, delaydto.DelayUnit, delaydto.DelayNum, false,order.AcceptTypeCode)?.EndTime; //todo
|
|
|
+ .CalcEndTime(model.BeforeDelay.Value, delaydto.DelayUnit, delaydto.DelayNum, false, order.AcceptTypeCode)?.EndTime; //todo
|
|
|
}
|
|
|
|
|
|
model.ApplyDelayTime = DateTime.Now;
|
|
@@ -1184,7 +1185,7 @@ public class OrderController : BaseController
|
|
|
[HttpGet("delay")]
|
|
|
public async Task<PagedDto<OrderDelayDto>> DelayList([FromQuery] DelayListDto dto)
|
|
|
{
|
|
|
- var (total, items) = await _orderDelayRepository.Queryable(workflowFilter:false)
|
|
|
+ var (total, items) = await _orderDelayRepository.Queryable(workflowFilter: false)
|
|
|
.Includes(x => x.Order)
|
|
|
.Includes(x => x.Workflow)
|
|
|
.WhereIF(!string.IsNullOrEmpty(dto.Keyword),
|
|
@@ -1206,30 +1207,30 @@ public class OrderController : BaseController
|
|
|
[HttpGet("wait_delay")]
|
|
|
public async Task<PagedDto<OrderDelayDto>> WaitDelayList([FromQuery] DelayListDto dto)
|
|
|
{
|
|
|
- var (total, items) = await _orderDelayRepository.Queryable()
|
|
|
- .Includes(x => x.Order)
|
|
|
- .Includes(x => x.Workflow)
|
|
|
- .WhereIF(!string.IsNullOrEmpty(dto.Keyword),
|
|
|
- d => d.Order.Title.Contains(dto.Keyword!) || d.Order.No.Contains(dto.Keyword!))
|
|
|
- .WhereIF(dto.IsApply == true, x => x.DelayState != EDelayState.Examining)
|
|
|
- .WhereIF(dto.IsApply == false, x => x.DelayState == EDelayState.Examining)
|
|
|
- .WhereIF(dto.DelayState != null, x => x.DelayState == dto.DelayState)
|
|
|
- .OrderByDescending(x => x.ApplyDelayTime)
|
|
|
- .ToPagedListAsync(dto.PageIndex, dto.PageSize, HttpContext.RequestAborted);
|
|
|
-
|
|
|
- return new PagedDto<OrderDelayDto>(total, _mapper.Map<IReadOnlyList<OrderDelayDto>>(items));
|
|
|
- }
|
|
|
-
|
|
|
- /// <summary>
|
|
|
- /// 延期详情
|
|
|
- /// </summary>
|
|
|
- /// <param name="id"></param>
|
|
|
- /// <returns></returns>
|
|
|
- //[Permission(EPermission.DelayEntity)]
|
|
|
- [HttpGet("delay/{id}")]
|
|
|
+ var (total, items) = await _orderDelayRepository.Queryable()
|
|
|
+ .Includes(x => x.Order)
|
|
|
+ .Includes(x => x.Workflow)
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.Keyword),
|
|
|
+ d => d.Order.Title.Contains(dto.Keyword!) || d.Order.No.Contains(dto.Keyword!))
|
|
|
+ .WhereIF(dto.IsApply == true, x => x.DelayState != EDelayState.Examining)
|
|
|
+ .WhereIF(dto.IsApply == false, x => x.DelayState == EDelayState.Examining)
|
|
|
+ .WhereIF(dto.DelayState != null, x => x.DelayState == dto.DelayState)
|
|
|
+ .OrderByDescending(x => x.ApplyDelayTime)
|
|
|
+ .ToPagedListAsync(dto.PageIndex, dto.PageSize, HttpContext.RequestAborted);
|
|
|
+
|
|
|
+ return new PagedDto<OrderDelayDto>(total, _mapper.Map<IReadOnlyList<OrderDelayDto>>(items));
|
|
|
+ }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 延期详情
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="id"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ //[Permission(EPermission.DelayEntity)]
|
|
|
+ [HttpGet("delay/{id}")]
|
|
|
public async Task<OrderDelayDto> DelayEntity(string id)
|
|
|
{
|
|
|
- var model = await _orderDelayRepository.Queryable(workflowFilter:false)
|
|
|
+ var model = await _orderDelayRepository.Queryable(workflowFilter: false)
|
|
|
.Includes(x => x.Order)
|
|
|
.Includes(x => x.Workflow)
|
|
|
.FirstAsync(x => x.Id == id);
|
|
@@ -1251,7 +1252,7 @@ public class OrderController : BaseController
|
|
|
[HttpPost("delay/calc-endtime")]
|
|
|
public async Task<TimeResult?> DelayCalcEndTime([FromBody] DelayCalcEndTimeDto dto)
|
|
|
{
|
|
|
- return _timeLimitDomainService.CalcEndTime(dto.BeginTime, dto.DelayUnit, dto.DelayNum, false,0);
|
|
|
+ return _timeLimitDomainService.CalcEndTime(dto.BeginTime, dto.DelayUnit, dto.DelayNum, false, 0);
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
@@ -1340,7 +1341,7 @@ public class OrderController : BaseController
|
|
|
[HttpGet("screen")]
|
|
|
public async Task<PagedDto<OrderScreenListDto>> ScreenList([FromQuery] ScreenListDto dto)
|
|
|
{
|
|
|
- var query = _orderScreenRepository.Queryable(workflowFilter:false)
|
|
|
+ var query = _orderScreenRepository.Queryable(workflowFilter: false)
|
|
|
.Includes(x => x.Order)
|
|
|
.Includes(x => x.VisitDetail)
|
|
|
.Includes(x => x.Visit, d => d.Order)
|
|
@@ -1350,20 +1351,20 @@ public class OrderController : BaseController
|
|
|
if (dto.Status is EScreenStatus.Apply)
|
|
|
{
|
|
|
query.Where(x => (x.Status == EScreenStatus.Apply || x.Status == EScreenStatus.Approval)
|
|
|
- && ((SqlFunc.JsonArrayLength(x.Workflow.HandlerUsers) > 0
|
|
|
- && SqlFunc.JsonListObjectAny(x.Workflow.HandlerUsers, "Key",_sessionContext.RequiredUserId))
|
|
|
- ||(SqlFunc.JsonArrayLength(x.Workflow.HandlerUsers) == 0
|
|
|
- && SqlFunc.JsonListObjectAny(x.Workflow.HandlerOrgs, "Key",
|
|
|
- _sessionContext.RequiredOrgId))));
|
|
|
+ && ((SqlFunc.JsonArrayLength(x.Workflow.HandlerUsers) > 0
|
|
|
+ && SqlFunc.JsonListObjectAny(x.Workflow.HandlerUsers, "Key", _sessionContext.RequiredUserId))
|
|
|
+ || (SqlFunc.JsonArrayLength(x.Workflow.HandlerUsers) == 0
|
|
|
+ && SqlFunc.JsonListObjectAny(x.Workflow.HandlerOrgs, "Key",
|
|
|
+ _sessionContext.RequiredOrgId))));
|
|
|
}
|
|
|
if (dto.Status.HasValue && dto.Status == EScreenStatus.MyHandle)
|
|
|
{
|
|
|
query.Where(x => (x.Status != EScreenStatus.Apply)
|
|
|
- && ((SqlFunc.JsonArrayLength(x.Workflow.HandlerUsers) > 0
|
|
|
- && SqlFunc.JsonListObjectAny(x.Workflow.HandlerUsers, "Key", _sessionContext.RequiredUserId))
|
|
|
- || (SqlFunc.JsonArrayLength(x.Workflow.HandlerUsers) == 0
|
|
|
- && SqlFunc.JsonListObjectAny(x.Workflow.HandlerOrgs, "Key",
|
|
|
- _sessionContext.RequiredOrgId))));
|
|
|
+ && ((SqlFunc.JsonArrayLength(x.Workflow.HandlerUsers) > 0
|
|
|
+ && SqlFunc.JsonListObjectAny(x.Workflow.HandlerUsers, "Key", _sessionContext.RequiredUserId))
|
|
|
+ || (SqlFunc.JsonArrayLength(x.Workflow.HandlerUsers) == 0
|
|
|
+ && SqlFunc.JsonListObjectAny(x.Workflow.HandlerOrgs, "Key",
|
|
|
+ _sessionContext.RequiredOrgId))));
|
|
|
}
|
|
|
var (total, items) = await query
|
|
|
//.WhereIF(dto.Status.HasValue && dto.Status == EScreenStatus.MyHandle,
|
|
@@ -1400,7 +1401,7 @@ public class OrderController : BaseController
|
|
|
var visit = await _orderVisitRepository.GetAsync(dto.Data.VisitId, HttpContext.RequestAborted);
|
|
|
setting = _systemSettingCacheManager.GetSetting(SettingConstants.ScreenApplyEndTime);
|
|
|
var endTime = _timeLimitDomainService
|
|
|
- .CalcEndTime(visit.VisitTime.Value, ETimeType.WorkDay, int.Parse(setting?.SettingValue[0]), false,0).EndTime;
|
|
|
+ .CalcEndTime(visit.VisitTime.Value, ETimeType.WorkDay, int.Parse(setting?.SettingValue[0]), false, 0).EndTime;
|
|
|
if (DateTime.Now > endTime)
|
|
|
throw UserFriendlyException.SameMessage("甄别申请时限已超过系统预定设置,不能申请");
|
|
|
|
|
@@ -1438,35 +1439,35 @@ public class OrderController : BaseController
|
|
|
}
|
|
|
|
|
|
|
|
|
- /// <summary>
|
|
|
- /// 工单甄别修改后下一步流程
|
|
|
- /// </summary>
|
|
|
- [HttpPost("screen/initial_nextFlow")]
|
|
|
- [LogFilter("开始工单甄别流程")]
|
|
|
- public async Task InitialNextFlow([FromBody] ScreenNextFlowDto dto)
|
|
|
- {
|
|
|
+ /// <summary>
|
|
|
+ /// 工单甄别修改后下一步流程
|
|
|
+ /// </summary>
|
|
|
+ [HttpPost("screen/initial_nextFlow")]
|
|
|
+ [LogFilter("开始工单甄别流程")]
|
|
|
+ public async Task InitialNextFlow([FromBody] ScreenNextFlowDto dto)
|
|
|
+ {
|
|
|
var screen = await _orderScreenRepository.GetAsync(dto.Data.Id);
|
|
|
_mapper.Map(dto.Data, screen);
|
|
|
- if (dto.Data.Files.Any())
|
|
|
- screen.FileJson = await _fileRepository.AddFileAsync(dto.Data.Files, screen.Id, "", HttpContext.RequestAborted);
|
|
|
- await _orderScreenRepository.UpdateAsync(screen, HttpContext.RequestAborted);
|
|
|
- try
|
|
|
- {
|
|
|
+ if (dto.Data.Files.Any())
|
|
|
+ screen.FileJson = await _fileRepository.AddFileAsync(dto.Data.Files, screen.Id, "", HttpContext.RequestAborted);
|
|
|
+ await _orderScreenRepository.UpdateAsync(screen, HttpContext.RequestAborted);
|
|
|
+ try
|
|
|
+ {
|
|
|
dto.NextWorkflow.WorkflowId = screen.WorkflowId;
|
|
|
- await _workflowApplication.NextAsync(dto.NextWorkflow,
|
|
|
- cancellationToken: HttpContext.RequestAborted);
|
|
|
- }
|
|
|
- catch (Exception e)
|
|
|
- {
|
|
|
- throw new UserFriendlyException($"工单甄别下一步流程失败!, {e.Message}", "工单甄别下一步流程失败");
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- /// <summary>
|
|
|
- /// 查询工单甄别流程开启参数
|
|
|
- /// </summary>
|
|
|
- /// <returns></returns>
|
|
|
- [HttpGet("screen/startflow")]
|
|
|
+ await _workflowApplication.NextAsync(dto.NextWorkflow,
|
|
|
+ cancellationToken: HttpContext.RequestAborted);
|
|
|
+ }
|
|
|
+ catch (Exception e)
|
|
|
+ {
|
|
|
+ throw new UserFriendlyException($"工单甄别下一步流程失败!, {e.Message}", "工单甄别下一步流程失败");
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 查询工单甄别流程开启参数
|
|
|
+ /// </summary>
|
|
|
+ /// <returns></returns>
|
|
|
+ [HttpGet("screen/startflow")]
|
|
|
public async Task<NextStepsDto> GetScreenFlowStartOptionsAsync()
|
|
|
{
|
|
|
//return await _workflowApplication.GetStartOptionsAsync(WorkflowModuleConsts.OrderScreen,
|
|
@@ -1510,15 +1511,15 @@ public class OrderController : BaseController
|
|
|
[HttpGet("screen/{id}")]
|
|
|
public async Task<OrderScreenListDto> ScreenEntity(string id)
|
|
|
{
|
|
|
- var model = await _orderScreenRepository.Queryable(workflowFilter:false)
|
|
|
- .Includes(x=> x.Order)
|
|
|
+ var model = await _orderScreenRepository.Queryable(workflowFilter: false)
|
|
|
+ .Includes(x => x.Order)
|
|
|
.Includes(x => x.Workflow)
|
|
|
.Includes(x => x.Visit, d => d.Order)
|
|
|
.FirstAsync(x => x.Id == id);
|
|
|
var rspModel = _mapper.Map<OrderScreenListDto>(model);
|
|
|
rspModel.IsCanHandle = model.Workflow.CanHandle(_sessionContext.RequiredUserId, _sessionContext.RequiredOrgId);
|
|
|
rspModel.Handle = await _workflowDomainService.CheckCurrentIsStartStepAsync(rspModel.WorkflowId, _sessionContext.RequiredUserId, _sessionContext.RequiredOrgId, HttpContext.RequestAborted);
|
|
|
- if (rspModel.FileJson != null && rspModel.FileJson.Any())
|
|
|
+ if (rspModel.FileJson != null && rspModel.FileJson.Any())
|
|
|
{
|
|
|
var ids = rspModel.FileJson.Select(x => x.Id).ToList();
|
|
|
rspModel.Files = await _fileRepository.GetFilesAsync(ids, HttpContext.RequestAborted);
|
|
@@ -2343,27 +2344,41 @@ public class OrderController : BaseController
|
|
|
var setting = _systemSettingCacheManager.GetSetting(SettingConstants.RepeatableEventNum);
|
|
|
return count >= int.Parse(setting?.SettingValue[0] ?? "0");
|
|
|
}
|
|
|
- #endregion
|
|
|
+ #endregion
|
|
|
|
|
|
- #region 工单待办
|
|
|
+ #region 工单待办
|
|
|
|
|
|
- /// <summary>
|
|
|
- /// 查询待办工单
|
|
|
- /// </summary>
|
|
|
- [HttpGet("waited")]
|
|
|
+ /// <summary>
|
|
|
+ /// 查询待办工单
|
|
|
+ /// </summary>
|
|
|
+ [HttpGet("waited")]
|
|
|
public async Task<PagedDto<OrderDto>> QueryWaited([FromQuery] QueryOrderWaitedDto dto)
|
|
|
{
|
|
|
- var (total, items) = await _orderRepository.Queryable()
|
|
|
- .Includes(d => d.Workflow, x => x.Steps)
|
|
|
+ var query = dto.IsHandled.HasValue && !dto.IsHandled.Value
|
|
|
+ ? _orderRepository.Queryable()
|
|
|
+ : _orderRepository.Queryable().Where(d =>
|
|
|
+ SqlFunc.JsonListObjectAny(d.Workflow.HandlerUsers, "Key", _sessionContext.RequiredUserId) ||
|
|
|
+ SqlFunc.JsonListObjectAny(d.Workflow.HandlerOrgs, "Key", _sessionContext.RequiredOrgId));
|
|
|
+
|
|
|
+ var (total, items) = await query
|
|
|
.WhereIF(dto.IsProvince.HasValue, d => d.IsProvince == dto.IsProvince)
|
|
|
- .WhereIF(dto.IsHandled.HasValue && dto.IsHandled.Value, d => d.Workflow.Steps.Any(x => x.Status == EWorkflowStepStatus.Handled))
|
|
|
- .WhereIF(dto.IsHandled.HasValue && !dto.IsHandled.Value, d => d.Workflow.Steps.Any(x => x.Status != EWorkflowStepStatus.Handled))
|
|
|
.WhereIF(!string.IsNullOrEmpty(dto.Keyword),
|
|
|
d => d.No.Contains(dto.Keyword) || d.Title.Contains(dto.Keyword))
|
|
|
.OrderByDescending(d => d.StartTime)
|
|
|
.ToPagedListAsync(dto, HttpContext.RequestAborted);
|
|
|
|
|
|
|
|
|
+ //var (total, items) = await _orderRepository.Queryable()
|
|
|
+ // .Includes(d => d.Workflow, x => x.Steps)
|
|
|
+ // .WhereIF(dto.IsProvince.HasValue, d => d.IsProvince == dto.IsProvince)
|
|
|
+ // .WhereIF(dto.IsHandled.HasValue && dto.IsHandled.Value, d => d.Workflow.Steps.Any(x => x.Status == EWorkflowStepStatus.Handled))
|
|
|
+ // .WhereIF(dto.IsHandled.HasValue && !dto.IsHandled.Value, d => d.Workflow.Steps.Any(x => x.Status != EWorkflowStepStatus.Handled))
|
|
|
+ // .WhereIF(!string.IsNullOrEmpty(dto.Keyword),
|
|
|
+ // d => d.No.Contains(dto.Keyword) || d.Title.Contains(dto.Keyword))
|
|
|
+ // .OrderByDescending(d => d.StartTime)
|
|
|
+ // .ToPagedListAsync(dto, HttpContext.RequestAborted);
|
|
|
+
|
|
|
+
|
|
|
return new PagedDto<OrderDto>(total, _mapper.Map<IReadOnlyList<OrderDto>>(items));
|
|
|
}
|
|
|
|
|
@@ -2394,18 +2409,18 @@ public class OrderController : BaseController
|
|
|
return new PagedDto<OrderDto>(total, _mapper.Map<IReadOnlyList<OrderDto>>(items));
|
|
|
}
|
|
|
|
|
|
- #endregion
|
|
|
+ #endregion
|
|
|
|
|
|
- #region 业务工单退回
|
|
|
+ #region 业务工单退回
|
|
|
|
|
|
- /// <summary>
|
|
|
- /// 工单退回退回(返回前一节点)
|
|
|
- /// </summary>
|
|
|
- [HttpPost("order_previous")]
|
|
|
- public async Task Previous([FromBody] PreviousWorkflowDto dto)
|
|
|
- {
|
|
|
- var oneSendBack = bool.Parse(_systemSettingCacheManager.GetSetting(SettingConstants.OneOrgSendBack)?.SettingValue[0]);
|
|
|
- var twoSendBack = bool.Parse(_systemSettingCacheManager.GetSetting(SettingConstants.TwoOrgSendBack)?.SettingValue[0]);
|
|
|
+ /// <summary>
|
|
|
+ /// 工单退回退回(返回前一节点)
|
|
|
+ /// </summary>
|
|
|
+ [HttpPost("order_previous")]
|
|
|
+ public async Task Previous([FromBody] PreviousWorkflowDto dto)
|
|
|
+ {
|
|
|
+ var oneSendBack = bool.Parse(_systemSettingCacheManager.GetSetting(SettingConstants.OneOrgSendBack)?.SettingValue[0]);
|
|
|
+ var twoSendBack = bool.Parse(_systemSettingCacheManager.GetSetting(SettingConstants.TwoOrgSendBack)?.SettingValue[0]);
|
|
|
if (oneSendBack || twoSendBack)
|
|
|
{
|
|
|
var workflow =
|
|
@@ -2440,15 +2455,16 @@ public class OrderController : BaseController
|
|
|
await _orderSendBackAuditRepository.AddAsync(audit, HttpContext.RequestAborted);
|
|
|
}
|
|
|
//中心内部流转 不走审批流程
|
|
|
- if (sendBackOrg.IsCenter && applyOrg.IsCenter)
|
|
|
+ if (sendBackOrg.IsCenter && applyOrg.IsCenter)
|
|
|
{
|
|
|
- await _workflowApplication.PreviousAsync(dto, HttpContext.RequestAborted);
|
|
|
- }
|
|
|
+ await _workflowApplication.PreviousAsync(dto, HttpContext.RequestAborted);
|
|
|
+ }
|
|
|
}
|
|
|
- else {
|
|
|
- await _workflowApplication.PreviousAsync(dto, HttpContext.RequestAborted);
|
|
|
- }
|
|
|
- }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ await _workflowApplication.PreviousAsync(dto, HttpContext.RequestAborted);
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
/// <summary>
|
|
|
/// 工单业务退回审批
|
|
@@ -2456,52 +2472,52 @@ public class OrderController : BaseController
|
|
|
/// <param name="dto"></param>
|
|
|
/// <returns></returns>
|
|
|
[Permission(EPermission.OrderPreviousAudit)]
|
|
|
- [HttpPost("order_previous_audit")]
|
|
|
- public async Task Audit([FromBody] AuditSendBackDto dto)
|
|
|
- {
|
|
|
- if (dto.State == ESendBackAuditState.Refuse && string.IsNullOrEmpty(dto.AuditContent))
|
|
|
- throw UserFriendlyException.SameMessage("退回拒绝,请填写审批拒绝原因");
|
|
|
- //验证是否存在退回
|
|
|
- var sendBack = await _orderSendBackAuditRepository.GetAsync(dto.Id, HttpContext.RequestAborted);
|
|
|
- if (sendBack is null)
|
|
|
- throw UserFriendlyException.SameMessage("无效退回");
|
|
|
- if (sendBack.State != ESendBackAuditState.Apply)
|
|
|
- throw UserFriendlyException.SameMessage("退回已审批,请勿重复审批");
|
|
|
-
|
|
|
- _mapper.Map(dto, sendBack);
|
|
|
- sendBack.AuditId = _sessionContext.UserId;
|
|
|
- sendBack.AuditUser = _sessionContext.UserName;
|
|
|
- sendBack.AuditTime = DateTime.Now;
|
|
|
-
|
|
|
- //执行退回
|
|
|
- if (sendBack.State == ESendBackAuditState.End)
|
|
|
- {
|
|
|
- await _workflowApplication.OrderPreviousAsync(sendBack.SendBackData,sendBack.WorkflowUserId, HttpContext.RequestAborted);
|
|
|
- }
|
|
|
- await _orderSendBackAuditRepository.UpdateAsync(sendBack, HttpContext.RequestAborted);
|
|
|
- }
|
|
|
-
|
|
|
+ [HttpPost("order_previous_audit")]
|
|
|
+ public async Task Audit([FromBody] AuditSendBackDto dto)
|
|
|
+ {
|
|
|
+ if (dto.State == ESendBackAuditState.Refuse && string.IsNullOrEmpty(dto.AuditContent))
|
|
|
+ throw UserFriendlyException.SameMessage("退回拒绝,请填写审批拒绝原因");
|
|
|
+ //验证是否存在退回
|
|
|
+ var sendBack = await _orderSendBackAuditRepository.GetAsync(dto.Id, HttpContext.RequestAborted);
|
|
|
+ if (sendBack is null)
|
|
|
+ throw UserFriendlyException.SameMessage("无效退回");
|
|
|
+ if (sendBack.State != ESendBackAuditState.Apply)
|
|
|
+ throw UserFriendlyException.SameMessage("退回已审批,请勿重复审批");
|
|
|
+
|
|
|
+ _mapper.Map(dto, sendBack);
|
|
|
+ sendBack.AuditId = _sessionContext.UserId;
|
|
|
+ sendBack.AuditUser = _sessionContext.UserName;
|
|
|
+ sendBack.AuditTime = DateTime.Now;
|
|
|
+
|
|
|
+ //执行退回
|
|
|
+ if (sendBack.State == ESendBackAuditState.End)
|
|
|
+ {
|
|
|
+ await _workflowApplication.OrderPreviousAsync(sendBack.SendBackData, sendBack.WorkflowUserId, HttpContext.RequestAborted);
|
|
|
+ }
|
|
|
+ await _orderSendBackAuditRepository.UpdateAsync(sendBack, HttpContext.RequestAborted);
|
|
|
+ }
|
|
|
+
|
|
|
/// <summary>
|
|
|
/// 工单业务退回审批列表
|
|
|
/// </summary>
|
|
|
/// <param name="dto"></param>
|
|
|
/// <returns></returns>
|
|
|
- [Permission(EPermission.OrderPreviousList)]
|
|
|
- [HttpGet("order_previous_list")]
|
|
|
- public async Task<PagedDto<SendBackDto>> AuditList([FromQuery] SendBackListDto dto)
|
|
|
- {
|
|
|
- var (total, items) = await _orderSendBackAuditRepository.Queryable()
|
|
|
- .Includes(x => x.Order)
|
|
|
- .WhereIF(!string.IsNullOrEmpty(dto.Keyword),
|
|
|
- d => d.Order.Title.Contains(dto.Keyword!) || d.Order.No.Contains(dto.Keyword!))
|
|
|
- .WhereIF(dto.CreationTimeStart.HasValue, d => d.CreationTime >= dto.CreationTimeStart)
|
|
|
- .WhereIF(dto.CreationTimeEnd.HasValue, d => d.CreationTime <= dto.CreationTimeEnd)
|
|
|
- .WhereIF(dto.State.HasValue, d => d.State == dto.State)
|
|
|
- .OrderByDescending(x => x.CreationTime)
|
|
|
- .ToPagedListAsync(dto.PageIndex, dto.PageSize, HttpContext.RequestAborted);
|
|
|
+ [Permission(EPermission.OrderPreviousList)]
|
|
|
+ [HttpGet("order_previous_list")]
|
|
|
+ public async Task<PagedDto<SendBackDto>> AuditList([FromQuery] SendBackListDto dto)
|
|
|
+ {
|
|
|
+ var (total, items) = await _orderSendBackAuditRepository.Queryable()
|
|
|
+ .Includes(x => x.Order)
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.Keyword),
|
|
|
+ d => d.Order.Title.Contains(dto.Keyword!) || d.Order.No.Contains(dto.Keyword!))
|
|
|
+ .WhereIF(dto.CreationTimeStart.HasValue, d => d.CreationTime >= dto.CreationTimeStart)
|
|
|
+ .WhereIF(dto.CreationTimeEnd.HasValue, d => d.CreationTime <= dto.CreationTimeEnd)
|
|
|
+ .WhereIF(dto.State.HasValue, d => d.State == dto.State)
|
|
|
+ .OrderByDescending(x => x.CreationTime)
|
|
|
+ .ToPagedListAsync(dto.PageIndex, dto.PageSize, HttpContext.RequestAborted);
|
|
|
|
|
|
- return new PagedDto<SendBackDto>(total, _mapper.Map<IReadOnlyList<SendBackDto>>(items));
|
|
|
- }
|
|
|
+ return new PagedDto<SendBackDto>(total, _mapper.Map<IReadOnlyList<SendBackDto>>(items));
|
|
|
+ }
|
|
|
|
|
|
/// <summary>
|
|
|
/// 退回详情
|
|
@@ -2511,21 +2527,21 @@ public class OrderController : BaseController
|
|
|
[HttpGet("order_previous/{id}")]
|
|
|
public async Task<OrderSendBackAudit> OrderSendBackEntity(string id)
|
|
|
{
|
|
|
- return await _orderSendBackAuditRepository.Queryable()
|
|
|
- .Includes(x => x.Order)
|
|
|
- .FirstAsync(x => x.Id == id);
|
|
|
+ return await _orderSendBackAuditRepository.Queryable()
|
|
|
+ .Includes(x => x.Order)
|
|
|
+ .FirstAsync(x => x.Id == id);
|
|
|
}
|
|
|
|
|
|
- #endregion
|
|
|
+ #endregion
|
|
|
|
|
|
- #region 省工单退回
|
|
|
+ #region 省工单退回
|
|
|
|
|
|
- /// <summary>
|
|
|
- /// 工单退回列表
|
|
|
- /// </summary>
|
|
|
- /// <param name="dto"></param>
|
|
|
- /// <returns></returns>
|
|
|
- [Permission(EPermission.SendBackOrderList)]
|
|
|
+ /// <summary>
|
|
|
+ /// 工单退回列表
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="dto"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ [Permission(EPermission.SendBackOrderList)]
|
|
|
[HttpGet("send_back")]
|
|
|
public async Task<PagedDto<OrderSendBackDto>> UrgeList([FromQuery] OrderSendBackListDto dto)
|
|
|
{
|