public override int GetHashCode() { unchecked { var hashCode = (Code != null ? Code.GetHashCode() : 0); hashCode = (hashCode * 397) ^ (Description != null ? Description.GetHashCode() : 0); hashCode = (hashCode * 397) ^ (Description_2 != null ? Description_2.GetHashCode() : 0); hashCode = (hashCode * 397) ^ (System_Status != null ? System_Status.GetHashCode() : 0); hashCode = (hashCode * 397) ^ (LocalDescription != null ? LocalDescription.GetHashCode() : 0); hashCode = (hashCode * 397) ^ (LocalDescription2 != null ? LocalDescription2.GetHashCode() : 0); hashCode = (hashCode * 397) ^ (Base_Unit != null ? Base_Unit.GetHashCode() : 0); hashCode = (hashCode * 397) ^ (Picture_Document_ID != null ? Picture_Document_ID.GetHashCode() : 0); hashCode = (hashCode * 397) ^ (Template_Code != null ? Template_Code.GetHashCode() : 0); hashCode = (hashCode * 397) ^ (Publication_Group != null ? Publication_Group.GetHashCode() : 0); hashCode = (hashCode * 397) ^ (Short_Text != null ? Short_Text.GetHashCode() : 0); hashCode = (hashCode * 397) ^ (Created_By != null ? Created_By.GetHashCode() : 0); hashCode = (hashCode * 397) ^ (Updated_By != null ? Updated_By.GetHashCode() : 0); hashCode = (hashCode * 397) ^ (Additional_Information_1 != null ? Additional_Information_1.GetHashCode() : 0); hashCode = (hashCode * 397) ^ (Additional_Information_2 != null ? Additional_Information_2.GetHashCode() : 0); hashCode = (hashCode * 397) ^ (Additional_Information_3 != null ? Additional_Information_3.GetHashCode() : 0); hashCode = (hashCode * 397) ^ (Additional_Information_4 != null ? Additional_Information_4.GetHashCode() : 0); hashCode = (hashCode * 397) ^ (Additional_Information_5 != null ? Additional_Information_5.GetHashCode() : 0); hashCode = (hashCode * 397) ^ (ETag != null ? ETag.GetHashCode() : 0); return(hashCode); } }
/// <summary> /// 获得单前模块的单据编号如果没有定义规则就返回空 /// </summary> /// <param name="userId">用户ID</param> /// <param name="moduleId">模块ID</param> /// <returns>单据号</returns> public string GetBillCode(string userId, string moduleId) { IDatabase database = DataFactory.Database(); DbTransaction isOpenTrans = database.BeginTrans(); //获得模板ID string billCode = "";//单据号 Base_User base_user = database.FindEntity <Base_User>(userId); Base_CodeRule base_coderule = Repository().FindEntity("ModuleId", moduleId); try { int nowSerious = 0; //取得流水号种子 List <Base_CodeRuleSerious> base_coderuleseriouslist = database.FindList <Base_CodeRuleSerious>("CodeRuleId", base_coderule.CodeRuleId); //取得最大种子 Base_CodeRuleSerious maxCodeRuleSerious = base_coderuleseriouslist.Find(delegate(Base_CodeRuleSerious p) { return(p.ValueType == "0" && p.UserId == null); }); if (!string.IsNullOrEmpty(base_coderule.CodeRuleId)) { List <Base_CodeRuleDetail> base_coderuledetailList = database.FindList <Base_CodeRuleDetail>("CodeRuleId", base_coderule.CodeRuleId); foreach (Base_CodeRuleDetail base_coderuledetail in base_coderuledetailList) { switch (base_coderuledetail.FullName) { //自定义项 case "0": billCode = billCode + base_coderuledetail.FormatStr; break; //日期 case "1": //日期字符串类型 billCode = billCode + DateTime.Now.ToString(base_coderuledetail.FormatStr); //处理自动更新流水号 if (base_coderuledetail.AutoReset == 1) { //判断是否有流水号 if (maxCodeRuleSerious != null) { //当上次更新时间跟本次日期不一致时重置流水号种子 if (maxCodeRuleSerious.LastUpdateDate != DateTime.Now.ToString(base_coderuledetail.FormatStr)) { maxCodeRuleSerious.LastUpdateDate = DateTime.Now.ToString(base_coderuledetail.FormatStr); //更新最后更新时间 maxCodeRuleSerious.NowValue = 1; //重置种子 database.Update <Base_CodeRuleSerious>(maxCodeRuleSerious, isOpenTrans); //重置种子以后删除掉之前用户占用了的种子。 StringBuilder deleteSql = new StringBuilder(string.Format("delete Base_CodeRuleSerious where CodeRuleId='{0} AND UserId IS NOT NULL '", base_coderule.CodeRuleId)); database.ExecuteBySql(deleteSql, isOpenTrans); } } } break; //流水号 case "2": //查找当前用户是否已有之前未用掉的种子 Base_CodeRuleSerious base_coderuleserious = base_coderuleseriouslist.Find(delegate(Base_CodeRuleSerious p) { return(p.UserId == userId && p.Enabled == 1); }); //如果没有就取当前最大的种子 if (base_coderuleserious == null) { //取得系统最大的种子 int maxSerious = (int)maxCodeRuleSerious.NowValue; nowSerious = maxSerious; base_coderuleserious = new Base_CodeRuleSerious(); base_coderuleserious.Create(); base_coderuleserious.NowValue = maxSerious; base_coderuleserious.UserId = userId; base_coderuleserious.ValueType = "1"; base_coderuleserious.Enabled = 1; base_coderuleserious.CodeRuleId = base_coderule.CodeRuleId; database.Insert <Base_CodeRuleSerious>(base_coderuleserious, isOpenTrans); //处理种子更新 maxCodeRuleSerious.NowValue += 1; //种子自增 database.Update <Base_CodeRuleSerious>(maxCodeRuleSerious, isOpenTrans); } else { nowSerious = (int)base_coderuleserious.NowValue; } string seriousStr = new string('0', (int)(base_coderuledetail.FLength)) + nowSerious.ToString(); seriousStr = seriousStr.Substring(seriousStr.Length - (int)(base_coderuledetail.FLength)); billCode = billCode + seriousStr; break; //部门 case "3": Base_Department base_department = database.FindEntity <Base_Department>(base_user.dep_id); billCode = billCode + base_coderuledetail.FormatStr; if (base_coderuledetail.FormatStr == "code") { billCode = billCode + base_department.Code; } else { billCode = billCode + base_department.Name; } break; //公司 case "4": Base_Unit base_company = database.FindEntity <Base_Unit>(base_user.CompanyId); if (base_coderuledetail.FormatStr == "code") { billCode = billCode + base_company.code; } else { billCode = billCode + base_company.longname; } break; //用户 case "5": if (base_coderuledetail.FormatStr == "code") { billCode = billCode + base_user.Code; } else { billCode = billCode + base_user.Account; } break; default: break; } } } } catch (Exception ex) { Base_SysLogBll.Instance.WriteLog("", OperationType.Other, "-1", string.Format("{0}在获取{1}单据编码时错误:", base_user.RealName, base_coderule.FullName) + ex.Message); database.Rollback(); return(billCode); } database.Commit(); return(billCode); }