Asoka.Wang 0a2e2d9b18 123
2025-09-02 18:52:35 +08:00

89 lines
2.4 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using NPP.SmartSchedue.Api.Contracts.Core.Enums;
namespace NPP.SmartSchedue.Api.Contracts.Services.Time.Input;
/// <summary>
/// 批量单元格编辑操作输入模型
/// 用于批量修改班次不可用标记的复杂操作
/// </summary>
public class BatchCellEditInput
{
/// <summary>
/// 单元格操作列表
/// </summary>
[Required(ErrorMessage = "单元格操作列表不能为空")]
[MinLength(1, ErrorMessage = "至少需要指定一个操作")]
public List<BatchCellOperation> CellOperations { get; set; } = new();
/// <summary>
/// 是否标记为模板生成
/// </summary>
public bool MarkAsTemplate { get; set; } = false;
/// <summary>
/// 操作备注
/// </summary>
[StringLength(200, ErrorMessage = "备注长度不能超过200字符")]
public string Remark { get; set; }
}
/// <summary>
/// 单个单元格操作定义
/// 包含操作类型和目标信息
/// </summary>
public class BatchCellOperation
{
/// <summary>
/// 操作类型
/// </summary>
[Required(ErrorMessage = "操作类型不能为空")]
public BatchCellOperationType Operation { get; set; }
/// <summary>
/// 员工ID
/// </summary>
[Required(ErrorMessage = "员工ID不能为空")]
public long PersonnelId { get; set; }
/// <summary>
/// 日期
/// </summary>
[Required(ErrorMessage = "日期不能为空")]
public DateTime Date { get; set; }
/// <summary>
/// 班次ID
/// </summary>
[Required(ErrorMessage = "班次ID不能为空")]
public long ShiftId { get; set; }
/// <summary>
/// 不可用原因类型Set操作时必填
/// </summary>
public UnavailabilityReasonType? ReasonType { get; set; }
/// <summary>
/// 备注说明
/// </summary>
[StringLength(200, ErrorMessage = "备注长度不能超过200字符")]
public string Remark { get; set; }
/// <summary>
/// 优先级权重
/// </summary>
[Range(1, 100, ErrorMessage = "优先级权重必须在1-100之间")]
public int? Priority { get; set; }
/// <summary>
/// 生效开始时间
/// </summary>
public DateTime? EffectiveStartTime { get; set; }
/// <summary>
/// 生效结束时间
/// </summary>
public DateTime? EffectiveEndTime { get; set; }
}