|
@@ -2278,79 +2278,96 @@ public class OrderController : BaseController
|
|
|
[HttpGet("delay")]
|
|
|
public async Task<PagedDto<OrderDelayDto>> DelayList([FromQuery] DelayListDto dto)
|
|
|
{
|
|
|
- var isAdmin = _orderDomainService.IsCheckAdmin();
|
|
|
- var query = _orderDelayRepository.Queryable();
|
|
|
- if (!isAdmin)
|
|
|
- {
|
|
|
- query.Where(d => SqlFunc.Subqueryable<WorkflowTrace>()
|
|
|
- .Where(step => step.ExternalId == d.Id &&
|
|
|
- ((step.FlowAssignType == EFlowAssignType.User && !string.IsNullOrEmpty(step.HandlerId) &&
|
|
|
- step.HandlerId == _sessionContext.RequiredUserId) ||
|
|
|
- (step.FlowAssignType == EFlowAssignType.Org && !string.IsNullOrEmpty(step.HandlerOrgId) &&
|
|
|
- step.HandlerOrgId == _sessionContext.RequiredOrgId) ||
|
|
|
- (step.FlowAssignType == EFlowAssignType.Role && !string.IsNullOrEmpty(step.RoleId) &&
|
|
|
- _sessionContext.Roles.Contains(step.RoleId)) ||
|
|
|
- (step.FlowAssignType == EFlowAssignType.OrgAndRole && !string.IsNullOrEmpty(step.RoleId) &&
|
|
|
- _sessionContext.Roles.Contains(step.RoleId) && !string.IsNullOrEmpty(step.HandlerOrgId) &&
|
|
|
- step.HandlerOrgId == _sessionContext.RequiredOrgId)
|
|
|
- ))
|
|
|
- .Any());
|
|
|
- if (!_sessionContext.OrgIsCenter)
|
|
|
- {
|
|
|
- query.Where(d => d.AutomaticDelayNum == 0 || d.AutomaticDelayNum == null);
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- var (total, items) = await query
|
|
|
- .Includes(d => d.Order)
|
|
|
- .Includes(d => d.Workflow)
|
|
|
- .WhereIF(!string.IsNullOrEmpty(dto.Keyword),
|
|
|
- d => d.Order.Title.Contains(dto.Keyword!) || d.Order.No.Contains(dto.Keyword!))
|
|
|
- .WhereIF(dto.IsApply == true, d => d.DelayState != EDelayState.Examining)
|
|
|
- .WhereIF(dto.IsApply == false, d => d.DelayState == EDelayState.Examining)
|
|
|
- .WhereIF(dto.DelayState != null, d => d.DelayState == dto.DelayState)
|
|
|
- .WhereIF(dto.DataScope is 1, d => d.CreatorId == _sessionContext.RequiredUserId)
|
|
|
- .WhereIF(dto.QueryDelayState is EQueryDelayState.Examining, d => d.DelayState == EDelayState.Examining)
|
|
|
- .WhereIF(dto.QueryDelayState is EQueryDelayState.Pass, d => d.DelayState == EDelayState.Pass)
|
|
|
- .WhereIF(dto.QueryDelayState is EQueryDelayState.NoPass, d => d.DelayState == EDelayState.NoPass)
|
|
|
- .WhereIF(!string.IsNullOrEmpty(dto.CurrentStepName),
|
|
|
- d => !SqlFunc.IsNullOrEmpty(d.WorkflowId) && d.Workflow.ActualHandleStepName == dto.CurrentStepName) //当前节点
|
|
|
- .WhereIF(!string.IsNullOrEmpty(dto.ActualHandlerName),
|
|
|
- d => !SqlFunc.IsNullOrEmpty(d.WorkflowId) && d.Workflow.ActualHandlerName == dto.ActualHandlerName) // 审批人
|
|
|
- .WhereIF(!string.IsNullOrEmpty(dto.OrgLevelOneName), d => d.Order.OrgLevelOneName == dto.OrgLevelOneName) //一级部门
|
|
|
- .WhereIF(dto.StartCreationTime.HasValue && dto.EndCreationTime.HasValue,
|
|
|
- d => d.CreationTime >= dto.StartCreationTime && d.CreationTime <= dto.EndCreationTime) // 申请时间
|
|
|
- .OrderByDescending(d => d.ApplyDelayTime)
|
|
|
+ var (total, items) = await _orderApplication.DelayList(dto)
|
|
|
.ToPagedListAsync(dto.PageIndex, dto.PageSize, HttpContext.RequestAborted);
|
|
|
|
|
|
return new PagedDto<OrderDelayDto>(total, _mapper.Map<IReadOnlyList<OrderDelayDto>>(items));
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
- /// 延期列表
|
|
|
+ /// 延期列表--导出
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="dto"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ [HttpPost("delay/export")]
|
|
|
+ public async Task<FileStreamResult> ExportDelayList([FromBody] ExportExcelDto<DelayListDto> dto)
|
|
|
+ {
|
|
|
+ var query = _orderApplication.DelayList(dto.QueryDto);
|
|
|
+ List<OrderDelay> orders;
|
|
|
+ if (dto.IsExportAll)
|
|
|
+ {
|
|
|
+ orders = await query.ToListAsync(HttpContext.RequestAborted);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ var (_, items) = await query.ToPagedListAsync(dto.QueryDto, HttpContext.RequestAborted);
|
|
|
+ orders = items;
|
|
|
+ }
|
|
|
+
|
|
|
+ var orderDtos = _mapper.Map<ICollection<OrderDelayDto>>(orders);
|
|
|
+
|
|
|
+ dynamic? dynamicClass = DynamicClassHelper.CreateDynamicClass(dto.ColumnInfos);
|
|
|
+
|
|
|
+ var dtos = orderDtos
|
|
|
+ .Select(stu => _mapper.Map(stu, typeof(OrderDelayDto), dynamicClass))
|
|
|
+ .Cast<object>()
|
|
|
+ .ToList();
|
|
|
+
|
|
|
+ var stream = ExcelHelper.CreateStream(dtos);
|
|
|
+ var excelTitle = "延期列表数据";
|
|
|
+
|
|
|
+ return ExcelStreamResult(stream, excelTitle);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 延期待审批
|
|
|
/// </summary>
|
|
|
/// <returns></returns>
|
|
|
[HttpGet("wait_delay")]
|
|
|
public async Task<PagedDto<OrderDelayDto>> WaitDelayList([FromQuery] DelayListDto dto)
|
|
|
{
|
|
|
- var isAdmin = _orderDomainService.IsCheckAdmin();
|
|
|
- var isHandled = dto.IsApply.HasValue && dto.IsApply.Value;
|
|
|
- var (total, items) = await _orderDelayRepository
|
|
|
- .Queryable(hasHandled: isHandled, isAdmin: isAdmin)
|
|
|
- .Includes(d => d.Order)
|
|
|
- .Includes(d => d.Workflow)
|
|
|
- .WhereIF(!string.IsNullOrEmpty(dto.Keyword),
|
|
|
- d => d.Order.Title.Contains(dto.Keyword!) || d.No.Contains(dto.Keyword!))
|
|
|
- //.WhereIF(dto.IsApply == true, d => d.DelayState != EDelayState.Examining)
|
|
|
- .WhereIF(dto.IsApply == false, d => d.DelayState == EDelayState.Examining)
|
|
|
- //.WhereIF(dto.DelayState != null, x => x.DelayState == dto.DelayState)
|
|
|
- //.Where(x=>x.DelayState == EDelayState.Examining)
|
|
|
- .OrderByDescending(d => d.ApplyDelayTime)
|
|
|
- .ToPagedListAsync(dto.PageIndex, dto.PageSize, HttpContext.RequestAborted);
|
|
|
+ var (total, items) = await _orderApplication.WaitDelayList(dto)
|
|
|
+ .ToPagedListAsync(dto.PageIndex, dto.PageSize, HttpContext.RequestAborted);
|
|
|
|
|
|
return new PagedDto<OrderDelayDto>(total, _mapper.Map<IReadOnlyList<OrderDelayDto>>(items));
|
|
|
}
|
|
|
|
|
|
+ /// <summary>
|
|
|
+ /// 延期待审批--导出
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="dto"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ [HttpPost("wait_delay/export")]
|
|
|
+ public async Task<FileStreamResult> ExportWaitDelayList([FromBody] ExportExcelDto<DelayListDto> dto)
|
|
|
+ {
|
|
|
+ var query = _orderApplication.WaitDelayList(dto.QueryDto);
|
|
|
+ List<OrderDelay> orders;
|
|
|
+ if (dto.IsExportAll)
|
|
|
+ {
|
|
|
+ orders = await query.ToListAsync(HttpContext.RequestAborted);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ var (_, items) = await query.ToPagedListAsync(dto.QueryDto, HttpContext.RequestAborted);
|
|
|
+ orders = items;
|
|
|
+ }
|
|
|
+
|
|
|
+ var orderDtos = _mapper.Map<ICollection<OrderDelayDto>>(orders);
|
|
|
+
|
|
|
+ dynamic? dynamicClass = DynamicClassHelper.CreateDynamicClass(dto.ColumnInfos);
|
|
|
+
|
|
|
+ var dtos = orderDtos
|
|
|
+ .Select(stu => _mapper.Map(stu, typeof(OrderDelayDto), dynamicClass))
|
|
|
+ .Cast<object>()
|
|
|
+ .ToList();
|
|
|
+
|
|
|
+ var stream = ExcelHelper.CreateStream(dtos);
|
|
|
+ var excelTitle = "延期待审批数据";
|
|
|
+
|
|
|
+ return ExcelStreamResult(stream, excelTitle);
|
|
|
+ }
|
|
|
+
|
|
|
/// <summary>
|
|
|
/// 延期详情
|
|
|
/// </summary>
|
|
@@ -2591,15 +2608,15 @@ public class OrderController : BaseController
|
|
|
setting = _systemSettingCacheManager.GetSetting(SettingConstants.ScreenApplyEndTime);
|
|
|
if (int.Parse(setting?.SettingValue[0]) > 0)
|
|
|
{
|
|
|
- var visitDetail = await _orderVisitedDetailRepository.GetAsync(dto.Data.VisitDetailId, HttpContext.RequestAborted);
|
|
|
- if (visitDetail.ScreenByEndTime.HasValue)
|
|
|
- {
|
|
|
- if (DateTime.Now > visitDetail.ScreenByEndTime && !_sessionContext.OrgIsCenter)
|
|
|
- {
|
|
|
- throw UserFriendlyException.SameMessage("超过2个工作日不能申请甄别,不能申请");
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
+ var visitDetail = await _orderVisitedDetailRepository.GetAsync(dto.Data.VisitDetailId, HttpContext.RequestAborted);
|
|
|
+ if (visitDetail.ScreenByEndTime.HasValue)
|
|
|
+ {
|
|
|
+ if (DateTime.Now > visitDetail.ScreenByEndTime && !_sessionContext.OrgIsCenter)
|
|
|
+ {
|
|
|
+ throw UserFriendlyException.SameMessage("超过2个工作日不能申请甄别,不能申请");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
var order = await _orderRepository.GetAsync(dto.Data.OrderId, HttpContext.RequestAborted);
|
|
|
if (order.IsProvince)
|
|
@@ -5454,7 +5471,7 @@ public class OrderController : BaseController
|
|
|
Status = order.Status,
|
|
|
TraceId = currentStep.Id,
|
|
|
OrderExpiredTime = order.ExpiredTime
|
|
|
- };
|
|
|
+ };
|
|
|
audit.InitId();
|
|
|
if (dto.Files.Any())
|
|
|
audit.FileJson = await _fileRepository.AddFileAsync(dto.Files, audit.Id, "", HttpContext.RequestAborted);
|