using Edge.Core.Parser.BinaryParser.Attributes; using Edge.Core.Parser.BinaryParser.MessageEntity; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Text.RegularExpressions; namespace FuRen_Sinopec_IcCardReader { /// /// 加油站通用信息 /// public class StationGenericInfo : MessageTemplateBase { private byte _Ver; /// /// 版本 , 0,1~255 0: 数据无效 /// [Format(1, EncodingType.BIN, 1)] public byte Ver { get { return this._Ver; } set { this._Ver = value > 255 ? (byte)1 : value; } } /// /// 石化编码规范中地区编码的头两个数字 /// [Format(1, EncodingType.BCD, 2)] [Range(@"^\d{1,2}$", RegexOptions.IgnoreCase, "Prov_省代号 value {0} does not match regex requirment.")] public byte Prov_省代号 { get; set; } /// /// 石化编码规范中地区编码的中间两个数字 /// [Format(1, EncodingType.BCD, 3)] [Range(@"^\d{1,2}$", RegexOptions.IgnoreCase, "City_地市代码 value {0} does not match regex requirment.")] public byte City_地市代码 { get; set; } /// /// 同石化编码 /// [Format(4, EncodingType.BcdString, 4)] [Range(@"^\d{1,8}$", RegexOptions.IgnoreCase, "Superior_上级单位代号 value {0} does not match regex requirment.")] public string Superior_上级单位代号 { get; set; } /// /// 同石化编码 /// [Format(4, EncodingType.BcdString, 5)] [Range(@"^\d{1,8}$", RegexOptions.IgnoreCase, "S_ID_加油站ID value {0} does not match regex requirment.")] public string S_ID_加油站ID { get; set; } /// /// 通讯终端逻辑编号 0-249 /// [Format(1, EncodingType.BCD, 6)] [Range(0, 249, "0-249 ")] public byte POS_P_通讯终端逻辑编号 { get; set; } /// /// /// [Format(1, EncodingType.BIN, 7)] public byte GUN_N_油枪数 { get; set; } [EnumerableFormat("GUN_N_油枪数", 8, EncodingType = EncodingType.BIN)] public List MZN_单个油枪 { get; set; } public override bool Equals(object obj) { var target = obj as StationGenericInfo; if (this.Prov_省代号 != target?.Prov_省代号) return false; if (this.City_地市代码 != target.City_地市代码) return false; if (this.Superior_上级单位代号 != target.Superior_上级单位代号) return false; if (this.S_ID_加油站ID != target.S_ID_加油站ID) return false; if (this.GUN_N_油枪数 != target.GUN_N_油枪数) return false; if (this.POS_P_通讯终端逻辑编号 != target.POS_P_通讯终端逻辑编号) return false; if (this.MZN_单个油枪 != null ^ target.MZN_单个油枪 != null) return false; //if (this.NozzleBelongToPumpSide != null ^ target.NozzleBelongToPumpSide != null) return false; if (this.MZN_单个油枪 != null) { if (this.MZN_单个油枪.Count != target.MZN_单个油枪.Count) return false; for (int i = 0; i < this.MZN_单个油枪.Count; i++) { if (this.MZN_单个油枪[i] != target.MZN_单个油枪[i]) return false; } } //if (this.NozzleBelongToPumpSide != null) //{ // if (this.NozzleBelongToPumpSide.Count != target.NozzleBelongToPumpSide.Count) return false; // for (int i = 0; i < this.NozzleBelongToPumpSide.Count; i++) // { // if (this.NozzleBelongToPumpSide[i] != target.NozzleBelongToPumpSide[i]) return false; // } //} return true; } public override int GetHashCode() { return base.GetHashCode(); } } }