示例#1
0
 public int AddRole(T_Role role)
 {
     using (BizDataContext context = new BizDataContext(true))
     {
         role.Role_ID = context.GetNextIdentity_Int(false);
         context.Insert(role);
     }
     return(role.Role_ID);
 }
示例#2
0
 public Task CreateAsync(SysUser user)
 {
     using (BizDataContext context = new BizDataContext(true))
     {
         user.User_ID = context.GetNextIdentity_Int(false);
         context.Insert(user);
     }
     return(Task.FromResult <int>(0));
 }
示例#3
0
 internal virtual int StartProcessAsync(int startUserId, int relativeObjectId, List <IApproveUser> nextApproveUserList)
 {
     using (BizDataContext context = new BizDataContext(true))
     {
         SysProcessInstance instance = new SysProcessInstance {
             StartTime         = new DateTime?(DateTime.Now),
             InstanceStatus    = 0,
             ObjectId          = relativeObjectId,
             ProcessId         = new long?(this._process.ProcessId),
             ProcessInstanceId = context.GetNextIdentity_Int(false),
             StartUserId       = new int?(startUserId)
         };
         this._pi = instance;
         SysWorkflowMessage message = new SysWorkflowMessage {
             ProcessId         = this._process.ProcessId,
             ProcessInstanceId = this._pi.ProcessInstanceId,
             CreateTime        = DateTime.Now,
             MessageId         = context.GetNextIdentity_Int(false),
             MessageType       = WorkflowMessageTypeEnum.StartingProcess,
             OperationUserId   = startUserId,
             State             = SysWorkflowMessageStateEnum.Inited
         };
         foreach (IApproveUser user in nextApproveUserList)
         {
             MessageApproveUser user2 = new MessageApproveUser(user)
             {
                 //WorkflowMessageId = message.MessageId,
                 WorkflowMessageId = context.GetNextIdentity_Int(false)
             };
             context.Insert(user2);
         }
         context.Insert(message);
         context.Insert(this._pi);
     }
     return(this._pi.ProcessInstanceId);
 }
示例#4
0
 public virtual string OnWorkItemCreating(T_WorkItemBase wiBase, SysWorkItem wi)
 {
     if (WebConfigAppSettings.UseSSOModel)
     {
         using (BizDataContext context = new BizDataContext(WebConfigAppSettings.HomeBizDBConnString, true))
         {
             wiBase.WorkItemBase_Id = context.GetNextIdentity_Int(false);
             context.Insert(wiBase);
             DbParameter parameter = context.CreateParameter();
             parameter.ParameterName = context.AddPrefixToParameterName("OwnerBiz");
             parameter.Value         = WebConfigAppSettings.ApplicationName;
             string sql = string.Format("update T_WorkItemBase set OwnerBiz = {0}", parameter.ParameterName);
             context.ExecuteNonQuery(sql, new DbParameter[] { parameter });
             return(wiBase.WorkItemBase_Id.ToString());
         }
     }
     return(null);
 }
示例#5
0
        public async static Task SaveLivingIndexData(string html, XmlNode xmlRoot, BizDataContext db)
        {
            var rootNode = CommonHelper.GetRootNode(html);

            //获取对实体解析的配置节点
            var infoConfig = xmlRoot.SelectSingleNode("LivingIndexConfig");

            var date = DateTime.Now;


            var entity = new T_HTZ_LivingIndex();


            //解析应该包含多个子节点,每个子节点表示一个属性,这里进行循环赋值
            foreach (XmlNode property in infoConfig.ChildNodes)
            {
                entity = CommonHelper.GetProperty(entity, rootNode, property);
            }

            //查询天气数据
            var dbentity = (from a in db.Set<T_HTZ_LivingIndex>()

                            where a.CreateTime == DateTime.Now.Date

                            select a).FirstOrDefault();

            if (dbentity != null)
            {
                entity.HTZ_LivingIndex_Id = dbentity.HTZ_LivingIndex_Id;
                entity.CreateTime = dbentity.CreateTime;
                entity.UpdateTime = DateTime.Now;

                await db.UpdateAsync(entity);
            }
            else
            {
                entity.HTZ_LivingIndex_Id = db.GetNextIdentity_Int();
                entity.CreateTime = DateTime.Now.Date;

                await db.InsertAsync(entity);
            }

        }
示例#6
0
 public void InsertRoleFunction(int roleId, List <int> functionIdList)
 {
     using (BizDataContext context = new BizDataContext(true))
     {
         if (this.DeleteRoleFunction(roleId))
         {
             T_Role_Function        item    = null;
             List <T_Role_Function> objList = new List <T_Role_Function>();
             foreach (int num in functionIdList)
             {
                 item = new T_Role_Function {
                     Role_Function_ID = new long?((long)context.GetNextIdentity_Int(false)),
                     Role_ID          = new long?((long)roleId),
                     Function_ID      = new long?((long)num)
                 };
                 objList.Add(item);
             }
             context.BatchInsert <T_Role_Function>(objList);
         }
     }
 }
示例#7
0
 /// <summary>
 /// 保存
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 protected void btnSave_Click(object sender, EventArgs e)
 {
     try
     {
         using (BizDataContext context = new BizDataContext())
         {
             SysProcessProxy ProcessProxyData;
             if (Id == null)
             {
                 ProcessProxyData = new SysProcessProxy()
                 {
                     ProcessProxyId = context.GetNextIdentity_Int(),
                     ProcessId      = ProcessId,
                     OwnerId        = Convert.ToInt32(this.scOwner.GetValue()),
                     ProxyId        = Convert.ToInt32(this.scProxy.GetValue()),
                     StartTime      = Convert.ToDateTime(this.dtcStartTime.GetValue()),
                     EndTime        = Convert.ToDateTime(this.dtcEndTime.GetValue()),
                     CreateTime     = DateTime.Now,
                     Status         = (int)ProxyStatus.Enable,
                 };
                 context.Insert(ProcessProxyData);
             }
             else
             {
                 ProcessProxyData           = context.FindById <SysProcessProxy>(Id);
                 ProcessProxyData.OwnerId   = Convert.ToInt32(this.scOwner.GetValue());
                 ProcessProxyData.ProxyId   = Convert.ToInt32(this.scProxy.GetValue());
                 ProcessProxyData.StartTime = Convert.ToDateTime(this.dtcStartTime.GetValue());
                 ProcessProxyData.EndTime   = Convert.ToDateTime(this.dtcEndTime.GetValue());
                 context.Update(ProcessProxyData);
             }
         }
         Response.Redirect(ViewState["UrlReferrer"].ToString());
     }
     catch (ApplicationException ex)
     {
         this.AjaxAlert(ex.Message);
     }
 }
示例#8
0
        public async void ActiveUsersByMonth()
        {
            try
            {
                using (var db = new BizDataContext())
                {
                    var query = await db.Set <T_GW_LoginLog>().Where(p => p.State == v_common.YesState).Select(p => new
                    {
                        createtime   = p.CreateTime,
                        cretetimestr = p.CreateTime.Value.ToString(),
                        year_int     = p.CreateTime.Value.Year,
                        month_int    = p.CreateTime.Value.Month,
                        ownerid      = p.OwnerId,
                        monthval     = p.CreateTime.Value.Month.ToString()
                    }).ToListAsync();


                    #region 用户表用户统计
                    string sql2 = @"select a.area_id, a.area_name, u.createtime ,u.loginname 
from T_user u
left join t_area a on u.opaccountcode = a.area_id
where u.state <> 9999";

                    DataTable dt2 = db.ExecuteDataTable(sql2);

                    var queryuser = dt2.Rows.OfType <DataRow>()
                                    .Select(p => new
                    {
                        areaid     = p["area_id"].ToString(),
                        areaname   = p["area_name"].ToString(),
                        createtime = p["createtime"].ToString(),
                        loginname  = p["loginname"].ToString(),
                    });

                    var modeluser = queryuser.ToList();
                    //用户表
                    var queryuser2 = modeluser.GroupBy(x => new { x.areaid, x.areaname }).
                                     Select(x => new v_areauser {
                        areaid = x.Key.areaid, areaname = x.Key.areaname, mulist = x.Select(p => new v_mu {
                            createtime = Convert.ToDateTime(p.createtime)
                        }).ToList()
                    });

                    var modeluser2 = queryuser2.ToList();
                    #endregion

                    var model  = query.ToList();
                    var query2 = model.GroupBy(x => new { x.area_id, x.area_name }).Select(x => new v_activeusers
                    {
                        areaid   = x.Key.area_id,
                        areaname = x.Key.area_name,
                        users    = x.GroupBy(p => new { p.month_int, p.createtimestr }).Select(p => new v_monthusers {
                            month = p.Key.month_int, createtimestr = p.Key.createtimestr, countusers = p.Count()
                        }).ToList()
                    }
                                                                                           );


                    var model2 = query2.ToList();
                    List <v_activeusers> aulist = new List <v_activeusers>();
                    List <v_monthusers>  mulist = null;;
                    v_activeusers        au     = null;
                    v_monthusers         mu     = null;

                    foreach (var x in model2)
                    {
                        au          = new v_activeusers();
                        au.areaid   = x.areaid;
                        au.areaname = x.areaname;
                        mulist      = new List <v_monthusers>();

                        for (int i = 2; i <= 4; i++)
                        {
                            mu               = new v_monthusers();
                            mu.month         = i;
                            mu.createtimestr = new DateTime(2017, i, 1).ToString("yyyy-MM");
                            int mcount      = 0;
                            int mtotalcount = x.users.Count();
                            foreach (var item in x.users)
                            {
                                mcount++;
                                if (item.month == i)
                                {
                                    mu.countusers = item.countusers;
                                    break;
                                }
                                else if (mcount == mtotalcount)
                                {
                                    mu.countusers = 0;
                                }
                            }
                            mulist.Add(mu);
                        }
                        au.users = mulist;
                        aulist.Add(au);
                    }
                    ///获取用户总数


                    List <T_GW_UserStatistics> entitylist = new List <T_GW_UserStatistics>();
                    T_GW_UserStatistics        entity     = null;
                    foreach (var item in aulist)
                    {
                        if (item.areaname == "")
                        {
                            var M = modeluser2.Where(x => x.areaname == item.areaname).FirstOrDefault().mulist;
                            foreach (var x in item.users)
                            {
                                entity = new T_GW_UserStatistics();
                                entity.GW_UserStatistics_Id = db.GetNextIdentity_Int();
                                entity.AreaId          = 0;
                                entity.AreaName        = "未填写";
                                entity.YearMonth       = x.createtimestr;
                                entity.MonthVal        = x.month;
                                entity.ActiveUserCount = x.countusers;
                                DateTime nextmonth = Convert.ToDateTime(x.createtimestr).AddMonths(1);
                                entity.UserCount  = M.Where(p => p.createtime < nextmonth).Count();
                                entity.CreateTime = DateTime.Now;
                                entitylist.Add(entity);
                            }
                        }
                        else
                        {
                            var M = modeluser2.Where(x => x.areaname == item.areaname).FirstOrDefault().mulist;
                            foreach (var x in item.users)
                            {
                                entity = new T_GW_UserStatistics();
                                entity.GW_UserStatistics_Id = db.GetNextIdentity_Int();
                                entity.AreaId          = item.areaid.ToInt();
                                entity.AreaName        = item.areaname;
                                entity.YearMonth       = x.createtimestr;
                                entity.MonthVal        = x.month;
                                entity.ActiveUserCount = x.countusers;
                                DateTime nextmonth = Convert.ToDateTime(x.createtimestr).AddMonths(1);
                                entity.UserCount  = M.Where(p => p.createtime < nextmonth).Count();
                                entity.CreateTime = DateTime.Now;
                                entitylist.Add(entity);
                            }
                        }
                    }
                    db.BatchInsert(entitylist);
                }
            }
            catch (Exception ex)
            {
                ErrorLog(ex, "FirstStatistics", rootdir);
            }
        }
示例#9
0
        public void DoStatisticsMobile()
        {
            try
            {
                using (var db = new BizDataContext())
                {
                    string sql = @"select t2.equipmenttype,t2.osversion from 
    (
      select row_number() over(partition by t0.ownerid order by  t0.createtime desc) rownumb, t0.equipmenttype, t0.osversion from t_Gw_Loginlog t0 
      inner join T_user t1 on (t1.state <> 9999 and t0.ownerid = t1.user_id)
        
      order by t0.ownerid, t0.createtime desc 
    ) t2 where t2.rownumb = 1";

                    DataTable dt = db.ExecuteDataTable(sql);

                    var query = dt.Rows.OfType <DataRow>()
                                .Select(p => new
                    {
                        equipmenttype = p["equipmenttype"].ToString(),
                        osversion     = p["osversion"].ToString(),
                    });

                    var model = query.GroupBy(x => x.equipmenttype).Select(x => new
                    {
                        ostype = x.Key,
                        count  = x.Count(),
                        vals   = x
                    });
                    //获取所有数据
                    var modelList = db.Set <T_GW_MobileStatistics>().ToList();


                    List <T_GW_MobileStatistics> addlist    = new List <T_GW_MobileStatistics>();
                    List <T_GW_MobileStatistics> updatelist = new List <T_GW_MobileStatistics>();
                    foreach (var x in model)
                    {
                        T_GW_MobileStatistics entity = new T_GW_MobileStatistics();
                        string ostype = x.ostype;
                        if (string.IsNullOrEmpty(x.ostype))
                        {
                            ostype = null;
                        }

                        entity.OSType         = ostype;
                        entity.TotalCount     = x.count;
                        entity.StatisticsType = "os";


                        if (modelList.Where(p => p.StatisticsType == "os" && p.OSType == ostype).FirstOrDefault() != null)
                        {
                            updatelist.Add(entity);
                        }
                        else
                        {
                            entity.GW_MobileStatistics_Id = db.GetNextIdentity_Int();
                            entity.CreateTime             = DateTime.Now;
                            entity.State = 1;
                            addlist.Add(entity);
                        }


                        //string ostype = x.ostype;
                        foreach (var item in x.vals.GroupBy(p => p.osversion).Select(p => new { osvertion = p.Key, count = p.Count() }))
                        {
                            T_GW_MobileStatistics entity2 = new T_GW_MobileStatistics();
                            string osversion = item.osvertion;
                            if (string.IsNullOrEmpty(item.osvertion))
                            {
                                osversion = null;
                            }
                            entity2.OSType         = ostype;
                            entity2.OSVersion      = osversion;
                            entity2.TotalCount     = item.count;
                            entity2.StatisticsType = "ver";


                            if (modelList.Where(p => p.StatisticsType == "ver" && p.OSType == ostype && p.OSVersion == osversion).FirstOrDefault() != null)
                            {
                                updatelist.Add(entity2);
                            }
                            else
                            {
                                entity2.GW_MobileStatistics_Id = db.GetNextIdentity_Int();
                                entity2.CreateTime             = DateTime.Now;
                                entity2.State = 1;
                                addlist.Add(entity2);
                            }
                        }
                    }


                    foreach (var x in updatelist)
                    {
                        if (x.StatisticsType == "os")
                        {
                            var entity = db.Set <T_GW_MobileStatistics>().Where(p => p.StatisticsType == x.StatisticsType && p.OSType == x.OSType).FirstOrDefault();
                            if (entity != null)
                            {
                                entity.TotalCount = x.TotalCount;
                                entity.UpdateTime = DateTime.Now;
                                db.UpdatePartial(entity, xx => new { xx.TotalCount, xx.UpdateTime });
                            }
                        }
                        else if (x.StatisticsType == "ver")
                        {
                            var entity = db.Set <T_GW_MobileStatistics>().Where(p => p.StatisticsType == x.StatisticsType && p.OSType == x.OSType && p.OSVersion == x.OSVersion).FirstOrDefault();
                            if (entity != null)
                            {
                                entity.TotalCount = x.TotalCount;
                                entity.UpdateTime = DateTime.Now;
                                db.UpdatePartial(entity, xx => new { xx.TotalCount, xx.UpdateTime });
                            }
                        }
                    }

                    db.BatchInsert(addlist);
                }
            }
            catch (Exception ex)
            {
                ErrorLog(ex, "手机app版本号统计", rootdir);
            }
        }
示例#10
0
        public void ActiveUsersByMonth_Update()
        {
            try
            {
                using (var db = new BizDataContext())
                {
                    string currenttime = DateTime.Now.ToString("yyyy-MM");

                    string sql = string.Format(@"select t6.year_int,t6.month_int,t6.createtimestr,t6.opaccountcode,t6.ownerid,t6.createtime,t7.area_name from 
  (
    select * from 
      (
        select to_number(to_char(t4.createtime, 'yyyy')) year_int,to_number(to_char(t4.createtime, 'mm')) month_int,to_char(t4.createtime, 'yyyy-mm')createtimestr,  t4.* from
          (
            select t3.opaccountcode,t2.ownerid, t2.createtime from t_user t3 
             inner join 
             (select t1.* from 
            (select row_number() over(partition by t0.ownerid, to_char(t0.createtime, 'yyyy-mm') order by  t0.createtime desc) rownumb, t0.ownerid, t0.phone, t0.createtime from t_Gw_Loginlog t0 
            order by t0.phone, t0.createtime desc) t1 where t1.rownumb = 1
            ) t2 on (t3.state <> 9999 and t2.ownerid = t3.user_id)
          ) t4
       ) t5 where t5.createtimestr = '{0}' 
   ) t6 
   left join T_area t7 on t6.opaccountcode = t7.area_id 
   order by t6.month_int", currenttime);



                    DataTable dt    = db.ExecuteDataTable(sql);
                    var       query = dt.Rows.OfType <DataRow>()
                                      .Select(p => new
                    {
                        createtime    = Convert.ToDateTime(p["createtime"]),
                        createtimestr = p["createtimestr"].ToString(),
                        year_int      = Convert.ToInt32(p["year_int"]),
                        month_int     = Convert.ToInt32(p["month_int"]),
                        ownerid       = p["ownerid"].ToString(),
                        area_id       = p["opaccountcode"].ToString(),
                        area_name     = p["area_name"].ToString(),
                        monthval      = p["month_int"].ToString(),
                    });


                    #region 用户表用户统计
                    string sql2 = @"select a.area_id, a.area_name, u.createtime ,u.loginname 
from T_user u
left join t_area a on u.opaccountcode = a.area_id
where u.state <> 9999";

                    DataTable dt2 = db.ExecuteDataTable(sql2);

                    var queryuser = dt2.Rows.OfType <DataRow>()
                                    .Select(p => new
                    {
                        areaid     = p["area_id"].ToString(),
                        areaname   = p["area_name"].ToString(),
                        createtime = p["createtime"].ToString(),
                        loginname  = p["loginname"].ToString(),
                    });

                    var modeluser  = queryuser.ToList();
                    var queryuser2 = modeluser.GroupBy(x => new { x.areaid, x.areaname }).
                                     Select(x => new v_areauser {
                        areaid = x.Key.areaid, areaname = x.Key.areaname, mulist = x.Select(p => new v_mu {
                            createtime = Convert.ToDateTime(p.createtime)
                        }).ToList()
                    });

                    var modeluser2 = queryuser2.ToList();
                    #endregion

                    var model  = query.ToList();
                    var query2 = model.GroupBy(x => new { x.area_id, x.area_name }).Select(x => new v_activeusers
                    {
                        areaid   = x.Key.area_id,
                        areaname = x.Key.area_name,
                        users    = x.GroupBy(p => new { p.month_int, p.createtimestr }).Select(p => new v_monthusers {
                            month = p.Key.month_int, createtimestr = p.Key.createtimestr, countusers = p.Count()
                        }).ToList()
                    }
                                                                                           );


                    var model2 = query2.ToList();
                    List <v_activeusers> aulist = new List <v_activeusers>();
                    List <v_monthusers>  mulist = null;;
                    v_activeusers        au     = null;
                    v_monthusers         mu     = null;

                    foreach (var x in model2)
                    {
                        au          = new v_activeusers();
                        au.areaid   = x.areaid;
                        au.areaname = x.areaname;
                        mulist      = new List <v_monthusers>();
                        foreach (var item in x.users)
                        {
                            mu               = new v_monthusers();
                            mu.month         = item.month;
                            mu.createtimestr = item.createtimestr;
                            mu.countusers    = item.countusers;
                            mulist.Add(mu);
                        }
                        au.users = mulist;
                        aulist.Add(au);
                    }
                    ///获取用户总数


                    List <T_GW_UserStatistics> addlist        = new List <T_GW_UserStatistics>();
                    List <T_GW_UserStatistics> updatelist     = new List <T_GW_UserStatistics>();
                    T_GW_UserStatistics        userstatistics = null;
                    foreach (var item in aulist)
                    {
                        if (item.areaname == "")
                        {
                            var M = modeluser2.Where(x => x.areaname == item.areaname).FirstOrDefault().mulist;
                            foreach (var x in item.users)
                            {
                                userstatistics = new T_GW_UserStatistics();

                                userstatistics.AreaId          = 0;
                                userstatistics.AreaName        = "未填写";
                                userstatistics.YearMonth       = x.createtimestr;
                                userstatistics.MonthVal        = x.month;
                                userstatistics.ActiveUserCount = x.countusers;
                                userstatistics.UserCount       = M.Count();
                                var entity = db.Set <T_GW_UserStatistics>().Where(p => p.AreaId == 0 && p.AreaName == "未填写" && p.YearMonth == x.createtimestr).FirstOrDefault();
                                if (entity != null)
                                {
                                    entity.ActiveUserCount = userstatistics.ActiveUserCount;
                                    entity.UserCount       = userstatistics.UserCount;
                                    entity.UpdateTime      = DateTime.Now;
                                    db.UpdatePartial(entity, xx => new { xx.ActiveUserCount, xx.UserCount, xx.UpdateTime });
                                }
                                else
                                {
                                    userstatistics.GW_UserStatistics_Id = db.GetNextIdentity_Int();
                                    userstatistics.CreateTime           = DateTime.Now;
                                    addlist.Add(userstatistics);
                                }
                            }
                        }
                        else
                        {
                            var M = modeluser2.Where(x => x.areaname == item.areaname).FirstOrDefault().mulist;
                            foreach (var x in item.users)
                            {
                                userstatistics                 = new T_GW_UserStatistics();
                                userstatistics.AreaId          = item.areaid.ToInt();
                                userstatistics.AreaName        = item.areaname;
                                userstatistics.YearMonth       = x.createtimestr;
                                userstatistics.MonthVal        = x.month;
                                userstatistics.ActiveUserCount = x.countusers;
                                userstatistics.UserCount       = M.Count();

                                var entity = db.Set <T_GW_UserStatistics>().Where(p => p.AreaId == item.areaid.ToInt() && p.AreaName == item.areaname && p.YearMonth == x.createtimestr).FirstOrDefault();
                                if (entity != null)
                                {
                                    entity.ActiveUserCount = userstatistics.ActiveUserCount;
                                    entity.UserCount       = userstatistics.UserCount;
                                    entity.UpdateTime      = DateTime.Now;
                                    db.UpdatePartial(entity, xx => new { xx.ActiveUserCount, xx.UserCount, xx.UpdateTime });
                                }
                                else
                                {
                                    userstatistics.GW_UserStatistics_Id = db.GetNextIdentity_Int();
                                    userstatistics.CreateTime           = DateTime.Now;
                                    addlist.Add(userstatistics);
                                }
                            }
                        }
                    }

                    db.BatchInsert(addlist);
                }
            }
            catch (Exception ex)
            {
                ErrorLog(ex, "每天统计用户活跃度", rootdir);
            }
        }
示例#11
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);
        }