libin před 1 měsícem
rodič
revize
35d86d4fdc
1 změnil soubory, kde provedl 34 přidání a 2 odebrání
  1. 34 2
      src/Hotline.Api/Controllers/OrderController.cs

+ 34 - 2
src/Hotline.Api/Controllers/OrderController.cs

@@ -3230,7 +3230,7 @@ public class OrderController : BaseController
     /// </summary>
     /// <param name="dto"></param>
     /// <returns></returns>
-    [HttpGet("supervise/Travel")]
+    [HttpGet("supervise/travel")]
     public async Task<IReadOnlyList<OrderDto>> QueryTravel([FromQuery] QueryOrderDto dto)
     {
         var orders = await _orderApplication.QueryTravel(dto)
@@ -3244,13 +3244,45 @@ public class OrderController : BaseController
     /// <summary>
     /// 旅游列表查询总数
     /// </summary>
-    [HttpGet("supervise/TravelCount")]
+    [HttpGet("supervise/travel/count")]
     public async Task<int> QueryTravelCount([FromQuery] QueryOrderDto dto)
     {
         var query = _orderApplication.QueryTravel(dto);
         return await query.CountAsync(HttpContext.RequestAborted);
     }
 
+    [HttpPost("supervise/travel/export")]
+    public async Task<FileStreamResult> ExportTravel([FromBody] ExportExcelDto<QueryOrderDto> dto)
+    {
+        var query = _orderApplication.QueryTravel(dto.QueryDto);
+        List<Order> 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<OrderDto>>(orders);
+
+        if (_appOptions.Value.IsLuZhou)
+            orderDtos = orderDtos.Select(p => p.DataMask()).ToList();
+
+        dynamic? dynamicClass = DynamicClassHelper.CreateDynamicClass<OrderDto>(dto.ColumnInfos);
+
+        var dtos = orderDtos
+            .Select(stu => _mapper.Map(stu, typeof(OrderDto), dynamicClass))
+            .Cast<object>()
+            .ToList();
+
+        var stream = ExcelHelper.CreateStream(dtos);
+
+        return ExcelStreamResult(stream, "旅游数据");
+    }
+
     /// <summary>
     /// 申请督办
     /// </summary>