/// <summary> /// 性能-仓库访问次数:1。 /// </summary> /// <param name="currentValue"></param> /// <param name="now"></param> /// <returns></returns> private string GenerateNext(SerialNumberValue currentValue, DateTime now) { currentValue.RollValue += currentValue.RD_RollValueStep; var valueRepo = RF.Concrete <SerialNumberValueRepository>(); valueRepo.Save(currentValue); return(GenerateCode(now, currentValue.RollValue, currentValue.RD_Format)); }
/// <summary> /// 性能-仓库访问次数:1。 /// </summary> /// <param name="currentGroupValue"></param> /// <param name="time"></param> /// <returns></returns> private string GenerateNext(SerialNumberValue currentGroupValue, DateTime time) { //流动当前的值。 currentGroupValue.RollValue += currentGroupValue.RD_RollValueStep; var valueRepo = RF.Concrete <SerialNumberValueRepository>(); valueRepo.Save(currentGroupValue); return(this.GenerateCode(time, currentGroupValue.RollValue, currentGroupValue.RD_Format)); }
/// <summary> /// 为指定名称的编码规则生成最新的编号。 /// 性能-仓库访问次数:2。 /// </summary> /// <param name="info">自动编码规则。</param> /// <returns></returns> public string GenerateNext(SerialNumberInfo info) { if (info == null) { throw new ArgumentNullException("info"); } var now = DateTime.Now; string timeKey = null; var timeKeyFormat = info.TimeGroupFormat; if (!string.IsNullOrEmpty(timeKeyFormat)) { timeKey = now.ToString(timeKeyFormat); } var valueRepo = RF.Concrete <SerialNumberValueRepository>(); using (var tran = RF.TransactionScope(valueRepo)) { //先找到当前的值。 var currentValue = valueRepo.GetByKey(info.Name, timeKey); string res = null; if (currentValue != null) { res = this.GenerateNext(currentValue, now); } else { //如果当前值还不存在,则直接添加一个到库中。 currentValue = new SerialNumberValue { SerialNumberInfo = info, TimeKey = timeKey, RollValue = info.RollValueStart }; valueRepo.Save(currentValue); res = GenerateCode(now, currentValue.RollValue, info.Format); } tran.Complete(); return(res); } }
/// <summary> /// 为指定的编码值对应的编码规则生成最新的编号。 /// 性能-仓库访问次数:1(未更换组)、2-3(组不可用,需要更换新组)。 /// </summary> /// <param name="currentGroupValue">当前最新的值。</param> /// <returns></returns> public virtual string GenerateNext(SerialNumberValue currentGroupValue) { var now = DateTime.Now; var timeKey = GetTimeGroupKey(now, currentGroupValue.RD_TimeKeyFormat); //需要验证传入的 Value 是否应是当前时间对应的组。 if (currentGroupValue.TimeKey == timeKey) { return(this.GenerateNext(currentGroupValue, now)); } else { return(this.GenerateNext(currentGroupValue.SerialNumberInfo)); } }
/// <summary> /// 为指定名称的编码规则生成指定时间对应的最新的编号。 /// 性能-仓库访问次数:2。 /// </summary> /// <param name="info">自动编码规则。</param> /// <param name="specificTime">需要生成编号的指定的时间。</param> /// <returns></returns> public virtual string GenerateNext(SerialNumberInfo info, DateTime specificTime) { if (info == null) { throw new ArgumentNullException("info"); } //计算 specificTime 时间对应的分组 Key string timeGroupKey = GetTimeGroupKey(specificTime, info.TimeGroupFormat); var valueRepo = RF.Concrete <SerialNumberValueRepository>(); using (var tran = RF.TransactionScope(valueRepo)) { //先找到当前的值。 var currentGroupValue = valueRepo.GetByKey(info.Name, timeGroupKey); string res = null; if (currentGroupValue != null) { res = this.GenerateNext(currentGroupValue, specificTime); } else { //如果当前值还不存在,则直接添加一个到库中。 currentGroupValue = new SerialNumberValue { SerialNumberInfo = info, TimeKey = timeGroupKey, RollValue = info.RollValueStart }; valueRepo.Save(currentGroupValue); res = this.GenerateCode(specificTime, currentGroupValue.RollValue, info.Format); } tran.Complete(); return(res); } }
/// <summary> /// 为指定的编码值对应的编码规则生成最新的编号。 /// 性能-仓库访问次数:1(未更换组)、2-3(组不可用,需要更换新组)。 /// </summary> /// <param name="currentValue">当前最新的值。</param> /// <returns></returns> public string GenerateNext(SerialNumberValue currentValue) { var now = DateTime.Now; string timeKey = null; var timeKeyFormat = currentValue.RD_TimeKeyFormat; if (!string.IsNullOrEmpty(timeKeyFormat)) { timeKey = now.ToString(timeKeyFormat); } //需要验证传入的 Value 是否应是当前时间对应的组。 if (currentValue.TimeKey == timeKey) { return(this.GenerateNext(currentValue, now)); } else { return(this.GenerateNext(currentValue.SerialNumberInfo)); } }
public void Insert(int index, SerialNumberValue entity) { base.Insert(index, entity); }
public int IndexOf(SerialNumberValue entity) { return(base.IndexOf(entity)); }
public bool Contains(SerialNumberValue entity) { return(base.Contains(entity)); }
public void Add(SerialNumberValue entity) { base.Add(entity); }
public bool Remove(SerialNumberValue entity) { return(base.Remove(entity)); }