Пример #1
0
        /// <summary>
        /// 获取对象
        /// </summary>
        /// <param name="id"></param>
        /// <param name="name"></param>
        /// <returns></returns>
        protected object Get(int id, string name)
        {
            //return (new OrgManager(this.DataHelper)).GetEntity(name, id);
            var es = IEntitySchemaHelper.Get(name);

            return(this.GenericHelper.FindById(es.EntityType, id));
        }
Пример #2
0
        internal void Delete(int id, string entityName)
        {
            IEntitySchema es     = IEntitySchemaHelper.Get(entityName);
            object        entity = es.CreateInstance();

            entity.SetPropertyValue(es.KeyName, id);
            this.GenericHelper.Delete(entity);
        }
Пример #3
0
        private DataTable GetData()
        {
            long entityId = this.Field.RefRelation.ParentEntityId.Value; //这里和元网站一致,不要用this.Field.RefEntityId

            var es = IEntitySchemaHelper.Get(entityId);

            var displayFieldName = es.DisplayName; //entity.GetDisplayFieldName();
            var keyFieldName     = es.KeyName;     // entity.GetKeyFieldName();

            string sql = string.Format("select {0} as ID, {1} as NAME  from {2} ", keyFieldName, displayFieldName, es.EntityName);

            DataTable data;

            using (BizDataContext db = new BizDataContext())
            {
                data = db.ExecuteDataTable(sql);
            }
            return(data);
        }
        /// <summary>
        /// 活动实体的内容
        /// </summary>
        /// <param name="process"></param>
        /// <param name="activityInstance"></param>
        /// <param name="data"></param>
        private void LoadActivityEntityData(BizDataContext context, SysProcess process, WfActivityInstance activityInstance, WfWorkflowInstanceData data)
        {
            //实体名
            string entityName = process.ActivityEntity.EntityName;

            var es = IEntitySchemaHelper.Get(entityName);

            //主键名
            string keyFieldName = es.KeyName;// process.ActivityEntity.GetKeyFieldName();

            //字段列表
            var fieldList = process.ActivityEntity.Fields.ToList();

            //签核流程
            bool isApprove = process.ProcessCategory == (int)ProcessCategory.Approve;

            if (isApprove)
            {
                SysApproveActivityData ad = context.FirstOrDefault <SysApproveActivityData>(p => p.ActivityInstanceId == activityInstance.ActivityInstanceId);
                if (ad != null)
                {
                    WfActivityEntityInstance entity = GetApproveEntityData(context, ad);
                    activityInstance.ActivityEntityInstance = entity;
                }
            }
            else
            {
                //标哥说普通流程活动实例ID和活动实体ID是一样的……
                int id = activityInstance.ActivityInstanceId;

                dynamic entityData = (new OrgManager(context)).GetEntity(entityName, id);

                if (entityData != null)
                {
                    Type entityType = entityData.GetType();

                    WfActivityEntityInstance entity = new WfActivityEntityInstance()
                    {
                        ActivityEntityInstanceId = id,
                    };

                    //属性的键值对
                    entity.ActivityEntityInstanceData = entityType.GetProperties()
                                                        .Where(i => i.Name != keyFieldName && !IgnoreList.Contains(i.Name))
                                                        .ToDictionary(i => i.Name, i =>
                    {
                        var pValue = new WfActivityFieldData();
                        try
                        {
                            pValue.Value = Convert.ToString(i.GetValue(entityData, null));
                        }
                        catch { }
                        return(pValue);
                    });


                    //加上DisplayText
                    foreach (var i in entity.ActivityEntityInstanceData)
                    {
                        var field = fieldList.FirstOrDefault(q => q.FieldName.Contains(i.Key));
                        if (field != null)
                        {
                            i.Value.DisplayText = field.DisplayText;
                        }
                        else
                        {
                            i.Value.DisplayText = i.Key;
                        }
                    }

                    activityInstance.ActivityEntityInstance = entity;
                }
            }
        }
Пример #5
0
        /// <summary>
        /// 新增表单实例,新增表单实体对象
        /// </summary>
        public int SaveFormInstance(BizDataContext db)
        {
            SysFormInstance fi = new SysFormInstance()
            {
                FormInstanceId = db.GetNextIdentity_Int(),
                FormId         = this.FormId,
                //--------------//
                FormDate        = Convert.ToDateTime(this.lblFormDate.Text.Trim()),
                FormCode        = this.lblFormCode.Text.Trim(),
                FormDescription = Server.HtmlDecode(this.lblFormDescription.Text.Trim()).Replace("<br />", "\r\n"),
                FormTitle       = this.lblFormTitle.Text.Trim(),
                State           = (int)FormInstanceState.New,
                //---------------//
                CreateTime   = DateTime.Now,
                CreateUserId = this.BasePage.LoginUserID,
                OwnerId      = this.BasePage.LoginUserID,
            };

            #region 收集实体字段的值,创建实体对象
            List <SysFormField>         ffList    = db.Where <SysFormField>(p => p.FormId == this.FormId);
            Dictionary <string, object> valueDict = new Dictionary <string, object>();
            foreach (var ff in ffList)
            {
                string          controlId = string.Format("ff_{0}", ff.FormFieldId);
                IDrisionControl control   = this.BasePage.GetControlById <IDrisionControl>(controlId);
                if (control == null)
                {
                    throw new Exception("表单控件解析出错");
                }
                valueDict[control.FieldName] = control.GetValue();
            }
            SysEntity entity = this.BasePage.EntityCache.FindById <SysEntity>(this.EntityId);
            if (entity != null) //元数据预置实体,利用EntitySchema创建对象插入
            {
                var es = IEntitySchemaHelper.Get(this.EntityId);
                if (es == null)
                {
                    throw new Exception("元数据实体EntitySchema找不到");
                }

                object obj      = es.CreateInstance();
                int    objectId = db.GetNextIdentity_Int();
                obj.SetPropertyConvertValue(es.KeyName, objectId); //主键
                foreach (var p in valueDict)
                {
                    obj.SetPropertyConvertValue(p.Key, p.Value);
                }

                //一些默认字段
                if (es.RequiredLevel() != RequireLevelEnum.PlatForm)
                {
                    if (obj.GetPropertyValue(ConstFieldNames.CreateTime) == null)
                    {
                        obj.SetPropertyConvertValue(ConstFieldNames.CreateTime, DateTime.Now);
                    }
                    if (obj.GetPropertyValue(ConstFieldNames.CreateUserId) == null)
                    {
                        obj.SetPropertyConvertValue(ConstFieldNames.CreateUserId, this.BasePage.LoginUserID);
                    }
                    if (obj.GetPropertyValue(ConstFieldNames.OwnerId) == null)
                    {
                        obj.SetPropertyConvertValue(ConstFieldNames.OwnerId, this.BasePage.LoginUserID);
                    }
                    if (obj.GetPropertyValue(ConstFieldNames.State) == null)
                    {
                        obj.SetPropertyConvertValue(ConstFieldNames.State, 0);
                    }
                    if (obj.GetPropertyValue(ConstFieldNames.StateDetail) == null)
                    {
                        obj.SetPropertyConvertValue(ConstFieldNames.StateDetail, 0);
                    }
                }

                db.Insert(obj);

                fi.ObjectId = objectId;
            }
            else //自定义实体
            {
                entity      = this.DataHelper.FindById <SysEntity>(this.EntityId);
                fi.ObjectId = db.DynamicInsert(entity, valueDict);
            }
            #endregion

            db.Insert(fi);
            return(fi.FormInstanceId);
        }
Пример #6
0
        /// <summary>
        /// 保存表单实体,和表单实体对象
        /// </summary>
        /// <param name="db"></param>
        public int UpdateFormInstance(BizDataContext db)
        {
            SysFormInstance fi = db.FindById <SysFormInstance>(this.FormInstanceId);

            if (fi == null)
            {
                throw new Exception("表单实例不存在");
            }

            if (fi.State != (int)FormInstanceState.Approving)
            {
                fi.State = (int)FormInstanceState.New; //2013-10-8 zhumin 重新保存后状态改为新增,审核中除外
            }
            fi.UpdateUserId = this.BasePage.LoginUserID;
            fi.UpdateTime   = DateTime.Now;

            //收集实体字段的值,创建实体对象
            List <SysFormField>         ffList    = db.Where <SysFormField>(p => p.FormId == this.FormId);
            Dictionary <string, object> valueDict = new Dictionary <string, object>();

            foreach (var ff in ffList)
            {
                string          controlId = string.Format("ff_{0}", ff.FormFieldId);
                IDrisionControl control   = this.BasePage.GetControlById <IDrisionControl>(controlId);
                if (control == null)
                {
                    throw new Exception("表单控件解析出错");
                }
                valueDict[control.FieldName] = control.GetValue();
            }
            SysEntity entity = this.BasePage.EntityCache.FindById <SysEntity>(this.EntityId);

            if (entity != null) //元数据预置实体,利用EntitySchema创建对象插入
            {
                var es = IEntitySchemaHelper.Get(this.EntityId);
                if (es == null)
                {
                    throw new Exception("元数据实体EntitySchema找不到");
                }

                object        obj  = db.FindById(es.EntityType, this.ObjectId);
                List <string> cols = new List <string>();
                foreach (var p in valueDict)
                {
                    if (obj.GetPropertyValue(p.Key) != p.Value)
                    {
                        obj.SetPropertyConvertValue(p.Key, p.Value);
                        cols.Add(p.Key);
                    }
                }

                db.UpdatePartial(obj, cols);
            }
            else //自定义实体
            {
                entity = this.DataHelper.FindById <SysEntity>(this.EntityId);
                db.DynamicUpdate(entity, this.ObjectId, valueDict);
            }

            db.UpdatePartial(fi, p => new { p.State, p.UpdateTime, p.UpdateUserId });
            return(fi.FormInstanceId);
        }
Пример #7
0
        /// <summary>
        /// 加载表单实体对象
        /// </summary>
        private void LoadObjectData(Dictionary <long, IDrisionControl> controlDict)
        {
            List <SysFormField> ffList = this.DataHelper.Where <SysFormField>(p => p.FormId == this.FormId);
            SysEntity           entity = this.BasePage.EntityCache.FindById <SysEntity>(this.EntityId);

            if (entity != null) //元数据预置实体,利用EntitySchema查询,给控件赋值
            {
                #region 元数据预置实体

                var es = IEntitySchemaHelper.Get(this.EntityId);
                if (es == null)
                {
                    throw new Exception("元数据实体EntitySchema找不到");
                }

                object obj = this.DataHelper.FindById(es.EntityType, this.ObjectId);
                foreach (var ff in ffList)
                {
                    ff.Field = BasePage.GetField(ff.FieldId);
                    if (controlDict.ContainsKey(ff.FormFieldId))
                    {
                        IDrisionControl control = controlDict[ff.FormFieldId];
                        object          value   = obj.GetPropertyValue(control.FieldName);
                        if (this.IsDetailPage)
                        {
                            FormPreviewHelper.SetValueForDetailPage(ff, control, value);
                        }
                        else
                        {
                            FormPreviewHelper.SetValue(ff, control, value);
                        }
                    }
                    else
                    {
                        throw new Exception("表单字段找不到对应控件");
                    }
                }

                #endregion
            }
            else
            {
                #region 自定义实体

                entity = this.DataHelper.FindById <SysEntity>(this.EntityId);
                Dictionary <string, object> valueDict = this.DataHelper.DynamicFindById(entity, this.ObjectId);
                foreach (var ff in ffList)
                {
                    ff.Field = BasePage.GetField(ff.FieldId);
                    if (controlDict.ContainsKey(ff.FormFieldId))
                    {
                        IDrisionControl control = controlDict[ff.FormFieldId];
                        if (!valueDict.ContainsKey(control.FieldName.ToLower()))
                        {
                            throw new Exception(string.Format("字段{0}找不到", control.FieldName));
                        }
                        object value = valueDict[control.FieldName.ToLower()];
                        if (this.IsDetailPage)
                        {
                            FormPreviewHelper.SetValueForDetailPage(ff, control, value);
                        }
                        else
                        {
                            FormPreviewHelper.SetValue(ff, control, value);
                        }
                    }
                    else
                    {
                        throw new Exception("表单字段找不到对应控件");
                    }
                }

                #endregion
            }
        }
Пример #8
0
        protected IEntitySchema GetEs(string name)
        {
            IEntitySchema es = IEntitySchemaHelper.Get(name);

            return(es);
        }