231 lines
13 KiB
C#
Raw Normal View History

2026-01-12 14:57:56 +08:00
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace RIZO.Model.MES.product
{
/// <summary>
/// 周生产计划表存储汽车零部件每周生产计划关联ERP订单与车间执行数据
/// </summary>
[SugarTable("pro_weekly_plan")]
public class ProWeeklyPlan
{
/// <summary>
/// 主键ID自增唯一标识
/// </summary>
[SugarColumn(ColumnDataType = "bigint", IsPrimaryKey = true, IsIdentity = true, ColumnDescription = "主键ID自增唯一标识", ColumnName = "id")]
public long Id { get; set; }
/// <summary>
/// 周计划编号业务唯一标识格式WP+年份+月份+序号如WP20250825001
/// </summary>
[SugarColumn(ColumnDataType = "varchar(64)", ColumnName = "plan_code", IsNullable = false, ColumnDescription = "周计划编号业务唯一标识格式WP+年份+月份+序号如WP20250825001")]
[Required(ErrorMessage = "周计划编号不能为空")]
public string PlanCode { get; set; } = string.Empty;
/// <summary>
/// 计划年份如2025用于跨年度计划统计
/// </summary>
[SugarColumn(ColumnDataType = "int", IsNullable = false, ColumnDescription = "计划年份如2025用于跨年度计划统计", ColumnName = "plan_year")]
[Required(ErrorMessage = "计划年份不能为空")]
public int PlanYear { get; set; }
/// <summary>
/// 计划周数1-53遵循ISO周历标准如34表示当年第34周
/// </summary>
[SugarColumn(ColumnDataType = "int", IsNullable = false, ColumnDescription = "计划周数1-53遵循ISO周历标准如34表示当年第34周", ColumnName = "plan_week")]
[Required(ErrorMessage = "计划周数不能为空")]
public int PlanWeek { get; set; }
/// <summary>
/// 计划开始日期固定为周一如2025-08-25
/// </summary>
[SugarColumn(ColumnDataType = "date", IsNullable = false, ColumnDescription = "计划开始日期固定为周一如2025-08-25", ColumnName = "plan_start_date")]
[Required(ErrorMessage = "计划开始日期不能为空")]
public DateTime PlanStartDate { get; set; }
/// <summary>
/// 计划结束日期固定为周日如2025-08-31
/// </summary>
[SugarColumn(ColumnDataType = "date", IsNullable = false, ColumnDescription = "计划结束日期固定为周日如2025-08-31", ColumnName = "plan_end_date")]
[Required(ErrorMessage = "计划结束日期不能为空")]
public DateTime PlanEndDate { get; set; }
/// <summary>
/// 关联ERP生产订单号如PO202508001用于追溯订单源头
/// </summary>
[SugarColumn(ColumnDataType = "varchar(64)", IsNullable = false, ColumnDescription = "关联ERP生产订单号如PO202508001用于追溯订单源头", ColumnName = "order_code")]
[Required(ErrorMessage = "关联ERP生产订单号不能为空")]
public string OrderCode { get; set; } = string.Empty;
/// <summary>
/// 零部件编码企业内部唯一编码如P-1001-制动盘)
/// </summary>
[SugarColumn(ColumnDataType = "varchar(64)", IsNullable = false, ColumnDescription = "零部件编码企业内部唯一编码如P-1001-制动盘)", ColumnName = "product_code")]
[Required(ErrorMessage = "零部件编码不能为空")]
public string ProductCode { get; set; } = string.Empty;
/// <summary>
/// 零部件名称(如汽车制动盘总成)
/// </summary>
[SugarColumn(ColumnDataType = "varchar(128)", IsNullable = false, ColumnDescription = "零部件名称(如汽车制动盘总成)", ColumnName = "product_name")]
[Required(ErrorMessage = "零部件名称不能为空")]
public string ProductName { get; set; } = string.Empty;
/// <summary>
/// 规格型号如适配车型B70
/// </summary>
[SugarColumn(ColumnDataType = "varchar(128)", IsNullable = true, DefaultValue = null, ColumnDescription = "规格型号如适配车型B70", ColumnName = "specification")]
public string Specification { get; set; } = string.Empty;
/// <summary>
/// 产品颜色(如高亮黑、珍珠白)
/// </summary>
[SugarColumn(ColumnDataType = "varchar(128)", IsNullable = true, DefaultValue = null, ColumnDescription = "产品颜色(如高亮黑、珍珠白)", ColumnName = "color")]
public string Color { get; set; } = string.Empty;
/// <summary>
/// 本周计划生产总数(单位:件)
/// </summary>
[SugarColumn(ColumnDataType = "int", IsNullable = false, ColumnDescription = "本周计划生产总数(单位:件)", ColumnName = "plan_qty")]
[Required(ErrorMessage = "本周计划生产总数不能为空")]
public int PlanQty { get; set; }
/// <summary>
/// 累计已完成数量(实时同步自日执行表)
/// </summary>
[SugarColumn(ColumnDataType = "int", IsNullable = false, ColumnDescription = "累计已完成数量(实时同步自日执行表)", ColumnName = "completed_qty")]
public int CompletedQty { get; set; } = 0;
/// <summary>
/// 剩余未完成数量自动计算plan_qty - completed_qty
/// </summary>
[SugarColumn(ColumnDataType = "int", IsNullable = false, ColumnDescription = "剩余未完成数量自动计算plan_qty - completed_qty", ColumnName = "remaining_qty")]
public int RemainingQty { get; set; } = 0;
/// <summary>
/// 累计报废/报损数量(含过程报废和最终检验报废)
/// </summary>
[SugarColumn(ColumnDataType = "int", IsNullable = false, ColumnDescription = "累计报废/报损数量(含过程报废和最终检验报废)", ColumnName = "scrap_qty")]
public int ScrapQty { get; set; } = 0;
/// <summary>
/// 生产车间编码如SHGX01关联车间基础数据表
/// </summary>
[SugarColumn(ColumnDataType = "varchar(64)", IsNullable = false, ColumnDescription = "生产车间编码如SHGX01关联车间基础数据表", ColumnName = "workshop_code")]
[Required(ErrorMessage = "生产车间编码不能为空")]
public string WorkshopCode { get; set; } = string.Empty;
/// <summary>
/// 生产车间名称如总装车间A区
/// </summary>
[SugarColumn(ColumnDataType = "varchar(64)", IsNullable = false, ColumnDescription = "生产车间名称如总装车间A区", ColumnName = "workshop_name")]
[Required(ErrorMessage = "生产车间名称不能为空")]
public string WorkshopName { get; set; } = string.Empty;
/// <summary>
/// 生产线编码如LINE03标识具体生产流水线
/// </summary>
[SugarColumn(ColumnDataType = "varchar(64)", IsNullable = false, ColumnDescription = "生产线编码如LINE03标识具体生产流水线", ColumnName = "line_code")]
[Required(ErrorMessage = "生产线编码不能为空")]
public string LineCode { get; set; } = string.Empty;
/// <summary>
/// 生产线名称(如制动盘装配线)
/// </summary>
[SugarColumn(ColumnDataType = "varchar(64)", IsNullable = false, ColumnDescription = "生产线名称(如制动盘装配线)", ColumnName = "line_name")]
[Required(ErrorMessage = "生产线名称不能为空")]
public string LineName { get; set; } = string.Empty;
/// <summary>
/// 计划组别编码如GRP02用于计划员分工管理
/// </summary>
[SugarColumn(ColumnDataType = "varchar(64)", IsNullable = false, ColumnDescription = "计划组别编码如GRP02用于计划员分工管理", ColumnName = "group_code")]
[Required(ErrorMessage = "计划组别编码不能为空")]
public string GroupCode { get; set; } = string.Empty;
/// <summary>
/// 计划组别名称(如底盘件计划组)
/// </summary>
[SugarColumn(ColumnDataType = "varchar(64)", IsNullable = false, ColumnDescription = "计划组别名称(如底盘件计划组)", ColumnName = "group_name")]
[Required(ErrorMessage = "计划组别名称不能为空")]
public string GroupName { get; set; } = string.Empty;
/// <summary>
/// 班次类型1白班2夜班3三班倒标识生产班次模式
/// </summary>
[SugarColumn(ColumnDataType = "tinyint", IsNullable = false, ColumnDescription = "班次类型1白班2夜班3三班倒标识生产班次模式", ColumnName = "shift_type")]
[Required(ErrorMessage = "班次类型不能为空")]
public byte ShiftType { get; set; }
/// <summary>
/// 计划状态0未开始1执行中2已完成3暂停4取消
/// </summary>
[SugarColumn(ColumnDataType = "varchar(64)", IsNullable = false, ColumnDescription = "计划状态define", ColumnName = "plan_status")]
[Required(ErrorMessage = "计划状态不能为空")]
public string PlanStatus { get; set; } = string.Empty;
/// <summary>
/// 车间计划员工号如EMP00123
/// </summary>
[SugarColumn(ColumnDataType = "varchar(64)", IsNullable = false, ColumnDescription = "车间计划员", ColumnName = "planner")]
public string Planner { get; set; } = string.Empty;
/// <summary>
/// 生产优先级1最高2正常3最低用于插单排程调整
/// </summary>
[SugarColumn(ColumnDataType = "tinyint", IsNullable = true, ColumnDescription = "生产优先级1最高2正常3最低用于插单排程调整", ColumnName = "priority")]
public byte? Priority { get; set; } = 2;
/// <summary>
/// 计划执行排序号,决定同周内多计划的生产先后顺序
/// </summary>
[SugarColumn(ColumnDataType = "int", IsNullable = false, ColumnDescription = "计划执行排序号,决定同周内多计划的生产先后顺序", ColumnName = "sort")]
[Required(ErrorMessage = "计划执行排序号不能为空")]
public int Sort { get; set; }
/// <summary>
/// 物料齐套状态0未齐套1已齐套2部分齐套影响计划可执行性
/// </summary>
[SugarColumn(ColumnDataType = "tinyint", IsNullable = true, ColumnDescription = "物料齐套状态0未齐套1已齐套2部分齐套影响计划可执行性", ColumnName = "material_ready")]
public byte? MaterialReady { get; set; } = 0;
/// <summary>
/// 备注信息(如特殊工艺要求、主机厂交付节点提醒等)
/// </summary>
[SugarColumn(ColumnDataType = "text", IsNullable = true, ColumnDescription = "备注信息(如特殊工艺要求、主机厂交付节点提醒等)", ColumnName = "remark")]
public string? Remark { get; set; }
/// <summary>
/// 创建人计划员工号如EMP00123
/// </summary>
[SugarColumn(ColumnDataType = "varchar(64)", IsNullable = false, ColumnDescription = "创建人计划员工号如EMP00123", ColumnName = "created_by")]
[Required(ErrorMessage = "创建人不能为空")]
public string CreatedBy { get; set; } = string.Empty;
/// <summary>
/// 计划创建时间
/// </summary>
[SugarColumn(ColumnDataType = "datetime", IsNullable = false, DefaultValue = "CURRENT_TIMESTAMP", ColumnDescription = "计划创建时间", ColumnName = "created_time")]
[Required(ErrorMessage = "创建时间不能为空")]
public DateTime CreatedTime { get; set; } = DateTime.Now;
/// <summary>
/// 最后更新人(工号)
/// </summary>
[SugarColumn(ColumnDataType = "varchar(64)", IsNullable = true, ColumnDescription = "最后更新人(工号)", ColumnName = "updated_by")]
public string? UpdatedBy { get; set; }
/// <summary>
/// 最后更新时间(自动触发)
/// </summary>
[SugarColumn(ColumnDataType = "datetime", IsNullable = true, DefaultValue = "CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP", ColumnDescription = "最后更新时间(自动触发)", ColumnName = "updated_time")]
public DateTime? UpdatedTime { get; set; }
}
}