75 lines
2.6 KiB
C#
75 lines
2.6 KiB
C#
using System;
|
||
using FreeSql.DataAnnotations;
|
||
using ZhonTai.Admin.Core.Entities;
|
||
using NPP.SmartSchedue.Api.Contracts.Core.Consts;
|
||
|
||
namespace NPP.SmartSchedue.Api.Contracts.Domain.Time;
|
||
|
||
/// <summary>
|
||
/// 员工班次不可用标记实体
|
||
/// 用于统一管理员工因个人意愿、培训任务、会议、设备维护、请假等原因无法工作的班次信息
|
||
/// </summary>
|
||
[Table(Name = DbConsts.TableNamePrefix + "shift_unavailability")]
|
||
[Index("ix_shift_unavailability_personnel_date", "PersonnelId,Date")]
|
||
[Index("ix_shift_unavailability_shift_date", "ShiftId,Date")]
|
||
[Index("ix_shift_unavailability_reason_date", "ReasonType,Date")]
|
||
public partial class ShiftUnavailabilityEntity : EntityTenant
|
||
{
|
||
/// <summary>
|
||
/// 员工ID
|
||
/// </summary>
|
||
public long PersonnelId { get; set; }
|
||
|
||
/// <summary>
|
||
/// 不可用日期
|
||
/// </summary>
|
||
public DateTime Date { get; set; }
|
||
|
||
/// <summary>
|
||
/// 不可用班次ID
|
||
/// </summary>
|
||
public long ShiftId { get; set; }
|
||
|
||
/// <summary>
|
||
/// 不可用原因类型 (使用int存储,对应UnavailabilityReasonType枚举)
|
||
/// 1=个人意愿, 2=培训任务, 3=会议任务, 4=设备维护, 7=临时请假, 8=计划请假, 9=医疗原因, 10=家庭事务, 11=轮岗安排, 12=技能认证, 99=其他原因
|
||
/// </summary>
|
||
public int ReasonType { get; set; }
|
||
|
||
/// <summary>
|
||
/// 备注说明
|
||
/// </summary>
|
||
[Column(StringLength = 500)]
|
||
public string Remark { get; set; }
|
||
|
||
/// <summary>
|
||
/// 是否为模板生成的记录
|
||
/// 用于追踪通过模板复制或周期性设置生成的记录
|
||
/// </summary>
|
||
public bool IsFromTemplate { get; set; } = false;
|
||
|
||
/// <summary>
|
||
/// 来源模板日期
|
||
/// 当IsFromTemplate=true时,记录模板的来源日期,用于追溯和管理
|
||
/// </summary>
|
||
public DateTime? SourceTemplateDate { get; set; }
|
||
|
||
/// <summary>
|
||
/// 优先级权重(用于冲突解决)
|
||
/// 数值越大优先级越高,默认为1
|
||
/// 当同一员工同一日期同一班次有多条记录时,优先级高的生效
|
||
/// </summary>
|
||
public int Priority { get; set; } = 1;
|
||
|
||
/// <summary>
|
||
/// 生效开始时间(可选,用于精确时间控制)
|
||
/// 当需要精确控制不可用时间段时使用,如只在班次的某个时间段内不可用
|
||
/// </summary>
|
||
public TimeSpan? EffectiveStartTime { get; set; }
|
||
|
||
/// <summary>
|
||
/// 生效结束时间(可选,用于精确时间控制)
|
||
/// 配合EffectiveStartTime使用,定义精确的不可用时间段
|
||
/// </summary>
|
||
public TimeSpan? EffectiveEndTime { get; set; }
|
||
} |