|
@@ -30,6 +30,7 @@ using Hotline.Share.Dtos.FlowEngine;
|
|
|
using Hotline.Share.Dtos.FlowEngine.Workflow;
|
|
|
using Hotline.Share.Dtos.Order;
|
|
|
using Hotline.Share.Dtos.Order.Migration;
|
|
|
+using Hotline.Share.Dtos.Order.Publish;
|
|
|
using Hotline.Share.Dtos.Settings;
|
|
|
using Hotline.Share.Enums.CallCenter;
|
|
|
using Hotline.Share.Enums.FlowEngine;
|
|
@@ -250,12 +251,12 @@ public class OrderController : BaseController
|
|
|
var (total, items) = await _orderRepository.Queryable()
|
|
|
.Includes(d => d.OrderPublish)
|
|
|
.Where(x => x.Status == EOrderStatus.Filed)
|
|
|
- .WhereIF(!string.IsNullOrEmpty(dto.Keyword),
|
|
|
- d => d.Title.Contains(dto.Keyword!) || d.No.Contains(dto.Keyword!))
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.Keyword), d => d.Title.StartsWith(dto.Keyword!))
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.No), d => d.No == dto.No)
|
|
|
.WhereIF(dto.PubState == EPubState.Pub, d => d.Status >= EOrderStatus.Published)
|
|
|
.WhereIF(dto.PubState == EPubState.NoPub, d => d.Status < EOrderStatus.Published)
|
|
|
- .WhereIF(!string.IsNullOrEmpty(dto.PubMan),
|
|
|
- d => d.AcceptorName.Contains(dto.PubMan!) || d.AcceptorStaffNo.Contains(dto.PubMan!))
|
|
|
+ //.WhereIF(!string.IsNullOrEmpty(dto.PubMan),
|
|
|
+ // d => d.AcceptorName.Contains(dto.PubMan!) || d.AcceptorStaffNo.Contains(dto.PubMan!))
|
|
|
.WhereIF(dto.PubRange == EPublicState.Pub, d => d.OrderPublish.PublishState)
|
|
|
.WhereIF(dto.PubRange == EPublicState.NoPub, d => !d.OrderPublish.PublishState)
|
|
|
.WhereIF(dto.FiledType != null && dto.FiledType == FiledType.CenterFiled, d => d.ProcessType == EProcessType.Zhiban)
|
|
@@ -269,6 +270,7 @@ public class OrderController : BaseController
|
|
|
.WhereIF(dto.CreationTimeEnd.HasValue, d => d.CreationTime <= dto.CreationTimeEnd)
|
|
|
.WhereIF(dto.FiledTimeStart.HasValue, d => d.OrderPublish.CreationTime >= dto.CreationTimeStart)
|
|
|
.WhereIF(dto.FiledTimeEnd.HasValue, d => d.OrderPublish.CreationTime <= dto.CreationTimeEnd)
|
|
|
+ .WhereIF(dto.QuerySelf.HasValue && dto.QuerySelf.Value, d => d.WaitForPublisherId == _sessionContext.RequiredUserId)
|
|
|
.OrderByDescending(d => d.FiledTime)
|
|
|
.ToPagedListAsync(dto.PageIndex, dto.PageSize, HttpContext.RequestAborted);
|
|
|
|
|
@@ -383,7 +385,6 @@ public class OrderController : BaseController
|
|
|
|
|
|
|
|
|
var orderPublish = _mapper.Map<OrderPublish>(dto);
|
|
|
-
|
|
|
orderPublish.OrderId = order.Id;
|
|
|
orderPublish.No = order.No;
|
|
|
|
|
@@ -619,6 +620,23 @@ public class OrderController : BaseController
|
|
|
}).ToList();
|
|
|
}
|
|
|
|
|
|
+ /// <summary>
|
|
|
+ /// 发布平移
|
|
|
+ /// </summary>
|
|
|
+ [HttpPost("publish/migration")]
|
|
|
+ public async Task PublishMigrationBatch([FromBody] PublishMigrationDto dto)
|
|
|
+ {
|
|
|
+ var orders = await _orderRepository.Queryable()
|
|
|
+ .Where(d => dto.OrderIds.Contains(d.Id) && d.Status == EOrderStatus.Filed)
|
|
|
+ .ToListAsync(HttpContext.RequestAborted);
|
|
|
+ foreach (var order in orders)
|
|
|
+ {
|
|
|
+ order.WaitForPublisherId = dto.UserId;
|
|
|
+ }
|
|
|
+
|
|
|
+ await _orderRepository.UpdateRangeAsync(orders, HttpContext.RequestAborted);
|
|
|
+ }
|
|
|
+
|
|
|
#endregion
|
|
|
|
|
|
#region 工单回访
|
|
@@ -636,18 +654,18 @@ public class OrderController : BaseController
|
|
|
.Includes(x => x.Employee)
|
|
|
.Includes(x => x.OrderVisitDetails)
|
|
|
.WhereIF(dto.VisitState == EVisitStateQuery.NoVisit,
|
|
|
- x => (x.VisitState == Share.Enums.Order.EVisitState.WaitForVisit ||
|
|
|
- x.VisitState == Share.Enums.Order.EVisitState.NoSatisfiedWaitForVisit) &&
|
|
|
+ x => (x.VisitState == EVisitState.WaitForVisit ||
|
|
|
+ x.VisitState == EVisitState.NoSatisfiedWaitForVisit) &&
|
|
|
x.Order.IsProvince == false)
|
|
|
- .WhereIF(dto.VisitState == EVisitStateQuery.Visited,
|
|
|
- x => x.VisitState == Share.Enums.Order.EVisitState.Visited)
|
|
|
- .WhereIF(!string.IsNullOrEmpty(dto.Keyword),
|
|
|
- x => x.Order.Title.Contains(dto.Keyword!) || x.Order.No.Contains(dto.Keyword!))
|
|
|
+ .WhereIF(dto.VisitState == EVisitStateQuery.Visited, x => x.VisitState == EVisitState.Visited)
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.Keyword), x => x.Order.Title.StartsWith(dto.Keyword!))
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.No), d => d.No == dto.No)
|
|
|
.WhereIF(dto.VisitType != null, x => x.VisitType == dto.VisitType)
|
|
|
.WhereIF(dto.FiledType != null && dto.FiledType == FiledType.CenterFiled, d => d.Order.ProcessType == EProcessType.Zhiban)
|
|
|
.WhereIF(dto.FiledType != null && dto.FiledType == FiledType.OrgFiled, d => d.Order.ProcessType == EProcessType.Jiaoban)
|
|
|
.WhereIF(dto.IsCountersign != null && dto.IsCountersign == true, d => d.Order.CounterSignType != null)
|
|
|
.WhereIF(dto.IsCountersign != null && dto.IsCountersign == false, d => d.Order.CounterSignType == null)
|
|
|
+ .WhereIF(dto.QuerySelf.HasValue && dto.QuerySelf.Value, d => d.EmployeeId == _sessionContext.RequiredUserId)
|
|
|
.OrderByDescending(x => x.PublishTime)
|
|
|
.ToPagedListAsync(dto.PageIndex, dto.PageSize, HttpContext.RequestAborted);
|
|
|
return new PagedDto<OrderVisitDto>(total, _mapper.Map<IReadOnlyList<OrderVisitDto>>(items));
|
|
@@ -796,7 +814,7 @@ public class OrderController : BaseController
|
|
|
visit.OrgJudge = dto.OrgJudge;
|
|
|
visit.SeatJudge = dto.SeatJudge;
|
|
|
|
|
|
- if (visit.OrgJudge==true || visit.SeatJudge==true)
|
|
|
+ if (visit.OrgJudge == true || visit.SeatJudge == true)
|
|
|
{
|
|
|
visit.JudgeState = EJudgeState.Judging;
|
|
|
}
|
|
@@ -872,7 +890,7 @@ public class OrderController : BaseController
|
|
|
[HttpGet("visit/judge-query")]
|
|
|
public async Task<PagedDto<OrderVisitDto>> VisitJudgeQuery([FromQuery] VisitJudgeQueryReq dto)
|
|
|
{
|
|
|
- var (total,items) =await _orderVisitRepository.Queryable()
|
|
|
+ var (total, items) = await _orderVisitRepository.Queryable()
|
|
|
.Includes(x => x.Order)
|
|
|
.Includes(x => x.Employee)
|
|
|
.Where(x => x.VisitState == EVisitState.Visited)
|
|
@@ -889,11 +907,11 @@ public class OrderController : BaseController
|
|
|
.WhereIF(dto.ActualHandleTimeEnd.HasValue, d => d.Order.ActualHandleTime <= dto.ActualHandleTimeEnd) //办结时间结束
|
|
|
.WhereIF(dto.VisitTimeStart.HasValue, d => d.VisitTime >= dto.VisitTimeStart) //回访开始时间
|
|
|
.WhereIF(dto.VisitTimeEnd.HasValue, d => d.VisitTime <= dto.VisitTimeEnd)
|
|
|
- .WhereIF(dto.IsIng == true, d=>d.JudgeState == EJudgeState.Judging)
|
|
|
- .WhereIF(dto.IsIng == false,d=>d.JudgeState != EJudgeState.Judging)
|
|
|
- .WhereIF(dto.JudgeState!=null,d=>d.JudgeState == dto.JudgeState)
|
|
|
- .WhereIF(dto.OrgJudge!=null,d=>d.OrgJudge == dto.OrgJudge)
|
|
|
- .WhereIF(dto.SeatJudge!=null,d=>d.SeatJudge == dto.SeatJudge)
|
|
|
+ .WhereIF(dto.IsIng == true, d => d.JudgeState == EJudgeState.Judging)
|
|
|
+ .WhereIF(dto.IsIng == false, d => d.JudgeState != EJudgeState.Judging)
|
|
|
+ .WhereIF(dto.JudgeState != null, d => d.JudgeState == dto.JudgeState)
|
|
|
+ .WhereIF(dto.OrgJudge != null, d => d.OrgJudge == dto.OrgJudge)
|
|
|
+ .WhereIF(dto.SeatJudge != null, d => d.SeatJudge == dto.SeatJudge)
|
|
|
.OrderByDescending(x => x.VisitTime)
|
|
|
.ToPagedListAsync(dto.PageIndex, dto.PageSize, HttpContext.RequestAborted);
|
|
|
return new PagedDto<OrderVisitDto>(total, _mapper.Map<IReadOnlyList<OrderVisitDto>>(items));
|
|
@@ -911,7 +929,7 @@ public class OrderController : BaseController
|
|
|
foreach (var id in dto.Ids)
|
|
|
{
|
|
|
var visit = await _orderVisitRepository.Queryable().FirstAsync(d => d.Id == id, HttpContext.RequestAborted);
|
|
|
- if (visit!= null && visit.VisitState == EVisitState.Visited)
|
|
|
+ if (visit != null && visit.VisitState == EVisitState.Visited)
|
|
|
{
|
|
|
visit.JudgeState = dto.IsAgree ? EJudgeState.Agreed : EJudgeState.UnAgreed;
|
|
|
visit.JudgeUserId = _sessionContext.RequiredUserId;
|
|
@@ -928,32 +946,24 @@ public class OrderController : BaseController
|
|
|
return new JudgeVisitRsp() { ErrorCount = error, SuccessCount = dto.Ids.Count - error };
|
|
|
}
|
|
|
|
|
|
-
|
|
|
-
|
|
|
/// <summary>
|
|
|
- /// 批量分配回访人员
|
|
|
+ /// 回访平移
|
|
|
/// </summary>
|
|
|
/// <param name="dto"></param>
|
|
|
/// <returns></returns>
|
|
|
- [HttpPost("visit/distribution")]
|
|
|
- public async Task<DistributionVisitRspDto> DistributionVisit([FromBody] DistributionVisitDto dto)
|
|
|
+ [HttpPost("visit/migration")]
|
|
|
+ public async Task VisitMigrationBatch([FromBody] DistributionVisitDto dto)
|
|
|
{
|
|
|
- int error = 0;
|
|
|
- foreach (var id in dto.Ids)
|
|
|
+ var visits = await _orderVisitRepository.Queryable()
|
|
|
+ .Where(d => d.VisitState == EVisitState.WaitForVisit && dto.Ids.Contains(d.Id))
|
|
|
+ .ToListAsync(HttpContext.RequestAborted);
|
|
|
+
|
|
|
+ foreach (var visit in visits)
|
|
|
{
|
|
|
- var visit = await _orderVisitRepository.Queryable().FirstAsync(d => d.Id == id, HttpContext.RequestAborted);
|
|
|
- if (visit != null && visit.VisitState == EVisitState.WaitForVisit)
|
|
|
- {
|
|
|
- visit.EmployeeId = dto.EmployeeId;
|
|
|
- await _orderVisitRepository.UpdateAsync(visit, HttpContext.RequestAborted);
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- error++;
|
|
|
- }
|
|
|
+ visit.EmployeeId = dto.EmployeeId;
|
|
|
}
|
|
|
|
|
|
- return new DistributionVisitRspDto() { ErrorCount = error, SuccessCount = dto.Ids.Count - error };
|
|
|
+ await _orderVisitRepository.UpdateRangeAsync(visits, HttpContext.RequestAborted);
|
|
|
}
|
|
|
|
|
|
#endregion
|
|
@@ -2792,20 +2802,24 @@ public class OrderController : BaseController
|
|
|
ExpiredTime = timeResult.EndTime,
|
|
|
NearlyExpiredTime = timeResult.NearlyExpiredTime
|
|
|
};
|
|
|
+ var canUpdateOrderSender = bool.Parse(_systemSettingCacheManager.GetSetting(SettingConstants.CanUpdateOrderSender).SettingValue[0]);
|
|
|
order.CenterToOrg(
|
|
|
expiredTimeConfig.TimeText, expiredTimeConfig.Count,
|
|
|
expiredTimeConfig.TimeType, expiredTimeConfig.ExpiredTime,
|
|
|
expiredTimeConfig.NearlyExpiredTime, dto.Opinion,
|
|
|
- _sessionContext.RequiredUserId, _sessionContext.UserName);
|
|
|
+ _sessionContext.RequiredUserId, _sessionContext.UserName,
|
|
|
+ canUpdateOrderSender);
|
|
|
}
|
|
|
else if (dto.FlowDirection is EFlowDirection.CenterToOrg)
|
|
|
{
|
|
|
expiredTimeConfig = _timeLimitDomainService.CalcExpiredTime(DateTime.Now, EFlowDirection.CenterToOrg, order.AcceptTypeCode);
|
|
|
+ var canUpdateOrderSender = bool.Parse(_systemSettingCacheManager.GetSetting(SettingConstants.CanUpdateOrderSender).SettingValue[0]);
|
|
|
order.CenterToOrg(
|
|
|
expiredTimeConfig.TimeText, expiredTimeConfig.Count,
|
|
|
expiredTimeConfig.TimeType, expiredTimeConfig.ExpiredTime,
|
|
|
expiredTimeConfig.NearlyExpiredTime, dto.Opinion,
|
|
|
- _sessionContext.RequiredUserId, _sessionContext.UserName);
|
|
|
+ _sessionContext.RequiredUserId, _sessionContext.UserName,
|
|
|
+ canUpdateOrderSender);
|
|
|
//写入质检
|
|
|
await _qualityApplication.AddQualityAsync(EQualitySource.Send, order.Id, HttpContext.RequestAborted);
|
|
|
}
|
|
@@ -4770,106 +4784,106 @@ public class OrderController : BaseController
|
|
|
{
|
|
|
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")]
|
|
|
+ /// <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")]
|
|
|
+ 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}")]
|
|
|
+ }
|
|
|
+
|
|
|
+ /// <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)
|
|
|
{
|