コード例 #1
0
 /// <summary>
 /// 设置实体
 /// </summary>
 /// <param name="entity">实体</param>
 private void SetObject(SQLBuilder sqlBuilder, BaseDepartmentEntity entity)
 {
     sqlBuilder.SetValue(BaseDepartmentEntity.FieldParentId, entity.ParentId);
     sqlBuilder.SetValue(BaseDepartmentEntity.FieldCode, entity.Code);
     sqlBuilder.SetValue(BaseDepartmentEntity.FieldShortName, entity.ShortName);
     sqlBuilder.SetValue(BaseDepartmentEntity.FieldFullName, entity.FullName);
     sqlBuilder.SetValue(BaseDepartmentEntity.FieldCategoryCode, entity.CategoryCode);
     sqlBuilder.SetValue(BaseDepartmentEntity.FieldOuterPhone, entity.OuterPhone);
     sqlBuilder.SetValue(BaseDepartmentEntity.FieldInnerPhone, entity.InnerPhone);
     sqlBuilder.SetValue(BaseDepartmentEntity.FieldFax, entity.Fax);
     sqlBuilder.SetValue(BaseDepartmentEntity.FieldDeletionStateCode, entity.DeletionStateCode);
     sqlBuilder.SetValue(BaseDepartmentEntity.FieldEnabled, entity.Enabled);
     sqlBuilder.SetValue(BaseDepartmentEntity.FieldSortCode, entity.SortCode);
     sqlBuilder.SetValue(BaseDepartmentEntity.FieldDescription, entity.Description);
     sqlBuilder.SetValue(BaseDepartmentEntity.FieldParentName, entity.ParentName);
     sqlBuilder.SetValue(BaseDepartmentEntity.FieldCompanyId, entity.CompanyId);
     sqlBuilder.SetValue(BaseDepartmentEntity.FieldCompanyName, entity.CompanyName);
     sqlBuilder.SetValue(BaseDepartmentEntity.FieldCompanyCode, entity.CompanyCode);
     sqlBuilder.SetValue(BaseDepartmentEntity.FieldParentCode, entity.ParentCode);
     sqlBuilder.SetValue(BaseDepartmentEntity.FieldCategoryName, entity.CategoryName);
     sqlBuilder.SetValue(BaseDepartmentEntity.FieldManagerId, entity.ManagerId);
     sqlBuilder.SetValue(BaseDepartmentEntity.FieldManager, entity.Manager);
     sqlBuilder.SetValue(BaseDepartmentEntity.FieldManagerQQ, entity.ManagerQQ);
     sqlBuilder.SetValue(BaseDepartmentEntity.FieldManagerMobile, entity.ManagerMobile);
     SetObjectExpand(sqlBuilder, entity);
 }
コード例 #2
0
        public static BaseDepartmentEntity GetObjectByName(BaseUserInfo userInfo, string companyId, string fullName)
        {
            BaseDepartmentEntity result = null;

            string              url        = BaseSystemInfo.UserCenterHost + "/UserCenterV42/DepartmentService.ashx";
            WebClient           webClient  = new WebClient();
            NameValueCollection postValues = new NameValueCollection();

            postValues.Add("system", BaseSystemInfo.SoftFullName);
            postValues.Add("systemCode", BaseSystemInfo.SystemCode);
            postValues.Add("securityKey", BaseSystemInfo.SecurityKey);
            postValues.Add("function", "GetObjectByName");
            postValues.Add("userInfo", userInfo.Serialize());
            postValues.Add("encrypted", true.ToString());
            postValues.Add("companyId", SecretUtil.Encrypt(companyId));
            postValues.Add("fullName", SecretUtil.Encrypt(fullName));
            // 向服务器发送POST数据
            byte[] responseArray = webClient.UploadValues(url, postValues);
            string response      = Encoding.UTF8.GetString(responseArray);

            if (!string.IsNullOrEmpty(response))
            {
                result = JsonConvert.DeserializeObject <BaseDepartmentEntity>(response);
            }

            return(result);
        }
コード例 #3
0
        public static BaseDepartmentEntity GetObjectByNameByCache(BaseUserInfo userInfo, string companyId, string fullName)
        {
            BaseDepartmentEntity result = null;

            string key = "DBN:" + companyId + ":" + fullName;
            string id  = string.Empty;

            using (var redisClient = PooledRedisHelper.GetReadOnlyClient())
            {
                id = redisClient.Get <string>(key);
                if (!string.IsNullOrWhiteSpace(id))
                {
                    key    = "D:" + id;
                    result = redisClient.Get <BaseDepartmentEntity>(key);
                }
            }

            // 远程通过接口获取数据
            if (result == null)
            {
                result = GetObjectByName(userInfo, companyId, fullName);
            }

            return(result);
        }
コード例 #4
0
        /// <summary>
        /// 从缓存获取获取实体
        /// </summary>
        /// <param name="companyId">公司主键</param>
        /// <param name="fullName">部门名称</param>
        /// <returns>实体</returns>
        public static BaseDepartmentEntity GetObjectByNameByCache(string companyId, string fullName)
        {
            BaseDepartmentEntity result = null;

            if (!string.IsNullOrEmpty(companyId) && !string.IsNullOrEmpty(fullName))
            {
                string id  = string.Empty;
                string key = "DBN:" + companyId + ":" + fullName;
                using (var redisClient = PooledRedisHelper.GetReadOnlyClient())
                {
                    id = redisClient.Get <string>(key);
                    if (!string.IsNullOrWhiteSpace(id))
                    {
                        result = GetObjectByCache(id);
                    }
                    if (result == null)
                    {
                        BaseDepartmentManager departmentManager = new BaseDepartmentManager();
                        result = departmentManager.GetObjectByName(companyId, fullName);
                        // 若是空的不用缓存,继续读取实体
                        if (result != null)
                        {
                            SetCache(result);
                        }
                    }
                }
            }

            return(result);
        }
コード例 #5
0
        public static BaseDepartmentEntity GetObject(BaseUserInfo userInfo, string id)
        {
            BaseDepartmentEntity result = null;

            string              url        = BaseSystemInfo.UserCenterHost + "/UserCenterV42/DepartmentService.ashx";
            WebClient           webClient  = new WebClient();
            NameValueCollection postValues = new NameValueCollection();

            postValues.Add("system", BaseSystemInfo.SoftFullName);
            postValues.Add("systemCode", BaseSystemInfo.SystemCode);
            postValues.Add("securityKey", BaseSystemInfo.SecurityKey);
            // 2015-11-25 吉日嘎拉,这里还是从缓存里获取就可以了,提高登录的效率。
            // postValues.Add("function", "GetObject");
            postValues.Add("function", "GetObjectByCache");
            postValues.Add("userInfo", userInfo.Serialize());
            postValues.Add("encrypted", true.ToString());
            postValues.Add("id", SecretUtil.Encrypt(id));
            // 向服务器发送POST数据
            byte[] responseArray = webClient.UploadValues(url, postValues);
            string response      = Encoding.UTF8.GetString(responseArray);

            if (!string.IsNullOrEmpty(response))
            {
                JavaScriptSerializer javaScriptSerializer = new JavaScriptSerializer();
                result = javaScriptSerializer.Deserialize <BaseDepartmentEntity>(response);
            }

            return(result);
        }
コード例 #6
0
        /// <summary>
        /// 从缓存获取获取实体
        /// </summary>
        /// <param name="id">主键</param>
        /// <returns>实体</returns>
        public static BaseDepartmentEntity GetObjectByCache(string id, bool fefreshCache = false)
        {
            BaseDepartmentEntity result = null;

            if (!string.IsNullOrEmpty(id))
            {
                string key = "D:" + id;

                if (!fefreshCache)
                {
                    result = GetCacheByKey(key);
                }

                if (result == null)
                {
                    BaseDepartmentManager manager = new BaseDepartmentManager();
                    result = manager.GetObject(id);
                    // 若是空的不用缓存,继续读取实体
                    if (result != null)
                    {
                        SetCache(result);
                    }
                }
            }

            return(result);
        }
コード例 #7
0
        public static BaseDepartmentEntity GetObjectByCodeByCache(string code)
        {
            BaseDepartmentEntity result = null;

            if (string.IsNullOrEmpty(code))
            {
                return(result);
            }

            // string key = "DepartmentByCode:" + code;
            string key = "DBC:" + code;
            string id  = string.Empty;

            using (var redisClient = PooledRedisHelper.GetReadOnlyClient())
            {
                id = redisClient.Get <string>(key);
            }
            if (!string.IsNullOrWhiteSpace(id))
            {
                result = GetObjectByCache(id);
            }
            else
            {
                // 从数据库读取数据
                BaseDepartmentManager departmentManager = new BaseDepartmentManager();
                result = departmentManager.GetObjectByCode(code);
                // 设置缓存,没必要来个空操作
                if (result != null)
                {
                    SetCache(result);
                }
            }

            return(result);
        }
コード例 #8
0
        /// <summary>
        /// 实体修改记录
        /// </summary>
        /// <param name="newEntity">修改前的实体对象</param>
        /// <param name="oldEntity">修改后的实体对象</param>
        /// <param name="tableName">表名称</param>
        public void UpdateEntityLog(BaseDepartmentEntity newEntity, BaseDepartmentEntity oldEntity, string tableName = null)
        {
            if (string.IsNullOrEmpty(tableName))
            {
                tableName = this.CurrentTableName + "_LOG";
            }
            BaseModifyRecordManager manager = new BaseModifyRecordManager(this.UserInfo, tableName);

            foreach (var property in typeof(BaseDepartmentEntity).GetProperties())
            {
                var oldValue = Convert.ToString(property.GetValue(oldEntity, null));
                var newValue = Convert.ToString(property.GetValue(newEntity, null));
                //不记录创建人、修改人、没有修改的记录
                var fieldDescription = property.GetCustomAttributes(typeof(FieldDescription), false).FirstOrDefault() as FieldDescription;
                if (!fieldDescription.NeedLog || oldValue == newValue)
                {
                    continue;
                }
                var record = new BaseModifyRecordEntity();
                record.ColumnCode        = property.Name.ToUpper();
                record.ColumnDescription = fieldDescription.Text;
                record.NewValue          = newValue;
                record.OldValue          = oldValue;
                record.TableCode         = this.CurrentTableName.ToUpper();
                record.TableDescription  = FieldExtensions.ToDescription(typeof(BaseDepartmentEntity), "TableName");
                record.RecordKey         = oldEntity.Id.ToString();
                record.IPAddress         = Utilities.GetIPAddress(true);
                manager.Add(record, true, false);
            }
        }
コード例 #9
0
        public int Update(BaseDepartmentEntity entity, out string statusCode)
        {
            int result = 0;

            List <KeyValuePair <string, object> > parameters = new List <KeyValuePair <string, object> >();

            parameters.Add(new KeyValuePair <string, object>(BaseDepartmentEntity.FieldParentId, entity.ParentId));
            parameters.Add(new KeyValuePair <string, object>(BaseDepartmentEntity.FieldFullName, entity.FullName));
            parameters.Add(new KeyValuePair <string, object>(BaseDepartmentEntity.FieldDeletionStateCode, 0));

            if (this.Exists(parameters, entity.Id))
            {
                // 名称已重复
                statusCode = Status.ErrorNameExist.ToString();
            }
            else
            {
                // 检查编号是否重复
                parameters = new List <KeyValuePair <string, object> >();
                parameters.Add(new KeyValuePair <string, object>(BaseDepartmentEntity.FieldCode, entity.Code));
                parameters.Add(new KeyValuePair <string, object>(BaseDepartmentEntity.FieldDeletionStateCode, 0));

                if (entity.Code.Length > 0 && this.Exists(parameters, entity.Id))
                {
                    // 编号已重复
                    statusCode = Status.ErrorCodeExist.ToString();
                }
                else
                {
                    // 获取原始实体信息
                    var entityOld = this.GetObject(entity.Id);
                    // 保存修改记录
                    this.UpdateEntityLog(entity, entityOld);

                    // 1:更新部门的信息
                    result = this.UpdateObject(entity);
                    // 2:组织机构修改时,用户表的公司,部门,工作组数据给同步更新。
                    BaseUserManager userManager = new BaseUserManager(this.DbHelper, this.UserInfo);
                    userManager.SetProperty(new KeyValuePair <string, object>(BaseUserEntity.FieldDepartmentId, entity.Id), new KeyValuePair <string, object>(BaseUserEntity.FieldDepartmentName, entity.FullName));
                    // 03:组织机构修改时,文件夹同步更新
                    // BaseFolderManager folderManager = new BaseFolderManager(this.DbHelper, this.UserInfo);
                    // folderManager.SetProperty(new KeyValuePair<string, object>(BaseFolderEntity.FieldFolderName, entity.FullName), new KeyValuePair<string, object>(BaseFolderEntity.FieldId, entity.Id));
                    if (result == 1)
                    {
                        statusCode = Status.OKUpdate.ToString();
                    }
                    else
                    {
                        statusCode = Status.ErrorDeleted.ToString();
                    }
                }
            }
            //}
            return(result);
        }
コード例 #10
0
        /// <summary>
        /// 添加之后,需要重新刷新缓存,否则其他读取数据的地方会乱了,或者不及时了
        /// 宋彪
        /// </summary>
        /// <param name="entity">实体</param>
        /// <returns></returns>
        public int AfterAdd(BaseDepartmentEntity entity)
        {
            int result = 0;

            // 2016-01-28 更新用户缓存
            using (var redisClient = PooledRedisHelper.GetClient())
            {
                BaseDepartmentManager.CacheContractAreaPreheatingSpelling(redisClient, entity);
            }

            return(result);
        }
コード例 #11
0
        /// <summary>
        /// 获取实体
        /// </summary>
        /// <param name="userInfo">用户</param>
        /// <param name="id">主键</param>
        /// <returns>实体</returns>
        public BaseDepartmentEntity GetObject(BaseUserInfo userInfo, string id)
        {
            BaseDepartmentEntity result = null;

            var parameter = ServiceInfo.Create(userInfo, MethodBase.GetCurrentMethod());

            ServiceUtil.ProcessUserCenterReadDb(userInfo, parameter, (dbHelper) =>
            {
                var manager = new BaseDepartmentManager(dbHelper, userInfo);
                result      = manager.GetObject(id);
            });

            return(result);
        }
コード例 #12
0
        public static BaseDepartmentEntity GetCacheByKey(string key)
        {
            BaseDepartmentEntity result = null;

            if (!string.IsNullOrWhiteSpace(key))
            {
                using (var redisClient = PooledRedisHelper.GetReadOnlyClient())
                {
                    result = redisClient.Get <BaseDepartmentEntity>(key);
                }
            }

            return(result);
        }
コード例 #13
0
        public static BaseDepartmentEntity GetCache(string key)
        {
            BaseDepartmentEntity result = null;

            if (!string.IsNullOrWhiteSpace(key))
            {
                System.Web.Caching.Cache cache = HttpRuntime.Cache;
                if (cache != null && cache[key] != null)
                {
                    result = cache[key] as BaseDepartmentEntity;
                }
            }

            return(result);
        }
コード例 #14
0
        /// <summary>
        /// 设置缓存
        /// </summary>
        /// <param name="entity">实体</param>
        public static void SetCache(BaseDepartmentEntity entity)
        {
            if (entity != null && entity.Id != null)
            {
                string key = string.Empty;
                System.Web.Caching.Cache cache = HttpRuntime.Cache;

                key = "Department" + entity.Id;
                cache.Add(key, entity, null, DateTime.Now.AddHours(16), TimeSpan.Zero, CacheItemPriority.Normal, null);

                key = "DepartmentByCode" + entity.Code;
                cache.Add(key, entity, null, DateTime.Now.AddHours(16), TimeSpan.Zero, CacheItemPriority.Normal, null);

                key = "DepartmentByName" + entity.FullName;
                cache.Add(key, entity, null, DateTime.Now.AddHours(16), TimeSpan.Zero, CacheItemPriority.Normal, null);
            }
        }
コード例 #15
0
        /// <summary>
        /// 更新组织机构
        /// </summary>
        /// <param name="userInfo">用户</param>
        /// <param name="entity">实体</param>
        /// <param name="statusCode">状态码</param>
        /// <param name="statusMessage">状态信息</param>
        /// <returns>影响行数</returns>
        public int Update(BaseUserInfo userInfo, BaseDepartmentEntity entity, out string statusCode, out string statusMessage)
        {
            int result = 0;

            string returnCode    = string.Empty;
            string returnMessage = string.Empty;
            var    parameter     = ServiceInfo.Create(userInfo, MethodBase.GetCurrentMethod());

            ServiceUtil.ProcessUserCenterWriteDb(userInfo, parameter, (dbHelper) =>
            {
                var manager   = new BaseDepartmentManager(dbHelper, userInfo);
                result        = manager.Update(entity, out returnCode);
                returnMessage = manager.GetStateMessage(returnCode);
            });
            statusCode    = returnCode;
            statusMessage = returnMessage;
            return(result);
        }
コード例 #16
0
        public override int BatchSave(DataTable dt)
        {
            int result = 0;
            BaseDepartmentEntity entity = new BaseDepartmentEntity();

            foreach (DataRow dr in dt.Rows)
            {
                // 删除状态
                if (dr.RowState == DataRowState.Deleted)
                {
                    string id = dr[BaseDepartmentEntity.FieldId, DataRowVersion.Original].ToString();
                    if (id.Length > 0)
                    {
                        result += this.DeleteObject(id);
                    }
                }
                // 被修改过
                if (dr.RowState == DataRowState.Modified)
                {
                    string id = dr[BaseDepartmentEntity.FieldId, DataRowVersion.Original].ToString();
                    if (id.Length > 0)
                    {
                        entity.GetFrom(dr);
                        result += this.UpdateObject(entity);
                    }
                }
                // 添加状态
                if (dr.RowState == DataRowState.Added)
                {
                    entity.GetFrom(dr);
                    result += this.AddObject(entity).Length > 0 ? 1 : 0;
                }
                if (dr.RowState == DataRowState.Unchanged)
                {
                    continue;
                }
                if (dr.RowState == DataRowState.Detached)
                {
                    continue;
                }
            }
            return(result);
        }
コード例 #17
0
        /// <summary>
        /// 承包区缓存预热 宋彪
        /// 网点下的承包区查询条件:CATEGORYCODE = 7 AND  and COMPANYID=‘网点id’
        /// 找到所有承包区的条件
        /// CATEGORYCODE = 7 AND COMPANYID IN(SELECT ID FROM BASEORGANIZE)
        /// </summary>
        /// <param name="flushDb"></param>
        public static void CacheContractAreaPreheatingSpelling(bool flushDb = false)
        {
            // 组织机构数据缓存预热实现
            BaseDepartmentManager departmentManager = new Business.BaseDepartmentManager();

            // 减少数据库连接、减少内存站用、一边度取、一边设置缓存,只读取需要的数据
            departmentManager.SelectFields = BaseDepartmentEntity.FieldCompanyId
                                             + " , " + BaseDepartmentEntity.FieldFullName
                                             + " , " + BaseDepartmentEntity.FieldManager
                                             + " , " + BaseDepartmentEntity.FieldManagerId
                                             + " , " + BaseDepartmentEntity.FieldEnabled
                                             + " , " + BaseDepartmentEntity.FieldDeletionStateCode;

            using (var redisClient = PooledRedisHelper.GetClient())
            {
                if (flushDb)
                {
                    redisClient.FlushDb();
                }

                double score = 0;

                // 获取某个网点下的承包区 循环进行缓存
                using (IDataReader dataReader = departmentManager.ExecuteReaderByWhere(" CATEGORYCODE = 7 AND COMPANYID IN (SELECT ID FROM BASEORGANIZE) AND DeletionStateCode=0 ", null, 0, BaseDepartmentEntity.FieldFullName))
                {
                    while (dataReader.Read())
                    {
                        // 具体使用时 使用承包区主管的ID和承包区的名字,不要使用部门的ID,因为费用计算时是扣到具体的承包区主管的 承包区是属于具体网点
                        BaseDepartmentEntity entity = new BaseDepartmentEntity();
                        entity.ManagerId = dataReader[BaseDepartmentEntity.FieldManagerId].ToString();
                        entity.Code      = dataReader[BaseDepartmentEntity.FieldCode].ToString();
                        entity.FullName  = dataReader[BaseDepartmentEntity.FieldFullName].ToString();
                        entity.CompanyId = dataReader[BaseDepartmentEntity.FieldCompanyId].ToString();

                        score++;
                        CacheContractAreaPreheatingSpelling(redisClient, entity, score);

                        // 2016-02-02 吉日嘎拉 设置一下排序属性
                        departmentManager.SetProperty(entity.Id, new KeyValuePair <string, object>(BaseDepartmentEntity.FieldSortCode, score));
                    }
                }
            }
        }
コード例 #18
0
        /// <summary>
        /// 设置缓存
        /// 这里缓存的数据容量控制了一下,只保存Id,会节约内存空间
        /// </summary>
        /// <param name="entity">实体</param>
        public static void SetCache(BaseDepartmentEntity entity)
        {
            if (entity != null && entity.Id != null)
            {
                string key = string.Empty;
                using (var redisClient = PooledRedisHelper.GetClient())
                {
                    // key = "Department:" + entity.Id;
                    key = "D:" + entity.Id;
                    redisClient.Set <BaseDepartmentEntity>(key, entity, DateTime.Now.AddHours(16));

                    // key = "DepartmentByName:"+entity.CompanyId +":"+ entity.FullName;
                    key = "DBN:" + entity.CompanyId + ":" + entity.FullName;
                    redisClient.Set <string>(key, entity.Id.ToString(), DateTime.Now.AddHours(16));

                    // key = "DepartmentByCode:" + entity.Code;
                    // 2016-01-22 吉日嘎拉,若不同的公司编号重复,有待改进
                    key = "DBC:" + entity.Code;
                    redisClient.Set <string>(key, entity.Id.ToString(), DateTime.Now.AddHours(16));
                }
            }
        }
コード例 #19
0
        /// <summary>
        /// 更新实体
        /// </summary>
        /// <param name="entity">实体</param>
        public int UpdateObject(BaseDepartmentEntity entity)
        {
            SQLBuilder sqlBuilder = new SQLBuilder(DbHelper);

            sqlBuilder.BeginUpdate(this.CurrentTableName);
            this.SetObject(sqlBuilder, entity);
            if (UserInfo != null)
            {
                sqlBuilder.SetValue(BaseDepartmentEntity.FieldModifiedUserId, UserInfo.Id);
                sqlBuilder.SetValue(BaseDepartmentEntity.FieldModifiedBy, UserInfo.RealName);
            }
            // 若有修改时间标示,那就按修改时间来,不是按最新的时间来
            if (entity.ModifiedOn.HasValue)
            {
                sqlBuilder.SetValue(BaseDepartmentEntity.FieldModifiedOn, entity.ModifiedOn.Value);
            }
            else
            {
                sqlBuilder.SetDBNow(BaseDepartmentEntity.FieldModifiedOn);
            }
            sqlBuilder.SetWhere(BaseDepartmentEntity.FieldId, entity.Id);
            return(sqlBuilder.EndUpdate());
        }
コード例 #20
0
 partial void SetObjectExpand(SQLBuilder sqlBuilder, BaseDepartmentEntity entity);
コード例 #21
0
        /// <summary>
        /// 按实体缓存承包区 宋彪
        /// </summary>
        /// <param name="redisClient"></param>
        /// <param name="score"></param>
        /// <param name="departmentEntity"></param>
        public static void CacheContractAreaPreheatingSpelling(IRedisClient redisClient, BaseDepartmentEntity departmentEntity, double score = 0)
        {
            // 承包区主管id字段不可为空,对应的是用户的Id
            if (!string.IsNullOrWhiteSpace(departmentEntity.ManagerId))
            {
                string contractArea = departmentEntity.ManagerId + ";" + departmentEntity.Code + ";" + departmentEntity.FullName;
                string key          = string.Empty;
                // 01:所有承包区查询的缓存数据方法  编号是按网点code生成 至少输入4个编号才返回查询结果
                for (int i = 4; i <= departmentEntity.Code.Length; i++)
                {
                    key = "ContractArea:" + departmentEntity.CompanyId + ":" + departmentEntity.Code.Substring(0, i).ToLower();
                    redisClient.AddItemToSortedSet(key, contractArea, score);
                    redisClient.ExpireEntryAt(key, DateTime.Now.AddDays(15));
                }

                // 02:按承包区名字查询的缓存
                for (int i = 1; i <= departmentEntity.FullName.Length; i++)
                {
                    key = "ContractArea:" + departmentEntity.CompanyId + ":" + departmentEntity.FullName.Substring(0, i).ToLower();
                    redisClient.AddItemToSortedSet(key, contractArea, score);
                    redisClient.ExpireEntryAt(key, DateTime.Now.AddDays(15));
                }
            }
        }
コード例 #22
0
        public string Add(BaseDepartmentEntity entity, out string statusCode)
        {
            string result = string.Empty;
            // 检查是否重复
            List <KeyValuePair <string, object> > parameters = new List <KeyValuePair <string, object> >();

            parameters.Add(new KeyValuePair <string, object>(BaseDepartmentEntity.FieldParentId, entity.ParentId));
            parameters.Add(new KeyValuePair <string, object>(BaseDepartmentEntity.FieldFullName, entity.FullName));
            parameters.Add(new KeyValuePair <string, object>(BaseDepartmentEntity.FieldDeletionStateCode, 0));

            //注意Access 的时候,类型不匹配,会出错故此将 Id 传入
            if (BaseSystemInfo.UserCenterDbType == CurrentDbType.Access)
            {
                if (this.Exists(parameters, entity.Id))
                {
                    // 名称已重复
                    statusCode = Status.ErrorNameExist.ToString();
                }
                else
                {
                    parameters = new List <KeyValuePair <string, object> >();
                    parameters.Add(new KeyValuePair <string, object>(BaseDepartmentEntity.FieldCode, entity.Code));
                    parameters.Add(new KeyValuePair <string, object>(BaseDepartmentEntity.FieldDeletionStateCode, 0));
                    if (entity.Code.Length > 0 && this.Exists(parameters))
                    {
                        // 编号已重复
                        statusCode = Status.ErrorCodeExist.ToString();
                    }
                    else
                    {
                        result = this.AddObject(entity);
                        // 运行成功
                        statusCode = Status.OKAdd.ToString();

                        AfterAdd(entity);
                    }
                }
            }
            else if (this.Exists(parameters))
            {
                // 名称已重复
                statusCode = Status.ErrorNameExist.ToString();
            }
            else
            {
                parameters = new List <KeyValuePair <string, object> >();
                parameters.Add(new KeyValuePair <string, object>(BaseDepartmentEntity.FieldCode, entity.Code));
                parameters.Add(new KeyValuePair <string, object>(BaseDepartmentEntity.FieldDeletionStateCode, 0));
                if (entity.Code.Length > 0 && this.Exists(parameters))
                {
                    // 编号已重复
                    statusCode = Status.ErrorCodeExist.ToString();
                }
                else
                {
                    result = this.AddObject(entity);
                    // 运行成功
                    statusCode = Status.OKAdd.ToString();

                    AfterAdd(entity);
                }
            }


            return(result);
        }
コード例 #23
0
 /// <summary>
 /// 添加
 /// </summary>
 /// <param name="entity">实体</param>
 /// <returns>主键</returns>
 public string Add(BaseDepartmentEntity entity)
 {
     return(this.AddObject(entity));
 }
コード例 #24
0
 /// <summary>
 /// 添加
 /// </summary>
 /// <param name="entity">实体</param>
 /// <param name="identity">自增量方式</param>
 /// <param name="returnId">返回主鍵</param>
 /// <returns>主键</returns>
 public string Add(BaseDepartmentEntity entity, bool identity, bool returnId)
 {
     this.Identity = identity;
     this.ReturnId = returnId;
     return(this.AddObject(entity));
 }
コード例 #25
0
 /// <summary>
 /// 更新
 /// </summary>
 /// <param name="entity">实体</param>
 public int Update(BaseDepartmentEntity entity)
 {
     return(this.UpdateObject(entity));
 }
コード例 #26
0
        /// <summary>
        /// 添加实体
        /// </summary>
        /// <param name="entity">实体</param>
        public string AddObject(BaseDepartmentEntity entity)
        {
            string sequence = string.Empty;

            if (!entity.SortCode.HasValue)
            {
                BaseSequenceManager sequenceManager = new BaseSequenceManager(DbHelper, this.Identity);
                sequence        = sequenceManager.Increment(this.CurrentTableName);
                entity.SortCode = int.Parse(sequence);
            }
            SQLBuilder sqlBuilder = new SQLBuilder(DbHelper, this.Identity, this.ReturnId);

            sqlBuilder.BeginInsert(this.CurrentTableName, BaseDepartmentEntity.FieldId);
            if (entity.Id.HasValue || !this.Identity)
            {
                sqlBuilder.SetValue(BaseDepartmentEntity.FieldId, entity.Id);
            }
            else
            {
                if (!this.ReturnId && (DbHelper.CurrentDbType == CurrentDbType.Oracle || DbHelper.CurrentDbType == CurrentDbType.DB2))
                {
                    if (DbHelper.CurrentDbType == CurrentDbType.Oracle)
                    {
                        sqlBuilder.SetFormula(BaseDepartmentEntity.FieldId, "SEQ_" + BaseDepartmentEntity.TableName.ToUpper() + ".NEXTVAL ");
                    }
                    if (DbHelper.CurrentDbType == CurrentDbType.DB2)
                    {
                        sqlBuilder.SetFormula(BaseDepartmentEntity.FieldId, "NEXT VALUE FOR SEQ_" + BaseDepartmentEntity.TableName.ToUpper());
                    }
                }
                else
                {
                    if (this.Identity && (DbHelper.CurrentDbType == CurrentDbType.Oracle || DbHelper.CurrentDbType == CurrentDbType.DB2))
                    {
                        if (entity.Id == null)
                        {
                            if (string.IsNullOrEmpty(sequence))
                            {
                                BaseSequenceManager sequenceManager = new BaseSequenceManager(DbHelper, this.Identity);
                                sequence = sequenceManager.Increment(BaseDepartmentEntity.TableName);
                            }
                            entity.Id = int.Parse(sequence);
                        }
                        sqlBuilder.SetValue(BaseDepartmentEntity.FieldId, entity.Id);
                    }
                }
            }
            this.SetObject(sqlBuilder, entity);

            // 创建人信息
            if (!string.IsNullOrEmpty(entity.CreateUserId))
            {
                sqlBuilder.SetValue(BaseDepartmentEntity.FieldCreateUserId, entity.CreateUserId);
            }
            else
            {
                if (UserInfo != null)
                {
                    sqlBuilder.SetValue(BaseDepartmentEntity.FieldCreateUserId, UserInfo.Id);
                }
            }
            if (!string.IsNullOrEmpty(entity.CreateBy))
            {
                sqlBuilder.SetValue(BaseDepartmentEntity.FieldCreateBy, entity.CreateBy);
            }
            else
            {
                if (UserInfo != null)
                {
                    sqlBuilder.SetValue(BaseDepartmentEntity.FieldCreateBy, UserInfo.RealName);
                }
            }
            if (entity.CreateOn.HasValue)
            {
                sqlBuilder.SetValue(BaseDepartmentEntity.FieldCreateOn, entity.CreateOn);
            }
            else
            {
                sqlBuilder.SetDBNow(BaseDepartmentEntity.FieldCreateOn);
            }

            // 修改人信息
            if (!string.IsNullOrEmpty(entity.ModifiedUserId))
            {
                sqlBuilder.SetValue(BaseDepartmentEntity.FieldModifiedUserId, entity.ModifiedUserId);
            }
            else
            {
                if (UserInfo != null)
                {
                    sqlBuilder.SetValue(BaseDepartmentEntity.FieldModifiedUserId, UserInfo.Id);
                }
            }
            if (!string.IsNullOrEmpty(entity.ModifiedBy))
            {
                sqlBuilder.SetValue(BaseDepartmentEntity.FieldModifiedBy, entity.ModifiedBy);
            }
            else
            {
                if (UserInfo != null)
                {
                    sqlBuilder.SetValue(BaseDepartmentEntity.FieldModifiedBy, UserInfo.RealName);
                }
            }
            if (entity.ModifiedOn.HasValue)
            {
                sqlBuilder.SetValue(BaseDepartmentEntity.FieldModifiedOn, entity.ModifiedOn);
            }
            else
            {
                sqlBuilder.SetDBNow(BaseDepartmentEntity.FieldModifiedOn);
            }

            if (DbHelper.CurrentDbType == CurrentDbType.SqlServer && this.Identity)
            {
                sequence = sqlBuilder.EndInsert().ToString();
            }
            else
            {
                sqlBuilder.EndInsert();
            }
            return(sequence);
        }