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