using System; using SqlSugar; using System.Linq; using System.ComponentModel; using System.Collections.Generic; using System.Text.RegularExpressions; namespace Tiger.Model { /// /// 实体:条码规则 /// [Description("Primary:ID")] [Serializable] [SugarTable("BAS_CODE_RULE")] public class BAS_CODE_RULE : DbEntityWithAuth { #region 构造函数 /// /// 实体:条码规则 /// public BAS_CODE_RULE() { } #endregion #region 公共属性 /// /// 规则代码(系统自动生成,规则:LK+YYYYMMDD+三位流水码) /// public string RULE_CODE { get; set; } /// /// 规则名称 /// public string RULE_NAME { get; set; } /// /// 规则描述 /// public string RULE_DESC { get; set; } /// /// 规则类型(0Material物料条码|1SemiProduct半成品条码|2Product成品条码|3BizOrder单据号码) /// public int RULE_TYPE { get; set; } /// /// 优先级,大于0的整数,越小越优先度越高 /// public int PRIORITY { get; set; } /// /// 条码长度 /// public int CODE_LENGTH { get; set; } /// /// 校验类型(0RUL自身校验|1MUL关联校验) /// public int CHECK_TYPE { get; set; } /// /// 校验表达式 /// public string CHECK_REGEX { get; set; } /// /// 备注 /// public string REMARK { get; set; } #endregion #region 虚拟属性 /*例子 [SugarColumn(IsIgnore = true)] public string FieldName { get; set; } */ /// /// Regex 对象, 正则表达式:^(CHECK_REGEX)$ /// [SugarColumn(IsIgnore = true)] public Regex Regex => new Regex(Details.Any() ? $"^{string.Concat(Details.OrderBy(q => q.RULE_SEQ).Select(q => q.DATA_REGEX))}$" : (CHECK_REGEX ?? "").StartsWith("^") ? CHECK_REGEX : $"^{CHECK_REGEX}$"); /// /// 分组的校验表达式,使用RULE_SEQ分组 /// [SugarColumn(IsIgnore = true)] public string DATA_REGEX_WithGroup => Details.Any() ? $"^{string.Concat(Details.OrderBy(q => q.RULE_SEQ).Select(q => q.DATA_REGEX_WithGroup))}$" : ""; /// /// 校验正则表达式 /// [SugarColumn(IsIgnore = true)] public Regex GroupRegex => new Regex(DATA_REGEX_WithGroup); #endregion #region 外键属性 /*例子 //一对一外键导航 [Navigate(NavigateType.OneToOne, nameof(ClassAId))]//一对一 ClassAId是BAS_CODE_RULE类里面的外键ID字段 public ClassA ClassA { get; set; } //注意禁止手动赋值,只能是null //一对多外键导航 [Navigate(NavigateType.OneToMany, nameof(ClassA.BAS_CODE_RULEId))]//ClassA表中的BAS_CODE_RULEId public List ClassAList { get; set; }//注意禁止手动赋值,只能是null //多对多外键导航 [Navigate(typeof(MappingClass), nameof(MappingClass.BAS_CODE_RULEId), nameof(MappingClass.ClassAId))]//注意顺序 public List ClassAList { get; set; } //注意禁止手动赋值,只能是null */ /// /// 包含逻辑删除的数据 /// [Navigate(NavigateType.OneToMany, nameof(BAS_CODE_DTL.RULE_ID))]//ClassA表中的BAS_CODE_RULEId public List DetailsWithGhost { get; set; }//注意禁止手动赋值,只能是null /// /// 不包含逻辑删除的数据 /// [SugarColumn(IsIgnore = true)] public List Details => DetailsWithGhost?.Where(q => !q.GHOST_ROW).ToList() ?? new List(); [Navigate(NavigateType.OneToMany, nameof(BAS_CODE_GEN.RULE_ID))]//ClassA表中的BAS_CODE_RULEId public List SerialsWithGhost { get; set; }//注意禁止手动赋值,只能是null [SugarColumn(IsIgnore = true)] public List Serials => SerialsWithGhost?.Where(q => !q.GHOST_ROW).ToList(); #endregion #region 枚举变量 /// /// 校验类型(0RUL自身校验|1MUL关联校验) /// public enum CHECK_TYPEs { [Description("自身校验")] RUL, [Description("关联校验")] MUL, } /// /// 规则类型(0Material物料条码|1SemiProduct半成品条码|2Product成品条码|3BizOrder单据号码) /// public enum RULE_TYPEs { [Description("物料条码")] Material, [Description("半成品条码")] SemiProduct, [Description("成品条码")] Product, [Description("单据号码")] BizOrder, } #endregion #region 公共方法 #endregion }//endClass }