Exemplo n.º 1
0
 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);
     }
 }
Exemplo n.º 2
0
        /// <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);
        }