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_DTL")]
public class BAS_CODE_DTL : DbEntityWithAuth
{
#region 构造函数
///
/// 实体:条码规则明细定义
///
public BAS_CODE_DTL() {}
#endregion
#region 公共属性
///
/// 规则ID
///
[DisplayName("规则ID")]
public string RULE_ID { get; set; }
///
/// 规则顺序(从1开始累计加1)
///
[DisplayName("规则顺序(从1开始累计加1)")]
public int RULE_SEQ { get; set; }
///
/// 明细描述
///
[DisplayName("明细描述")]
public string DESCRIPTION { get; set; }
///
/// 数据类型(0Character纯字母|1Numeric纯数字|2FixedCode固定值|3SerialCode流水号|4DateCode日期|5TimeCode时间|6DbCheck关联校验|7NoCheck不校验)
///
[DisplayName("数据类型(0Character纯字母|1Numeric纯数字|2FixedCode固定值|3SerialCode流水号|4DateCode日期|5TimeCode时间|6DbCheck关联校验|7NoCheck不校验)")]
public int DATA_TYPE { get; set; }
///
/// 数据选择值(纯字母,日期,时间选择值)
///
[DisplayName("数据选择值(纯字母,日期,时间选择值)")]
public string DATA_CASE { get; set; }
///
/// 数据值(固定值填写值)
///
[DisplayName("数据值(固定值填写值)")]
public string DATA_VALUE { get; set; }
///
/// 流水号最小值
///
[DisplayName("流水号最小值")]
public int SERIAL_MIN { get; set; }
///
/// 流水号最大值
///
[DisplayName("流水号最大值")]
public int SERIAL_MAX { get; set; }
///
/// 流水号重置类型(0Default默认|1Year年|2Month月|3Week周|4Day日|5NotReset不重置)
///
[DisplayName("流水号重置类型(0Default默认|1Year年|2Month月|3Week周|4Day日|5NotReset不重置)")]
public int SERIAL_RESET { get; set; }
///
/// 流水号取号间隔
///
[DisplayName("流水号取号间隔")]
public int SERIAL_INTERVAL { get; set; } = 1;
///
/// 流水号跳号(取号时跳过以设置号码结尾的流水号)
///
[DisplayName("流水号跳号(取号时跳过以设置号码结尾的流水号)")]
public string SERIAL_IGNORE { get; set; }
///
/// 是否不包含固定值(Y/N)
///
[DisplayName("是否不包含固定值(Y/N)")]
public string FIXED_NOTLIKE { get; set; }
///
/// 关联表
///
[DisplayName("关联表")]
public string CHECK_TABLE { get; set; }
///
/// 关联字段
///
[DisplayName("关联字段")]
public string CHECK_FIELD { get; set; }
///
/// 校验长度(默认是1)
///
[DisplayName("校验长度(默认是1)")]
public int CHECK_LENGTH { get; set; }
///
/// 匹配次数(默认是1)
///
[DisplayName("匹配次数(默认是1)")]
public int REPEAT_TIMES { get; set; }
///
/// 起始位置(从0开始)
///
[DisplayName("起始位置(从0开始)")]
public string START_DIGIT { get; set; }
///
/// 校验表达式
///
[DisplayName("校验表达式")]
public string DATA_REGEX { get; set; }
///
/// 备注
///
[DisplayName("备注")]
public string REMARK { get; set; }
#endregion
#region 虚拟属性
/*例子
[SugarColumn(IsIgnore = true)]
public string FieldName { get; set; }
*/
///
/// Regex 对象, 正则表达式:^(DATA_REGEX)$
///
[SugarColumn(IsIgnore = true)]
public Regex Regex => new Regex($"^{DATA_REGEX}$");
///
/// 分组的校验表达式,使用RULE_SEQ分组
///
[SugarColumn(IsIgnore = true)]
public string DATA_REGEX_WithGroup => $"(?<{RULE_SEQ}>{DATA_REGEX})";
///
/// 校验正则表达式
///
[SugarColumn(IsIgnore = true)]
public Regex GroupRegex => new Regex(DATA_REGEX_WithGroup);
///
/// 数据值(生成条码时的值)
///
[SugarColumn(IsIgnore = true)]
public string CodeValue { get; set; }
#endregion
#region 外键属性
/*例子
//一对一外键导航
[Navigate(NavigateType.OneToOne, nameof(ClassAId))]//一对一 ClassAId是BAS_CODE_DTL类里面的外键ID字段
public ClassA ClassA { get; set; } //注意禁止手动赋值,只能是null
//一对多外键导航
[Navigate(NavigateType.OneToMany, nameof(ClassA.BAS_CODE_DTLId))]//ClassA表中的BAS_CODE_DTLId
public List ClassAList { get; set; }//注意禁止手动赋值,只能是null
//多对多外键导航
[Navigate(typeof(MappingClass), nameof(MappingClass.BAS_CODE_DTLId), nameof(MappingClass.ClassAId))]//注意顺序
public List ClassAList { get; set; } //注意禁止手动赋值,只能是null
*/
#endregion
#region 枚举变量
///
/// 数据类型(0Character纯字母|1Numeric纯数字|2FixedCode固定值|3SerialCode流水号|4DateCode日期|5TimeCode时间|6DbCheck关联校验|7NoCheck不校验)
///
public enum DATA_TYPEs
{
[Description("纯字母")]
Character,
[Description("纯数字")]
Numeric,
[Description("固定值")]
FixedCode,
[Description("流水号")]
SerialCode,
[Description("日期")]
DateCode,
[Description("时间")]
TimeCode,
[Description("关联校验")]
DbCheck,
[Description("不校验")]
NoCheck,
}
///
/// 大小写(0NotSet不限制|1Upper全大写|2Lower全小写)
///
//public enum DATA_CASEs
//{
// [Description("不限制")]
// NotSet,
// [Description("全大写")]
// Upper,
// [Description("全小写")]
// Lower,
//}
///
/// 流水号重置类型(0Default默认|1Year年|2Month月|3Week周|4Day日|5NotReset不重置)
///
public enum SERIAL_RESETs
{
[Description("默认")]
Default,
[Description("年")]
Year,
[Description("月")]
Month,
[Description("周")]
Week,
[Description("日")]
Day,
[Description("不重置")]
NotReset,
}
#endregion
#region 公共方法
#endregion
}//endClass
}