protected override void OnBuildQueryCondition(QueryCondition qc)
        {
            if (qc.OrderByClause == string.Empty)
                qc.OrderByClause = "CREATE_TIME DESC";

            qc.SelectFields = @" *";

            if (string.IsNullOrEmpty(qc.WhereClause))
            {
                qc.FromClause = @" (SELECT DISTINCT ACI.[APPLICATION_NAME],ACI.[PROGRAM_NAME] AS [PROGRAM_NAME_MCS],
												ACI.[RESOURCE_ID],ACI.[SUBJECT],ACI.[EMERGENCY],ACI.[URL],ACI.[CREATOR_ID],ACI.[CREATOR_NAME],
			        ACI.[CREATE_TIME],ACI.[DRAFT_DEPARTMENT_NAME],CIM.[PROCESS_ID] FROM  wf.APPLICATIONS_COMMON_INFO AS ACI (NOLOCK) LEFT JOIN wf.COMMON_INFO_MAPPING AS CIM (NOLOCK) ON ACI.RESOURCE_ID = CIM.COMMON_INFO_ID) AS T";
            }
            else
            {
                qc.FromClause = string.Format(@" (SELECT DISTINCT ACI.[APPLICATION_NAME],ACI.[PROGRAM_NAME] AS [PROGRAM_NAME_MCS],
												ACI.[RESOURCE_ID],ACI.[SUBJECT],ACI.[EMERGENCY],ACI.[URL],ACI.[CREATOR_ID],ACI.[CREATOR_NAME],
			        ACI.[CREATE_TIME],ACI.[DRAFT_DEPARTMENT_NAME],CIM.[PROCESS_ID] FROM  wf.APPLICATIONS_COMMON_INFO AS ACI (NOLOCK) LEFT JOIN wf.COMMON_INFO_MAPPING AS CIM (NOLOCK) ON ACI.RESOURCE_ID = CIM.COMMON_INFO_ID WHERE {0}) AS T ", qc.WhereClause);

                qc.WhereClause = string.Empty;
            }

            qc.WhereClause = GetFilterByQuery(qc);
            base.OnBuildQueryCondition(qc);

        }
			protected override void OnBuildQueryCondition(QueryCondition qc)
			{
				qc.FromClause = TimePointContext.Current.UseCurrentTime ? @"
SC.SchemaRoleSnapshot_Current R INNER JOIN SC.SchemaMembersSnapshot_Current S
ON S.MemberID = R.ID INNER JOIN  SC.SchemaApplicationSnapshot_Current A 
ON A.ID = S.ContainerID" : @"SC.SchemaRoleSnapshot R INNER JOIN SC.SchemaMembersSnapshot S
ON S.MemberID = R.ID
INNER JOIN  SC.SchemaApplicationSnapshot A ON A.ID = S.ContainerID";

				qc.SelectFields = "R.*, A.ID AS  AppID,A.DisplayName AS AppName,A.Name As AppName2";

				base.OnBuildQueryCondition(qc);

				if (string.IsNullOrWhiteSpace(qc.OrderByClause))
				{
					qc.OrderByClause = "A.DisplayName";
				}

				if (string.IsNullOrWhiteSpace(qc.WhereClause))
				{
					qc.WhereClause = "1=2";
				}
				else
				{
					qc.WhereClause = "(" + qc.WhereClause + ")";
				}
			}
		protected override void OnBuildQueryCondition(QueryCondition qc)
		{
			qc.FromClause = FromClause;
			qc.SelectFields = SelectFields;
			if (string.IsNullOrEmpty(this.orderBy))
				qc.OrderByClause = this.DefaultOrderBy;
			else
				qc.OrderByClause = orderBy;
			base.OnBuildQueryCondition(qc);

			var timeCondition = VersionStrategyQuerySqlBuilder.Instance.TimePointToBuilder("R.");

			WhereSqlClauseBuilder builder = new WhereSqlClauseBuilder();

			var timeCondition2 = VersionStrategyQuerySqlBuilder.Instance.TimePointToBuilder("O.");

			builder.AppendItem(ParentIdField, parentId);
			InnerBuildWhere(builder);

			var schemaCondition1 = DataSourceUtil.SchemaTypeCondition("R.ChildSchemaType", this.ChildSchemaTypes);
			var schemaCondition2 = DataSourceUtil.SchemaTypeCondition("R.ParentSchemaType", this.ParentSchemaTypes);

			var allConditions = new ConnectiveSqlClauseCollection(builder, timeCondition, timeCondition2, schemaCondition1, schemaCondition2);

			if (string.IsNullOrEmpty(qc.WhereClause))
			{
				qc.WhereClause = allConditions.ToSqlString(TSqlBuilder.Instance);
			}
			else
			{
				qc.WhereClause = allConditions.ToSqlString(TSqlBuilder.Instance) + " AND (" + qc.WhereClause + ")";
			}
		}
		protected override void OnBuildQueryCondition(QueryCondition qc)
		{
			qc.FromClause = "SC.OperationLog";
			qc.SelectFields = "*";
			if (string.IsNullOrEmpty(qc.OrderByClause))
				qc.OrderByClause = "CreateTime DESC";

			WhereSqlClauseBuilder builder = new WhereSqlClauseBuilder();

			if (this.catelog.IsNotEmpty())
			{
				builder.AppendItem("SchemaType", this.catelog);
			}

			if (this.operationType.IsNotEmpty())
			{
				builder.AppendItem("OperationType", operationType);
			}

			if (builder.IsEmpty == false && qc.WhereClause.IsNotEmpty())
			{
				qc.WhereClause += " AND ";
			}

			qc.WhereClause += builder.ToSqlString(TSqlBuilder.Instance);
		}
		private void BuildCondition(QueryCondition qc)
		{
			WhereSqlClauseBuilder builder = new WhereSqlClauseBuilder();
			if (this.deepOption == 1)
			{
				builder.AppendCondition("C.ContainerID", this.scope.ID);
			}
			else
			{
				if (deepOption == 2)
				{
					builder.AppendItem("C.ContainerID", this.scope.ID, "<>");
				}
			}
			builder.NormalFor("C.Status").NormalFor("S.Status").NormalFor("SM.Status").NormalFor("AUS.Status");
			var timeBulder1 = VersionStrategyQuerySqlBuilder.Instance.TimePointToBuilder("C.");
			var timeBulder2 = VersionStrategyQuerySqlBuilder.Instance.TimePointToBuilder("S.");
			var time3 = VersionStrategyQuerySqlBuilder.Instance.TimePointToBuilder("AUS.");
			var time4 = VersionStrategyQuerySqlBuilder.Instance.TimePointToBuilder("SM.");

			var conditionClause = new ConnectiveSqlClauseCollection(builder, timeBulder1, timeBulder2, time3, time4).ToSqlString(TSqlBuilder.Instance);

			if (string.IsNullOrEmpty(qc.WhereClause) == false)
				qc.WhereClause += " AND (" + conditionClause + ")";
			else
				qc.WhereClause = conditionClause;
		}
		protected override void OnBuildQueryCondition(QueryCondition qc)
		{
			qc.FromClause = TimePointContext.Current.UseCurrentTime ? "SC.SchemaUserSnapshot_Current O INNER JOIN SC.UserAndContainerSnapshot_Current R ON O.ID = R.UserID" : "SC.SchemaUserSnapshot O INNER JOIN SC.UserAndContainerSnapshot R ON O.ID = R.UserID";
			qc.SelectFields = "O.*";
			if (string.IsNullOrEmpty(this.orderBy))
				qc.OrderByClause = "R.VersionStartTime DESC";
			else
				qc.OrderByClause = orderBy;
			base.OnBuildQueryCondition(qc);

			WhereSqlClauseBuilder builder = new WhereSqlClauseBuilder();

			var timeCondition1 = VersionStrategyQuerySqlBuilder.Instance.TimePointToBuilder("R.");
			var timeCondition2 = VersionStrategyQuerySqlBuilder.Instance.TimePointToBuilder("O.");

			builder.AppendItem("R.ContainerID", this.containerId);
			InnerBuildWhere(builder);

			builder.AppendItem("O.Status", (int)SchemaObjectStatus.Normal);
			builder.AppendItem("R.Status", (int)SchemaObjectStatus.Normal);

			var allConditions = new ConnectiveSqlClauseCollection(timeCondition1, timeCondition2, builder);

			if (string.IsNullOrEmpty(qc.WhereClause))
			{
				qc.WhereClause = allConditions.ToSqlString(TSqlBuilder.Instance);
			}
			else
			{
				qc.WhereClause = allConditions.ToSqlString(TSqlBuilder.Instance) + " AND (" + qc.WhereClause + ")";
			}
		}
		protected override void OnBuildQueryCondition(QueryCondition qc)
		{
			base.OnBuildQueryCondition(qc);
			qc.SelectFields = "*";
			qc.FromClause = TimePointContext.Current.UseCurrentTime ? "SC.AUAdminScopeItemSnapshot_Current" : "SC.AUAdminScopeItemSnapshot";

			if (string.IsNullOrEmpty(qc.OrderByClause))
				qc.OrderByClause = "AUScopeItemName ASC";

			WhereSqlClauseBuilder builder = new WhereSqlClauseBuilder();
			builder.AppendCondition("SchemaType", this.scopeType).NormalFor("Status");
			var timeBuilder = VersionStrategyQuerySqlBuilder.Instance.TimePointToBuilder();

			var allCondition = new ConnectiveSqlClauseCollection(builder, timeBuilder).ToSqlString(TSqlBuilder.Instance);

			if (string.IsNullOrEmpty(qc.WhereClause))
			{
				qc.WhereClause = allCondition;
			}
			else
			{
				qc.WhereClause = qc.WhereClause + "AND (" + allCondition + ")";
			}

		}
		protected override void OnBuildQueryCondition(QueryCondition qc)
		{
			qc.FromClause = TimePointContext.Current.UseCurrentTime ? @"SC.UserAndContainerSnapshot_Current C 
INNER JOIN SC.SchemaUserSnapshot_Current U ON U.ID =C.UserID
INNER JOIN SC.SchemaRoleSnapshot_Current R ON R.ID = C.ContainerID 
INNER JOIN SC.SchemaMembersSnapshot_Current S ON S.MemberID = R.ID
INNER JOIN  SC.SchemaApplicationSnapshot_Current A ON A.ID = S.ContainerID" : @"SC.UserAndContainerSnapshot C 
INNER JOIN SC.SchemaUserSnapshot U ON U.ID =C.UserID
INNER JOIN SC.SchemaRoleSnapshot R ON R.ID = C.ContainerID 
INNER JOIN SC.SchemaMembersSnapshot S ON S.MemberID = R.ID
INNER JOIN  SC.SchemaApplicationSnapshot A ON A.ID = S.ContainerID";
			qc.SelectFields = "R.*, A.ID AS  AppID,A.DisplayName AS AppName,A.Name As AppName2,A.CodeName as AppCodeName";
			base.OnBuildQueryCondition(qc);
			WhereSqlClauseBuilder wb = new WhereSqlClauseBuilder();
			wb.AppendItem("C.UserID", this.userId);
			if (string.IsNullOrWhiteSpace(orderBy))
			{
				qc.OrderByClause = "A.DisplayName";
			}
			else
			{
				qc.OrderByClause = orderBy;
			}
			if (string.IsNullOrWhiteSpace(qc.WhereClause))
			{
				qc.WhereClause = wb.ToSqlString(TSqlBuilder.Instance);
			}
			else
			{
				qc.WhereClause = wb.ToSqlString(TSqlBuilder.Instance) + " AND (" + qc.WhereClause + ")";
			}
		}
        public string GetFilterByQuery(QueryCondition qc)
        {
            if (string.IsNullOrEmpty(qc.WhereClause))
                qc.WhereClause = "1 = 1";

            var addition = string.IsNullOrEmpty(qc.WhereClause) ? "1 = 1" : qc.WhereClause;

            if (RolesDefineConfig.GetConfig().IsCurrentUserInRoles("ProcessAdmin", "AdminFormQuery", "WorkflowQueryAdmin") == false)
            {
                ConnectiveSqlClauseCollection cscc = WfAclAdapter.Instance.GetAclQueryConditionsByUser(DeluxeIdentity.CurrentUser.ID);

                string condition = "RESOURCE_ID IN (SELECT RESOURCE_ID FROM WF.ACL WHERE " + cscc.ToSqlString(TSqlBuilder.Instance) + ")";

                //检查是否具有分类授权
                WfApplicationAuthCollection authInfo = WfApplicationAuthAdapter.Instance.GetUserApplicationAuthInfo(DeluxeIdentity.Current.User);
                var cateCondition = authInfo.GetApplicationAndProgramBuilder("APPLICATION_NAME", "PROGRAM_NAME_MCS").ToSqlString(TSqlBuilder.Instance);
                if (string.IsNullOrEmpty(cateCondition) == false)
                {
                    condition = "(" + condition + " OR " + cateCondition + ")";
                }

                addition += " AND " + condition;

                qc.WhereClause = addition;
            }

            return qc.WhereClause;
        }
        protected override void OnBuildQueryCondition(QueryCondition qc)
        {
            base.OnBuildQueryCondition(qc);
            qc.SelectFields = "D.PROCESS_KEY, D.APPLICATION_NAME, D.PROGRAM_NAME, D.PROCESS_NAME, D.ENABLED, D.CREATE_TIME, D.CREATOR_ID,D.CREATOR_NAME, D.MODIFY_TIME, D.MODIFIER_ID, D.MODIFIER_NAME, D.IMPORT_TIME, D.IMPORT_USER_ID, D.IMPORT_USER_NAME";
            qc.FromClause = " WF.PROCESS_DESCRIPTOR_DIMENSIONS DIM INNER JOIN WF.PROCESS_DESCRIPTORS D ON DIM.PROCESS_KEY = D.PROCESS_KEY";

            qc.WhereClause = string.IsNullOrEmpty(qc.WhereClause) ? string.Empty : qc.WhereClause + " AND ";

            if (id == null)
                throw new InvalidExpressionException("至少需要指定一个ID");

            if (additionIds == null || additionIds.Length == 0)
            {
                qc.WhereClause += "DIM.Data.exist('Process/descendant::Resource[@ID=''" + TSqlBuilder.Instance.CheckQuotationMark(id, false) + "'']') > 0";
            }
            else
            {
                string[] filters = new string[additionIds.Length + 1];
                filters[0] = MakeFilter(id);
                for (int i = 0; i < additionIds.Length; i++)
                    filters[i + 1] = MakeFilter(additionIds[i]);

                qc.WhereClause += BuildWhere(filters); ;
            }

            if (string.IsNullOrEmpty(qc.OrderByClause))
                qc.OrderByClause = "D.APPLICATION_NAME ASC";
        }
		protected override void OnBuildQueryCondition(QueryCondition qc)
		{
			qc.SelectFields = "U.*, P.PARAM_VALUE AS PROJECT_NAME";
			qc.FromClause = "WF.USER_TASK(NOLOCK) U LEFT JOIN WF.PROCESS_RELATIVE_PARAMS(NOLOCK) P ON U.PROCESS_ID = P.PROCESS_ID AND P.PARAM_KEY = 'ProjectName'";
			qc.OrderByClause = GetOrderByString(qc);

			base.OnBuildQueryCondition(qc);
		}
		protected override void OnBuildQueryCondition(QueryCondition qc)
		{
			base.OnBuildQueryCondition(qc);
			if (string.IsNullOrEmpty(qc.OrderByClause))
			{
				qc.OrderByClause = "SORT_ID DESC";
			}
		}
		protected override void OnBuildQueryCondition(QueryCondition qc)
		{
			if (string.IsNullOrEmpty(qc.OrderByClause))
				qc.OrderByClause = "B.CREATE_TIME DESC";
			qc.SelectFields = "PROCESS_ID,PROCESS_NAME,B.CREATE_TIME, A.CREATE_TIME AS GEN_TIME,CREATOR_ID,CREATOR_NAME,START_TIME,DEPARTMENT_NAME,B.UPDATE_TAG";
			qc.FromClause = "WF.PERSIST_QUEUE_ARCHIEVED A (NOLOCK) INNER JOIN WF.PROCESS_INSTANCES B ON A.PROCESS_ID = B.INSTANCE_ID";
			base.OnBuildQueryCondition(qc);
		}
		protected override void OnBuildQueryCondition(QueryCondition qc)
		{
			qc.FromClause = "WF.APP_PROGRAM_AUTH A (NOLOCK) LEFT JOIN WF.APPLICATIONS B ON A.APPLICATION_NAME=B.CODE_NAME LEFT JOIN WF.PROGRAMS C ON C.CODE_NAME = A.PROGRAM_NAME AND C.APPLICATION_CODE_NAME = B.CODE_NAME";

			if (qc.OrderByClause.IsNullOrEmpty())
				qc.OrderByClause = "CREATE_TIME DESC";

			//qc.SelectFields = ORMapping.GetSelectFieldsNameSql<WfApplicationAuth>();
			qc.SelectFields = "A.APPLICATION_NAME,A.PROGRAM_NAME,AUTH_TYPE,ROLE_ID,ROLE_DESCRIPTION,CREATE_TIME,B.NAME AS APP_DISP,C.NAME AS PROGRAM_DISP";

		}
        protected override void OnBuildQueryCondition(QueryCondition qc)
        {
            qc.SelectFields = @"UT.[PROCESS_ID], UT.[TASK_GUID], UT.[APPLICATION_NAME],UT.[DRAFT_USER_ID],UT.[DRAFT_USER_NAME],UT.[PROGRAM_NAME], UT.[TASK_TITLE], UT.[URL], UT.[EMERGENCY], UT.[PURPOSE], UT.[SOURCE_NAME], UT.[READ_TIME], UT.[RESOURCE_ID], UT.[COMPLETED_TIME], UT.[DRAFT_DEPARTMENT_NAME],UT.[STATUS],PN.[STATUS] AS PSTATUS, UT.[SEND_TO_USER],PN.[OWNER_ACTIVITY_ID], P.PARAM_VALUE AS PROJECT_NAME";
            qc.FromClause = @"WF.PROCESS_INSTANCES(NOLOCK) PN RIGHT JOIN WF.USER_ACCOMPLISHED_TASK (NOLOCK) UT ON UT.[PROCESS_ID] = PN.[INSTANCE_ID] LEFT JOIN WF.PROCESS_RELATIVE_PARAMS(NOLOCK) P ON UT.PROCESS_ID = P.PROCESS_ID AND P.PARAM_KEY = 'ProjectName'";

            if (string.IsNullOrEmpty(qc.OrderByClause))
            {
                qc.OrderByClause = " UT.COMPLETED_TIME DESC";
            }

            base.OnBuildQueryCondition(qc);
        }
		protected override void OnBuildQueryCondition(QueryCondition qc)
		{
			base.OnBuildQueryCondition(qc);

			WhereSqlClauseBuilder wb = new WhereSqlClauseBuilder();
			wb.AppendItem("LogID", this.syncID);

			if (string.IsNullOrEmpty(qc.WhereClause))
				qc.WhereClause = wb.ToSqlString(TSqlBuilder.Instance);
			else
				qc.WhereClause = " AND " + wb.ToSqlString(TSqlBuilder.Instance);
		}
		protected override void OnBuildQueryCondition(QueryCondition qc)
		{
			qc.SelectFields = "*";
			if (string.IsNullOrEmpty(qc.OrderByClause))
				qc.OrderByClause = "VersionStartTime DESC";

			qc.WhereClause.IsNotEmpty((s) => qc.WhereClause += " AND ");

			var builder = new WhereSqlClauseBuilder();
			builder.AppendItem("Status", (int)SchemaObjectStatus.Normal);
			var timeCondition = VersionStrategyQuerySqlBuilder.Instance.TimePointToBuilder();
			qc.WhereClause += new ConnectiveSqlClauseCollection(builder, timeCondition).ToSqlString(TSqlBuilder.Instance);
		}
        private DataView InnerQuery(int startRowIndex, int maximumRows, string where, string orderBy, ref int totalCount)
        {
            QueryCondition qc = new QueryCondition(startRowIndex,
                maximumRows, "*", this._DefaultTableName, orderBy, where);

            OnBuildQueryCondition(qc);

            CommonAdapter adapter = new CommonAdapter(GetConnectionName());

            DataView result = adapter.SplitPageQuery(qc, ref totalCount);

            ObjectContextCache.Instance[ContextCacheKey] = totalCount;

            return result;
        }
		protected string GetOrderByString(QueryCondition qc)
		{
			//排序规则为“置顶”>“用户指定”>“时间”
			if (string.IsNullOrEmpty(qc.OrderByClause))
				qc.OrderByClause = "TOP_FLAG DESC,DELIVER_TIME DESC";
			else if (qc.OrderByClause.Contains("DELIVER_TIME"))
				qc.OrderByClause = string.Format("TOP_FLAG DESC,{0}", qc.OrderByClause);
			//09-01-12新需求
			//当点击按缓急程度排序后,优先显示缓急程度高的文件,同样缓急程度的文件,办理时限早的文件排在上面,同一办理时限的文件,发送时间早的文件排在上面。
			//else if (inputOrderBy.Contains("EMERGENCY"))
			//    inputOrderBy = string.Format("TOP_FLAG DESC,{0},ISNULL(EXPIRE_TIME, '2999-12-31') ASC,DELIVER_TIME ASC", inputOrderBy);
			else
				qc.OrderByClause = string.Format("TOP_FLAG DESC,{0},DELIVER_TIME DESC", qc.OrderByClause);

			return qc.OrderByClause;
		}
		protected override void OnBuildQueryCondition(QueryCondition qc)
		{
			base.OnBuildQueryCondition(qc);
			qc.SelectFields = "S.*";
			qc.FromClause = this.FromSqlClause;
			if (string.IsNullOrEmpty(qc.OrderByClause))
				qc.OrderByClause = "S.Name ASC";

			var timeCondition = VersionStrategyQuerySqlBuilder.Instance.TimePointToBuilder("S.");
			WhereSqlClauseBuilder where = new WhereSqlClauseBuilder();
			var allConditions = new ConnectiveSqlClauseCollection(timeCondition, where);
			where.AppendCondition("S.CategoryID", this.categoryID);
			if (string.IsNullOrEmpty(qc.WhereClause) == false)
				qc.WhereClause += " AND ";
			qc.WhereClause += allConditions.ToSqlString(TSqlBuilder.Instance);
		}
		protected override void OnBuildQueryCondition(QueryCondition qc)
		{
			qc.FromClause = (TimePointContext.Current.UseCurrentTime ?
				"SC.SchemaGroupSnapshot_Current G INNER JOIN SC.SchemaRelationObjectsSnapshot_Current R ON G.ID = R.ObjectID "
				: "SC.SchemaGroupSnapshot G INNER JOIN SC.SchemaRelationObjectsSnapshot R ON G.ID = R.ObjectID ");

			if (this.fileterRole)
			{
				qc.FromClause += TimePointContext.Current.UseCurrentTime ?
					" LEFT JOIN SC.Acl_Current AC ON AC.ContainerID = R.ParentID INNER JOIN SC.SchemaRoleSnapshot_Current RS ON RS.ID = AC.MemberID INNER JOIN SC.UserAndContainerSnapshot_Current UC ON RS.ID = UC.ContainerID " :
					" LEFT JOIN SC.Acl AC ON AC.ContainerID = R.ParentID INNER JOIN SC.SchemaRoleSnapshot RS ON RS.ID = AC.MemberID INNER JOIN SC.UserAndContainerSnapshot UC ON RS.ID = UC.ContainerID ";
			}

			qc.SelectFields = "G.*,R.ParentID";
			if (qc.OrderByClause.IsNullOrEmpty())
				qc.OrderByClause = "R.InnerSort DESC";

			qc.WhereClause.IsNotEmpty((s) => qc.WhereClause += " AND ");

			var timeConditionS = VersionStrategyQuerySqlBuilder.Instance.TimePointToBuilder("G.");

			var timeConditionR = VersionStrategyQuerySqlBuilder.Instance.TimePointToBuilder("R.");

			WhereSqlClauseBuilder builder = new WhereSqlClauseBuilder();

			builder.AppendItem("R.Status", (int)SchemaObjectStatus.Normal);
			builder.AppendItem("G.Status", (int)SchemaObjectStatus.Normal);

			var allConditions = new ConnectiveSqlClauseCollection(timeConditionS, timeConditionR, builder);

			if (this.fileterRole)
			{
				allConditions.Add(VersionStrategyQuerySqlBuilder.Instance.TimePointToBuilder("AC."));
				allConditions.Add(VersionStrategyQuerySqlBuilder.Instance.TimePointToBuilder("RS."));
				allConditions.Add(VersionStrategyQuerySqlBuilder.Instance.TimePointToBuilder("UC."));
				builder.AppendItem("AC.Status", (int)SchemaObjectStatus.Normal);
				builder.AppendItem("RS.Status", (int)SchemaObjectStatus.Normal);
				builder.AppendItem("UC.Status", (int)SchemaObjectStatus.Normal);
				builder.AppendItem("UC.UserID", this.userID);

				InSqlClauseBuilder inSql1 = new InSqlClauseBuilder("AC.ContainerPermission");
				inSql1.AppendItem(this.parentPermissions);
				allConditions.Add(inSql1);
			}

			qc.WhereClause += allConditions.ToSqlString(TSqlBuilder.Instance);
		}
		protected override void OnBuildQueryCondition(QueryCondition qc)
		{
			base.OnBuildQueryCondition(qc);
			qc.SelectFields = SelectFields;
			qc.FromClause = this.FromSqlClause;
			if (string.IsNullOrEmpty(qc.OrderByClause))
				qc.OrderByClause = DefaultOrderByClause; ;

			var timeCondition = VersionStrategyQuerySqlBuilder.Instance.TimePointToBuilder("S.");
			var timeCondition1 = VersionStrategyQuerySqlBuilder.Instance.TimePointToBuilder("M.");
			WhereSqlClauseBuilder where = new WhereSqlClauseBuilder();
			var allConditions = new ConnectiveSqlClauseCollection(timeCondition, timeCondition1, where);
			BuildWhere(where);
			if (string.IsNullOrEmpty(qc.WhereClause) == false)
				qc.WhereClause += " AND ";
			qc.WhereClause += allConditions.ToSqlString(TSqlBuilder.Instance);
		}
		protected override void OnBuildQueryCondition(QueryCondition qc)
		{
			base.OnBuildQueryCondition(qc);
			qc.SelectFields = "S.*";
			qc.FromClause = this.FromSqlClause;
			if (string.IsNullOrEmpty(qc.OrderByClause))
				qc.OrderByClause = "S.SearchContent ASC";

			var timeCondition = VersionStrategyQuerySqlBuilder.Instance.TimePointToBuilder("S.");
			var timeCondition2 = VersionStrategyQuerySqlBuilder.Instance.TimePointToBuilder("M.");
			WhereSqlClauseBuilder where = new WhereSqlClauseBuilder().NormalFor("S.Status").NormalFor("M.Status");
			var allConditions = new ConnectiveSqlClauseCollection(timeCondition, timeCondition2, where);
			where.AppendCondition("M.ContainerID", this.scope.ID);
			if (string.IsNullOrEmpty(qc.WhereClause) == false)
				qc.WhereClause += " AND ";

			qc.WhereClause += allConditions.ToSqlString(TSqlBuilder.Instance);
		}
		protected override void OnBuildQueryCondition(QueryCondition qc)
		{
			if (qc.OrderByClause.IsNullOrEmpty())
				qc.OrderByClause = "VersionStartTime DESC";

			qc.WhereClause.IsNotEmpty((s) => qc.WhereClause += " AND ");

			WhereSqlClauseBuilder builder = new WhereSqlClauseBuilder();

			var timeCondition = VersionStrategyQuerySqlBuilder.Instance.TimePointToBuilder();

			builder.AppendItem("Status", (int)SchemaObjectStatus.Normal);

			builder.AppendItem("SchemaType", "Applications");

			var conditions = new ConnectiveSqlClauseCollection(timeCondition, builder);

			qc.WhereClause += conditions.ToSqlString(TSqlBuilder.Instance);
		}
        protected override void OnBuildQueryCondition(QueryCondition qc)
        {
            qc.SelectFields = "U.*, P.PARAM_VALUE AS PROJECT_NAME";
            qc.FromClause = "WF.USER_TASK(NOLOCK) U LEFT JOIN WF.PROCESS_RELATIVE_PARAMS(NOLOCK) P ON U.PROCESS_ID = P.PROCESS_ID AND P.PARAM_KEY = 'ProjectName'";

            //排序规则为“置顶”>“用户指定”>“时间”
            if (string.IsNullOrEmpty(qc.OrderByClause))
                qc.OrderByClause = "TOP_FLAG DESC,DELIVER_TIME DESC";
            else if (qc.OrderByClause.Contains("DELIVER_TIME"))
                qc.OrderByClause = string.Format("TOP_FLAG DESC,{0}", qc.OrderByClause);
            //09-01-12新需求
            //当点击按缓急程度排序后,优先显示缓急程度高的文件,同样缓急程度的文件,办理时限早的文件排在上面,同一办理时限的文件,发送时间早的文件排在上面。
            //else if (inputOrderBy.Contains("EMERGENCY"))
            //    inputOrderBy = string.Format("TOP_FLAG DESC,{0},ISNULL(EXPIRE_TIME, '2999-12-31') ASC,DELIVER_TIME ASC", inputOrderBy);
            else
                qc.OrderByClause = string.Format("TOP_FLAG DESC,{0},DELIVER_TIME DESC", qc.OrderByClause);

            base.OnBuildQueryCondition(qc);
        }
		protected override void OnBuildQueryCondition(QueryCondition qc)
		{
			qc.FromClause = TimePointContext.Current.UseCurrentTime ? "SC.SchemaOrganizationSnapshot_Current O INNER JOIN SC.SchemaRelationObjectsSnapshot_Current R ON O.ID = R.ObjectID" : "SC.SchemaOrganizationSnapshot O INNER JOIN SC.SchemaRelationObjectsSnapshot R ON O.ID = R.ObjectID";

			if (this.fileterRole)
			{
				qc.FromClause += TimePointContext.Current.UseCurrentTime ?
					" INNER JOIN SC.Acl_Current AC ON AC.ContainerID = O.ID INNER JOIN SC.SchemaRoleSnapshot_Current RS ON RS.ID = AC.MemberID INNER JOIN SC.UserAndContainerSnapshot_Current UC ON RS.ID = UC.ContainerID "
					: " INNER JOIN SC.Acl AC ON AC.ContainerID = O.ID INNER JOIN SC.SchemaRoleSnapshot RS ON RS.ID = AC.MemberID INNER JOIN SC.UserAndContainerSnapshot UC ON RS.ID = UC.ContainerID ";
			}

			qc.SelectFields = "DISTINCT O.*,R.FullPath";

			if (string.IsNullOrEmpty(qc.OrderByClause))
				qc.OrderByClause = "R.InnerSort ASC";

			qc.WhereClause.IsNotEmpty((s) => qc.WhereClause += " AND ");

			WhereSqlClauseBuilder builder = new WhereSqlClauseBuilder();
			builder.AppendItem("R.Status", (int)SchemaObjectStatus.Normal);
			builder.AppendItem("O.Status", (int)SchemaObjectStatus.Normal);
			var timeCondition = VersionStrategyQuerySqlBuilder.Instance.TimePointToBuilder("R.");
			var timeCondition2 = VersionStrategyQuerySqlBuilder.Instance.TimePointToBuilder("O.");
			var schemaCondition = DataSourceUtil.SchemaTypeCondition("R.ChildSchemaType", "Organizations");
			var allConditions = new ConnectiveSqlClauseCollection(builder, timeCondition, timeCondition2, schemaCondition);

			if (this.fileterRole && this.userID != null && this.permissions != null)
			{
				allConditions.Add(VersionStrategyQuerySqlBuilder.Instance.TimePointToBuilder("AC."));
				allConditions.Add(VersionStrategyQuerySqlBuilder.Instance.TimePointToBuilder("RS."));
				allConditions.Add(VersionStrategyQuerySqlBuilder.Instance.TimePointToBuilder("UC."));
				builder.AppendItem("AC.Status", (int)SchemaObjectStatus.Normal);
				builder.AppendItem("RS.Status", (int)SchemaObjectStatus.Normal);
				builder.AppendItem("UC.Status", (int)SchemaObjectStatus.Normal);
				builder.AppendItem("UC.UserID", this.userID);

				InSqlClauseBuilder inSql1 = new InSqlClauseBuilder("AC.ContainerPermission");
				inSql1.AppendItem(this.permissions);
				allConditions.Add(inSql1);
			}

			qc.WhereClause += allConditions.ToSqlString(TSqlBuilder.Instance);
		}
		protected override void OnBuildQueryCondition(QueryCondition qc)
		{
			qc.FromClause = TimePointContext.Current.UseCurrentTime ? "SC.SchemaOrganizationSnapshot_Current O INNER JOIN SC.SchemaRelationObjectsSnapshot_Current R ON O.ID = R.ObjectID" : "SC.SchemaOrganizationSnapshot O INNER JOIN SC.SchemaRelationObjectsSnapshot R ON O.ID = R.ObjectID";
			qc.SelectFields = "O.*";
			if (string.IsNullOrEmpty(qc.OrderByClause))
				qc.OrderByClause = "R.InnerSort DESC";

			qc.WhereClause.IsNotEmpty((s) => qc.WhereClause += " AND ");

			var timeCondition = VersionStrategyQuerySqlBuilder.Instance.TimePointToBuilder("R.");

			var timeCondition2 = VersionStrategyQuerySqlBuilder.Instance.TimePointToBuilder("O.");

			var builder = new WhereSqlClauseBuilder();

			builder.AppendItem("R.Status", (int)SchemaObjectStatus.Normal);
			builder.AppendItem("R.ParentID", SCOrganization.RootOrganizationID);
			IConnectiveSqlClause clause = DataSourceUtil.SchemaTypeCondition("R.ChildSchemaType", SchemaInfo.FilterByCategory("Organizations").ToSchemaNames());
			qc.WhereClause += new ConnectiveSqlClauseCollection(builder, timeCondition, timeCondition2, clause).ToSqlString(TSqlBuilder.Instance);
		}
		protected override void OnBuildQueryCondition(QueryCondition qc)
		{
			base.OnBuildQueryCondition(qc);
			switch (deepOption)
			{
				case 1:
					qc.FromClause = this.DefaultFromClause;
					break;
				case 2:
				case 3:
					qc.FromClause = this.MakeFromClause(this.scopeType, GetUnitFullPath(this.unitID));
					break;
				default:
					throw new ArgumentException("传入的参数有误");
			}

			qc.SelectFields = "S.*,AUS.Name AS AU_Name,AUS.ID AS AU_ID";
			BuildCondition(qc);
			if (string.IsNullOrEmpty(qc.OrderByClause))
				qc.OrderByClause = " AUS.Name ASC ";
		}
		protected override void OnBuildQueryCondition(QueryCondition qc)
		{
			qc.FromClause = FromClause;
			qc.SelectFields = SelectFields;

			if (this.orderBy.IsNullOrEmpty())
				qc.OrderByClause = this.DefaultOrderBy;
			else
				qc.OrderByClause = orderBy;

			base.OnBuildQueryCondition(qc);

			WhereSqlClauseBuilder builder = new WhereSqlClauseBuilder();

			var timeCondition = VersionStrategyQuerySqlBuilder.Instance.TimePointToBuilder("R.");

			var timeCondition2 = VersionStrategyQuerySqlBuilder.Instance.TimePointToBuilder("O.");

			builder.AppendItem(ParentIdField, parentId);
			builder.AppendItem<int>("R.Status", (int)SchemaObjectStatus.Normal);
			builder.AppendItem<int>("O.Status", (int)SchemaObjectStatus.Normal);

			InnerBuildWhere(builder);
			var conditionMemberCondition = DataSourceUtil.SchemaTypeCondition("R.MemberSchemaType", this.MemberSchemaTypes);
			var conditionContainerCondition = DataSourceUtil.SchemaTypeCondition("R.ContainerSchemaType", this.ContainerSchemaTypes);

			var allCondition = new ConnectiveSqlClauseCollection(builder, conditionMemberCondition, conditionMemberCondition, timeCondition, timeCondition2);

			if (string.IsNullOrEmpty(qc.WhereClause))
			{
				qc.WhereClause = allCondition.ToSqlString(TSqlBuilder.Instance);
			}
			else
			{
				qc.WhereClause = allCondition.ToSqlString(TSqlBuilder.Instance) + " AND (" + qc.WhereClause + ")";
			}
		}
        public WfClientUserOperationLogPageQueryResult QueryUserOperationLogByResourceID(string resourceID, int startRowIndex, int maximumRows, string orderBy, int totalCount)
        {
            resourceID.CheckStringIsNullOrEmpty("resourceID");

            OperationContext.Current.FillContextToOguServiceContext();

            WhereSqlClauseBuilder builder = new WhereSqlClauseBuilder();

            builder.AppendItem("RESOURCE_ID", resourceID);

            builder.AppendTenantCode();

            if (orderBy.IsNullOrEmpty())
                orderBy = "ID DESC";

            QueryCondition qc = new QueryCondition(startRowIndex, maximumRows,
                "*",
                ORMapping.GetMappingInfo(typeof(UserOperationLog)).TableName,
                orderBy);

            qc.WhereClause = builder.ToSqlString(TSqlBuilder.Instance);

            return QueryUserOperationLog(qc, totalCount);
        }