Browse Source

抄送列表查询

xf 4 months ago
parent
commit
bee9422c22

+ 37 - 14
src/Hotline.Api/Controllers/OrderModuleControllers/OrderCarbonCopyController.cs

@@ -1,10 +1,20 @@
-using Hotline.Orders;
+using Hotline.Application.Orders;
+using Hotline.Caching.Services;
+using Hotline.FlowEngine.WorkflowModules;
+using Hotline.Orders;
 using Hotline.Repository.SqlSugar.Extensions;
+using Hotline.Settings.TimeLimits;
+using Hotline.Settings;
 using Hotline.Share.Dtos.Order;
+using Hotline.Share.Dtos.Order.CarbonCopy;
+using Hotline.Share.Enums.Order;
 using Hotline.Share.Requests;
 using MapsterMapper;
 using Microsoft.AspNetCore.Mvc;
+using XF.Domain.Authentications;
 using XF.Domain.Repository;
+using XF.Utility.EnumExtensions;
+using Hotline.Caching.Interfaces;
 
 namespace Hotline.Api.Controllers.OrderModuleControllers
 {
@@ -13,38 +23,51 @@ namespace Hotline.Api.Controllers.OrderModuleControllers
     /// </summary>
     public class OrderCarbonCopyController : BaseController
     {
-        private readonly IRepository<OrderCarboncopy> _orderccRepository;
+        private readonly IOrderCarbonCopyApplication _orderCarbonCopyApplication;
+        private readonly ISystemDicDataCacheManager _sysDicDataCacheManager;
         private readonly IMapper _mapper;
 
         public OrderCarbonCopyController(
-            IRepository<OrderCarboncopy> orderccRepository,
+            IOrderCarbonCopyApplication orderCarbonCopyApplication,
+            ISystemDicDataCacheManager sysDicDataCacheManager,
             IMapper mapper
         )
         {
-            _orderccRepository = orderccRepository;
+            _orderCarbonCopyApplication = orderCarbonCopyApplication;
+            _sysDicDataCacheManager = sysDicDataCacheManager;
             _mapper = mapper;
         }
 
         [HttpGet]
-        public async Task<IReadOnlyList<OrderDto>> Query([FromQuery]PagedKeywordRequest dto)
+        public async Task<IReadOnlyList<OrderDto>> Query([FromQuery] QueryCarbonCopyRequest dto)
         {
-            var orderccs = await _orderccRepository.Queryable()
-                .Includes(d => d.Order)
-                //todo 按照抄送权限查询
-                //.Where(d=> !string.IsNullOrEmpty())
-                .WhereIF(!string.IsNullOrEmpty(dto.Keyword), d => d.Order.No == dto.Keyword)
+            var orderccs = await _orderCarbonCopyApplication
+                .Query(dto)
                 .ToPageListWithoutTotalAsync(dto, HttpContext.RequestAborted);
 
             return _mapper.Map<IReadOnlyList<OrderDto>>(orderccs);
         }
 
         [HttpGet("count")]
-        public async Task<int> Count([FromQuery] PagedKeywordRequest dto)
+        public async Task<int> Count([FromQuery] QueryCarbonCopyRequest dto)
         {
-            return await _orderccRepository.Queryable()
-                .Includes(d => d.Order)
-                .WhereIF(!string.IsNullOrEmpty(dto.Keyword), d => d.Order.No == dto.Keyword)
+            return await _orderCarbonCopyApplication
+                .Query(dto)
                 .CountAsync(HttpContext.RequestAborted);
         }
+
+        /// <summary>
+        /// 列表页面基础数据
+        /// </summary>
+        /// <returns></returns>
+        [HttpGet("base-data")]
+        public async Task<object> BaseData()
+        {
+            var rsp = new
+            {
+                AcceptTypeOptions = _sysDicDataCacheManager.GetSysDicDataCache(SysDicTypeConsts.AcceptType),
+            };
+            return rsp;
+        }
     }
 }

+ 16 - 0
src/Hotline.Application/Orders/IOrderCarbonCopyApplication.cs

@@ -0,0 +1,16 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Hotline.Orders;
+using Hotline.Share.Dtos.Order.CarbonCopy;
+using SqlSugar;
+
+namespace Hotline.Application.Orders
+{
+    public interface IOrderCarbonCopyApplication
+    {
+        ISugarQueryable<OrderCarboncopy> Query(QueryCarbonCopyRequest request);
+    }
+}

+ 40 - 0
src/Hotline.Application/Orders/OrderCarbonCopyApplication.cs

@@ -0,0 +1,40 @@
+using Hotline.Orders;
+using Hotline.Share.Dtos.Order.CarbonCopy;
+using SqlSugar;
+using XF.Domain.Authentications;
+using XF.Domain.Repository;
+
+namespace Hotline.Application.Orders;
+
+public class OrderCarbonCopyApplication : IOrderCarbonCopyApplication
+{
+    private readonly ISessionContext _sessionContext;
+    private readonly IRepository<OrderCarboncopy> _orderccRepository;
+
+    public OrderCarbonCopyApplication(
+        ISessionContext sessionContext,
+        IRepository<OrderCarboncopy> orderccRepository)
+    {
+        _sessionContext = sessionContext;
+        _orderccRepository = orderccRepository;
+    }
+
+    public ISugarQueryable<OrderCarboncopy> Query(QueryCarbonCopyRequest dto)
+    {
+        return _orderccRepository.Queryable()
+            .Includes(d => d.Order)
+            .Where(d => (!string.IsNullOrEmpty(d.UserId) && d.UserId == _sessionContext.UserId)
+                        || (!string.IsNullOrEmpty(d.OrgId) && d.OrgId == _sessionContext.OrgId)
+                        || (!string.IsNullOrEmpty(d.RoleId) && _sessionContext.Roles.Contains(d.RoleId)))
+            .WhereIF(!string.IsNullOrEmpty(dto.No), d => d.Order.No.Contains(dto.No))//工单编码
+            .WhereIF(!string.IsNullOrEmpty(dto.Title), d => d.Order.Title.Contains(dto.Title!)) //标题
+            .WhereIF(!string.IsNullOrEmpty(dto.AcceptType), d => d.Order.AcceptTypeCode == dto.AcceptType) //受理类型
+            .WhereIF(!string.IsNullOrEmpty(dto.Hotspot), d => d.Order.HotspotSpliceName != null && d.Order.HotspotSpliceName.Contains(dto.Hotspot))
+            .WhereIF(!string.IsNullOrEmpty(dto.ActualHandleOrgName), d => d.Order.ActualHandleOrgName.Contains(dto.ActualHandleOrgName)) //接办部门(综合查询模糊)
+            .WhereIF(dto.CreationTimeStart.HasValue, d => d.Order.CreationTime >= dto.CreationTimeStart) //受理时间开始
+            .WhereIF(dto.CreationTimeEnd.HasValue, d => d.Order.CreationTime <= dto.CreationTimeEnd) //受理时间结束
+            .WhereIF(dto.ExpiredTimeStart.HasValue, d => d.Order.ExpiredTime >= dto.ExpiredTimeStart) //超期时间开始
+            .WhereIF(dto.ExpiredTimeEnd.HasValue, d => d.Order.ExpiredTime <= dto.ExpiredTimeEnd) //超期时间结束
+        ;
+    }
+}

+ 43 - 0
src/Hotline.Share/Dtos/Order/CarbonCopy/QueryCarbonCopyRequest.cs

@@ -0,0 +1,43 @@
+using Hotline.Share.Requests;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Hotline.Share.Dtos.Order.CarbonCopy
+{
+    public record QueryCarbonCopyRequest : PagedKeywordRequest
+    {
+        public string? No { get; set; }
+
+        public string? Title { get; set; }
+
+        /// <summary>
+        /// 受理类型(√)
+        /// </summary>
+        public string? AcceptType { get; set; }
+
+        /// <summary>
+        /// 热点分类关键词
+        /// </summary>
+        public string? Hotspot { get; set; }
+
+        /// <summary>
+        /// 接办部门(√)
+        /// </summary>
+        public string? ActualHandleOrgName { get; set; }
+
+        /// <summary>
+        /// 受理时间(工单创建时间)(√)
+        /// </summary>
+        public DateTime? CreationTimeStart { get; set; }
+        public DateTime? CreationTimeEnd { get; set; }
+
+        /// <summary>
+        /// 期满时间(√)
+        /// </summary>
+        public DateTime? ExpiredTimeStart { get; set; }
+        public DateTime? ExpiredTimeEnd { get; set; }
+    }
+}