protected override string decodeHqlExtend()
        {
            string hqlExtend = "";
            foreach (NHExt.Runtime.Query.QueryTpl tpl in this.entityList)
            {
                if (this.IsDataAuth)
                {
                    ///调用权限服务调获取权限片段
                    try
                    {
                        NHExt.Runtime.Cache.AbstractCache<string, string> dac = null;
                        if (NHExt.Runtime.Cfg.GetCfg<bool>("IsEnableCache"))
                        {
                            dac = NHExt.Runtime.Extend.Cache.AbstractCacheFactory.GetDataAuthCache();
                            string cacheHql = dac.GetCache(tpl.EntityName);
                            if (!string.IsNullOrEmpty(cacheHql))
                            {
                                tpl.Hql = cacheHql;
                            }
                        }
                        if (tpl.Hql == null)
                        {
                            NHExt.Runtime.Proxy.AgentInvoker invoker = new NHExt.Runtime.Proxy.AgentInvoker();
                            invoker.AssemblyName = "IWEHAVE.ERP.PubBP.Agent.GetEntityAuthDataBPProxy";
                            invoker.DllName = "IWEHAVE.ERP.PubBP.Agent.dll";
                            invoker.AppendField(new NHExt.Runtime.Proxy.PropertyField() { FieldName = "EntityName", FieldValue = tpl.EntityName });
                            tpl.Hql = invoker.Do<string>();
                            if (NHExt.Runtime.Cfg.GetCfg<bool>("IsEnableCache"))
                            {
                                if (tpl.Hql != null && dac != null)
                                {
                                    //写入缓存
                                    dac.SetCache(tpl.EntityName, tpl.Hql);
                                }
                            }
                        }
                    }
                    catch (Exception ex)
                    {
                        throw new Exception("调用权限服务获取数据过滤条件错误:" + ex.Message);
                    }
                }
                ///组织过滤和多组织查询过滤,如果当前登录组织委超级组织的话需要进行特殊处理
                AuthContextExtend authCtx = NHExt.Runtime.Session.SessionCache.Current.AuthContext as AuthContextExtend;
                if (authCtx.Org != 1 && authCtx.Org > 0)
                {

                    if (this.BA.OrgFilter)
                    {
                        string alias = string.IsNullOrEmpty(tpl.Alias) ? "" : (tpl.Alias + ".");
                        //如果是组织过滤数据
                        tpl.Hql += " " + alias + "Orgnization=" + authCtx.Org;
                        if (!NHExt.Runtime.Session.Session.Current.IgnoreOrgFilter)
                        {
                            if (this.BA.Range == NHExt.Runtime.Enums.ViewRangeEnum.ALL)
                            {
                                // tpl.Hql += " and 1=1";
                            }
                            else if (this.BA.Range == NHExt.Runtime.Enums.ViewRangeEnum.UPPER)
                            {
                                tpl.Hql += " and " + alias + "OrgnizationC in(-1";
                                foreach (long dataOrg in authCtx.DataOrgList)
                                {
                                    tpl.Hql += ("," + dataOrg);
                                }
                                tpl.Hql += ")";
                            }
                            else if (this.BA.Range == NHExt.Runtime.Enums.ViewRangeEnum.OWN)
                            {
                                tpl.Hql += " and " + alias + "OrgnizationC=" + authCtx.OrgC;

                            }
                        }

                    }
                }
                NHExt.Runtime.Session.Session.Current.IgnoreOrgFilter = false;

                //获取当前实体在当前登录用户的限制条件
                tpl.Parser();
                if (!string.IsNullOrEmpty(tpl.ParserHql))
                {
                    hqlExtend += " ( " + tpl.ParserHql + " ) ";
                }
            }
            return hqlExtend;
        }