/// <summary> /// InsertInfo /// </summary> /// <param name="info"></param> /// <returns></returns> public long InsertInfo(SeqSectionInfo info) { int cnt = dal.GetCounts("[DEFINE_FID] = N'" + info.DefineFid.GetValueOrDefault() + "' and [SECTION_SEQ] = " + info.SectionSeq.GetValueOrDefault() + ""); if (cnt > 0) { throw new Exception("0x00000022");///该段序号规则已维护 } if (info.DataGenerateType.GetValueOrDefault() == (int)DataGenerateTypeConstants.GrowthValue) { cnt = dal.GetCounts("[DEFINE_FID] = N'" + info.DefineFid.GetValueOrDefault() + "' and [DATA_GENERATE_TYPE] = " + (int)DataGenerateTypeConstants.GrowthValue + ""); if (cnt > 0) { throw new Exception("0x00000020");///序列号规则中只能有一段为自动增长方式 } if (info.IsSeedValue.GetValueOrDefault()) { throw new Exception("0x00000019");///自增段不能作为自增种子 } } else { cnt = dal.GetCounts("[DEFINE_FID] = N'" + info.DefineFid.GetValueOrDefault() + "' and [DATA_GENERATE_TYPE] = " + (int)DataGenerateTypeConstants.GrowthValue + " and [SECTION_SEQ] < " + info.SectionSeq.GetValueOrDefault() + ""); if (cnt > 0) { throw new Exception("0x00000018");///自动增长规则段只能是最后一段 } } /// info.SeqCode = new SeqDefineDAL().GetSeqCode(info.DefineFid.GetValueOrDefault()); return(dal.Add(info)); }
private string GetSectionCurrentValue(SeqSectionInfo info, string queryValue) { switch (info.DataGenerateType.GetValueOrDefault()) { case (int)DataGenerateTypeConstants.FixedValue: string defaultValue = string.Empty; string[] defaultValues = info.DefaultValue.Split(new string[] { "%" }, StringSplitOptions.RemoveEmptyEntries); foreach (var item in defaultValues) { switch (item.ToUpper()) { case "RS": defaultValue += (char)30; break; case "GS": defaultValue += (char)29; break; case "EOT": defaultValue += (char)04; break; default: defaultValue += item; break; } } return(defaultValue); case (int)DataGenerateTypeConstants.DynamicParam: return(string.Empty); case (int)DataGenerateTypeConstants.DateValue: switch (info.DefaultValue.ToLower()) { case "yyyymmdd": return(DateTime.Now.ToString("yyyyMMdd")); case "mmdd": return(DateTime.Now.ToString("MMdd")); case "standardd": return(GetYear() + GetMonth() + GetDay()); case "standardm": return(GetYear() + GetMonth()); case "standardy": return(GetYear()); case "yydayofyear": return(DateTime.Now.ToString("yy") + DateTime.Now.DayOfYear.ToString().PadLeft(3, '0')); case "mm": return(DateTime.Now.ToString("MM")); case "yy": return(DateTime.Now.ToString("yy")); default: return(DateTime.Now.ToString("yyMMdd")); } } if (info.DataGenerateType.GetValueOrDefault() == (int)DataGenerateTypeConstants.GrowthValue) { lock (lockObject) { ///根据QUERY_VALUE获取当前值 IList <SeqCurrentValueInfo> currentValuelist = new SeqCurrentValueDAL().GetList("and [SEQ_CODE] = '" + info.SeqCode + "' " + "and [SEQ_SECTION_FID] = '" + info.Fid + "' " + "and [QUERY_VALUE] = '" + queryValue + "' ", string.Empty); SeqCurrentValueInfo currentValueinfo = null; ///如果没有当前值,需要做首次的添加操作 if (currentValuelist.Count == 0) { currentValueinfo = new SeqCurrentValueInfo(); currentValueinfo.Fid = Guid.NewGuid(); currentValueinfo.SeqCode = info.SeqCode; currentValueinfo.SeqSectionFid = info.Fid; currentValueinfo.QueryValue = queryValue; currentValueinfo.CurrentValue = info.MinValue; currentValueinfo.ValidFlag = true; currentValueinfo.CreateDate = DateTime.Now; currentValueinfo.CreateUser = ""; new SeqCurrentValueDAL().Add(currentValueinfo); } else if (currentValuelist.Count == 1) { currentValueinfo = currentValuelist.FirstOrDefault().Clone(); ///按步长递增 currentValueinfo.CurrentValue += info.StepLength.GetValueOrDefault(); ///递增后大于设定的最大值时 if (currentValueinfo.CurrentValue.GetValueOrDefault() > info.MaxValue.GetValueOrDefault()) { if (info.IsCycle.GetValueOrDefault()) { currentValueinfo.CurrentValue = info.MinValue; } else { throw new Exception("Current be Max Value"); } } if (currentValueinfo.CurrentValue.GetValueOrDefault() < info.MinValue.GetValueOrDefault()) { currentValueinfo.CurrentValue = info.MinValue; } currentValueinfo.ModifyDate = DateTime.Now; currentValueinfo.ModifyUser = ""; new SeqCurrentValueDAL().Update(currentValueinfo); } else { throw new Exception("Current has error data"); } if (!info.IsFixedLength.GetValueOrDefault()) { return(currentValueinfo.CurrentValue.ToString()); } ///按长度填充 switch (info.FillType.GetValueOrDefault()) { case 1: return(currentValueinfo.CurrentValue.ToString().PadLeft(info.Length.GetValueOrDefault(), info.FillChar.ToCharArray()[0])); case 2: return(currentValueinfo.CurrentValue.ToString().PadRight(info.Length.GetValueOrDefault(), info.FillChar.ToCharArray()[0])); } } } throw new Exception("Section has error config"); }