Developer 058d8edffa 添加通知系统和工作任务分配功能
- 新增通知系统完整架构,包含通知设置、历史记录、任务管理等核心功能
- 实现工作任务分配服务,支持人员和设备的智能分配
- 添加人员分组管理功能,支持灵活的通知目标配置
- 完善相关枚举定义和数据传输对象

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-05 08:34:01 +08:00

63 lines
2.2 KiB
C#

using System.Collections.Generic;
using System.Threading.Tasks;
using NPP.SmartSchedue.Api.Contracts.Domain.Notification;
using NPP.SmartSchedue.Api.Contracts.Core.Enums;
using ZhonTai.Admin.Core.Repositories;
namespace NPP.SmartSchedue.Api.Contracts.Core.Repositories;
/// <summary>
/// 人员组仓储接口
/// </summary>
public interface IPersonnelGroupRepository : IRepositoryBase<PersonnelGroupEntity>
{
/// <summary>
/// 根据启用状态获取人员组列表
/// </summary>
/// <param name="enabled">是否启用</param>
/// <returns></returns>
Task<List<PersonnelGroupEntity>> GetByEnabledAsync(bool enabled);
/// <summary>
/// 根据人员组类型获取人员组列表
/// </summary>
/// <param name="groupType">人员组类型</param>
/// <returns></returns>
Task<List<PersonnelGroupEntity>> GetByGroupTypeAsync(PersonnelGroupTypeEnum groupType);
/// <summary>
/// 检查人员组名称是否存在
/// </summary>
/// <param name="groupName">人员组名称</param>
/// <param name="excludeId">排除的ID</param>
/// <returns></returns>
Task<bool> ExistsGroupNameAsync(string groupName, long? excludeId = null);
/// <summary>
/// 获取包含指定人员的人员组列表
/// </summary>
/// <param name="personnelId">人员ID</param>
/// <returns></returns>
Task<List<PersonnelGroupEntity>> GetGroupsContainingPersonnelAsync(long personnelId);
/// <summary>
/// 获取包含指定部门的人员组列表
/// </summary>
/// <param name="departmentId">部门ID</param>
/// <returns></returns>
Task<List<PersonnelGroupEntity>> GetGroupsContainingDepartmentAsync(long departmentId);
/// <summary>
/// 获取包含指定职位的人员组列表
/// </summary>
/// <param name="position">职位</param>
/// <returns></returns>
Task<List<PersonnelGroupEntity>> GetGroupsContainingPositionAsync(string position);
/// <summary>
/// 计算人员组的实际人员数量
/// </summary>
/// <param name="personnelGroupId">人员组ID</param>
/// <returns></returns>
Task<int> CalculatePersonnelCountAsync(long personnelGroupId);
}