Beispiel #1
0
        public int Delete(string[] defKeys)
        {
            StringBuilder strBuilder = new StringBuilder();

            foreach (string defKey in defKeys)
            {
                WhereSqlClauseBuilder whereBuilder = new WhereSqlClauseBuilder();

                whereBuilder.AppendItem("DEF_KEY", defKey);
                whereBuilder.AppendTenantCode(typeof(WfMatrixDefinition));

                strBuilder.Append(DELETE_SQL_CLAUSE);
                strBuilder.Append(whereBuilder.ToSqlString(TSqlBuilder.Instance));
                strBuilder.Append(TSqlBuilder.Instance.DBStatementSeperator);

                whereBuilder.Clear();
                whereBuilder.AppendItem("MATRIX_DEF_KEY", defKey);
                whereBuilder.AppendTenantCode(typeof(WfMatrixDimensionDefinition));

                strBuilder.Append(DELETE_DIMENSION_SQL_CLAUSE);
                strBuilder.Append(whereBuilder.ToSqlString(TSqlBuilder.Instance));
                strBuilder.Append(TSqlBuilder.Instance.DBStatementSeperator);
            }

            return(DbHelper.RunSqlWithTransaction(strBuilder.ToString()));
        }
        /// <summary>
        /// 根据ResourceID和ClassName加载相关的数据
        /// </summary>
        /// <typeparam name="TRelative"></typeparam>
        /// <typeparam name="TRelativeCollection"></typeparam>
        /// <param name="resourceID"></param>
        /// <param name="className"></param>
        /// <returns></returns>
        public TRelativeCollection LoadRelativeData <TRelative, TRelativeCollection>(
            string resourceID, string className)
            where TRelative : GenericFormRelativeData, new()
            where TRelativeCollection : EditableDataObjectCollectionBase <TRelative>, new()
        {
            resourceID.CheckStringIsNullOrEmpty("resourceID");
            className.CheckStringIsNullOrEmpty("className");

            WhereSqlClauseBuilder builder = new WhereSqlClauseBuilder();

            builder.AppendItem("RESOURCE_ID", resourceID).AppendItem("CLASS", className);
            builder.AppendTenantCode(typeof(TRelative));

            string sql = string.Format("SELECT * FROM WF.GENERIC_FORM_RELATIVE_DATA WHERE {0} ORDER BY SORT_ID",
                                       builder.ToSqlString(TSqlBuilder.Instance));

            DataTable table = DbHelper.RunSqlReturnDS(sql, GetConnectionName()).Tables[0];

            TRelativeCollection result = new TRelativeCollection();

            ORMapping.DataViewToCollection(result, table.DefaultView);

            foreach (TRelative item in result)
            {
                XmlDocument xmlDoc = XmlHelper.CreateDomDocument(item.XmlContent);
                XmlHelper.DeserializeToObject(xmlDoc, item);
            }

            return(result);
        }
Beispiel #3
0
        /// <summary>
        /// 获取可用的排序号
        /// </summary>
        /// <param name="userID">用户ID</param>
        /// <returns></returns>
        public int GetMaxSort(string userID)
        {
            ExceptionHelper.TrueThrow <ArgumentNullException>(null == userID, "userID");

            WhereSqlClauseBuilder builder = new WhereSqlClauseBuilder();

            builder.AppendItem("USER_ID", DeluxeIdentity.CurrentUser.ID);
            builder.AppendTenantCode(typeof(TaskCategory));

            int    result = 0;
            string strSQL = string.Format("SELECT MAX(INNER_SORT_ID) AS NUM FROM WF.USER_TASK_CATEGORY WHERE {0}",
                                          builder.ToSqlString(TSqlBuilder.Instance));

            object num = DbHelper.RunSqlReturnScalar(strSQL, ConnectionDefine.DBConnectionName);

            if (num.ToString() != string.Empty)
            {
                result = (int)num;
                //当排序号以达到最大值999时,仍返回最大值
                if (result < 999)
                {
                    result++;
                }
            }

            return(result);
        }
Beispiel #4
0
        private static StringBuilder BuildSqlClause(WfMatrixQueryParamCollection queryParams)
        {
            var matrixIdParam = queryParams.Find(p => p.QueryName == DB_FIELD_MATRIX_ID);

            string inSqlClause = string.Empty;

            foreach (var para in queryParams)
            {
                if (para == matrixIdParam)
                {
                    continue;  //|| string.IsNullOrEmpty(para.QueryValue) 空值也作为条件
                }
                inSqlClause = BuilderSubSqlClause(para, matrixIdParam.QueryValue, inSqlClause);
            }

            StringBuilder result = new StringBuilder(SELECT_SQL_CLAUSE);

            WhereSqlClauseBuilder builder = new WhereSqlClauseBuilder();

            builder.AppendItem("R." + matrixIdParam.QueryName, matrixIdParam.QueryValue);
            builder.AppendTenantCode("R.TENANT_CODE");

            result.Append(builder.ToSqlString(TSqlBuilder.Instance));

            if (!string.IsNullOrEmpty(inSqlClause))
            {
                result.AppendFormat(" AND R.{0} IN ({1})", DB_FIELD_MATRIX_ROW_ID, inSqlClause);
            }

            return(result);
        }
Beispiel #5
0
        /// <summary>
        /// 按照条件加载对象
        /// </summary>
        /// <param name="loadingCondition">筛选和排序条件</param>
        /// <param name="mappings"></param>
        /// <returns>对象集合</returns>
        public TCollection Load(WhereLoadingCondition loadingCondition, ORMappingItemCollection mappings = null)
        {
            loadingCondition.NullCheck("loadingCondition");

            if (mappings == null)
            {
                mappings = this.GetQueryMappingInfo();
            }

            TCollection result = default(TCollection);

            PerformanceMonitorHelper.GetDefaultMonitor().WriteExecutionDuration(string.Format("Load({0})", this.GetType().FullName), () =>
            {
                loadingCondition.BuilderAction.NullCheck("whereAction");

                WhereSqlClauseBuilder builder = new WhereSqlClauseBuilder();

                loadingCondition.BuilderAction(builder);

                builder.AppendTenantCode(typeof(T));

                OrderBySqlClauseBuilder orderByBuilder = null;

                if (loadingCondition.OrderByAction != null)
                {
                    orderByBuilder = new OrderBySqlClauseBuilder();

                    loadingCondition.OrderByAction(orderByBuilder);
                }

                result = this.InnerLoadByBuilder(builder.ToSqlString(TSqlBuilder.Instance), orderByBuilder, mappings);
            });

            return(result);
        }
        private void ExecQuery()
        {
            //重新收集所需要的查询内容
            bindingControl.CollectData();

            QueryCondition.ApplicationName = FormCategory.SelectedValue;
            QueryCondition.ApplicationName =
                (QueryCondition.ApplicationName == "" || QueryCondition.ApplicationName == "全部") ? "" : QueryCondition.ApplicationName;

            QueryCondition.ProgramName = ProgramName.SelectedValue;
            QueryCondition.ProgramName =
                (QueryCondition.ProgramName == "" || QueryCondition.ProgramName == "全部") ? "" : QueryCondition.ProgramName;

            //对某些查询内容进行格式处理
            WhereSqlClauseBuilder builder = ConditionMapping.GetWhereSqlClauseBuilder(QueryCondition,
                                                                                      new AdjustConditionValueDelegate(AdjustQueryConditionValue));

            builder.AppendTenantCode();

            //对数据源中的where进行赋值操作,自动完成查询操作
            whereCondition.Value = builder.ToSqlString(TSqlBuilder.Instance);

            if (whereCondition.Value != "")
            {
                whereCondition.Value += " AND";
            }

            whereCondition.Value += " RESOURCE_ID IS NOT NULL";

            LastQueryRowCount = -1;
        }
Beispiel #7
0
        public EmailMessageCollection LoadCandidateMessages(int batchCount)
        {
            string topDesp = batchCount >= 0 ? string.Format(" TOP {0} ", batchCount) : string.Empty;

            WhereSqlClauseBuilder builder = new WhereSqlClauseBuilder();

            builder.AppendItem("1", 1);
            builder.AppendTenantCode();

            string sql = string.Format("SELECT {0}* FROM MSG.EMAIL_MESSAGES WITH (UPDLOCK, READPAST) WHERE {1} ORDER BY SORT_ID",
                                       topDesp,
                                       builder.ToSqlString(TSqlBuilder.Instance));

            EmailMessageCollection result = new EmailMessageCollection();

            DataTable table = DbHelper.RunSqlReturnDS(sql, GetConnectionName()).Tables[0];

            foreach (DataRow row in table.Rows)
            {
                EmailMessage message = new EmailMessage();

                DataRowToEmailMessage(row, message);

                result.Add(message);
            }

            return(result);
        }
Beispiel #8
0
        /// <summary>
        /// 获得指定ID的Material
        /// </summary>
        /// <param name="materialID">指定ID</param>
        /// <returns>MaterialList</returns>
        public MaterialList LoadMaterialByMaterialID(string materialID)
        {
            ExceptionHelper.CheckStringIsNullOrEmpty(materialID, "materialID");

            MaterialList materials = new MaterialList();

            WhereSqlClauseBuilder wBuilder = new WhereSqlClauseBuilder();

            wBuilder.AppendItem("ID", materialID);
            wBuilder.AppendTenantCode(typeof(Material));

            string sql = "SELECT * FROM WF.MATERIAL WHERE " + wBuilder.ToSqlString(TSqlBuilder.Instance);

            using (DbContext dbi = DbHelper.GetDBContext(GetConnectionName()))
            {
                using (IDataReader dr = DbHelper.RunSqlReturnDR(sql, GetConnectionName()))
                {
                    while (dr.Read())
                    {
                        Material material = new Material();

                        ORMapping.DataReaderToObject(dr, material);

                        materials.Add(material);
                    }
                }
            }

            DecorateMaterials(materials);

            return(materials);
        }
        public void UpdateProcessStatus(IEnumerable <IWfProcess> processes)
        {
            processes.NullCheck("processes");

            StringBuilder strB = new StringBuilder();

            foreach (IWfProcess process in processes)
            {
                if (process.SearchID.IsNotEmpty())
                {
                    if (strB.Length > 0)
                    {
                        strB.Append(TSqlBuilder.Instance.DBStatementSeperator);
                    }

                    WhereSqlClauseBuilder builder = new WhereSqlClauseBuilder();

                    builder.AppendItem("RESOURCE_ID", process.SearchID);
                    builder.AppendTenantCode(typeof(AppCommonInfo));

                    strB.AppendFormat("UPDATE WF.APPLICATIONS_COMMON_INFO SET COMPLETED_FLAG = {0} WHERE {1}",
                                      (int)AppCommonInfo.ConvertProcessStatusToCompletedFlag(process.Status),
                                      builder.ToSqlString(TSqlBuilder.Instance));
                }
            }

            if (strB.Length > 0)
            {
                DbHelper.RunSqlWithTransaction(strB.ToString(), this.GetConnectionName());
            }
        }
Beispiel #10
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="ids"></param>
        /// <returns>无法删除的ID列表</returns>
        public string[] Delete(string[] ids)
        {
            StringBuilder strBuilder = new StringBuilder();
            List <string> result     = new List <string>();

            foreach (string id in ids)
            {
                if (CheckScheduleInJob(id))
                {
                    result.Add(id);
                    continue;
                }

                WhereSqlClauseBuilder whereBuilder = new WhereSqlClauseBuilder();

                whereBuilder.AppendItem("SCHEDULE_ID", id);
                whereBuilder.AppendTenantCode(typeof(JobSchedule));

                strBuilder.Append(DELETE_JOB_SCHEDULE_DEF_SQL_CLAUSE);
                strBuilder.Append(whereBuilder.ToSqlString(TSqlBuilder.Instance));
                strBuilder.Append(TSqlBuilder.Instance.DBStatementSeperator);
            }
            if (!string.IsNullOrEmpty(strBuilder.ToString()))
            {
                using (TransactionScope tran = TransactionScopeFactory.Create())
                {
                    DbHelper.RunSqlWithTransaction(strBuilder.ToString(), GetConnectionName());
                    tran.Complete();
                }
            }
            return(result.ToArray());
        }
        /// <summary>
        /// 按照ResourceID来更新数据
        /// </summary>
        /// <param name="resourceID"></param>
        /// <param name="assignees"></param>
        public virtual void Update(string resourceID, TTaskAssigneeCollection assignees)
        {
            resourceID.CheckStringIsNullOrEmpty("resourceID");
            assignees.NullCheck("assignees");

            StringBuilder strB = new StringBuilder();

            ORMappingItemCollection mappings = GetMappingInfo(new Dictionary <string, object>());

            WhereSqlClauseBuilder wBuilder = new WhereSqlClauseBuilder();

            wBuilder.AppendItem("RESOURCE_ID", resourceID);
            wBuilder.AppendTenantCode();

            strB.AppendFormat("DELETE {0} WHERE {1}",
                              mappings.TableName,
                              wBuilder.ToSqlString(TSqlBuilder.Instance));

            foreach (TTaskAssignee assignee in assignees)
            {
                strB.Append(TSqlBuilder.Instance.DBStatementSeperator);

                InsertSqlClauseBuilder builder = ORMapping.GetInsertSqlClauseBuilder(assignee, mappings);

                strB.AppendFormat("INSERT INTO {0}{1}",
                                  mappings.TableName,
                                  builder.ToSqlString(TSqlBuilder.Instance));
            }

            DbHelper.RunSqlWithTransaction(strB.ToString(), GetConnectionName());
        }
Beispiel #12
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="whereAction"></param>
        /// <param name="timePoint">时间点</param>
        /// <param name="mappings"></param>
        /// <returns></returns>
        public bool Exists(Action <WhereSqlClauseBuilder> whereAction, DateTime timePoint, ORMappingItemCollection mappings = null)
        {
            whereAction.NullCheck("whereAction");

            if (mappings == null)
            {
                mappings = this.GetQueryMappingInfo();
            }

            WhereSqlClauseBuilder builder = new WhereSqlClauseBuilder();

            whereAction(builder);
            builder.AppendTenantCode(typeof(T));

            ConnectiveSqlClauseCollection timePointBuilder = VersionStrategyQuerySqlBuilder.Instance.TimePointToBuilder(timePoint);

            timePointBuilder.Add(builder);

            string sql = string.Format("SELECT TOP 1 * FROM {0}", GetQueryTableName(mappings, timePoint));

            if (builder.Count > 0)
            {
                sql = sql + string.Format(" WHERE {0}", timePointBuilder.ToSqlString(TSqlBuilder.Instance));
            }

            return((int)DbHelper.RunSqlReturnDS(sql, GetConnectionName()).Tables[0].Rows.Count > 0);
        }
        public WfClientProcessCurrentInfoPageQueryResult QueryProcesses(WfClientProcessQueryCondition condition, int startRowIndex, int maximumRows, string orderBy, int totalCount)
        {
            condition.NullCheck("condition");

            OperationContext.Current.FillContextToOguServiceContext();

            WfProcessQueryCondition serverCondition = null;

            WfClientProcessQueryConditionConverter.Instance.ClientToServer(condition, ref serverCondition);

            if (orderBy.IsNullOrEmpty())
            {
                orderBy = "START_TIME DESC";
            }

            ConnectiveSqlClauseCollection connective = serverCondition.ToSqlBuilder();

            WhereSqlClauseBuilder builder = new WhereSqlClauseBuilder();

            builder.AppendItem("COMMITTED", "1");
            builder.AppendTenantCode();

            connective.Add(builder);

            QueryCondition qc = new QueryCondition(startRowIndex, maximumRows,
                                                   ORMapping.GetSelectFieldsNameSql <WfProcessCurrentInfo>(),
                                                   ORMapping.GetMappingInfo(typeof(WfProcessCurrentInfo)).TableName,
                                                   orderBy);

            qc.WhereClause += connective.ToSqlString(TSqlBuilder.Instance);

            return(QueryProcessInfo(qc, totalCount));
        }
Beispiel #14
0
        /// <summary>
        /// 按照条件加载对象
        /// </summary>
        /// <param name="whereAction">筛选条件</param>
        /// <param name="orderByAction">排序条件</param>
        /// <param name="mappings"></param>
        /// <returns>对象集合</returns>
        public TCollection Load(Action <WhereSqlClauseBuilder> whereAction, Action <OrderBySqlClauseBuilder> orderByAction, ORMappingItemCollection mappings)
        {
            TCollection result = null;

            PerformanceMonitorHelper.GetDefaultMonitor().WriteExecutionDuration(string.Format("Load({0})", this.GetType().FullName), () =>
            {
                whereAction.NullCheck("whereAction");

                WhereSqlClauseBuilder builder = new WhereSqlClauseBuilder();

                whereAction(builder);

                builder.AppendTenantCode(typeof(T));

                OrderBySqlClauseBuilder orderByBuilder = null;

                if (orderByAction != null)
                {
                    orderByBuilder = new OrderBySqlClauseBuilder();

                    orderByAction(orderByBuilder);
                }

                result = InnerLoadByBuilder(builder.ToSqlString(TSqlBuilder.Instance), orderByBuilder, mappings);
            });

            return(result);
        }
Beispiel #15
0
        public MaterialList LoadVersionMaterialsBySceneKey(string resourceID, string wfActivityName)
        {
            MaterialList copyVersionMaterials = new MaterialList();

            WhereSqlClauseBuilder whereSqlClause = new WhereSqlClauseBuilder();

            whereSqlClause.AppendItem("RESOURCE_ID", resourceID);
            whereSqlClause.AppendItem("VERSION_TYPE", Convert.ToInt16(MaterialVersionType.CopyVersion).ToString());
            whereSqlClause.AppendItem("WF_ACTIVITY_NAME", wfActivityName);
            whereSqlClause.AppendTenantCode(typeof(Material));

            string sql = string.Format("SELECT * FROM WF.MATERIAL WHERE {0}",
                                       whereSqlClause.ToSqlString(TSqlBuilder.Instance));

            using (DbContext dbi = DbHelper.GetDBContext(GetConnectionName()))
            {
                using (IDataReader dr = DbHelper.RunSqlReturnDR(sql, GetConnectionName()))
                {
                    while (dr.Read())
                    {
                        Material material = new Material();

                        ORMapping.DataReaderToObject(dr, material);

                        copyVersionMaterials.Add(material);
                    }
                }
            }

            DecorateMaterials(copyVersionMaterials);

            return(copyVersionMaterials);
        }
Beispiel #16
0
        public WfProcessDescriptorInfoCollection LoadWfProcessDescriptionInfos(Action <WhereSqlClauseBuilder> action, bool ignoreProcessData)
        {
            action.NullCheck("action");

            WhereSqlClauseBuilder builder = new WhereSqlClauseBuilder();

            builder.AppendTenantCode();
            action(builder);

            string sqlFieldStr = ignoreProcessData ? ORMapping.GetSelectFieldsNameSql <WfProcessDescriptorInfo>("DATA") : "*";

            string sql = string.Format("SELECT {0} FROM WF.PROCESS_DESCRIPTORS WHERE {1}",
                                       sqlFieldStr, builder.ToSqlString(TSqlBuilder.Instance));

            WfProcessDescriptorInfoCollection result = new WfProcessDescriptorInfoCollection();

            DataTable table = DbHelper.RunSqlReturnDS(sql, this.GetConnectionName()).Tables[0];

            foreach (DataRow row in table.Rows)
            {
                WfProcessDescriptorInfo wfProcessDescInfo = new WfProcessDescriptorInfo();
                ORMapping.DataRowToObject(row, wfProcessDescInfo);

                result.Add(wfProcessDescInfo);
            }

            return(result);
        }
Beispiel #17
0
        public int Delete(string wfMatrixID)
        {
            WhereSqlClauseBuilder whereBuilder = new WhereSqlClauseBuilder();

            whereBuilder.AppendItem(DB_FIELD_MATRIX_ID, wfMatrixID);
            whereBuilder.AppendTenantCode();

            StringBuilder strBuilder = new StringBuilder();

            strBuilder.Append(DELETE_SQL_CLAUSE);
            strBuilder.Append(whereBuilder.ToSqlString(TSqlBuilder.Instance));

            strBuilder.Append(TSqlBuilder.Instance.DBStatementSeperator);

            strBuilder.Append(DELETE_MR_SQL_CLAUSE);
            strBuilder.Append(whereBuilder.ToSqlString(TSqlBuilder.Instance));

            strBuilder.Append(TSqlBuilder.Instance.DBStatementSeperator);

            strBuilder.Append(DELETE_MC_SQL_CLAUSE);
            strBuilder.Append(whereBuilder.ToSqlString(TSqlBuilder.Instance));

            strBuilder.Append(TSqlBuilder.Instance.DBStatementSeperator);

            strBuilder.Append(DELETE_MU_SQL_CLAUSE);
            strBuilder.Append(whereBuilder.ToSqlString(TSqlBuilder.Instance));

            return(DbHelper.RunSqlWithTransaction(strBuilder.ToString()));
        }
Beispiel #18
0
        protected override void AfterInnerUpdate(WfMatrixDefinition data, Dictionary <string, object> context)
        {
            StringBuilder strB = new StringBuilder();

            WhereSqlClauseBuilder builder = new WhereSqlClauseBuilder();

            builder.AppendItem("MATRIX_DEF_KEY", data.Key);
            builder.AppendTenantCode(typeof(WfMatrixDimensionDefinition));

            strB.AppendFormat("{0} {1}",
                              DELETE_DIMENSION_SQL_CLAUSE,
                              builder.ToSqlString(TSqlBuilder.Instance));

            foreach (WfMatrixDimensionDefinition dd in data.Dimensions)
            {
                if (strB.Length > 0)
                {
                    strB.Append(TSqlBuilder.Instance.DBStatementSeperator);
                }

                strB.Append(ORMapping.GetInsertSql(dd, TSqlBuilder.Instance));
            }

            if (strB.Length > 0)
            {
                DbHelper.RunSql(strB.ToString(), GetConnectionName());
            }

            CacheNotifyData notifyData = new CacheNotifyData(typeof(WfMatrixDefinitionCache), CalculateCacheKey(data.Key), CacheNotifyType.Invalid);

            UdpCacheNotifier.Instance.SendNotifyAsync(notifyData);
            MmfCacheNotifier.Instance.SendNotify(notifyData);
        }
Beispiel #19
0
        /// <summary>
        /// 解锁
        /// </summary>
        /// <param name="lockEntity">锁实体</param>
        public static void Unlock(params Lock[] lockEntity)
        {
            ExceptionHelper.FalseThrow <ArgumentNullException>(lockEntity != null, "lockEntity");

            StringBuilder strWhere = new StringBuilder(255);

            for (int i = 0; i < lockEntity.Length; i++)
            {
                if (strWhere.Length > 0)
                {
                    strWhere.Append(" OR ");
                }

                WhereSqlClauseBuilder objWCB = new WhereSqlClauseBuilder();

                objWCB.AppendItem("LOCK_ID", lockEntity[i].LockID);
                objWCB.AppendItem("LOCK_PERSON_ID", lockEntity[i].PersonID);
                objWCB.AppendTenantCode();

                strWhere.AppendFormat("({0})", objWCB.ToSqlString(TSqlBuilder.Instance));
            }

            if (strWhere.Length > 0)
            {
                string sql = string.Format("DELETE FROM WF.LOCK WHERE {0}", strWhere.ToString());

                DbHelper.RunSqlWithTransaction(sql);
            }
        }
Beispiel #20
0
        public WfClientUserOperationLogPageQueryResult QueryUserOperationLogByProcessID(string processID, int startRowIndex, int maximumRows, string orderBy, int totalCount)
        {
            processID.CheckStringIsNullOrEmpty("processID");

            OperationContext.Current.FillContextToOguServiceContext();

            WhereSqlClauseBuilder builder = new WhereSqlClauseBuilder();

            builder.AppendItem("PROCESS_ID", processID);

            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));
        }
Beispiel #21
0
        /// <summary>
        /// 拼成查询条件
        /// </summary>
        private void BuildWhereClause()
        {
            WhereSqlClauseBuilder wherebuilder = ConditionMapping.GetWhereSqlClauseBuilder(this.QueryCondition);

            wherebuilder.AppendTenantCode();

            this.whereCondition.Value = wherebuilder.ToSqlString(TSqlBuilder.Instance);
        }
        private static WhereSqlClauseBuilder GetWhereSqlClauseBuilder(string key)
        {
            WhereSqlClauseBuilder builder = new WhereSqlClauseBuilder();

            builder.AppendItem("[KEY]", key);
            builder.AppendTenantCode(typeof(WfGlobalParameters));

            return(builder);
        }
Beispiel #23
0
        private static WhereSqlClauseBuilder PrepareProcessKeyWhereBuilder(string processKey)
        {
            WhereSqlClauseBuilder builder = new WhereSqlClauseBuilder();

            builder.AppendItem("PROCESS_KEY", processKey);
            builder.AppendTenantCode();

            return(builder);
        }
        /// <summary>
        /// 增加ROLE_ID的查询条件
        /// </summary>
        /// <param name="roleID"></param>
        /// <returns></returns>
        public static string ToRoleIDCriteria(this string roleID)
        {
            roleID.CheckStringIsNullOrEmpty("roleID");

            WhereSqlClauseBuilder builder = new WhereSqlClauseBuilder();

            builder.AppendItem("ROLE_ID", roleID);
            builder.AppendTenantCode();

            return builder.ToSqlString(TSqlBuilder.Instance);
        }
Beispiel #25
0
        internal void FillMatrixRows(string matrixID, WfMatrixRowCollection rows)
        {
            WhereSqlClauseBuilder whereBuilder = new WhereSqlClauseBuilder();

            whereBuilder.AppendItem("R." + DB_FIELD_MATRIX_ID, matrixID);
            whereBuilder.AppendTenantCode("R.TENANT_CODE");

            DataSet ds = DbHelper.RunSqlReturnDS(SELECT_SQL_CLAUSE + whereBuilder.ToSqlString(TSqlBuilder.Instance));

            rows.CopyFrom(ds.Tables[0].DefaultView);
        }
Beispiel #26
0
        /// <summary>
        /// 增加ROLE_ID的查询条件
        /// </summary>
        /// <param name="roleID"></param>
        /// <returns></returns>
        public static string ToRoleIDCriteria(this string roleID)
        {
            roleID.CheckStringIsNullOrEmpty("roleID");

            WhereSqlClauseBuilder builder = new WhereSqlClauseBuilder();

            builder.AppendItem("ROLE_ID", roleID);
            builder.AppendTenantCode();

            return(builder.ToSqlString(TSqlBuilder.Instance));
        }
Beispiel #27
0
        private static DataTable LoadAddresses(string messageID)
        {
            WhereSqlClauseBuilder builder = new WhereSqlClauseBuilder();

            builder.AppendItem("MESSAGE_ID", messageID);
            builder.AppendTenantCode();

            string sql = string.Format("SELECT * FROM MSG.EMAIL_ADDRESSES WHERE {0}",
                                       builder.ToSqlString(TSqlBuilder.Instance));

            return(DbHelper.RunSqlReturnDS(sql, GetConnectionName()).Tables[0]);
        }
        private void ExecuteQuery()
        {
            WhereSqlClauseBuilder builder = new WhereSqlClauseBuilder();
            string appName = string.IsNullOrEmpty(txtApplicationName.Text) == true ? "全部" : txtApplicationName.Text;

            if (appName.IsNotEmpty())
            {
                if ("全部" == appName)
                {
                    if (!RolesDefineConfig.GetConfig().IsCurrentUserInRoles("ProcessAdmin"))
                    {
                        InSqlClauseBuilder inBuilder = new InSqlClauseBuilder();
                        inBuilder.AppendItem(AllApplicationNames());
                        builder.AppendItem("APPLICATION_NAME", inBuilder.ToSqlStringWithInOperator(TSqlBuilder.Instance), "", true);
                    }
                }
                else
                {
                    if ("其它" == appName)
                    {
                        builder.AppendItem("APPLICATION_NAME", " ");
                    }
                    else
                    {
                        builder.AppendItem("APPLICATION_NAME", appName);
                    }
                }
            }

            if (!string.IsNullOrEmpty(txtProgramName.Text))
            {
                builder.AppendItem("PROGRAM_NAME", "%" + TSqlBuilder.Instance.CheckQuotationMark(txtProgramName.Text, false) + "%", "like");
            }

            if (!string.IsNullOrEmpty(txtProcessKey.Text))
            {
                builder.AppendItem("PROCESS_KEY", "%" + TSqlBuilder.Instance.CheckQuotationMark(txtProcessKey.Text, false) + "%", "like");
            }

            if (!string.IsNullOrEmpty(txtProcessName.Text))
            {
                builder.AppendItem("PROCESS_NAME", "%" + TSqlBuilder.Instance.CheckQuotationMark(txtProcessName.Text, false) + "%", "like");
            }

            if (!string.IsNullOrEmpty(ddlEnabled.SelectedValue))
            {
                builder.AppendItem("ENABLED", TSqlBuilder.Instance.CheckQuotationMark(ddlEnabled.SelectedValue, false));
            }

            builder.AppendTenantCode();

            this.BindGrid(builder);
        }
Beispiel #29
0
        /// <summary>
        /// 删除待办箱分类
        /// </summary>
        /// <param name="categoryGuid">处理夹ID</param>
        public void DeleteCategory(string categoryID)
        {
            WhereSqlClauseBuilder builder = new WhereSqlClauseBuilder();

            builder.AppendItem("CATEGORY_GUID", categoryID);
            builder.AppendTenantCode(typeof(TaskCategory));

            string strSql = "UPDATE USER_TASK SET CATEGORY_GUID = NULL WHERE " + builder.ToSqlString(TSqlBuilder.Instance) + ";";

            strSql += " DELETE WF.USER_TASK_CATEGORY WHERE " + builder.ToSqlString(TSqlBuilder.Instance);

            DbHelper.RunSqlWithTransaction(strSql, ConnectionDefine.DBConnectionName);
        }
Beispiel #30
0
        private bool CheckScheduleInJob(string schID)
        {
            WhereSqlClauseBuilder whereBuilder = new WhereSqlClauseBuilder();

            whereBuilder.AppendItem("SCHEDULE_ID", schID);
            whereBuilder.AppendTenantCode(typeof(JobSchedule));

            DataSet ds = DbHelper.RunSqlReturnDS(
                JobBaseAdapter.SELECT_JOB_SCHEDULES_ID_CLAUSE + whereBuilder.ToSqlString(TSqlBuilder.Instance),
                GetConnectionName());

            return(ds.Tables[0].Rows.Count != 0 ? true : false);
        }
Beispiel #31
0
        public ConnectiveSqlClauseCollection GetAclQueryConditionsByUser(string userID)
        {
            ConnectiveSqlClauseCollection result = new ConnectiveSqlClauseCollection(LogicOperatorDefine.Or);

            WhereSqlClauseBuilder builderUser = new WhereSqlClauseBuilder();

            builderUser.AppendItem("OBJECT_ID", userID);
            builderUser.AppendTenantCode();

            result.Add(builderUser);

            return(result);
        }
Beispiel #32
0
		public static CheckLockResult CheckLock(string lockID, string personID)
		{
			ExceptionHelper.CheckStringIsNullOrEmpty(lockID, "lockID");
			ExceptionHelper.CheckStringIsNullOrEmpty(personID, "personID");

            WhereSqlClauseBuilder builder = new WhereSqlClauseBuilder();

            builder.AppendItem("LOCK_ID", lockID);
            builder.AppendTenantCode();

			string sql = string.Format("SELECT *, GETDATE() AS [CURRENT_TIME] FROM WF.LOCK WHERE {0}",
                builder.ToSqlString(TSqlBuilder.Instance));

			DataTable table = DbHelper.RunSqlReturnDS(sql).Tables[0];

			return new CheckLockResult(personID, table);
		}
        public WfClientUserOperationLogPageQueryResult QueryUserOperationLogByProcessID(string processID, int startRowIndex, int maximumRows, string orderBy, int totalCount)
        {
            processID.CheckStringIsNullOrEmpty("processID");

            OperationContext.Current.FillContextToOguServiceContext();

            WhereSqlClauseBuilder builder = new WhereSqlClauseBuilder();

            builder.AppendItem("PROCESS_ID", processID);

            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);
        }
        /// <summary>
        /// 删除EmailMessage
        /// </summary>
        /// <param name="action"></param>
        public void Delete(Action<WhereSqlClauseBuilder> action)
        {
            action.NullCheck("action");

            WhereSqlClauseBuilder builder = new WhereSqlClauseBuilder();

            action(builder);
            builder.AppendTenantCode();

            StringBuilder strB = new StringBuilder();

            using (StringWriter writer = new StringWriter(strB))
            {
                WriteDeleteEmailAddressesSql(writer, builder);
                WriteDeleteEmailAttachmentsSql(writer, builder);
                writer.WriteLine("DELETE MSG.EMAIL_MESSAGES WHERE {0}",
                    builder.ToSqlString(TSqlBuilder.Instance));
            }

            DbHelper.RunSqlWithTransaction(strB.ToString(), GetConnectionName());
        }
        private void ExecuteQuery()
        {
            WhereSqlClauseBuilder builder = new WhereSqlClauseBuilder();
            string appName = string.IsNullOrEmpty(txtApplicationName.Text) == true ? "全部" : txtApplicationName.Text;
            if (appName.IsNotEmpty())
            {
                if ("全部" == appName)
                {
                    if (!RolesDefineConfig.GetConfig().IsCurrentUserInRoles("ProcessAdmin"))
                    {
                        InSqlClauseBuilder inBuilder = new InSqlClauseBuilder();
                        inBuilder.AppendItem(AllApplicationNames());
                        builder.AppendItem("APPLICATION_NAME", inBuilder.ToSqlStringWithInOperator(TSqlBuilder.Instance), "", true);
                    }
                }
                else
                {
                    if ("其它" == appName)
                    {
                        builder.AppendItem("APPLICATION_NAME", " ");
                    }
                    else
                    {
                        builder.AppendItem("APPLICATION_NAME", appName);
                    }
                }
            }

            if (!string.IsNullOrEmpty(txtProgramName.Text))
                builder.AppendItem("PROGRAM_NAME", "%" + TSqlBuilder.Instance.CheckQuotationMark(txtProgramName.Text, false) + "%", "like");

            if (!string.IsNullOrEmpty(txtProcessKey.Text))
                builder.AppendItem("PROCESS_KEY", "%" + TSqlBuilder.Instance.CheckQuotationMark(txtProcessKey.Text, false) + "%", "like");

            if (!string.IsNullOrEmpty(txtProcessName.Text))
                builder.AppendItem("PROCESS_NAME", "%" + TSqlBuilder.Instance.CheckQuotationMark(txtProcessName.Text, false) + "%", "like");

            if (!string.IsNullOrEmpty(ddlEnabled.SelectedValue))
                builder.AppendItem("ENABLED", TSqlBuilder.Instance.CheckQuotationMark(ddlEnabled.SelectedValue, false));

            builder.AppendTenantCode();

            this.BindGrid(builder);
        }
        /// <summary>
        /// 用户或角色直接所属的角色矩阵ID
        /// </summary>
        /// <param name="operatorIDs">用户或角色所属的角色矩阵ID集合</param>
        /// <returns></returns>
        public List<string> OperatorBelongToRoleIDsDirectly(params string[] operatorIDs)
        {
            operatorIDs.NullCheck("userIDs");

            List<string> result = new List<string>();

            InSqlClauseBuilder inBuilder = new InSqlClauseBuilder("OPERATOR_ID");

            inBuilder.AppendItem(operatorIDs);

            if (inBuilder.IsEmpty == false)
            {
                WhereSqlClauseBuilder tenantBuilder = new WhereSqlClauseBuilder();

                tenantBuilder.AppendTenantCode();

                string tenantCriteria = string.Empty;

                if (tenantBuilder.IsEmpty == false)
                    tenantCriteria = " AND " + tenantBuilder.ToSqlString(TSqlBuilder.Instance);

                string sql = string.Format("SELECT ROLE_ID FROM WF.ROLE_PROPERTIES_USER_CONTAINERS WHERE {0}{1}",
                    inBuilder.ToSqlString(TSqlBuilder.Instance), tenantCriteria);

                using (DbContext context = DbContext.GetContext(GetConnectionName()))
                {
                    Database db = DatabaseFactory.Create(context);

                    DbCommand cmd = db.GetSqlStringCommand(sql);

                    using (var dr = db.ExecuteReader(cmd))
                    {
                        while (dr.Read())
                            result.Add(dr.GetString(0));
                    }
                }
            }

            return result;
        }
        /// <summary>
        /// 获得指定ID的副本 和 它之前的一切副本 按照时间正排序 
        /// </summary>
        /// <param name="id">id</param>
        /// <returns>MaterialList</returns>
        public MaterialList GetPreMaterialsCopyVersion(string id)
        {
            ExceptionHelper.CheckStringIsNullOrEmpty(id, "id");

            WhereSqlClauseBuilder whereSqlClause = new WhereSqlClauseBuilder();

            whereSqlClause.AppendItem("PARENT_ID",
                string.Format("(SELECT PARENT_ID FROM WF.MATERIAL WHERE ID = {0})", TSqlBuilder.Instance.CheckQuotationMark(id, true)), "=", true);

            whereSqlClause.AppendItem("MODIFY_TIME",
                string.Format("(SELECT MODIFY_TIME FROM WF.MATERIAL WHERE ID = {0})", TSqlBuilder.Instance.CheckQuotationMark(id, true)), "<=", true);

            whereSqlClause.AppendTenantCode(typeof(Material));

            OrderBySqlClauseBuilder orderBySqlClause = new OrderBySqlClauseBuilder();

            orderBySqlClause.AppendItem("MODIFY_TIME", FieldSortDirection.Ascending);

            string sql = string.Format(@"SELECT * FROM WF.MATERIAL 
				WHERE {0} AND VERSION_TYPE = {1} ORDER BY {2}",
                whereSqlClause.ToSqlString(TSqlBuilder.Instance),
                Convert.ToInt16(MaterialVersionType.CopyVersion),
                orderBySqlClause.ToSqlString(TSqlBuilder.Instance));

            MaterialList materials = new MaterialList();

            using (DbContext dbi = DbHelper.GetDBContext(GetConnectionName()))
            {
                using (IDataReader dr = DbHelper.RunSqlReturnDR(sql, GetConnectionName()))
                {
                    while (dr.Read())
                    {
                        Material material = new Material();

                        ORMapping.DataReaderToObject(dr, material);

                        materials.Add(material);
                    }
                }
            }

            return materials;
        }
        /// <summary>
        /// 获得指定ID的Material
        /// </summary>
        /// <param name="materialID">指定ID</param>
        /// <returns>MaterialList</returns>
        public MaterialList LoadMaterialByMaterialID(string materialID)
        {
            ExceptionHelper.CheckStringIsNullOrEmpty(materialID, "materialID");

            MaterialList materials = new MaterialList();

            WhereSqlClauseBuilder wBuilder = new WhereSqlClauseBuilder();

            wBuilder.AppendItem("ID", materialID);
            wBuilder.AppendTenantCode(typeof(Material));

            string sql = "SELECT * FROM WF.MATERIAL WHERE " + wBuilder.ToSqlString(TSqlBuilder.Instance);

            using (DbContext dbi = DbHelper.GetDBContext(GetConnectionName()))
            {
                using (IDataReader dr = DbHelper.RunSqlReturnDR(sql, GetConnectionName()))
                {
                    while (dr.Read())
                    {
                        Material material = new Material();

                        ORMapping.DataReaderToObject(dr, material);

                        materials.Add(material);
                    }
                }
            }

            DecorateMaterials(materials);

            return materials;
        }
Beispiel #39
0
		/// <summary>
		/// 解锁
		/// </summary>
		/// <param name="lockEntity">锁实体</param>
		public static void Unlock(params Lock[] lockEntity)
		{
			ExceptionHelper.FalseThrow<ArgumentNullException>(lockEntity != null, "lockEntity");

			StringBuilder strWhere = new StringBuilder(255);

			for (int i = 0; i < lockEntity.Length; i++)
			{
				if (strWhere.Length > 0)
					strWhere.Append(" OR ");

				WhereSqlClauseBuilder objWCB = new WhereSqlClauseBuilder();

				objWCB.AppendItem("LOCK_ID", lockEntity[i].LockID);
				objWCB.AppendItem("LOCK_PERSON_ID", lockEntity[i].PersonID);
                objWCB.AppendTenantCode();

				strWhere.AppendFormat("({0})", objWCB.ToSqlString(TSqlBuilder.Instance));
			}

			if (strWhere.Length > 0)
			{
				string sql = string.Format("DELETE FROM WF.LOCK WHERE {0}", strWhere.ToString());

				DbHelper.RunSqlWithTransaction(sql);
			}
		}
        private static string GetUpdateSql(WfPersistQueue pq)
        {
            ORMappingItemCollection mappingInfo = ORMapping.GetMappingInfo(pq.GetType());

            UpdateSqlClauseBuilder uBuilder = ORMapping.GetUpdateSqlClauseBuilder(pq, mappingInfo, "UpdateTag");

            uBuilder.AppendItem("UPDATE_TAG", "WF.PROCESS_INSTANCES.UPDATE_TAG", "=", true);

            WhereSqlClauseBuilder wBuilder = new WhereSqlClauseBuilder();

            wBuilder.AppendItem("PROCESS_ID", pq.ProcessID);
            wBuilder.AppendTenantCode();

            string sql = string.Format("UPDATE {0} SET {1} FROM {0} INNER JOIN WF.PROCESS_INSTANCES ON INSTANCE_ID = PROCESS_ID WHERE {2}",
                mappingInfo.TableName,
                uBuilder.ToSqlString(TSqlBuilder.Instance),
                wBuilder.ToSqlString(TSqlBuilder.Instance));

            return sql;
        }
        /// <summary>
        /// 获取可用的排序号
        /// </summary>
        /// <param name="userID">用户ID</param>
        /// <returns></returns>
        public int GetMaxSort(string userID)
        {
            ExceptionHelper.TrueThrow<ArgumentNullException>(null == userID, "userID");

            WhereSqlClauseBuilder builder = new WhereSqlClauseBuilder();

            builder.AppendItem("USER_ID", DeluxeIdentity.CurrentUser.ID);
            builder.AppendTenantCode(typeof(TaskCategory));

            int result = 0;
            string strSQL = string.Format("SELECT MAX(INNER_SORT_ID) AS NUM FROM WF.USER_TASK_CATEGORY WHERE {0}",
                builder.ToSqlString(TSqlBuilder.Instance));

            object num = DbHelper.RunSqlReturnScalar(strSQL);

            if (num.ToString() != string.Empty)
            {
                result = (int)num;
                //当排序号以达到最大值999时,仍返回最大值
                if (result < 999)
                {
                    result++;
                }
            }

            return result;
        }
        /// <summary>
        /// 根据角色ID判断哪些角色有了扩展属性定义
        /// </summary>
        /// <param name="roleIDs"></param>
        /// <returns></returns>
        public Dictionary<string, bool> AreExist(IEnumerable<string> roleIDs)
        {
            roleIDs.NullCheck("roleIDs");

            Dictionary<string, bool> result = new Dictionary<string, bool>();

            InSqlClauseBuilder builder = new InSqlClauseBuilder();

            foreach (string roleID in roleIDs)
            {
                if (result.ContainsKey(roleID) == false)
                {
                    result.Add(roleID, false);
                    builder.AppendItem(roleID);
                }
            }

            if (result.Count > 0)
            {
                WhereSqlClauseBuilder tenantBuilder = new WhereSqlClauseBuilder();

                tenantBuilder.AppendTenantCode();

                string tenantCriteria = string.Empty;

                if (tenantBuilder.IsEmpty == false)
                    tenantCriteria = " AND " + tenantBuilder.ToSqlString(TSqlBuilder.Instance);

                string sql = string.Format("SELECT ROLE_ID FROM WF.ROLE_PROPERTIES_DEFINITIONS WHERE ROLE_ID IN ({0}){1} GROUP BY ROLE_ID",
                    builder.ToSqlString(TSqlBuilder.Instance), tenantCriteria);

                DataTable table = DbHelper.RunSqlReturnDS(sql, GetConnectionName()).Tables[0];

                foreach (DataRow row in table.Rows)
                    result[row["ROLE_ID"].ToString()] = true;
            }

            return result;
        }
        /// <summary>
        /// 根据SQL获取category
        /// </summary>
        /// <param name="where"></param>
        /// <param name="orderby"></param>
        /// <param name="selector"></param>
        /// <returns></returns>
        public TaskCategoryCollection GetCategoriesByWhereCondition(string where, string orderby, List<string> selector)
        {
            string sql = string.Format("SELECT");

            if (selector != null && selector.Count > 0)
            {
                foreach (string sel in selector)
                {
                    sql += TSqlBuilder.Instance.CheckQuotationMark(sel, true);
                }
            }
            else
                sql += " * ";

            WhereSqlClauseBuilder builder = new WhereSqlClauseBuilder();

            builder.AppendItem("USER_ID", DeluxeIdentity.CurrentUser.ID);
            builder.AppendTenantCode(typeof(TaskCategory));

            sql += string.Format("FROM WF.USER_TASK_CATEGORY WHERE {0}",
                builder.ToSqlString(TSqlBuilder.Instance));

            if (where != string.Empty && where != null)
                sql += string.Format("AND ({0})", where);

            if (orderby != string.Empty && orderby != null)
                sql += string.Format("ORDER BY {0}", orderby);

            DataView dv = DbHelper.RunSqlReturnDS(sql).Tables[0].DefaultView;
            TaskCategoryCollection tcc = new TaskCategoryCollection();

            tcc.LoadFromDataView(dv);

            return tcc;
        }
        private void SelectExcutQuery()
        {
            if (string.IsNullOrEmpty(this.tb_AllKeys.Text) == false)
            {
                InSqlClauseBuilder inBuilder = new InSqlClauseBuilder();
                inBuilder.DataField = "PROCESS_KEY";
                inBuilder.AppendItem(this.tb_AllKeys.Text.Split(','));

                WhereSqlClauseBuilder whereBuilder = new WhereSqlClauseBuilder();

                whereBuilder.AppendTenantCode();

                this.BindGrid(new ConnectiveSqlClauseCollection(LogicOperatorDefine.And, whereBuilder, inBuilder));
            }
        }
        /// <summary>
        /// 删除待办箱分类
        /// </summary>
        /// <param name="categoryGuid">处理夹ID</param>
        public void DeleteCategory(string categoryID)
        {
            WhereSqlClauseBuilder builder = new WhereSqlClauseBuilder();

            builder.AppendItem("CATEGORY_GUID", categoryID);
            builder.AppendTenantCode(typeof(TaskCategory));

            string strSql = "UPDATE USER_TASK SET CATEGORY_GUID = NULL WHERE " + builder.ToSqlString(TSqlBuilder.Instance) + ";";

            strSql += " DELETE WF.USER_TASK_CATEGORY WHERE " + builder.ToSqlString(TSqlBuilder.Instance);

            DbHelper.RunSqlWithTransaction(strSql);
        }
        public MaterialList LoadVersionMaterialsBySceneKey(string resourceID, string wfActivityName)
        {
            MaterialList copyVersionMaterials = new MaterialList();

            WhereSqlClauseBuilder whereSqlClause = new WhereSqlClauseBuilder();

            whereSqlClause.AppendItem("RESOURCE_ID", resourceID);
            whereSqlClause.AppendItem("VERSION_TYPE", Convert.ToInt16(MaterialVersionType.CopyVersion).ToString());
            whereSqlClause.AppendItem("WF_ACTIVITY_NAME", wfActivityName);
            whereSqlClause.AppendTenantCode(typeof(Material));

            string sql = string.Format("SELECT * FROM WF.MATERIAL WHERE {0}",
                                    whereSqlClause.ToSqlString(TSqlBuilder.Instance));

            using (DbContext dbi = DbHelper.GetDBContext(GetConnectionName()))
            {
                using (IDataReader dr = DbHelper.RunSqlReturnDR(sql, GetConnectionName()))
                {
                    while (dr.Read())
                    {
                        Material material = new Material();

                        ORMapping.DataReaderToObject(dr, material);

                        copyVersionMaterials.Add(material);
                    }
                }
            }

            DecorateMaterials(copyVersionMaterials);

            return copyVersionMaterials;
        }
        private static EmailMessage LoadEmailMessage(string messageID, string tableName)
        {
            messageID.CheckStringIsNullOrEmpty("messageID");

            WhereSqlClauseBuilder builder = new WhereSqlClauseBuilder();

            builder.AppendItem("MESSAGE_ID", messageID);
            builder.AppendTenantCode();

            string sql = string.Format("SELECT * FROM {0} WHERE {1}",
                tableName,
                builder.ToSqlString(TSqlBuilder.Instance));

            DataTable table = DbHelper.RunSqlReturnDS(sql, GetConnectionName()).Tables[0];

            (table.Rows.Count > 0).FalseThrow("不能找到MESSAGE_ID为{0}的记录", messageID);

            EmailMessage message = new EmailMessage();

            DataRowToEmailMessage(table.Rows[0], message);

            return message;
        }
        public WfClientProcessDescriptorInfoPageQueryResult QueryProcessDescriptorInfo(int startRowIndex, int maximumRows, string where, string orderBy, int totalCount)
        {
            OperationContext.Current.FillContextToOguServiceContext();

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

            string selectFields = "PROCESS_KEY, APPLICATION_NAME, PROGRAM_NAME, PROCESS_NAME, ENABLED, CREATE_TIME, CREATOR_ID, CREATOR_NAME, MODIFY_TIME, MODIFIER_ID, MODIFIER_NAME, IMPORT_TIME, IMPORT_USER_ID, IMPORT_USER_NAME";

            QueryCondition qc = new QueryCondition(
                startRowIndex,
                maximumRows,
                selectFields,
                ORMapping.GetMappingInfo(typeof(WfProcessDescriptorInfo)).TableName,
                orderBy);

            WhereSqlClauseBuilder builder = new WhereSqlClauseBuilder();

            builder.AppendTenantCode();

            if (where.IsNotEmpty())
                where += " AND ";

            where += builder.ToSqlString(TSqlBuilder.Instance);

            qc.WhereClause = where;

            CommonAdapter adapter = new CommonAdapter(WfProcessDescriptorInfoAdapter.Instance.ConnectionName);

            WfProcessDescriptorInfoCollection processInfo = adapter.SplitPageQuery<WfProcessDescriptorInfo, WfProcessDescriptorInfoCollection>(qc, ref totalCount);

            WfClientProcessDescriptorInfoCollection clientInfo = new WfClientProcessDescriptorInfoCollection();

            WfClientProcessDescriptorInfoConverter.Instance.ServerToClient(processInfo, clientInfo);

            WfClientProcessDescriptorInfoPageQueryResult result = new WfClientProcessDescriptorInfoPageQueryResult();

            result.TotalCount = totalCount;
            result.QueryResult.CopyFrom(clientInfo);

            return result;
        }
        public EmailMessageCollection LoadCandidateMessages(int batchCount)
        {
            string topDesp = batchCount >= 0 ? string.Format(" TOP {0} ", batchCount) : string.Empty;

            WhereSqlClauseBuilder builder = new WhereSqlClauseBuilder();

            builder.AppendItem("1", 1);
            builder.AppendTenantCode();

            string sql = string.Format("SELECT {0}* FROM MSG.EMAIL_MESSAGES WITH (UPDLOCK READPAST) WHERE {1} ORDER BY SORT_ID",
                topDesp,
                builder.ToSqlString(TSqlBuilder.Instance));

            EmailMessageCollection result = new EmailMessageCollection();

            DataTable table = DbHelper.RunSqlReturnDS(sql, GetConnectionName()).Tables[0];

            foreach (DataRow row in table.Rows)
            {
                EmailMessage message = new EmailMessage();

                DataRowToEmailMessage(row, message);

                result.Add(message);
            }

            return result;
        }
        private static DataTable LoadAddresses(string messageID)
        {
            WhereSqlClauseBuilder builder = new WhereSqlClauseBuilder();

            builder.AppendItem("MESSAGE_ID", messageID);
            builder.AppendTenantCode();

            string sql = string.Format("SELECT * FROM MSG.EMAIL_ADDRESSES WHERE {0}",
                builder.ToSqlString(TSqlBuilder.Instance));

            return DbHelper.RunSqlReturnDS(sql, GetConnectionName()).Tables[0];
        }
        public WfClientProcessCurrentInfoPageQueryResult QueryProcesses(WfClientProcessQueryCondition condition, int startRowIndex, int maximumRows, string orderBy, int totalCount)
        {
            condition.NullCheck("condition");

            OperationContext.Current.FillContextToOguServiceContext();

            WfProcessQueryCondition serverCondition = null;

            WfClientProcessQueryConditionConverter.Instance.ClientToServer(condition, ref serverCondition);

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

            ConnectiveSqlClauseCollection connective = serverCondition.ToSqlBuilder();

            WhereSqlClauseBuilder builder = new WhereSqlClauseBuilder();

            builder.AppendItem("COMMITTED", "1");
            builder.AppendTenantCode();

            connective.Add(builder);

            QueryCondition qc = new QueryCondition(startRowIndex, maximumRows,
                ORMapping.GetSelectFieldsNameSql<WfProcessCurrentInfo>(),
                ORMapping.GetMappingInfo(typeof(WfProcessCurrentInfo)).TableName,
                orderBy);

            qc.WhereClause += connective.ToSqlString(TSqlBuilder.Instance);

            return QueryProcessInfo(qc, totalCount);
        }
        internal EmailAttachmentCollection LoadAttachments(string messageID)
        {
            WhereSqlClauseBuilder builder = new WhereSqlClauseBuilder();

            builder.AppendItem("MESSAGE_ID", messageID);
            builder.AppendTenantCode();

            string sql = string.Format("SELECT * FROM MSG.EMAIL_ATTACHMENTS WHERE {0} ORDER BY SORT_ID",
                builder.ToSqlString(TSqlBuilder.Instance));

            EmailAttachmentCollection result = new EmailAttachmentCollection();

            ORMapping.DataViewToCollection(result,
                DbHelper.RunSqlReturnDS(sql, GetConnectionName()).Tables[0].DefaultView);

            return result;
        }