|
@@ -599,24 +599,23 @@ public class OrderController : BaseController
|
|
|
/// <summary>
|
|
|
/// 查询发布平移待办理人
|
|
|
/// </summary>
|
|
|
- /// <param name="id"></param>
|
|
|
- /// <returns></returns>
|
|
|
- /// <exception cref="UserFriendlyException"></exception>
|
|
|
[HttpGet("published/migration")]
|
|
|
- public async Task<IReadOnlyList<FlowStepHandler>> PublishMigration()
|
|
|
+ public async Task<IReadOnlyList<OrderMigrationHandler>> PublishMigration()
|
|
|
{
|
|
|
var setting = _systemSettingCacheManager.GetSetting(SettingConstants.RolePaiDan);
|
|
|
var roles = setting?.SettingValue.ToList();
|
|
|
var users = await _userRepository.Queryable()
|
|
|
.Includes(d => d.Organization)
|
|
|
+ .Includes(d => d.Roles)
|
|
|
.Where(d => d.Roles.Any(x => roles.Contains(x.Name)))
|
|
|
.ToListAsync(HttpContext.RequestAborted);
|
|
|
- return users.Select(d => new FlowStepHandler
|
|
|
+ return users.Select(d => new OrderMigrationHandler
|
|
|
{
|
|
|
UserId = d.Id,
|
|
|
Username = d.Name,
|
|
|
OrgId = d.OrgId,
|
|
|
- OrgName = d.Organization.Name
|
|
|
+ OrgName = d.Organization.Name,
|
|
|
+ RoleNames = string.Join(',', d.Roles.Select(x => x.DisplayName).ToList())
|
|
|
}).ToList();
|
|
|
}
|
|
|
|
|
@@ -3040,23 +3039,47 @@ public class OrderController : BaseController
|
|
|
if (dto.EndTime.HasValue)
|
|
|
dto.EndTime = dto.EndTime.Value.AddDays(1).AddSeconds(-1);
|
|
|
|
|
|
- var (total, items) = await _orderRepository.Queryable(canView: false)
|
|
|
- .WhereIF(dto.IsProvince.HasValue, d => d.IsProvince == dto.IsProvince)
|
|
|
- .WhereIF(dto.IsHandled.HasValue, d => handleStatuses.Contains(d.Status))
|
|
|
- .WhereIF(!string.IsNullOrEmpty(dto.Keyword), d => d.No.Contains(dto.Keyword!) || d.Title.Contains(dto.Keyword!))
|
|
|
- .Where(d => string.IsNullOrEmpty(d.SignerId) || d.SignerId == _sessionContext.RequiredUserId)
|
|
|
- .WhereIF(dto.IsCounterSign.HasValue && dto.IsCounterSign == true, d => d.CounterSignType.HasValue)
|
|
|
- .WhereIF(dto.IsCounterSign.HasValue && dto.IsCounterSign == false, d => !d.CounterSignType.HasValue)
|
|
|
- .WhereIF(dto.ExpiredOrAlmostOverdue.HasValue && dto.ExpiredOrAlmostOverdue == true, d => (d.ExpiredTime < DateTime.Now && d.Status < EOrderStatus.Filed) || (d.ExpiredTime < d.ActualHandleTime && d.Status >= EOrderStatus.Filed)) //超期 未办
|
|
|
- .WhereIF(dto.ExpiredOrAlmostOverdue.HasValue && dto.ExpiredOrAlmostOverdue == false, d => d.NearlyExpiredTime < DateTime.Now && d.ExpiredTime > DateTime.Now)//即将超期 未办
|
|
|
- .WhereIF(dto.StartTime.HasValue, d => d.CreationTime >= dto.StartTime)
|
|
|
- .WhereIF(dto.EndTime.HasValue, d => d.CreationTime <= dto.EndTime)
|
|
|
- .Where(x => x.Source < ESource.MLSQ || x.Source > ESource.WZSC)
|
|
|
- .Where(x => x.Status != EOrderStatus.BackToProvince && x.Status < EOrderStatus.Filed)
|
|
|
- .OrderBy(d => d.Status)
|
|
|
- .OrderByIF(dto.IsHandled == true, d => d.StartTime, OrderByType.Desc)
|
|
|
- .OrderByIF(dto.IsHandled == false, d => d.CreationTime, OrderByType.Desc)
|
|
|
- .ToPagedListAsync(dto, HttpContext.RequestAborted);
|
|
|
+ //var (total, items) = await _orderRepository.Queryable(canView: false)
|
|
|
+ // .WhereIF(dto.IsProvince.HasValue, d => d.IsProvince == dto.IsProvince)
|
|
|
+ // .WhereIF(dto.IsHandled.HasValue, d => handleStatuses.Contains(d.Status))
|
|
|
+ // .WhereIF(!string.IsNullOrEmpty(dto.Keyword), d => d.No.Contains(dto.Keyword!) || d.Title.Contains(dto.Keyword!))
|
|
|
+ // .WhereIF(dto.IsCounterSign.HasValue && dto.IsCounterSign == true, d => d.CounterSignType.HasValue)
|
|
|
+ // .WhereIF(dto.IsCounterSign.HasValue && dto.IsCounterSign == false, d => !d.CounterSignType.HasValue)
|
|
|
+ // .WhereIF(dto.ExpiredOrAlmostOverdue.HasValue && dto.ExpiredOrAlmostOverdue == true, d => (d.ExpiredTime < DateTime.Now && d.Status < EOrderStatus.Filed) || (d.ExpiredTime < d.ActualHandleTime && d.Status >= EOrderStatus.Filed)) //超期 未办
|
|
|
+ // .WhereIF(dto.ExpiredOrAlmostOverdue.HasValue && dto.ExpiredOrAlmostOverdue == false, d => d.NearlyExpiredTime < DateTime.Now && d.ExpiredTime > DateTime.Now)//即将超期 未办
|
|
|
+ // .WhereIF(dto.StartTime.HasValue, d => d.CreationTime >= dto.StartTime)
|
|
|
+ // .WhereIF(dto.EndTime.HasValue, d => d.CreationTime <= dto.EndTime)
|
|
|
+ // .Where(d=>(string.IsNullOrEmpty(d.WorkflowId) && (string.IsNullOrEmpty(d.SignerId) || d.SignerId == _sessionContext.RequiredUserId)))
|
|
|
+ // //.Where(d => string.IsNullOrEmpty(d.SignerId) || d.SignerId == _sessionContext.RequiredUserId)
|
|
|
+ // .Where(x => x.Source < ESource.MLSQ || x.Source > ESource.WZSC)
|
|
|
+ // .Where(x => x.Status != EOrderStatus.BackToProvince && x.Status < EOrderStatus.Filed)
|
|
|
+ // .OrderBy(d => d.Status)
|
|
|
+ // .OrderByIF(dto.IsHandled == true, d => d.StartTime, OrderByType.Desc)
|
|
|
+ // .OrderByIF(dto.IsHandled == false, d => d.CreationTime, OrderByType.Desc)
|
|
|
+ // .ToPagedListAsync(dto, HttpContext.RequestAborted);
|
|
|
+
|
|
|
+ var a = _orderRepository.Queryable(hasHandled: dto.IsHandled);
|
|
|
+ var b = _orderRepository.Queryable()
|
|
|
+ .Where(d => (string.IsNullOrEmpty(d.WorkflowId) &&
|
|
|
+ (string.IsNullOrEmpty(d.SignerId) || d.SignerId == _sessionContext.RequiredUserId)));
|
|
|
+ var (total, items) = await _orderRepository.UnionAll(a, b)
|
|
|
+ .WhereIF(dto.IsProvince.HasValue, d => d.IsProvince == dto.IsProvince)
|
|
|
+ .WhereIF(dto.IsHandled.HasValue, d => handleStatuses.Contains(d.Status))
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.Keyword), d => d.No.Contains(dto.Keyword!) || d.Title.Contains(dto.Keyword!))
|
|
|
+ .WhereIF(dto.IsCounterSign.HasValue && dto.IsCounterSign == true, d => d.CounterSignType.HasValue)
|
|
|
+ .WhereIF(dto.IsCounterSign.HasValue && dto.IsCounterSign == false, d => !d.CounterSignType.HasValue)
|
|
|
+ .WhereIF(dto.ExpiredOrAlmostOverdue.HasValue && dto.ExpiredOrAlmostOverdue == true, d => (d.ExpiredTime < DateTime.Now && d.Status < EOrderStatus.Filed) || (d.ExpiredTime < d.ActualHandleTime && d.Status >= EOrderStatus.Filed)) //超期 未办
|
|
|
+ .WhereIF(dto.ExpiredOrAlmostOverdue.HasValue && dto.ExpiredOrAlmostOverdue == false, d => d.NearlyExpiredTime < DateTime.Now && d.ExpiredTime > DateTime.Now)//即将超期 未办
|
|
|
+ .WhereIF(dto.StartTime.HasValue, d => d.CreationTime >= dto.StartTime)
|
|
|
+ .WhereIF(dto.EndTime.HasValue, d => d.CreationTime <= dto.EndTime)
|
|
|
+ //.Where(d => (string.IsNullOrEmpty(d.WorkflowId) && (string.IsNullOrEmpty(d.SignerId) || d.SignerId == _sessionContext.RequiredUserId)))
|
|
|
+ //.Where(d => string.IsNullOrEmpty(d.SignerId) || d.SignerId == _sessionContext.RequiredUserId)
|
|
|
+ .Where(x => x.Source < ESource.MLSQ || x.Source > ESource.WZSC)
|
|
|
+ .Where(x => x.Status != EOrderStatus.BackToProvince && x.Status < EOrderStatus.Filed)
|
|
|
+ .OrderBy(d => d.Status)
|
|
|
+ .OrderByIF(dto.IsHandled == true, d => d.StartTime, OrderByType.Desc)
|
|
|
+ .OrderByIF(dto.IsHandled == false, d => d.CreationTime, OrderByType.Desc)
|
|
|
+ .ToPagedListAsync(dto, HttpContext.RequestAborted);
|
|
|
|
|
|
return new PagedDto<OrderDto>(total, _mapper.Map<IReadOnlyList<OrderDto>>(items));
|
|
|
}
|
|
@@ -4745,50 +4768,108 @@ public class OrderController : BaseController
|
|
|
[HttpGet("order/about_expire/list")]
|
|
|
public async Task<PagedDto<OrderDto>> AboutList([FromQuery] AboutToExpireListDto dto)
|
|
|
{
|
|
|
- return await _orderApplication.GetAboutToExpireAsync(dto, HttpContext.RequestAborted);
|
|
|
- }
|
|
|
-
|
|
|
- ///// <summary>
|
|
|
- ///// 工单即将超期节点列表
|
|
|
- ///// </summary>
|
|
|
- ///// <param name="dto"></param>
|
|
|
- ///// <returns></returns>
|
|
|
- //[HttpGet("order/about_expire_node/list")]
|
|
|
- //public async Task<PagedDto<WorkflowOrderDto>> AboutNodeList([FromQuery] AboutToExpireListDto dto)
|
|
|
- //{
|
|
|
- // return await _orderApplication.GetAboutToExpireNodeAsync(dto, HttpContext.RequestAborted);
|
|
|
- //}
|
|
|
-
|
|
|
- /// <summary>
|
|
|
- /// 工单超期列表
|
|
|
- /// </summary>
|
|
|
- /// <param name="dto"></param>
|
|
|
- /// <returns></returns>
|
|
|
- [HttpGet("order/expire/list")]
|
|
|
- public async Task<PagedDto<OrderDto>> List([FromQuery] AboutToExpireListDto dto)
|
|
|
- {
|
|
|
- return await _orderApplication.GetToExpireAsync(dto, HttpContext.RequestAborted);
|
|
|
- }
|
|
|
-
|
|
|
- ///// <summary>
|
|
|
- ///// 工单超期节点列表
|
|
|
- ///// </summary>
|
|
|
- ///// <param name="dto"></param>
|
|
|
- ///// <returns></returns>
|
|
|
- //[HttpGet("order/expire_node/list")]
|
|
|
- //public async Task<PagedDto<WorkflowOrderDto>> NodeList([FromQuery] AboutToExpireListDto dto)
|
|
|
- //{
|
|
|
- // return await _orderApplication.GetToExpireNodeAsync(dto, HttpContext.RequestAborted);
|
|
|
- //}
|
|
|
-
|
|
|
- #endregion
|
|
|
-
|
|
|
- #region 工单签收
|
|
|
-
|
|
|
- /// <summary>
|
|
|
- /// 工单签收
|
|
|
- /// </summary>
|
|
|
- [HttpPost("sign/{orderId}")]
|
|
|
+ var (total, items) = await _orderApplication.GetAboutToExpireAsync(dto).ToPagedListAsync(dto, HttpContext.RequestAborted);
|
|
|
+ return new PagedDto<OrderDto>(total, _mapper.Map<IReadOnlyList<OrderDto>>(items));
|
|
|
+ }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 工单即将超期列表导出
|
|
|
+ /// </summary>
|
|
|
+ /// <returns></returns>
|
|
|
+ [HttpPost("order/about_expire/_export")]
|
|
|
+ public async Task<FileStreamResult> AboutListExport([FromBody] ExportExcelDto<AboutToExpireListDto> dto)
|
|
|
+ {
|
|
|
+ var query = _orderApplication.GetAboutToExpireAsync(dto.QueryDto);
|
|
|
+ List<Hotline.Orders.Order> orders;
|
|
|
+ if (dto.IsExportAll)
|
|
|
+ {
|
|
|
+ orders = await query.ToListAsync(HttpContext.RequestAborted);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ var (_, items) = await query.ToPagedListAsync(dto.QueryDto, HttpContext.RequestAborted);
|
|
|
+ orders = items;
|
|
|
+ }
|
|
|
+ var ordersDtos = _mapper.Map<ICollection<OrderDto>>(orders);
|
|
|
+ dynamic? dynamicClass = DynamicClassHelper.CreateDynamicClass(dto.ColumnInfos);
|
|
|
+ var dtos = ordersDtos
|
|
|
+ .Select(stu => _mapper.Map(stu, typeof(OrderDto), dynamicClass))
|
|
|
+ .Cast<object>()
|
|
|
+ .ToList();
|
|
|
+ var stream = ExcelHelper.CreateStream(dtos);
|
|
|
+ return ExcelStreamResult(stream, "工单即将超期列表数据");
|
|
|
+ }
|
|
|
+
|
|
|
+ ///// <summary>
|
|
|
+ ///// 工单即将超期节点列表
|
|
|
+ ///// </summary>
|
|
|
+ ///// <param name="dto"></param>
|
|
|
+ ///// <returns></returns>
|
|
|
+ //[HttpGet("order/about_expire_node/list")]
|
|
|
+ //public async Task<PagedDto<WorkflowOrderDto>> AboutNodeList([FromQuery] AboutToExpireListDto dto)
|
|
|
+ //{
|
|
|
+ // return await _orderApplication.GetAboutToExpireNodeAsync(dto, HttpContext.RequestAborted);
|
|
|
+ //}
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 工单超期列表
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="dto"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ [HttpGet("order/expire/list")]
|
|
|
+ public async Task<PagedDto<OrderDto>> ExpireList([FromQuery] AboutToExpireListDto dto)
|
|
|
+ {
|
|
|
+ var (total, items) = await _orderApplication.GetToExpireAsync(dto).ToPagedListAsync(dto, HttpContext.RequestAborted);
|
|
|
+ return new PagedDto<OrderDto>(total, _mapper.Map<IReadOnlyList<OrderDto>>(items));
|
|
|
+ }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 工单超期列表导出
|
|
|
+ /// </summary>
|
|
|
+ /// <returns></returns>
|
|
|
+ [HttpPost("order/expire/_export")]
|
|
|
+ public async Task<FileStreamResult> ExpireListExport([FromBody] ExportExcelDto<AboutToExpireListDto> dto)
|
|
|
+ {
|
|
|
+ var query = _orderApplication.GetToExpireAsync(dto.QueryDto);
|
|
|
+ List<Hotline.Orders.Order> orders;
|
|
|
+ if (dto.IsExportAll)
|
|
|
+ {
|
|
|
+ orders = await query.ToListAsync(HttpContext.RequestAborted);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ var (_, items) = await query.ToPagedListAsync(dto.QueryDto, HttpContext.RequestAborted);
|
|
|
+ orders = items;
|
|
|
+ }
|
|
|
+ var ordersDtos = _mapper.Map<ICollection<OrderDto>>(orders);
|
|
|
+ dynamic? dynamicClass = DynamicClassHelper.CreateDynamicClass(dto.ColumnInfos);
|
|
|
+ var dtos = ordersDtos
|
|
|
+ .Select(stu => _mapper.Map(stu, typeof(OrderDto), dynamicClass))
|
|
|
+ .Cast<object>()
|
|
|
+ .ToList();
|
|
|
+ var stream = ExcelHelper.CreateStream(dtos);
|
|
|
+ return ExcelStreamResult(stream, "工单超期列表数据");
|
|
|
+ }
|
|
|
+
|
|
|
+ ///// <summary>
|
|
|
+ ///// 工单超期节点列表
|
|
|
+ ///// </summary>
|
|
|
+ ///// <param name="dto"></param>
|
|
|
+ ///// <returns></returns>
|
|
|
+ //[HttpGet("order/expire_node/list")]
|
|
|
+ //public async Task<PagedDto<WorkflowOrderDto>> NodeList([FromQuery] AboutToExpireListDto dto)
|
|
|
+ //{
|
|
|
+ // return await _orderApplication.GetToExpireNodeAsync(dto, HttpContext.RequestAborted);
|
|
|
+ //}
|
|
|
+
|
|
|
+ #endregion
|
|
|
+
|
|
|
+ #region 工单签收
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 工单签收
|
|
|
+ /// </summary>
|
|
|
+ [HttpPost("sign/{orderId}")]
|
|
|
[LogFilter("工单签收")]
|
|
|
public async Task Sign(string orderId)
|
|
|
{
|
|
@@ -5437,7 +5518,7 @@ public class OrderController : BaseController
|
|
|
if (steps.Count > 1)
|
|
|
throw new UserFriendlyException("多个待办理节点暂不支持平移");
|
|
|
var step = steps.First();
|
|
|
- if (step.BusinessType is not EBusinessType.Center and EBusinessType.Send)
|
|
|
+ if (step.BusinessType is not EBusinessType.Center and not EBusinessType.Send)
|
|
|
throw UserFriendlyException.SameMessage("当前办理节点非中心暂不支持平移");
|
|
|
|
|
|
var setting = step.BusinessType is EBusinessType.Center
|
|
@@ -5446,17 +5527,19 @@ public class OrderController : BaseController
|
|
|
var roles = setting?.SettingValue.ToList();
|
|
|
var users = await _userRepository.Queryable()
|
|
|
.Includes(d => d.Organization)
|
|
|
+ .Includes(d => d.Roles)
|
|
|
.Where(d => d.Roles.Any(x => roles.Contains(x.Name)))
|
|
|
.ToListAsync(HttpContext.RequestAborted);
|
|
|
return new GetOrderMigrationDto
|
|
|
{
|
|
|
StepId = step.Id,
|
|
|
- Handlers = users.Select(d => new FlowStepHandler
|
|
|
+ Handlers = users.Select(d => new OrderMigrationHandler
|
|
|
{
|
|
|
UserId = d.Id,
|
|
|
Username = d.Name,
|
|
|
OrgId = d.OrgId,
|
|
|
- OrgName = d.Organization.Name
|
|
|
+ OrgName = d.Organization.Name,
|
|
|
+ RoleNames = string.Join(',', d.Roles.Select(x => x.DisplayName).ToList())
|
|
|
}).ToList()
|
|
|
};
|
|
|
}
|