/// <summary> /// 给Express加载对应的参数 /// </summary> /// <param name="express"></param> /// <param name="json"></param> /// <returns></returns> public static void Load(DBExpress express, FrameDLRObject json) { var rtn = express; var acttypekey = "$acttype"; if (ComFunc.nvl(json.GetValue(acttypekey)) != "") { rtn.acttype = ComFunc.EnumParse <ActType>(ComFunc.nvl(json.GetValue(acttypekey))); json.Remove(acttypekey); } else { rtn.acttype = ActType.Query; } rtn.express = json; }
/// <summary> /// 创建一个DBExpress对象 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="json"></param> /// <returns></returns> public static T Create <T>(FrameDLRObject json) where T : DBExpress { T rtn = (T)Activator.CreateInstance(typeof(T), true); var acttypekey = json.IgnoreCase ? "$acttype" : "$ActType"; if (ComFunc.nvl(json.GetValue(acttypekey)) != "") { rtn.acttype = ComFunc.EnumParse <ActType>(ComFunc.nvl(json.GetValue(acttypekey))); json.Remove(acttypekey); } else { rtn.acttype = ActType.Query; } rtn.express = json; return(rtn); }
public object QueryList(string id) { SetCacheEnable(false); var up = DB.NewDBUnitParameter(); var s = from t in DB.LamdaTable(up, "EXTEND_SINGLETABLE_OP", "a") where (t.s_uid == id || t.S_Name == id) select t; var list = s.GetQueryList(up); if (list.Count <= 0) { return(new { code = "failed", msg = "设定资料不存在" }); } dynamic info = list.First(); var metainfo = (from t in DB.LamdaTable(up, "EXTEND_METADATA", "a") where t.MetaUID == info.MetaUID && t.IsCreated == 1 select new { table_name = t.MetaName }).GetQueryList(up); if (metainfo.Count <= 0) { return(new { code = "failed", msg = "元数据表不存在,无法继续进行操作" }); } var table_name = ComFunc.nvl(metainfo.First().GetValue("table_name")); //组织查询表达式 FrameDLRObject express = FrameDLRObject.CreateInstance($@"{{ $acttype : 'QueryByPage', $orderby : 'sort_no', $table:'{table_name}', sort_no:true }}", EFFC.Frame.Net.Base.Constants.FrameDLRFlags.SensitiveCase); #region 获取查询条件信息 var conditionlist = (from t in DB.LamdaTable(up, "EXTEND_SINGLETABLE_OP_CONDITIONS", "a") join t2 in DB.LamdaTable(up, "EXTEND_METADATA_COLUMNS", "b").LeftJoin() on t.S_ColumnName equals t2.MetaColumnName where t.S_UID == info.S_UID && t2.MetaUID == info.MetaUID select new { op = t.S_ConditionOP, column_name = t.S_ColumnName, parameter_name = t.S_Parameter, data_type = t2.MetaDataType }).GetQueryList(up); FrameDLRObject where_express = FrameDLRObject.CreateInstance(FrameDLRFlags.SensitiveCase); foreach (dynamic citem in conditionlist) { if (ComFunc.nvl(QueryString[citem.parameter_name]) == "") { continue; } var value = ConvertConditionValue(citem.data_type, ComFunc.nvl(QueryString[citem.parameter_name])); FrameDLRObject exp = where_express.GetValue(citem.column_name); if (exp == null) { exp = FrameDLRObject.CreateInstance(FrameDLRFlags.SensitiveCase); } switch (citem.op) { case "like": exp.SetValue("$like", value); where_express.SetValue(citem.column_name, exp); break; case "=": where_express.SetValue(citem.column_name, value); break; case ">": exp.SetValue("$gt", value); where_express.SetValue(citem.column_name, exp); break; case ">=": exp.SetValue("$gte", value); where_express.SetValue(citem.column_name, exp); break; case "<": exp.SetValue("$lt", value); where_express.SetValue(citem.column_name, exp); break; case "<=": exp.SetValue("$lte", value); where_express.SetValue(citem.column_name, exp); break; } } if (where_express.Items.Count > 0) { express.SetValue("$where", where_express); } #endregion #region 组织select栏位 var columns = (from t in DB.LamdaTable(up, "EXTEND_SINGLETABLE_OP_COLUMNS", "a") where t.S_UID == info.S_UID select new { column_name = t.S_ColumnName }).GetQueryList(up); foreach (dynamic item in columns) { express.SetValue(item.column_name, true); } #endregion var result = DB.Excute(up, express, true); return(new { code = "success", msg = "", total_count = result.TotalRow, page = result.CurrentPage, total_page = result.TotalPage, limit = result.Count_Of_OnePage, data = result.QueryData <FrameDLRObject>().Select((d) => { FrameDLRObject dobj = (FrameDLRObject)d; dobj.Remove("RowNumber"); //时间类型需要转string foreach (var item in dobj.Items) { if (item.Value is DateTime) { dobj.SetValue(item.Key, DateTimeStd.IsDateTimeThen(item.Value)); } } return dobj; }) }); }