From 2c8b6a511da5848099f9419b36997716395979a5 Mon Sep 17 00:00:00 2001 From: Rodney Chen <rodney.chen@hotmail.com> Date: 星期五, 26 七月 2024 11:04:30 +0800 Subject: [PATCH] 工单,工单批次,在制品信息增加物料信息的导航属性 --- Tiger.Model.Net/Entitys/MES/BIZ_MES_WO_BATCH.cs | 3 Tiger.Api/Controllers/Test/TestController.R.cs | 1 Tiger.Model.Net/Entitys/MES/MES_WIP_DATA.cs | 21 ++-- Tiger.Model.Net/Entitys/MES/BIZ_MES_WO.cs | 247 +++++++++++++++++++++++++------------------------ 4 files changed, 140 insertions(+), 132 deletions(-) diff --git a/Tiger.Api/Controllers/Test/TestController.R.cs b/Tiger.Api/Controllers/Test/TestController.R.cs index bb1017a..a0c09bf 100644 --- a/Tiger.Api/Controllers/Test/TestController.R.cs +++ b/Tiger.Api/Controllers/Test/TestController.R.cs @@ -106,6 +106,7 @@ [HttpGet] public async Task<IActionResult> Get2Async(string param) { + var auth = new AuthOption() { UserId = "admin", ByOrg = true, ByWh = true }; //var data = await Biz.Db.Queryable<BIZ_ERP_PO>().Where(q => q.BILLTYPE == 11) // //.ByAuth("admin", DbAuth.Org | DbAuth.Wh) diff --git a/Tiger.Model.Net/Entitys/MES/BIZ_MES_WO.cs b/Tiger.Model.Net/Entitys/MES/BIZ_MES_WO.cs index 346d982..38e3f50 100644 --- a/Tiger.Model.Net/Entitys/MES/BIZ_MES_WO.cs +++ b/Tiger.Model.Net/Entitys/MES/BIZ_MES_WO.cs @@ -7,181 +7,181 @@ namespace Tiger.Model { /// <summary> - /// 实体:工单 + /// 瀹炰綋锛氬伐鍗� /// </summary> [Description("Primary:ID")] - [DisplayName("工单")] + [DisplayName("宸ュ崟")] [Serializable] [SugarTable("BIZ_MES_WO")] public class BIZ_MES_WO : DbEntityWithAuth { - #region 构造函数 + #region 鏋勯�犲嚱鏁� /// <summary> - /// 实体:工单 + /// 瀹炰綋锛氬伐鍗� /// </summary> public BIZ_MES_WO() {} #endregion - #region 公共属性 + #region 鍏叡灞炴�� /// <summary> - /// 工单号 + /// 宸ュ崟鍙� /// </summary> - [DisplayName("工单号")] + [DisplayName("宸ュ崟鍙�")] public string ORDER_NO { get; set; } /// <summary> - /// 工单类型(0Plan计划|1Standard标准|2Rework返工|3Restructuring在库改制|5Outsourcing委外|6RD研发|7Forecast预测|8Disassemble拆卸) + /// 宸ュ崟绫诲瀷(0Plan璁″垝|1Standard鏍囧噯|2Rework杩斿伐|3Restructuring鍦ㄥ簱鏀瑰埗|5Outsourcing濮斿|6RD鐮斿彂|7Forecast棰勬祴|8Disassemble鎷嗗嵏) /// </summary> - [DisplayName("工单类型(0Plan计划|1Standard标准|2Rework返工|3Restructuring在库改制|5Outsourcing委外|6RD研发|7Forecast预测|8Disassemble拆卸)")] + [DisplayName("宸ュ崟绫诲瀷(0Plan璁″垝|1Standard鏍囧噯|2Rework杩斿伐|3Restructuring鍦ㄥ簱鏀瑰埗|5Outsourcing濮斿|6RD鐮斿彂|7Forecast棰勬祴|8Disassemble鎷嗗嵏)")] public int ORDER_TYPE { get; set; } /// <summary> - /// 工单描述 + /// 宸ュ崟鎻忚堪 /// </summary> - [DisplayName("工单描述")] + [DisplayName("宸ュ崟鎻忚堪")] public string ORDER_DESC { get; set; } /// <summary> - /// 父工单 + /// 鐖跺伐鍗� /// </summary> - [DisplayName("父工单")] + [DisplayName("鐖跺伐鍗�")] public string PARENT_ORDER { get; set; } /// <summary> - /// 状态(0Init初始化|1Imported已导入|2Release已下发|3Working生产中|4Paused已暂停|5Closed已关闭) + /// 鐘舵��(0Init鍒濆鍖東1Imported宸插鍏2Release宸蹭笅鍙憒3Working鐢熶骇涓瓅4Paused宸叉殏鍋渱5Closed宸插叧闂�) /// </summary> - [DisplayName("状态(0Init初始化|1Imported已导入|2Release已下发|3Working生产中|4Paused已暂停|5Closed已关闭)")] + [DisplayName("鐘舵��(0Init鍒濆鍖東1Imported宸插鍏2Release宸蹭笅鍙憒3Working鐢熶骇涓瓅4Paused宸叉殏鍋渱5Closed宸插叧闂�)")] public int STATUS { get; set; } /// <summary> - /// 物料编码 + /// 鐗╂枡缂栫爜 /// </summary> - [DisplayName("物料编码")] + [DisplayName("鐗╂枡缂栫爜")] public string ITEM_CODE { get; set; } /// <summary> - /// 物料类型 + /// 鐗╂枡绫诲瀷 /// </summary> - [DisplayName("物料类型")] + [DisplayName("鐗╂枡绫诲瀷")] public string ITEM_TYPE { get; set; } /// <summary> - /// 机型 + /// 鏈哄瀷 /// </summary> - [DisplayName("机型")] + [DisplayName("鏈哄瀷")] public string ITEM_MODEL { get; set; } /// <summary> - /// 优先级 + /// 浼樺厛绾� /// </summary> - [DisplayName("优先级")] + [DisplayName("浼樺厛绾�")] public string PRIORITY { get; set; } /// <summary> - /// 客户编码 + /// 瀹㈡埛缂栫爜 /// </summary> - [DisplayName("客户编码")] + [DisplayName("瀹㈡埛缂栫爜")] public string CUST_CODE { get; set; } /// <summary> - /// 路由编码 + /// 璺敱缂栫爜 /// </summary> - [DisplayName("路由编码")] + [DisplayName("璺敱缂栫爜")] public string ROUTE_CODE { get; set; } /// <summary> - /// 工艺状态(0WaitSet待配置|1Finish已配置|2Cancel取消|3Close关闭) + /// 宸ヨ壓鐘舵��(0WaitSet寰呴厤缃畖1Finish宸查厤缃畖2Cancel鍙栨秷|3Close鍏抽棴) /// </summary> - [DisplayName("工艺状态(0WaitSet待配置|1Finish已配置|2Cancel取消|3Close关闭)")] + [DisplayName("宸ヨ壓鐘舵��(0WaitSet寰呴厤缃畖1Finish宸查厤缃畖2Cancel鍙栨秷|3Close鍏抽棴)")] public int ROUTE_STATUS { get; set; } /// <summary> - /// 工厂 + /// 宸ュ巶 /// </summary> - [DisplayName("工厂")] + [DisplayName("宸ュ巶")] public string FACTORY { get; set; } /// <summary> - /// 车间编码 + /// 杞﹂棿缂栫爜 /// </summary> - [DisplayName("车间编码")] + [DisplayName("杞﹂棿缂栫爜")] public string WS_CODE { get; set; } /// <summary> - /// 计划线体 + /// 璁″垝绾夸綋 /// </summary> - [DisplayName("计划线体")] + [DisplayName("璁″垝绾夸綋")] public string PLAN_LINE { get; set; } /// <summary> - /// 实际线体 + /// 瀹為檯绾夸綋 /// </summary> - [DisplayName("实际线体")] + [DisplayName("瀹為檯绾夸綋")] public string ACT_LINE { get; set; } /// <summary> - /// 计划开始时间 + /// 璁″垝寮�濮嬫椂闂� /// </summary> - [DisplayName("计划开始时间")] + [DisplayName("璁″垝寮�濮嬫椂闂�")] public DateTime PLAN_START_TIME { get; set; } = DateTime.MinValue; /// <summary> - /// 计划结束时间 + /// 璁″垝缁撴潫鏃堕棿 /// </summary> - [DisplayName("计划结束时间")] + [DisplayName("璁″垝缁撴潫鏃堕棿")] public DateTime PLAN_END_TIME { get; set; } = DateTime.MinValue; /// <summary> - /// 实际开始时间 + /// 瀹為檯寮�濮嬫椂闂� /// </summary> - [DisplayName("实际开始时间")] + [DisplayName("瀹為檯寮�濮嬫椂闂�")] public DateTime ACT_START_TIME { get; set; } = DateTime.MinValue; /// <summary> - /// 实际结束时间 + /// 瀹為檯缁撴潫鏃堕棿 /// </summary> - [DisplayName("实际结束时间")] + [DisplayName("瀹為檯缁撴潫鏃堕棿")] public DateTime ACT_END_TIME { get; set; } = DateTime.MinValue; /// <summary> - /// 标准作业人数 + /// 鏍囧噯浣滀笟浜烘暟 /// </summary> - [DisplayName("标准作业人数")] + [DisplayName("鏍囧噯浣滀笟浜烘暟")] public int STD_WORKER_QTY { get; set; } /// <summary> - /// 实际作业人数 + /// 瀹為檯浣滀笟浜烘暟 /// </summary> - [DisplayName("实际作业人数")] + [DisplayName("瀹為檯浣滀笟浜烘暟")] public int ACT_WORKER_QTY { get; set; } /// <summary> - /// 导入时间 + /// 瀵煎叆鏃堕棿 /// </summary> - [DisplayName("导入时间")] + [DisplayName("瀵煎叆鏃堕棿")] public DateTime IMPORT_TIME { get; set; } = DateTime.MinValue; /// <summary> - /// 下发时间 + /// 涓嬪彂鏃堕棿 /// </summary> - [DisplayName("下发时间")] + [DisplayName("涓嬪彂鏃堕棿")] public DateTime RELEASE_TIME { get; set; } = DateTime.MinValue; /// <summary> - /// 下发人 + /// 涓嬪彂浜� /// </summary> - [DisplayName("下发人")] + [DisplayName("涓嬪彂浜�")] public string RELEASE_USER { get; set; } /// <summary> - /// 变更时间 + /// 鍙樻洿鏃堕棿 /// </summary> - [DisplayName("变更时间")] + [DisplayName("鍙樻洿鏃堕棿")] public DateTime CHANGE_TIME { get; set; } = DateTime.MinValue; /// <summary> - /// 变更人 + /// 鍙樻洿浜� /// </summary> - [DisplayName("变更人")] + [DisplayName("鍙樻洿浜�")] public string CHANGE_USER { get; set; } /// <summary> - /// 计划数量 + /// 璁″垝鏁伴噺 /// </summary> - [DisplayName("计划数量")] + [DisplayName("璁″垝鏁伴噺")] public int PLAN_QTY { get; set; } /// <summary> - /// 投入数量 + /// 鎶曞叆鏁伴噺 /// </summary> - [DisplayName("投入数量")] + [DisplayName("鎶曞叆鏁伴噺")] public int INPUT_QTY { get; set; } /// <summary> - /// 完工数量 + /// 瀹屽伐鏁伴噺 /// </summary> - [DisplayName("完工数量")] + [DisplayName("瀹屽伐鏁伴噺")] public int OUTPUT_QTY { get; set; } /// <summary> - /// 报废数量 + /// 鎶ュ簾鏁伴噺 /// </summary> - [DisplayName("报废数量")] + [DisplayName("鎶ュ簾鏁伴噺")] public int SCRAP_QTY { get; set; } /// <summary> - /// 入库数量 + /// 鍏ュ簱鏁伴噺 /// </summary> - [DisplayName("入库数量")] + [DisplayName("鍏ュ簱鏁伴噺")] public int STOCK_IN_QTY { get; set; } /// <summary> /// UPH @@ -194,118 +194,121 @@ [DisplayName("UPPH")] public double UPPH { get; set; } /// <summary> - /// 最后的工单历史ID + /// 鏈�鍚庣殑宸ュ崟鍘嗗彶ID /// </summary> - [DisplayName("最后的工单历史ID")] + [DisplayName("鏈�鍚庣殑宸ュ崟鍘嗗彶ID")] public string LAST_HIST_ID { get; set; } /// <summary> - /// 备注 + /// 澶囨敞 /// </summary> - [DisplayName("备注")] + [DisplayName("澶囨敞")] public string REMARK { get; set; } /// <summary> - /// 接口表记录ID + /// 鎺ュ彛琛ㄨ褰旾D /// </summary> - [DisplayName("接口表记录ID")] + [DisplayName("鎺ュ彛琛ㄨ褰旾D")] public string FBILLNO_ID { get; set; } /// <summary> - /// 备料单返回信息 + /// 澶囨枡鍗曡繑鍥炰俊鎭� /// </summary> - [DisplayName("备料单返回信息")] + [DisplayName("澶囨枡鍗曡繑鍥炰俊鎭�")] public string PREP_MSG { get; set; } - #endregion + #endregion - #region 虚拟属性 - /*例子 + #region 铏氭嫙灞炴�� + /*渚嬪瓙 [SugarColumn(IsIgnore = true)] public string FieldName { get; set; } */ - #endregion + #endregion - #region 外键属性 - /*例子 - //一对一外键导航 - [Navigate(NavigateType.OneToOne, nameof(ClassAId))]//一对一 ClassAId是BIZ_MES_WO类里面的外键ID字段 - public ClassA ClassA { get; set; } //注意禁止手动赋值,只能是null - //一对多外键导航 - [Navigate(NavigateType.OneToMany, nameof(ClassA.BIZ_MES_WOId))]//ClassA表中的BIZ_MES_WOId - public List<ClassA> ClassAList { get; set; }//注意禁止手动赋值,只能是null - //多对多外键导航 - [Navigate(typeof(MappingClass), nameof(MappingClass.BIZ_MES_WOId), nameof(MappingClass.ClassAId))]//注意顺序 - public List<ClassA> ClassAList { get; set; } //注意禁止手动赋值,只能是null + #region 澶栭敭灞炴�� + /*渚嬪瓙 + //涓�瀵逛竴澶栭敭瀵艰埅 + [Navigate(NavigateType.OneToOne, nameof(ClassAId))]//涓�瀵逛竴 ClassAId鏄疊IZ_MES_WO绫婚噷闈㈢殑澶栭敭ID瀛楁 + public ClassA ClassA { get; set; } //娉ㄦ剰绂佹鎵嬪姩璧嬪�硷紝鍙兘鏄痭ull + //涓�瀵瑰澶栭敭瀵艰埅 + [Navigate(NavigateType.OneToMany, nameof(ClassA.BIZ_MES_WOId))]//ClassA琛ㄤ腑鐨凚IZ_MES_WOId + public List<ClassA> ClassAList { get; set; }//娉ㄦ剰绂佹鎵嬪姩璧嬪�硷紝鍙兘鏄痭ull + //澶氬澶氬閿鑸� + [Navigate(typeof(MappingClass), nameof(MappingClass.BIZ_MES_WOId), nameof(MappingClass.ClassAId))]//娉ㄦ剰椤哄簭 + public List<ClassA> ClassAList { get; set; } //娉ㄦ剰绂佹鎵嬪姩璧嬪�硷紝鍙兘鏄痭ull */ - #endregion + [Navigate(NavigateType.OneToMany, nameof(BAS_ITEM.ITEM_CODE), nameof(ITEM_CODE), "GHOST_ROW = 0")]//涓�瀵逛竴 ClassAId鏄疢ES_WIP_DATA绫婚噷闈㈢殑澶栭敭ID瀛楁 + public List<BAS_ITEM> _ItemInfos { get; set; } //娉ㄦ剰绂佹鎵嬪姩璧嬪�硷紝鍙兘鏄痭ull + public BAS_ITEM ItemInfo => _ItemInfos?.FirstOrDefault(q => q.AUTH_ORG == AUTH_ORG); + #endregion - #region 枚举变量 - /*例子 + #region 鏋氫妇鍙橀噺 + /*渚嬪瓙 public enum FieldNames { - [Description("枚举描述0")] + [Description("鏋氫妇鎻忚堪0")] Enum0, - [Description("枚举描述1")] + [Description("鏋氫妇鎻忚堪1")] Enum1, } */ - /// <summary> - /// 枚举:工单类型(0Plan计划|1Standard标准|2Rework返工|3Restructuring在库改制|5Outsourcing委外|6RD研发|7Forecast预测|8Disassemble拆卸) - /// </summary> - public enum ORDER_TYPEs + /// <summary> + /// 鏋氫妇锛氬伐鍗曠被鍨�(0Plan璁″垝|1Standard鏍囧噯|2Rework杩斿伐|3Restructuring鍦ㄥ簱鏀瑰埗|5Outsourcing濮斿|6RD鐮斿彂|7Forecast棰勬祴|8Disassemble鎷嗗嵏) + /// </summary> + public enum ORDER_TYPEs { - [Description("计划")] + [Description("璁″垝")] Plan = 0, - [Description("标准")] + [Description("鏍囧噯")] Standard = 1, - [Description("返工")] + [Description("杩斿伐")] Rework = 2, - [Description("在库改制")] + [Description("鍦ㄥ簱鏀瑰埗")] Restructuring = 3, - [Description("委外")] + [Description("濮斿")] Outsourcing = 5, - [Description("研发")] + [Description("鐮斿彂")] RD = 6, - [Description("预测")] + [Description("棰勬祴")] Forecast = 7, - [Description("拆卸")] + [Description("鎷嗗嵏")] Disassemble = 8, } /// <summary> - /// 枚举:状态(0Init初始化|1Imported已导入|2Release已下发|3Working生产中|4Paused已暂停|5Closed已关闭) + /// 鏋氫妇锛氱姸鎬�(0Init鍒濆鍖東1Imported宸插鍏2Release宸蹭笅鍙憒3Working鐢熶骇涓瓅4Paused宸叉殏鍋渱5Closed宸插叧闂�) /// </summary> public enum STATUSs { - [Description("初始化")] + [Description("鍒濆鍖�")] Init = 0, - [Description("已导入")] + [Description("宸插鍏�")] Imported = 1, - [Description("已下发")] + [Description("宸蹭笅鍙�")] Release = 2, - [Description("生产中")] + [Description("鐢熶骇涓�")] Working = 3, - [Description("已暂停")] + [Description("宸叉殏鍋�")] Paused = 4, - [Description("已关闭")] + [Description("宸插叧闂�")] Closed = 5, } /// <summary> - /// 枚举:工艺状态(0WaitSet待配置|1Finish已配置|2Cancel取消|3Close关闭) + /// 鏋氫妇锛氬伐鑹虹姸鎬�(0WaitSet寰呴厤缃畖1Finish宸查厤缃畖2Cancel鍙栨秷|3Close鍏抽棴) /// </summary> public enum ROUTE_STATUSs { - [Description("待配置")] + [Description("寰呴厤缃�")] WaitSet = 0, - [Description("已配置")] + [Description("宸查厤缃�")] Finish = 1, - [Description("取消")] + [Description("鍙栨秷")] Cancel = 2, - [Description("关闭")] + [Description("鍏抽棴")] Close = 3, } #endregion - #region 公共方法 + #region 鍏叡鏂规硶 #endregion diff --git a/Tiger.Model.Net/Entitys/MES/BIZ_MES_WO_BATCH.cs b/Tiger.Model.Net/Entitys/MES/BIZ_MES_WO_BATCH.cs index 1049d26..6e20e7b 100644 --- a/Tiger.Model.Net/Entitys/MES/BIZ_MES_WO_BATCH.cs +++ b/Tiger.Model.Net/Entitys/MES/BIZ_MES_WO_BATCH.cs @@ -154,6 +154,9 @@ [Navigate(typeof(MappingClass), nameof(MappingClass.BIZ_MES_WO_BATCHId), nameof(MappingClass.ClassAId))]//娉ㄦ剰椤哄簭 public List<ClassA> ClassAList { get; set; } //娉ㄦ剰绂佹鎵嬪姩璧嬪�硷紝鍙兘鏄痭ull */ + [Navigate(NavigateType.OneToMany, nameof(BAS_ITEM.ITEM_CODE), nameof(ITEM_CODE), "GHOST_ROW = 0")]//涓�瀵逛竴 ClassAId鏄疢ES_WIP_DATA绫婚噷闈㈢殑澶栭敭ID瀛楁 + public List<BAS_ITEM> _ItemInfos { get; set; } //娉ㄦ剰绂佹鎵嬪姩璧嬪�硷紝鍙兘鏄痭ull + public BAS_ITEM ItemInfo => _ItemInfos?.FirstOrDefault(q => q.AUTH_ORG == AUTH_ORG); #endregion #region 鏋氫妇鍙橀噺 diff --git a/Tiger.Model.Net/Entitys/MES/MES_WIP_DATA.cs b/Tiger.Model.Net/Entitys/MES/MES_WIP_DATA.cs index 2e594b4..fa7b814 100644 --- a/Tiger.Model.Net/Entitys/MES/MES_WIP_DATA.cs +++ b/Tiger.Model.Net/Entitys/MES/MES_WIP_DATA.cs @@ -218,17 +218,17 @@ /// </summary> [DisplayName("澶囨敞")] public string REMARK { get; set; } - #endregion + #endregion - #region 铏氭嫙灞炴�� - /*渚嬪瓙 + #region 铏氭嫙灞炴�� + /*渚嬪瓙 [SugarColumn(IsIgnore = true)] public string FieldName { get; set; } */ - #endregion + #endregion - #region 澶栭敭灞炴�� - /*渚嬪瓙 + #region 澶栭敭灞炴�� + /*渚嬪瓙 //涓�瀵逛竴澶栭敭瀵艰埅 [Navigate(NavigateType.OneToOne, nameof(ClassAId))]//涓�瀵逛竴 ClassAId鏄疢ES_WIP_DATA绫婚噷闈㈢殑澶栭敭ID瀛楁 public ClassA ClassA { get; set; } //娉ㄦ剰绂佹鎵嬪姩璧嬪�硷紝鍙兘鏄痭ull @@ -239,10 +239,11 @@ [Navigate(typeof(MappingClass), nameof(MappingClass.MES_WIP_DATAId), nameof(MappingClass.ClassAId))]//娉ㄦ剰椤哄簭 public List<ClassA> ClassAList { get; set; } //娉ㄦ剰绂佹鎵嬪姩璧嬪�硷紝鍙兘鏄痭ull */ - [Navigate(NavigateType.OneToOne, nameof(ITEM_CODE), nameof(BAS_ITEM.ITEM_CODE), "GHOST_ROW = 0")]//涓�瀵逛竴 ClassAId鏄疢ES_WIP_DATA绫婚噷闈㈢殑澶栭敭ID瀛楁 - public BAS_ITEM ItemInfo { get; set; } //娉ㄦ剰绂佹鎵嬪姩璧嬪�硷紝鍙兘鏄痭ull - //[Navigate(NavigateType.OneToMany, nameof(BAS_ITEM.ITEM_CODE), nameof(ITEM_CODE), "GHOST_ROW = 0")]//涓�瀵逛竴 ClassAId鏄疢ES_WIP_DATA绫婚噷闈㈢殑澶栭敭ID瀛楁 - //public List<BAS_ITEM> ItemInfos { get; set; } //娉ㄦ剰绂佹鎵嬪姩璧嬪�硷紝鍙兘鏄痭ull + //[Navigate(NavigateType.OneToOne, nameof(ITEM_CODE), nameof(BAS_ITEM.ITEM_CODE), "GHOST_ROW = 0")]//涓�瀵逛竴 ClassAId鏄疢ES_WIP_DATA绫婚噷闈㈢殑澶栭敭ID瀛楁 + //public BAS_ITEM ItemInfo { get; set; } //娉ㄦ剰绂佹鎵嬪姩璧嬪�硷紝鍙兘鏄痭ull + [Navigate(NavigateType.OneToMany, nameof(BAS_ITEM.ITEM_CODE), nameof(ITEM_CODE), "GHOST_ROW = 0")]//涓�瀵逛竴 ClassAId鏄疢ES_WIP_DATA绫婚噷闈㈢殑澶栭敭ID瀛楁 + public List<BAS_ITEM> _ItemInfos { get; set; } //娉ㄦ剰绂佹鎵嬪姩璧嬪�硷紝鍙兘鏄痭ull + public BAS_ITEM ItemInfo => _ItemInfos?.FirstOrDefault(q => q.AUTH_ORG == AUTH_ORG); [Navigate(NavigateType.OneToMany, nameof(MES_WIP_HIS.SN), nameof(SN), "GHOST_ROW = 0")]//ClassA琛ㄤ腑鐨凪ES_WIP_DATAId public List<MES_WIP_HIS> _History { get; set; }//娉ㄦ剰绂佹鎵嬪姩璧嬪�硷紝鍙兘鏄痭ull public List<MES_WIP_HIS> History => _History ?? new List<MES_WIP_HIS>(); -- Gitblit v1.9.3