admin 2 år sedan
förälder
incheckning
e7d670c496

+ 6 - 3
src/Hotline.Api/Controllers/PbxController.cs

@@ -48,6 +48,7 @@ namespace Hotline.Api.Controllers
         private readonly IIvrCacheManager _ivrCacheManager;
         private readonly ILogger<TelController> _logger;
         private readonly ICallDetailRepository _callDetailRepository;
+        private readonly IUserRepository _userRepository;
 
         public PbxController(
             ITelRepository telRepository,
@@ -69,7 +70,8 @@ namespace Hotline.Api.Controllers
             IIvrDomainService ivrDomainService,
             IIvrCacheManager ivrCacheManager,
             ILogger<TelController> logger,
-            ICallDetailRepository callDetailRepository)
+            ICallDetailRepository callDetailRepository,
+            IUserRepository userRepository)
         {
             _telRepository = telRepository;
             _telRestRepository = telRestRepository;
@@ -91,6 +93,7 @@ namespace Hotline.Api.Controllers
             _ivrCacheManager = ivrCacheManager;
             _logger = logger;
             _callDetailRepository = callDetailRepository;
+            _userRepository = userRepository;
         }
 
         #region 话机
@@ -256,8 +259,8 @@ namespace Hotline.Api.Controllers
             if (isResting)
                 throw new UserFriendlyException("当前坐席正在休息");
 
-            
-            var telRest = new TelRest(work.TelId, work.TelNo, work.UserId, work.UserName, dto.Reason, isCanApply);
+            var user = _userRepository.Get(work.UserId);
+            var telRest = new TelRest(work.TelId, work.TelNo, work.UserId, work.UserName, dto.Reason, isCanApply,user.StaffNo);
             await _telRestRepository.AddAsync(telRest, HttpContext.RequestAborted);
             if (!isCanApply)
             {

+ 32 - 1
src/Hotline.Api/Controllers/UserController.cs

@@ -37,6 +37,7 @@ public class UserController : BaseController
     private readonly IAccountRepository _accountRepository;
     private readonly IAccountDomainService _accountDomainService;
     private readonly IOptions<IdentityConfiguration> _identityConfigurationAccessor;
+    private readonly ITelRestRepository _telRestRepository;
 
     public UserController(
         ISessionContext sessionContext,
@@ -49,7 +50,8 @@ public class UserController : BaseController
         IMapper mapper,
         IAccountRepository accountRepository,
         IAccountDomainService accountDomainService,
-        IOptions<IdentityConfiguration> identityConfigurationAccessor)
+        IOptions<IdentityConfiguration> identityConfigurationAccessor,
+        ITelRestRepository telRestRepository)
     {
         _sessionContext = sessionContext;
         _userDomainService = userDomainService;
@@ -62,8 +64,37 @@ public class UserController : BaseController
         _accountRepository = accountRepository;
         _accountDomainService = accountDomainService;
         _identityConfigurationAccessor = identityConfigurationAccessor;
+        _telRestRepository = telRestRepository;
     }
 
+
+    #region 小休申请
+
+    /// <summary>
+    /// 小休申请列表
+    /// </summary>
+    /// <param name="dto"></param>
+    /// <returns></returns>
+    [HttpGet("rest-apply-paged")]
+    public async Task<PagedDto<RestDto>> RestApplyList([FromQuery] RestPagedDto dto)
+    {
+        var (total, items) = await _telRestRepository.Queryable(includeDeleted: false)
+            .WhereIF(!string.IsNullOrEmpty(dto.KeyWords), d => d.UserName.Contains(dto.KeyWords) || d.StaffNo.Contains(dto.KeyWords))
+            .WhereIF(dto.BeginTime != null && dto.BeginTime != DateTime.MinValue, d => d.CreationTime >= dto.BeginTime)
+            .WhereIF(dto.EndTime != null && dto.EndTime != DateTime.MinValue, d => d.CreationTime <= dto.EndTime)
+            .OrderByDescending(d => d.CreationTime)
+            .ToPagedListAsync(dto.PageIndex, dto.PageSize, HttpContext.RequestAborted);
+
+        return new PagedDto<RestDto>(total, _mapper.Map<IReadOnlyList<RestDto>>(items));
+    }
+
+
+    #endregion
+
+
+
+
+
     /// <summary>
     /// 上班
     /// </summary>

+ 28 - 0
src/Hotline.Share/Dtos/Users/UserDto.cs

@@ -1,11 +1,39 @@
 using Hotline.Share.Dtos.Org;
 using Hotline.Share.Dtos.Roles;
+using Hotline.Share.Enums.CallCenter;
 using Hotline.Share.Enums.Order;
 using XF.Utility.EnumExtensions;
 
 namespace Hotline.Share.Dtos.Users;
 
 
+public record RestDto
+{
+    public string Id { get; set; }
+
+    public string TelId { get; set; }
+
+    public string TelNo { get; set; }
+
+    public string UserId { get; set; }
+
+    public string UserName { get; set; }
+
+    public DateTime CreationTime { get; set; }
+
+    public DateTime? StartTime { get; set; }
+
+    public DateTime? EndTime { get; set; }
+
+    public double RestDuration { get; set; }
+
+    public string Reason { get; set; }
+
+    public ETelRestApplyStatus ApplyStatus { get; set; }
+
+    public string? WorkflowId { get; set; }
+}
+
 public record UserDto : AddUserDto
 {
     public string Id { get; set; }

+ 4 - 1
src/Hotline.Share/Dtos/Users/UserPagedDto.cs

@@ -1,6 +1,9 @@
-using Hotline.Share.Requests;
+using Hotline.Share.Enums.CallCenter;
+using Hotline.Share.Requests;
 
 namespace Hotline.Share.Dtos.Users
 {
     public record UserPagedDto(string? OrgCode, string? Role) : PagedKeywordRequest;
+
+    public record RestPagedDto(string? KeyWords,DateTime? BeginTime,DateTime? EndTime, ETelRestApplyStatus Status): PagedRequest;
 }

+ 1 - 1
src/Hotline/CallCenter/Tels/ITelDomainService.cs

@@ -50,7 +50,7 @@ namespace Hotline.CallCenter.Tels
         /// <param name="currentWork"></param>
         /// <param name="cancellationToken"></param>
         /// <returns></returns>
-        Task<string> RestAsync(Work currentWork, string reason, bool isApply, CancellationToken cancellationToken);
+        //Task<string> RestAsync(Work currentWork, string reason, bool isApply, CancellationToken cancellationToken);
 
         /// <summary>
         /// 分机小休审批通过

+ 12 - 12
src/Hotline/CallCenter/Tels/TelDomainService.cs

@@ -74,18 +74,18 @@ public class TelDomainService : ITelDomainService, IScopeDependency
     /// <param name="currentWork"></param>
     /// <param name="cancellationToken"></param>
     /// <returns></returns>
-    public async Task<string> RestAsync(Work currentWork, string reason, bool isApply, CancellationToken cancellationToken)
-    {
-        var isResting = await _telRepository.IsRestingAsync(currentWork.TelNo, cancellationToken);
-        if (!isResting)
-        {
-            await _deviceManager.TelRestAsync(currentWork.TelNo, cancellationToken);
-
-            return await _telRestRepository.AddAsync(new TelRest(currentWork.TelId, currentWork.TelNo, currentWork.UserId, currentWork.UserName, reason, isApply),
-                cancellationToken);
-        }
-        throw new UserFriendlyException("当前坐席正在休息");
-    }
+    //public async Task<string> RestAsync(Work currentWork, string reason, bool isApply, CancellationToken cancellationToken)
+    //{
+    //    var isResting = await _telRepository.IsRestingAsync(currentWork.TelNo, cancellationToken);
+    //    if (!isResting)
+    //    {
+    //        await _deviceManager.TelRestAsync(currentWork.TelNo, cancellationToken);
+
+    //        return await _telRestRepository.AddAsync(new TelRest(currentWork.TelId, currentWork.TelNo, currentWork.UserId, currentWork.UserName, reason, isApply),
+    //            cancellationToken);
+    //    }
+    //    throw new UserFriendlyException("当前坐席正在休息");
+    //}
 
     /// <summary>
     /// 分机审批通过

+ 9 - 2
src/Hotline/CallCenter/Tels/TelRest.cs

@@ -54,14 +54,21 @@ namespace Hotline.CallCenter.Tels
         /// </summary>
         public ETelRestApplyStatus ApplyStatus { get; set; }
 
+        /// <summary>
+        /// 工号(冗余)
+        /// </summary>
+        [SugarColumn( IsNullable = true)]
+        public string? StaffNo { get; set; }
+
+
         public TelRest()
         {
 
         }
 
-        public TelRest(string telId, string telNo, string userId, string userName,string reason,bool isApply)
+        public TelRest(string telId, string telNo, string userId, string userName,string reason,bool isApply,string staffNo)
         {
-            TelId = telId; TelNo = telNo; UserId = userId; UserName = userName; Reason = reason;
+            TelId = telId; TelNo = telNo; UserId = userId; UserName = userName; Reason = reason;StaffNo = staffNo;
 
             if(isApply)
             {