17630416519 d7f620bfe0 1
2025-09-15 18:10:40 +08:00

231 lines
13 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 System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DOAN.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; }
}
}