示例#1
0
        /// <summary>
        /// 新增一个主键类型
        /// </summary>
        /// <param name="entity">实体</param>
        /// <returns>true=成功;false=失败</returns>
        public bool Insert(PatrolGenerateNO entity)
        {
            SQLEntities context = new SQLEntities();
            bool        success = false;

            using (TransactionScope trans = new TransactionScope())
            {
                try
                {
                    context.PatrolGenerateNO.AddObject(entity);
                    trans.Complete();
                    success = true;
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
            }
            try
            {
                if (success)
                {
                    //提交保存
                    context.SaveChanges();
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
            context.Dispose();

            return(success);
        }
 public PatrolGenerateNORule()
 {
     this._default            = new PatrolGenerateNO();
     this._default.PrefixCode = String.Empty;
     this._default.CreatedAt  = DateTime.Now;
     this._default.CurrentID  = 1;
     this._default.DateType   = 1;
     this._default.Increment  = 1;
     this._default.MaxID      = 99999;
 }
        /// <summary>
        /// 每次生成编号后更新下一次可以用的最新编号
        /// </summary>
        /// <param name="current">当前的生成器</param>
        /// <returns>自动增长更新后的生成器对象</returns>
        private Hashtable AutoUpdate(PatrolGenerateNO current)
        {
            Hashtable result = new Hashtable();

            switch (current.DateType)
            {
            case (int)PatrolGenerateNOHelper.DateType.Day:
                if (current.UpdatedAt.HasValue)
                {
                    if (current.UpdatedAt.Value.Day != DateTime.Now.Day)
                    {
                        //当前日与最后一次更新的日期不一样时候那么重置计数为0
                        current.CurrentID = 0;
                    }
                }
                break;

            case (int)PatrolGenerateNOHelper.DateType.Month:
                if (current.UpdatedAt.HasValue)
                {
                    if (current.UpdatedAt.Value.Month != DateTime.Now.Month)
                    {
                        //当前日与最后一次更新的日期不一样时候那么重置计数为0
                        current.CurrentID = 0;
                    }
                }
                break;

            case (int)PatrolGenerateNOHelper.DateType.Year:
                if (current.UpdatedAt.HasValue)
                {
                    if (current.UpdatedAt.Value.Year != DateTime.Now.Year)
                    {
                        //当前日与最后一次更新的日期不一样时候那么重置计数为0
                        current.CurrentID = 0;
                    }
                }
                break;

            default:
                if (current.MaxID <= current.CurrentID)
                {
                    //超出最大值了,那么无法插入或者重置
                    current.CurrentID = 0;
                }
                break;
            }
            //此处会自增
            current.CurrentID = current.CurrentID + current.Increment;
            current.UpdatedAt = DateTime.Now;
            //添加到更新列表
            result.Add("CurrentID", current.CurrentID);
            result.Add("UpdatedAt", current.UpdatedAt);
            return(result);
        }
示例#4
0
        /// <summary>
        /// 复制对象
        /// </summary>
        /// <param name="source"></param>
        /// <returns></returns>
        public PatrolGenerateNO Copy(PatrolGenerateNO source)
        {
            PatrolGenerateNO target = new PatrolGenerateNO();

            target.PrefixCode = source.PrefixCode;
            target.CurrentID  = source.CurrentID;
            target.MaxID      = source.MaxID;
            target.DateType   = source.DateType;
            target.Increment  = source.Increment;
            target.CreatedAt  = source.CreatedAt;
            target.UpdatedAt  = source.UpdatedAt;
            return(target);
        }
示例#5
0
        /// <summary>
        /// 根据查询条件查询单条记录
        /// </summary>
        /// <param name="searchInfo">查询条件,主键查询</param>
        /// <returns></returns>
        public PatrolGenerateNO Select(PatrolGenerateNO searchInfo)
        {
            PatrolGenerateNO instance = null;

            try
            {
                SQLEntities context = new SQLEntities();

                instance = context.PatrolGenerateNO.Where("it.PrefixCode=@PrefixCode", new ObjectParameter("PrefixCode", searchInfo.PrefixCode)).First();

                context.Dispose();
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
            return(instance);
        }
        /// <summary>
        /// 生成编号
        /// </summary>
        /// <param name="code">前缀代码</param>
        /// <returns></returns>
        public string GenerateNO(string code)
        {
            string newNO = String.Empty;
            PatrolGenerateNOHelper helper = new PatrolGenerateNOHelper();

            this._default.PrefixCode = code.Trim().ToUpper();
            PatrolGenerateNO result  = helper.Select(this._default);
            bool             success = false;

            if (result == null)
            {
                //插入新类型
                if (helper.Insert(this._default))
                {
                    PatrolGenerateNO oldEntity  = helper.Copy(this._default);
                    Hashtable        updateKeys = AutoUpdate(this._default);
                    success = helper.Update(oldEntity, updateKeys);
                    //获取对象
                    result = oldEntity;
                }
                else
                {
                    //插入失败
                    return(null);
                }
            }
            else
            {
                //存在对象直接更新
                PatrolGenerateNO oldEntity  = helper.Copy(result);
                Hashtable        updateKeys = AutoUpdate(result);
                success = helper.Update(oldEntity, updateKeys);
                //获取对象
                result = oldEntity;
            }
            if (success)
            {
                //创建新的NO
                newNO = result.PrefixCode + GetDateValue(result) + Padding(result.CurrentID.ToString(), result.MaxID);
            }
            return(newNO);
        }
示例#7
0
        /// <summary>
        /// 记录需要更新的字段
        /// </summary>
        /// <param name="update"></param>
        private static void SetUpdateValue(PatrolGenerateNO current, Hashtable updateKeys)
        {
            foreach (DictionaryEntry item in updateKeys)
            {
                switch (item.Key.ToString().ToLower())
                {
                case "prefixcode":
                    current.PrefixCode = item.Value.ToString();
                    break;

                case "currentid":
                    current.CurrentID = Convert.ToInt64(item.Value);
                    break;

                case "increment":
                    current.Increment = Convert.ToInt32(item.Value);
                    break;

                case "maxid":
                    current.MaxID = Convert.ToInt64(item.Value);
                    break;

                case "datetype":
                    current.DateType = Convert.ToInt32(item.Value);
                    break;

                case "createdat":
                    current.CreatedAt = Convert.ToDateTime(item.Value);
                    break;

                case "updatedat":
                    current.UpdatedAt = Convert.ToDateTime(item.Value);
                    break;

                default:
                    break;
                }
            }
        }
        /// <summary>
        /// 根据DateType获取日期的字符串值
        /// </summary>
        /// <param name="current">当前的生成器</param>
        /// <returns>日期字符串</returns>
        private String GetDateValue(PatrolGenerateNO current)
        {
            string DateValue = String.Empty;

            switch (current.DateType)
            {
            case (int)PatrolGenerateNOHelper.DateType.Day:
                DateValue = DateTime.Now.ToString("yyyyMMdd");
                break;

            case (int)PatrolGenerateNOHelper.DateType.Month:
                DateValue = DateTime.Now.ToString("yyyyMM");
                break;

            case (int)PatrolGenerateNOHelper.DateType.Year:
                DateValue = DateTime.Now.ToString("yyyy");
                break;

            default:
                break;
            }
            return(DateValue);
        }
示例#9
0
        /// <summary>
        /// 根据主键删除实例
        /// </summary>
        /// <param name="oldEntity">设置了主键Id的对象</param>
        /// <returns></returns>
        public bool Delete(PatrolGenerateNO entity)
        {
            SQLEntities context = new SQLEntities();
            bool        success = false;

            using (TransactionScope trans = new TransactionScope())
            {
                try
                {
                    PatrolGenerateNO instance = context.PatrolGenerateNO.Where("it.PrefixCode=@PrefixCode", new ObjectParameter("PrefixCode", entity.PrefixCode)).First();
                    //标记删除
                    context.PatrolGenerateNO.DeleteObject(instance);
                    trans.Complete();
                    success = true;
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
            }
            try
            {
                if (success)
                {
                    //提交保存
                    context.SaveChanges();
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
            context.Dispose();

            return(success);
        }
        /// <summary>
        /// 删除对象
        /// </summary>
        /// <param name="entity"></param>
        /// <returns></returns>
        public bool Delete(PatrolGenerateNO entity)
        {
            PatrolGenerateNOHelper helper = new PatrolGenerateNOHelper();

            return(helper.Delete(entity));
        }