예제 #1
0
        /// <summary>
        /// 获取所有数据
        /// msg为SQL语句
        /// </summary>
        /// <param name="inEnt"></param>
        /// <returns></returns>
        public async Task <ResultObj <Dictionary <string, object> > > QueryExecute(QuerySearchDto inEnt)
        {
            ResultObj <Dictionary <string, object> > reObj = new ResultObj <Dictionary <string, object> >();
            Dictionary <string, object> reEnt = new Dictionary <string, object>();

            SysQueryEntity query = await dal.Single(i => i.code == inEnt.code);

            if (query == null)
            {
                return(reObj);
            }
            IList <QueryCfg> cfg = TypeChange.ToJsonObject <List <QueryCfg> >(query.queryCfgJson);

            string whereStr = "";
            string AllSql   = MakeSql(inEnt, query.queryConf, ref whereStr);

            reObj.msg = AllSql;
            if (string.IsNullOrEmpty(inEnt.orderStr))
            {
                inEnt.orderStr = "(SELECT 0)";
            }
            try
            {
                reObj.dataList = dal.Query(AllSql);
                reObj.total    = reObj.dataList.Count();
            }
            catch
            {
                return(reObj);
            }
            return(reObj);
        }
예제 #2
0
        /// <summary>
        /// 获取Csv数据,支持大数据下载
        /// </summary>
        /// <param name="inEnt"></param>
        /// <param name="sqlStr"></param>
        /// <returns></returns>
        public async Task <ResultObj <List <byte> > > QueryExecuteCsv(QuerySearchDto inEnt)
        {
            ResultObj <List <byte> > reObj = new ResultObj <List <byte> >();
            List <byte> reEnt = new List <byte>();

            SysQueryEntity query = await dal.Single(i => i.code == inEnt.code);

            if (query == null)
            {
                return(reObj);
            }

            JObject cfg = TypeChange.JsonToObject(query.queryCfgJson);
            Dictionary <string, string> dict = new Dictionary <string, string>();

            foreach (var item in cfg)
            {
                try
                {
                    dict.Add(item.Key, item.Value["title"].ToString());
                }
                catch
                {
                }
            }
            string whereStr = "";
            string AllSql   = MakeSql(inEnt, query.queryConf, ref whereStr);

            //如果条件为空
            if (!string.IsNullOrEmpty(whereStr))
            {
                if (!whereStr.Trim().ToLower().StartsWith("where"))
                {
                    whereStr = "where " + whereStr;
                }

                AllSql = string.Format(@"
                    SELECT T.* FROM 
                    ( 
	                    {0}
                    ) T {1}
                    ", AllSql, whereStr);
            }
            try
            {
                reObj.msg  = AllSql;
                reObj.data = dal.ExecuteBytesAsync(AllSql, null, dict);
            }
            catch (Exception e)
            {
                reObj.msg     = e.Message;
                reObj.success = false;
                return(reObj);
            }
            return(reObj);
        }
예제 #3
0
        /// <summary>
        /// 执行分页数据
        /// </summary>
        /// <param name="inEnt"></param>
        /// <param name="sqlStr"></param>
        /// <returns></returns>
        public async Task <ResultObj <Dictionary <string, object> > > QueryPageExecute(QuerySearchDto inEnt)
        {
            ResultObj <Dictionary <string, object> > reObj = new ResultObj <Dictionary <string, object> >();
            Dictionary <string, object> reEnt = new Dictionary <string, object>();
            SysQueryEntity query = await dal.Single(i => i.code == inEnt.code);

            if (query == null)
            {
                return(reObj);
            }

            string whereStr = "";
            string AllSql   = MakeSql(inEnt, query.queryConf, ref whereStr);

            if (string.IsNullOrWhiteSpace(inEnt.orderStr))
            {
                inEnt.orderStr = "(SELECT 0)";
            }
            reObj.msg = MakePageSql(AllSql, inEnt.page, inEnt.rows, inEnt.orderStr, whereStr);
            try
            {
                var sqlList = reObj.msg.Split(';');
                if (sqlList.Count() > 0)
                {
                    reObj.dataList = dal.Query(sqlList[0]);
                }

                if (sqlList.Count() > 1)
                {
                    int allNum = 0;
                    int.TryParse(await dal.ExecuteScalarAsync(sqlList[1]), out allNum);
                    reObj.total = allNum;
                }
            }
            catch (Exception e)
            {
                LogHelper.WriteErrorLog(this.GetType(), "执行分页数据失败", e);
                return(reObj);
            }
            return(reObj);
        }
예제 #4
0
        /// <summary>
        /// 生成配置数据
        /// </summary>
        /// <param name="code"></param>
        /// <param name="sqlStr"></param>
        /// <returns></returns>
        public async Task <ResultObj <string> > MakeQueryCfg(string code)
        {
            ResultObj <String> reObj = new ResultObj <String>();
            QuerySearchDto     inEnt = new QuerySearchDto()
            {
                code = code
            };
            JObject        reEnt = new JObject();
            SysQueryEntity query = await dal.Single(i => i.code == inEnt.code);

            if (query == null)
            {
                return(reObj);
            }
            IList <QueryCfg> cfg = new List <QueryCfg>();

            if (!string.IsNullOrEmpty(query.queryCfgJson))
            {
                cfg = TypeChange.ToJsonObject <List <QueryCfg> >(query.queryCfgJson);
            }

            string whereStr = "";
            string AllSql   = MakeSql(inEnt, query.queryConf, ref whereStr);

            reObj.msg = MakePageSql(AllSql);
            try
            {
                DataTable dt = dal.GetDataTable(reObj.msg);
                for (int i = 0; i < dt.Columns.Count; i++)
                {
                    var            t          = dt.Columns[i];
                    var            tmp        = t.DataType.FullName.ToLower().Substring(t.DataType.FullName.IndexOf(".") + 1);
                    IList <string> numberList = new[] { "int", "decimal", "double", "int64", "int16" };
                    if (numberList.Contains(tmp))
                    {
                        tmp = "int";
                    }
                    string searchType = "";
                    switch (tmp)
                    {
                    case "int":
                        searchType = "numberbox";
                        break;

                    case "datetime":
                        searchType = "datetimebox";
                        break;

                    default:
                        searchType = "text";
                        break;
                    }
                    JObject itemObj = new JObject();
                    itemObj["title"]    = t.ColumnName;
                    itemObj["type"]     = searchType;
                    itemObj["editable"] = true;
                    reEnt[t.ColumnName] = itemObj;
                }

                reObj.data = reEnt.ToString();
                return(reObj);
            }
            catch
            {
                return(reObj);
            }
        }