/// <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");
        }