/// <summary>
        /// 匹配正常
        /// </summary>
        /// <param name="routeValue"></param>
        /// <param name="sharding"></param>
        /// <returns></returns>
        protected virtual int GetRemainderTableStep(object routeValue, ShardingInfo sharding)
        {
            var tableMaxStep = sharding.GetTableMaxStep();

            if (tableMaxStep == -1)
            {
                return(-1);
            }
            var value = Math.Abs(long.Parse(routeValue.ToString()));
            var step  = (int)(value % tableMaxStep);

            return(step);
        }
        /// <summary>
        /// 匹配正常
        /// </summary>
        /// <param name="routeValue"></param>
        /// <param name="sharding"></param>
        /// <returns></returns>
        protected virtual int GetValueTableStep(object routeValue, ShardingInfo sharding)
        {
            var tableMaxStep = sharding.GetTableMaxStep();

            if (tableMaxStep == -1)
            {
                return(-1);
            }
            var value = Math.Abs(long.Parse(routeValue.ToString()));

            if (value > StartValue + (EndValue - StartValue + 1) * tableMaxStep)
            {
                return(-1);
            }
            var step = (int)(Math.Floor((double)((value - StartValue) / (EndValue - StartValue))));

            if (sharding.TableStep > 0)
            {
                step = step / sharding.TableStep;
            }
            return(step);
        }
        /// <summary>
        /// 匹配正常
        /// </summary>
        /// <param name="routeValue"></param>
        /// <param name="sharding"></param>
        /// <returns></returns>
        protected virtual int GetYearTableStep(object routeValue, ShardingInfo sharding)
        {
            var tableMaxStep = sharding.GetTableMaxStep();

            if (tableMaxStep == -1)
            {
                return(-1);
            }
            var date    = DateTime.Parse(routeValue.ToString());
            var maxDate = DateTime.Parse(sharding.TableIndex).AddYears(tableMaxStep);

            if (date > maxDate)
            {
                return(-1);
            }
            var curdate = DateTime.Parse(FixedValue);
            var step    = date.Year - curdate.Year;

            if (sharding.TableStep > 0)
            {
                step = step / sharding.TableStep;
            }
            return(step);
        }
        /// <summary>
        /// 匹配正常
        /// </summary>
        /// <param name="routeValue"></param>
        /// <param name="sharding"></param>
        /// <returns></returns>
        protected virtual int GetMonthTableStep(object routeValue, ShardingInfo sharding)
        {
            var tableMaxStep = sharding.GetTableMaxStep();

            if (tableMaxStep == -1)
            {
                return(-1);
            }
            var date    = DateTime.Parse(routeValue.ToString());
            var maxDate = DateTime.Parse(sharding.TableIndex.Insert(4, "-")).AddMonths(tableMaxStep);

            if (date > maxDate)
            {
                return(-1);
            }
            var curdate = DateTime.Parse(FixedValue);
            var step    = (date.Year - curdate.Year) * 12 + (date.Month - curdate.Month);

            if (sharding.TableStep > 0)
            {
                step = step / sharding.TableStep;
            }
            return(step);
        }
        /// <summary>
        /// 匹配正常
        /// </summary>
        /// <param name="routeValue"></param>
        /// <param name="sharding"></param>
        /// <returns></returns>
        protected virtual int GetDayTableStep(object routeValue, ShardingInfo sharding)
        {
            var tableMaxStep = sharding.GetTableMaxStep();

            if (tableMaxStep == -1)
            {
                return(-1);
            }
            var date    = DateTime.Parse(routeValue.ToString());
            var maxDate = DateTime.Parse(sharding.TableIndex.Insert(4, "-").Insert(7, "-")).AddDays(tableMaxStep);

            if (date > maxDate)
            {
                return(-1);
            }
            var curdate = DateTime.Parse(FixedValue);
            var step    = (date - curdate).TotalDays;

            if (sharding.TableStep > 0)
            {
                step = step / sharding.TableStep;
            }
            return((int)step);
        }