xf 4 months ago
parent
commit
f69eefb15b

+ 12 - 3
src/Hotline.Api/Controllers/OrderController.cs

@@ -147,6 +147,7 @@ public class OrderController : BaseController
     private readonly IRepository<OrderPushType> _orderPushTypeRepository;
     private readonly IRepository<OrderRevoke> _orderRevokeRepository;
     private readonly IOrderTerminateRepository _orderTerminateRepository;
+    private readonly IRepository<OrderCarboncopy> _orderCarboncopy;
 
     public OrderController(
         IOrderDomainService orderDomainService,
@@ -212,6 +213,7 @@ public class OrderController : BaseController
         IRepository<OrderRevoke> orderRevokeRepository,
         BaseDataApplication baseDataApplication,
         IOrderTerminateRepository orderTerminateRepository,
+        IRepository<OrderCarboncopy> orderCarboncopy,
         ITypedCache<string> typeCache)
     {
         _orderDomainService = orderDomainService;
@@ -276,6 +278,7 @@ public class OrderController : BaseController
         _callNativeRepository = callNativeRepository;
         _baseDataApplication = baseDataApplication;
         _orderTerminateRepository = orderTerminateRepository;
+        _orderCarboncopy = orderCarboncopy;
         _orderRevokeRepository = orderRevokeRepository;
         _typeCache = typeCache;
         _baseDataApplication = baseDataApplication;
@@ -4043,9 +4046,15 @@ public class OrderController : BaseController
                     cancellationToken);
 
                 //抄送
-               orderHandleFlowDto.Copys
-                    .Where(d=>!string.IsNullOrEmpty(d.OrgId)||!string.IsNullOrEmpty(d.RoleId)||!string.IsNullOrEmpty(d.UserId))
-                   .Select(d=>_mapper.Map<>())
+                var ccs = orderHandleFlowDto.Copys
+                     .Where(d => !string.IsNullOrEmpty(d.OrgId) 
+                                 || !string.IsNullOrEmpty(d.RoleId) 
+                                 || !string.IsNullOrEmpty(d.UserId))
+                     .Select(d => _mapper.Map<OrderCarboncopy>(d))
+                     .Distinct()
+                     .ToList();
+                ccs.ForEach(d=>d.OrderId = order.Id);
+                await _orderCarboncopy.AddRangeAsync(ccs, HttpContext.RequestAborted);
 
                 break;
             default:

+ 48 - 0
src/Hotline.Api/Controllers/OrderModuleControllers/OrderCarbonCopyController.cs

@@ -0,0 +1,48 @@
+using Hotline.Orders;
+using Hotline.Repository.SqlSugar.Extensions;
+using Hotline.Share.Dtos.Order;
+using Hotline.Share.Requests;
+using MapsterMapper;
+using Microsoft.AspNetCore.Mvc;
+using XF.Domain.Repository;
+
+namespace Hotline.Api.Controllers.OrderModuleControllers
+{
+    /// <summary>
+    /// 工单抄送
+    /// </summary>
+    public class OrderCarbonCopyController : BaseController
+    {
+        private readonly IRepository<OrderCarboncopy> _orderccRepository;
+        private readonly IMapper _mapper;
+
+        public OrderCarbonCopyController(
+            IRepository<OrderCarboncopy> orderccRepository,
+            IMapper mapper
+        )
+        {
+            _orderccRepository = orderccRepository;
+            _mapper = mapper;
+        }
+
+        [HttpGet]
+        public async Task<IReadOnlyList<OrderDto>> Query([FromQuery]PagedKeywordRequest dto)
+        {
+            var orderccs = await _orderccRepository.Queryable()
+                .Includes(d => d.Order)
+                .WhereIF(!string.IsNullOrEmpty(dto.Keyword), d => d.Order.No == dto.Keyword)
+                .ToPageListWithoutTotalAsync(dto, HttpContext.RequestAborted);
+
+            return _mapper.Map<IReadOnlyList<OrderDto>>(orderccs);
+        }
+
+        [HttpGet("count")]
+        public async Task<int> Count([FromQuery] PagedKeywordRequest dto)
+        {
+            return await _orderccRepository.Queryable()
+                .Includes(d => d.Order)
+                .WhereIF(!string.IsNullOrEmpty(dto.Keyword), d => d.Order.No == dto.Keyword)
+                .CountAsync(HttpContext.RequestAborted);
+        }
+    }
+}

+ 1 - 1
src/Hotline.Api/Controllers/OrderControlls/OrderComplementController.cs → src/Hotline.Api/Controllers/OrderModuleControllers/OrderComplementController.cs

@@ -2,7 +2,7 @@
 using Hotline.Share.Dtos.Order;
 using Microsoft.AspNetCore.Mvc;
 
-namespace Hotline.Api.Controllers.OrderControlls;
+namespace Hotline.Api.Controllers.OrderModuleControllers;
 
 public class OrderComplementController : BaseController
 {

+ 0 - 4
src/Hotline.Api/Hotline.Api.csproj

@@ -37,10 +37,6 @@
     <None Remove="logs\**" />
   </ItemGroup>
 
-  <ItemGroup>
-    <Folder Include="Controllers\OrderControlls\" />
-  </ItemGroup>
-
   <ItemGroup>
     <Compile Remove="Controllers\Order\OrderComplementController.cs" />
     <Compile Remove="logs\**" />

+ 2 - 1
src/Hotline.Application/Mappers/OrderMapperConfigs.cs

@@ -263,6 +263,7 @@ public class OrderMapperConfigs : IRegister
             .Map(d => d.OrgHandledAttitude, s => s.OrgHandledAttitude.Value)
             ;
 
-
+        config.ForType<OrderCarboncopy, OrderDto>()
+            .Map(d => d, s => s.Order);
     }
 }

+ 6 - 1
src/Hotline/Orders/OrderCarboncopy.cs

@@ -1,4 +1,5 @@
-using System;
+using SqlSugar;
+using System;
 using System.Collections.Generic;
 using System.ComponentModel;
 using System.Linq;
@@ -9,6 +10,7 @@ using XF.Domain.Repository;
 namespace Hotline.Orders
 {
     [Description("工单抄送")]
+    [SugarIndex("index_ordercc_orderid", nameof(OrderCarboncopy.OrderId), OrderByType.Desc)]
     public class OrderCarboncopy : CreationEntity
     {
         public string OrderId { get; set; }
@@ -18,5 +20,8 @@ namespace Hotline.Orders
         public string? OrgName { get; set; }
         public string? RoleId { get; set; }
         public string? RoleName { get; set; }
+
+        [Navigate(NavigateType.OneToOne, nameof(OrderId))]
+        public Order Order { get; set; }
     }
 }