/// <summary>
        /// 将扩展值集合组合为字符串
        /// </summary>
        /// <param name="extpropertycollection"></param>
        /// <returns></returns>
        protected string CombineExtProperty(NameValueCollection extpropertycollection, string modelname)
        {
            string                 str       = "";
            UD_ModelFieldsDAL      dal       = new UD_ModelFieldsDAL();
            IList <UD_ModelFields> extfields = dal.GetExtFieldsList(modelname);

            if (extpropertycollection != null)
            {
                foreach (UD_ModelFields modelfield in extfields)
                {
                    str += extpropertycollection[modelfield.FieldName] + "|";
                }
            }

            return(str);
        }
        /// <summary>
        /// 分解扩展属性值至集合
        /// </summary>
        /// <param name="tablename"></param>
        /// <param name="extfieldvalue"></param>
        /// <returns></returns>
        protected NameValueCollection SpiltExtProperty(string modelname, string extvalue)
        {
            NameValueCollection ExtPropertyCollection = new NameValueCollection();

            UD_ModelFieldsDAL      dal       = new UD_ModelFieldsDAL();
            IList <UD_ModelFields> extfields = dal.GetExtFieldsList(modelname);

            string[] vaules = extvalue.Split('|');

            for (int i = 0; i < extfields.Count; i++)
            {
                if (i < vaules.Length)
                {
                    ExtPropertyCollection.Add(extfields[i].FieldName, vaules[i]);
                }
                else
                {
                    ExtPropertyCollection.Add(extfields[i].FieldName, "");
                }
            }

            return(ExtPropertyCollection);
        }
Example #3
0
        /// <summary>
        /// 保存变更记录
        /// </summary>
        /// <param name="cur_M"></param>
        /// <returns></returns>
        public int SaveUpdateHistory(IModel cur_M)
        {
            try
            {
                IModel old_M     = (IModel)GetModel(int.Parse(cur_M["ID"]));
                string tablename = _ProcePrefix.Substring(0, _ProcePrefix.IndexOf("dbo.") + 4) + cur_M.ModelName;
                IList <UD_TableList> tablelist = new UD_TableListDAL().GetModelList("Name='" + tablename + "'");
                if (tablelist.Count == 0)
                {
                    return(0);
                }
                IList <UD_ModelFields> fieldlist = new UD_ModelFieldsDAL().GetModelList("Tableid='" + tablelist[0].ID + "'");
                Info_ChangeHistoryDAL  _dal      = new Info_ChangeHistoryDAL();
                Info_ChangeHistory     _changemodel;
                foreach (UD_ModelFields field in fieldlist)
                {
                    if (field.FieldName == "UpdateTime" || field.FieldName == "InsertTime")
                    {
                        continue;
                    }
                    _changemodel = new Info_ChangeHistory();
                    if (!cur_M[field.FieldName].Equals(old_M[field.FieldName]))
                    {
                        _changemodel.InfoID     = int.Parse(cur_M["ID"]);
                        _changemodel.TableID    = tablelist[0].ID;
                        _changemodel.FieldID    = field.ID;
                        _changemodel.OldValue   = old_M[field.FieldName];
                        _changemodel.NewValue   = cur_M[field.FieldName];
                        _changemodel.ChangeTime = DateTime.Now;

                        switch (field.RelationType)
                        {
                        case 1:         //关联字典表

                            IList <Dictionary_Data> dic = new Dictionary_DAL().GetModelList("Type=(SELECT ID FROM MCS_SYS.dbo.Dictionary_Type  WHERE TableName='" + field.RelationTableName + "')AND Code='" + old_M[field.FieldName] + "'");
                            if (dic.Count > 0)
                            {
                                _changemodel.OldValue = dic[0].Name;
                            }
                            dic = new Dictionary_DAL().GetModelList("Type=(SELECT ID FROM MCS_SYS.dbo.Dictionary_Type  WHERE TableName='" + field.RelationTableName + "')AND Code='" + cur_M[field.FieldName] + "'");
                            if (dic.Count > 0)
                            {
                                _changemodel.NewValue = dic[0].Name;
                            }
                            break;

                        case 2:         //关联实体表
                            _changemodel.OldValue = TreeTableDAL.GetRelationTableDataValue(field.RelationTableName, field.RelationValueField, field.RelationTextField, old_M[field.FieldName]);
                            _changemodel.NewValue = TreeTableDAL.GetRelationTableDataValue(field.RelationTableName, field.RelationValueField, field.RelationTextField, cur_M[field.FieldName]);
                            break;
                        }

                        if (!string.IsNullOrEmpty(cur_M["UpdateStaff"]))
                        {
                            _changemodel.ChangeStaff = int.Parse(cur_M["UpdateStaff"]);
                        }

                        #region 设置参数集
                        SqlParameter[] prams =
                        {
                            SQLDatabase.MakeInParam("@TableID",      SqlDbType.UniqueIdentifier,   16, _changemodel.TableID),
                            SQLDatabase.MakeInParam("@FieldID",      SqlDbType.UniqueIdentifier,   16, _changemodel.FieldID),
                            SQLDatabase.MakeInParam("@InfoID",       SqlDbType.Int,                 4, _changemodel.InfoID),
                            SQLDatabase.MakeInParam("@OldValue",     SqlDbType.VarChar,           500, _changemodel.OldValue),
                            SQLDatabase.MakeInParam("@NewValue",     SqlDbType.VarChar,           500, _changemodel.NewValue),
                            SQLDatabase.MakeInParam("@InfoType",     SqlDbType.Int,                 4, _changemodel.InfoType),
                            SQLDatabase.MakeInParam("@ChangeStaff",  SqlDbType.Int,                 4, _changemodel.ChangeStaff),
                            SQLDatabase.MakeInParam("@ChangeTime",   SqlDbType.DateTime,            8, _changemodel.ChangeTime),
                            SQLDatabase.MakeInParam("@Remark",       SqlDbType.VarChar,          2000, _changemodel.Remark),
                            SQLDatabase.MakeInParam("@ExtPropertys", SqlDbType.VarChar,          4000, CombineExtProperty(_changemodel.ExtPropertys, _changemodel.ModelName))
                        };
                        #endregion

                        SQLDatabase.RunProc("MCS_SYS.dbo.sp_Info_ChangeHistory_Add", prams);
                    }
                }
            }
            catch (Exception)
            {
                ;
            }
            return(1);
        }