コード例 #1
0
 public IList<T_ENTITY> CreateEntityForNode(decimal stepId, decimal workId, decimal nodeId, decimal deptId,
     decimal userId)
 {
     using (var ctx = new OAContext())
     {
         /* ModelCtrl有获取步骤模型集合的方法,但此处为了性能,直接复制代码于此 */
         // 获取Node关联的Step可用Model,根据Step_Model关系
         var models =
             from m in ctx.T_MODEL.Where(p => p.RS == 1)
             join sm in ctx.T_STEP_MODEL.Where(p => p.RS == 1) on m.MODEL_ID equals sm.MODEL_ID
             where sm.STEP_ID == stepId
             select m;
         // 循环可用Model,根据Model生成Entity
         return models.ToList() //用ToList预加载
             .Select(m => new T_ENTITY
             {
                 WORK_ID = workId,
                 NODE_ID = nodeId,
                 MODEL_ID = m.MODEL_ID,
                 FORM_ID = m.FORM_ID,
                 ENTITY_ID = this.BuildID(), //生成newId
                 ENTITY_NAME = m.MODEL_NAME, //EntityName默认为ModelName
                 DEPT_ID = deptId,
                 USER_ID = userId, //不需考虑代理情况
                 ENTITY_IDX = m.MODEL_IDX,
                 //RANGE_RANK_TI=Tag.ModelTag.RangeRank.NodeRank, //TODO:暂时不考虑应用范围
                 ACTIVE_TI = EntityTag.Active.DoneSave, //默认为正式(完成时保存)
             }).ToList();
     }
 }
コード例 #2
0
ファイル: DeptCtrl - 复制.cs プロジェクト: fengxingshi/CZJC
        public decimal SynchronousDept()
        {
            DataTable dt;
            var re = 0;

            using (var ctx = new OAContext())
            {
                dt =
                    ctx.SqlTable(
                        "select * from V_DEPT v where v.ts>nvl((select max(ts) from T_DEPT),to_timestamp('2000-1-1 0:00:00.001','YYYY-MM-DD HH24:MI:SS.FF3')) order by ts");
            }

            using (var ctx = new OAContext())
            {
                if (dt != null && dt.Rows.Count > 0)
                {
                    foreach (DataRow d in dt.Rows)
                    {
                        var org = Math.Abs(SNHelper.GuidToLongID(Guid.Parse(d["org_id"].ToString())));
                        string superDeptId = "null";
                        if (d["super_dept_id"]!=DBNull.Value)
                        {
                            superDeptId = d["super_dept_id"].ToString();
                        }
                        var sql =
                            string.Format(
                                @"insert into t_dept(dept_id,super_dept_id,dept_name,dept_code,org_id,dept_idx,ts,rs) values({0},{1},'{2}',{3},{4},{5},to_timestamp('{6}','YYYY-MM-DD HH24:MI:SS.FF3'),{7})",
                                d["dept_id"], superDeptId, d["dept_name"], d["dept_code"], org,
                                d["dept_idx"], d["ts"], d["rs"]);
                        re += ctx.Database.ExecuteSqlCommand(sql);
                    }
                }
            }
            return re;
        }
コード例 #3
0
ファイル: DeptCtrl - 复制.cs プロジェクト: fengxingshi/CZJC
 public decimal DeleteDept(decimal deptId)
 {
     using (var ctx = new OAContext())
     {
         return ctx.Database.ExecuteSqlCommand("update T_DEPT set rs=0 where DEPT_ID=:p", deptId);
     }
 }
コード例 #4
0
ファイル: FormCtrl - 复制.cs プロジェクト: fengxingshi/CZJC
 public T_FORM GetForm(decimal formId)
 {
     using (var ctx = new OAContext())
     {
         var re = ctx.T_FORM.SingleOrDefault(p => p.RS == 1 && p.FORM_ID == formId);
         return re;
     }
 }
コード例 #5
0
ファイル: FormCtrl - 复制.cs プロジェクト: fengxingshi/CZJC
 public decimal AddForm(T_FORM form)
 {
     using (var ctx = new OAContext())
     {
         ctx.T_FORM.Add(form);
         return ctx.SaveChanges();
     }
 }
コード例 #6
0
ファイル: DeptCtrl - 复制.cs プロジェクト: fengxingshi/CZJC
 public IList<T_DEPT> GetAllDeptByOrgID(decimal orgID)
 {
     using (var ctx = new OAContext())
     {
         var re = ctx.T_DEPT.Where(p => p.ORG_ID == orgID && p.RS == 1);
         return re.ToList();
     }
 }
コード例 #7
0
ファイル: DeptCtrl - 复制.cs プロジェクト: fengxingshi/CZJC
 public decimal AddDept(T_DEPT dept)
 {
     using (var ctx = new OAContext())
     {
         ctx.T_DEPT.Add(dept);
         return ctx.SaveChanges();
     }
 }
コード例 #8
0
ファイル: FlowCtrl - 复制.cs プロジェクト: fengxingshi/CZJC
 public IList<T_FLOW_AUTH> GetFlowAuth(decimal flowID)
 {
     using (var ctx = new OAContext())
     {
         var re = ctx.T_FLOW_AUTH.Where(p => p.FLOW_ID == flowID && p.RS == 1);
         return re.ToList();
     }
 }
コード例 #9
0
ファイル: FileType - 复制.cs プロジェクト: fengxingshi/CZJC
 public decimal AddFileType(C_FILE_TYPE fileType)
 {
     using (var ctx = new OAContext())
     {
         ctx.C_FILE_TYPE.Add(fileType);
         return ctx.SaveChanges();
     }
 }
コード例 #10
0
ファイル: FlowCtrl - 复制.cs プロジェクト: fengxingshi/CZJC
 public T_FLOW GetFlow(decimal flowID)
 {
     using (var ctx = new OAContext())
     {
         var re = ctx.T_FLOW.SingleOrDefault(p => p.FLOW_ID == flowID && p.RS == 1);
         return re;
     }
 }
コード例 #11
0
ファイル: FileType - 复制.cs プロジェクト: fengxingshi/CZJC
 public IList<C_FILE_TYPE> GetFileType()
 {
     using (var ctx = new OAContext())
     {
         var re = ctx.C_FILE_TYPE;
         return re.ToList();
     }
 }
コード例 #12
0
ファイル: DeptCtrl - 复制.cs プロジェクト: fengxingshi/CZJC
 public T_DEPT GetDept(decimal deptId)
 {
     using (var ctx = new OAContext())
     {
         var re = ctx.T_DEPT.SingleOrDefault(t => t.DEPT_ID == deptId && t.RS == 1);
         return re;
     }
 }
コード例 #13
0
ファイル: FormCtrl - 复制.cs プロジェクト: fengxingshi/CZJC
 public decimal DelForm(decimal formID)
 {
     using (var ctx = new OAContext())
     {
         var re = 0;
         re += ctx.Database.ExecuteSqlCommand("update T_FORM set rs=0 where form_id=:p", formID);
         return re;
     }
 }
コード例 #14
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="_oaContext"></param>
 /// <param name="_sysContext"></param>
 /// <param name="_commonService"></param>
 /// <param name="_userService"></param>
 public WorkReportController(OAContext _oaContext,
                             SysContext _sysContext,
                             ICommonService _commonService, IUserService _userService)
 {
     this.oaContext     = _oaContext;
     this.sysContext    = _sysContext;
     this.commonService = _commonService;
     this.userService   = _userService;
 }
コード例 #15
0
ファイル: FormCtrl - 复制.cs プロジェクト: fengxingshi/CZJC
 public decimal UpdateForm(T_FORM form)
 {
     using (var ctx = new OAContext())
     {
         ctx.T_FORM.Attach(form);
         ctx.Entry<T_FORM>(form).State = System.Data.EntityState.Modified;
         return ctx.SaveChanges();
     }
 }
コード例 #16
0
ファイル: FileType - 复制.cs プロジェクト: fengxingshi/CZJC
 public decimal UpdataFileType(C_FILE_TYPE fileType)
 {
     using (var ctx = new OAContext())
     {
         ctx.C_FILE_TYPE.Attach(fileType);
         ctx.Entry<C_FILE_TYPE>(fileType).State = EntityState.Modified;
         return ctx.SaveChanges();
     }
 }
コード例 #17
0
ファイル: IncardService.cs プロジェクト: 24wings/cucr-sass
 /// <summary>
 ///
 /// </summary>
 /// <param name="_oaContext"></param>
 /// <param name="_sysContext"></param>
 /// <param name="_commonService"></param>
 /// <param name="_userService"></param>
 public IncardService(OAContext _oaContext,
                      SysContext _sysContext,
                      ICommonService _commonService, IUserService _userService)
 {
     this.oaContext     = _oaContext;
     this.sysContext    = _sysContext;
     this.commonService = _commonService;
     this.userService   = _userService;
 }
コード例 #18
0
ファイル: FlowCtrl - 复制.cs プロジェクト: fengxingshi/CZJC
 public decimal DeleteFlow(decimal flowID)
 {
     using (var ctx = new OAContext())
     {
         var re = 0;
         re += ctx.Database.ExecuteSqlCommand("update T_FLOW set rs=0 where flow_id=:p", flowID);
         re += ctx.Database.ExecuteSqlCommand("update T_FLOW_AUTH set rs=0 where flow_id=:p", flowID);
         return re;
     }
 }
コード例 #19
0
        /// <summary>
        /// EF上下文实例创建,如果不存在则创建,存在则使用已有对象。
        /// </summary>
        /// <returns></returns>
        public static DbContext CreateDbContext()
        {
            DbContext dbContext = (DbContext)CallContext.GetData("dbContext");

            if (dbContext == null)
            {
                dbContext = new OAContext();
                CallContext.SetData("dbContext", dbContext);
            }
            return(dbContext);
        }
コード例 #20
0
ファイル: FlowCtrl - 复制.cs プロジェクト: fengxingshi/CZJC
 public decimal AddFlow(T_FLOW flow, IList<T_FLOW_AUTH> auth)
 {
     using (var ctx = new OAContext())
     {
         ctx.T_FLOW.Add(flow);
         foreach (var item in auth)
         {
             ctx.T_FLOW_AUTH.Add(item);
         }
         return ctx.SaveChanges();
     }
 }
コード例 #21
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="_oaContext"></param>
        /// <param name="_sysContext"></param>
        /// <param name="_commonService"></param>
        /// <param name="_userService"></param>
        /// <param name="_incardService"></param>
        public OfficeController(OAContext _oaContext,
                                SysContext _sysContext,
                                ICommonService _commonService, IUserService _userService,
                                IIncardService _incardService

                                )
        {
            this.oaContext     = _oaContext;
            this.sysContext    = _sysContext;
            this.commonService = _commonService;
            this.userService   = _userService;
            this.incardService = _incardService;
        }
コード例 #22
0
ファイル: AuthController.cs プロジェクト: 24wings/cucr-sass
 /// <summary>
 ///
 /// </summary>
 /// <param name="_oaContext"></param>
 /// <param name="_sysContext"></param>
 /// <param name="_commonService"></param>
 /// <param name="_userService"></param>
 /// <param name="_smsService"></param>
 public AuthController(OAContext _oaContext,
                       SysContext _sysContext,
                       ICommonService _commonService,
                       IUserService _userService,
                       ISmsService _smsService
                       )
 {
     this.oaContext     = _oaContext;
     this.sysContext    = _sysContext;
     this.commonService = _commonService;
     this.userService   = _userService;
     this.smsService    = _smsService;
 }
コード例 #23
0
ファイル: WorkCtrl - 复制.cs プロジェクト: fengxingshi/CZJC
        public decimal SaveWork(T_WORK work)
        {
            Validate(work);

            using (var ctx = new OAContext())
            {
                if (work.RS == null)
                {
                    ctx.T_WORK.Add(work);
                }
                else
                {
                    ctx.T_WORK.Attach(work);
                    ctx.Entry<T_WORK>(work).State = EntityState.Modified;
                }
                return ctx.SaveChanges();
            }
        }
コード例 #24
0
ファイル: FlowCtrl - 复制.cs プロジェクト: fengxingshi/CZJC
 public IList<dynamic> GetFlowAuths(decimal flowId)
 {
     using (var ctx = new OAContext())
     {
         var x = new
         {
             flow_id = 1m,
             auth_to = 1m,
             auth_to_name = ""
         };
         var t = x.GetType();
         var re = ctx.SqlDynamic(string.Format(@"
     select fa.*,nvl(o.org_name,'') || nvl(d.dept_name,'') || nvl(r.role_name,'') as auth_name from t_flow_auth fa left join t_org o on fa.auth_to = o.org_id
     left join t_dept d on fa.auth_to = d.dept_id
     left join t_role r on fa.auth_to = r.role_id
     where fa.flow_id={0}", flowId));
         return re;
     }
 }
コード例 #25
0
ファイル: FlowCtrl - 复制.cs プロジェクト: fengxingshi/CZJC
 public dynamic GetAllFlow()
 {
     using (var ctx = new OAContext())
     {
         var re = ctx.T_FLOW.Where(p => p.RS == 1).Select(c => new
         {
             c.FLOW_IDX,
             c.FLOW_NAME,
             WORK_CATEGORY_TI_NAME =
                 ctx.T_TAG_ITEM.FirstOrDefault(q => q.TAG_ITEM_ID == c.WORK_CATEGORY_TI).ITEM_NAME,
             FLOW_CATEGORY_TI_NAME =
                 ctx.T_TAG_ITEM.FirstOrDefault(q => q.TAG_ITEM_ID == c.FLOW_CATEGORY_TI).ITEM_NAME,
             c.ENABLED,
             c.FLOW_CATEGORY_TI,
             c.FLOW_ID,
             c.FLOW_MAP,
             c.OUTER_ORG_FLOW,
             c.ORG_ID,
             c.WORK_CATEGORY_TI,
         }).OrderBy(t => t.FLOW_IDX);
         //var re = ctx.Database.SqlQuery<T_FLOW>(@"select f.*,i.item_name as FLOW_CATEGORY_TI_NAME from T_flow f inner join t_tag_item i on i.tag_item_id=f.flow_category_ti");
         return re.ToList();
     }
 }
コード例 #26
0
ファイル: FlowCtrl - 复制.cs プロジェクト: fengxingshi/CZJC
 /// <summary>
 ///     获取流程可用模型 T_MODEL
 /// </summary>
 /// <param name="flowId"></param>
 /// <returns></returns>
 public IList<T_MODEL> GetFlowModels(decimal flowId)
 {
     using (var ctx = new OAContext())
     {
         // 获取所有流程所在单位可用的文笺(外部流程只能取所有单位可见的文笺),以及所有单位都可见的文笺
         var re = ctx.T_MODEL.SqlQuery(
             @"select * from t_model where rs=1 and org_id = (select org_id from t_flow where flow_id=:p0) or org_id is null",
             flowId);
         return re.ToList();
     }
 }
コード例 #27
0
 public TaskRepository(OAContext DbContext) : base(DbContext)
 {
     Db = DbContext;
 }
コード例 #28
0
ファイル: FlowCtrl - 复制.cs プロジェクト: fengxingshi/CZJC
 public IList<T_FLOW> GetFlows()
 {
     using (var ctx = new OAContext())
     {
         var re = ctx.T_FLOW.Where(t => t.RS == 1 && t.ENABLED == FlowTag.Enabled.True);
         return re.ToList();
     }
 }
コード例 #29
0
ファイル: FlowCtrl - 复制.cs プロジェクト: fengxingshi/CZJC
 public IList<dynamic> GetFlowStepAuths(decimal flowId)
 {
     using (var ctx = new OAContext())
     {
         var re =
             ctx.SqlDynamic(string.Format(@"
     select sa.*, (r.role_name || d.dept_name || o.org_name) as auth_to_name
       from t_step_auth sa
      inner join t_step s
     on sa.step_id = s.step_id
       left join t_role r
     on sa.auth_to = {1}
        and sa.auth_to = r.role_id
       left join t_dept d
     on sa.auth_to = {2}
        and sa.auth_to = d.dept_id
       left join t_org o
     on sa.auth_to = {3}
        and sa.auth_to = o.org_id
      where s.rs = 1
        and s.flow_id = {0}
     ", flowId, Tag.StepTag.StepAuth.AuthRole, Tag.StepTag.StepAuth.AuthDept, Tag.StepTag.StepAuth.AuthOrg));
         return re;
     }
 }
コード例 #30
0
ファイル: FlowCtrl - 复制.cs プロジェクト: fengxingshi/CZJC
 public decimal UpdateFlow(T_FLOW flow, IList<T_FLOW_AUTH> auth = null)
 {
     using (var ctx = new OAContext())
     {
         var re = ctx.T_FLOW.Attach(flow);
         ctx.Entry<T_FLOW>(flow).State = EntityState.Modified;
         if (auth != null)
         {
             ctx.Database.ExecuteSqlCommand("delete T_FLOW_AUTH where flow_id=:p0", flow.FLOW_ID);
             if (auth.Count > 0)
             {
                 foreach (var item in auth)
                 {
                     ctx.T_FLOW_AUTH.Add(item);
                 }
             }
         }
         return ctx.SaveChanges();
     }
 }
コード例 #31
0
 /// <summary>
 /// 通用控制器.
 /// </summary>
 /// <param name="_sysContext"></param>
 ///  <param name="_oaContext"></param>
 public CommonController(SysContext _sysContext, OAContext _oaContext)
 {
     sysContext = _sysContext;
     oaContext  = _oaContext;
 }
コード例 #32
0
ファイル: DeptCtrl - 复制.cs プロジェクト: fengxingshi/CZJC
 public decimal UpdateDept(T_DEPT dept)
 {
     using (var ctx = new OAContext())
     {
         ctx.T_DEPT.Attach(dept);
         ctx.Entry<T_DEPT>(dept).State = EntityState.Modified;
         return ctx.SaveChanges();
     }
 }
コード例 #33
0
        public decimal SaveEntityItems(IList<T_ENTITY_ITEM> entityList, decimal active = Tag.EntityItemTag.Active.DoneSave)
        {
            // 1.从库中提取要更新的数据,根据要更新数据的ItemId
            // 2.与库中数据行做对比,判断要更新的数据执行新增还是更新操作
            // 3.新增和更新状态暂存于要更新的数据的create_seq字段,-100新增 -200更新
            // 4.要新增的数据add到表中
            // 5.要更新的数据赋值到从数据库中提取的旧数据上,savechange时或被当作更新的
            // 6.提交入库
            //TODO:尚未测试
            using (var ctx = new OAContext())
            {
                //using (var scope = new TransactionScope()) //事务
                {
                    var update = -200;
                    var insert = -100;
                    // 获取相对应的旧实体项
                    var old =
                        from t in ctx.T_ENTITY_ITEM
                        where entityList.Select(p => p.ENTITY_ITEM_ID).Contains(t.ENTITY_ITEM_ID)
                        select t; //读库!

                    // 循环要更新的list,进行增、改筛选
                    foreach (var n in entityList)
                    {
                        var o = old.SingleOrDefault(p => p.ENTITY_ITEM_ID == n.ENTITY_ITEM_ID);
                        if (o != null) //如果库中存在旧数据
                        {
                            if (o.ITEM_VALUE_TYPE_TI == n.ITEM_VALUE_TYPE_TI &&
                                o.ITEM_VALUE.Equals(n.ITEM_VALUE) &&
                                o.ITEM_VALUE_BINARY.Equals(n.ITEM_VALUE_BINARY)) // 值类型相同 + 普通值相同 + 二进制对象值相同 = 值相同
                            {
                                // 暂存状态 = 更新
                                n.CREATE_SEQ = update;
                            }
                            else // 值不同
                            {
                                if (o.ACTIVE_TI == EntityItemTag.Active.DoneSave) // 状态正式 = 新增
                                {
                                    n.CREATE_SEQ = insert;
                                }
                                else // 内容不同 + 状态暂存 = 更新
                                {
                                    n.CREATE_SEQ = update;
                                }
                            }
                        }
                        else //库中没有的数据,直接新增
                        {
                            n.CREATE_SEQ = insert; //新增
                        }

                        n.ACTIVE_TI = active; //存储状态
                        n.TS = DateTime.Now; //更新时间戳

                        if (n.CREATE_SEQ == insert)
                        {
                            n.ENTITY_ITEM_ID = this.BuildID(); //产生新ItemId
                            ctx.T_ENTITY_ITEM.Add(n); //新增入库
                        }
                        else if (n.CREATE_SEQ == update)
                        {
                            o = n; //库中旧行赋于新值
                        }
                    }

                    var re = ctx.SaveChanges(); //写库!
                    //scope.Complete();
                    return re;
                }
            }
        }
コード例 #34
0
 public decimal SaveEntities(IList<T_ENTITY> entityList, decimal active=Tag.EntityTag.Active.DoneSave)
 {
     //TODO:尚未测试,逻辑也为检验
     using (var ctx = new OAContext())
     {
         foreach (var e in entityList)
         {
             if (e.RS == null)
             {
                 e.ACTIVE_TI = active; //设置新加实体的激活状态
                 ctx.T_ENTITY.Add(e);
             }
             else
             {
                 ctx.T_ENTITY.Attach(e);
                 ctx.Entry<T_ENTITY>(e).State = EntityState.Modified;
             }
         }
         return ctx.SaveChanges();
     }
 }
コード例 #35
0
 public IList<T_ENTITY> GetEntityListByWork(decimal workId)
 {
     using (var ctx = new OAContext())
     {
         var re = ctx.T_ENTITY.Where(p => p.RS == 1 && p.WORK_ID == workId);
         return re.ToList();
     }
 }
コード例 #36
0
 public RepositoryBase(OAContext DbContext)
 {
     Db = DbContext;
 }
コード例 #37
0
        public IList<T_ENTITY_ITEM> GetEntityItems(decimal entityId, decimal? userId = null)
        {
            using (var ctx = new OAContext())
            {
                #region

                //var re =
                //                    ctx.T_ENTITY_ITEM.SqlQuery(@"
                //select * from t_entity_item
                // where rs = 1 and entity_id = :p0
                //   and ts = (select max(t.ts) from t_entity_item t
                //              where t.rs = 1 and t.entity_id = :p0)", entityId);//DONE:仅按时间戳筛选最新,也许不严谨
                //                return re.ToList();
                //DONE:修复换用以下逻辑。上面的是每次输入都存一遍所有输入项,应该是下面的只存有改变的输入项
                //select r.* from t_entity_item r inner join
                //(
                //  select t.model_item_id,max(t.ts) ts from t_entity_item t
                //  where t.model_id=:mid
                //  group by t.model_item_id --按ModelItem分组,取得组中最新的Ts
                //) e on r.model_item_id=e.model_item_id and r.ts=e.ts and r.rs=1 --按modelItemId和ts链接
                //where r.entity_id=:eid
                //--有可能有ts相等的同ModelItemId的,需要筛选

                //select *
                //  from t_entity_item
                // where create_seq in
                //       (select max(t.create_seq) create_seq
                //          from t_entity_item t
                //         where (t.active_ti = :正式 or (t.user_id = :当前用户 and t.active_ti = :暂存))
                //           and t.model_item_id in
                //               (select model_item_id
                //                  from t_model_item
                //                 where model_id =
                //                       (select model_id from t_entity where entity_id = :实体))
                //         group by t.model_item_id)

                #endregion

                //DONE:新查询逻辑,一切都搞定
                // 1.根据实体的模型的模型项获取相关实体项
                // 2.对实体项按模型项分组,取创建序列最大(最新)的项,即获取每个模型项最新的实体项
                // 3.默认返回全正式的实体项,如果传入用户则返回用户能看到的最新数据(有暂存返回暂存,没暂存返回最新正式)
                var sqlstr = string.Format(@"
            select *
              from t_entity_item
             where create_seq in
               (select max(t.create_seq) create_seq
              from t_entity_item t
             where (t.active_ti = {0} {1})
               and t.model_item_id in
               (select model_item_id
                  from t_model_item
                 where model_id =
                       (select model_id from t_entity where entity_id = {2}))
             group by t.model_item_id)",
                    EntityItemTag.Active.DoneSave,
                    userId == null
                        ? ""
                        : string.Format(@"or (t.user_id = {0} and t.active_ti = {1})", userId,
                            EntityItemTag.Active.QuickSave),
                    entityId);

                var re = ctx.T_ENTITY_ITEM.SqlQuery(sqlstr);
                return re.ToList();
            }
        }
コード例 #38
0
 public CustomerRepository(OAContext DbContext) : base(DbContext)
 {
     Db = DbContext;
 }
コード例 #39
0
ファイル: FlowCtrl - 复制.cs プロジェクト: fengxingshi/CZJC
 /// <summary>
 ///     获取流程可用输入项 T_MODEL_ITEM
 /// </summary>
 /// <param name="flowId"></param>
 /// <returns></returns>
 public IList<T_MODEL_ITEM> GetFlowInputs(decimal flowId)
 {
     using (var ctx = new OAContext())
     {
         // 先获取可用流程,在获取流程的输入项
         var re = ctx.T_MODEL_ITEM.SqlQuery(@"select * from t_model_item
     where rs=1 and model_id in (select model_id from t_model where org_id = (select org_id from t_flow where flow_id=:p0) or org_id is null)",
             flowId);
         return re.ToList();
     }
 }