public JsonResult SaveQueryData(string Data) { var entities = FormulaHelper.GetEntities <DocConstEntities>(); var userInfo = FormulaHelper.GetUserInfo(); var userQueryInfo = entities.Set <S_UserAdvanceQueryInfo>().FirstOrDefault(d => d.UserID == userInfo.UserID); if (userQueryInfo == null) { userQueryInfo = new S_UserAdvanceQueryInfo(); userQueryInfo.ID = FormulaHelper.CreateGuid(); userQueryInfo.UserID = userInfo.UserID; userQueryInfo.CreateDate = DateTime.Now; entities.Set <S_UserAdvanceQueryInfo>().Add(userQueryInfo); } userQueryInfo.QueryData = Data; userQueryInfo.ModifyDate = DateTime.Now; entities.SaveChanges(); return(Json("")); }
public JsonResult GetList(QueryBuilder qb) { var QueryType = this.Request["QueryType"].ToString(); var ConfigID = this.Request["ConfigID"].ToString(); var SpaceID = this.Request["SpaceID"].ToString(); var QueryList = this.Request["AdvanceQueryList"].ToString(); List <Dictionary <string, object> > queryList = JsonHelper.ToList(QueryList); List <Dictionary <string, object> > attrList = JsonHelper.ToList("");//结果字段对应的属性列表 var enumService = FormulaHelper.GetService <IEnumService>(); #region 拼查询sql string fileFields = string.Empty; string resultFileds = string.Empty; string nodeStr = string.Empty; string resultSql = string.Empty; if (QueryType == "File") { var nodeConfig = this.Space.S_DOC_File.FirstOrDefault(d => d.ID == ConfigID); if (nodeConfig == null) { throw new Formula.Exceptions.BusinessException("未能找ID为【" + ConfigID + "】查询结果定义对象"); } resultSql = "select main.*{0} from S_FileInfo main {1} where ConfigID='" + ConfigID + "' and State='" + DocState.Published.ToString() + "' "; attrList = FormulaHelper.CollectionToListDic(nodeConfig.S_DOC_FileAttr); } else if (QueryType == "Node") { var nodeConfig = this.Space.S_DOC_Node.FirstOrDefault(d => d.ID == ConfigID); if (nodeConfig == null) { throw new Formula.Exceptions.BusinessException("未能找ID为【" + ConfigID + "】查询结果定义对象"); } resultSql = "select main.*{0} from S_NodeInfo main {1} where ConfigID='" + ConfigID + "' and State='" + DocState.Published.ToString() + "' "; attrList = FormulaHelper.CollectionToListDic(nodeConfig.S_DOC_NodeAttr); } else { throw new Formula.Exceptions.BusinessException("未定义查询类型【" + QueryType + "】"); } //查询条件作为查询对象属性 string typeSql = string.Empty; var types = queryList.Select(a => a.GetValue("TypeValue")).Distinct().ToList();//编目节点 string relateField = QueryType == "File" ? "FullNodeID" : "FullPathID"; foreach (var type in types) { var _queryList = queryList.Where(a => a.GetValue("TypeValue") == type).ToList(); var name = _queryList.FirstOrDefault().GetValue("Type"); string sql = " left join (select ID{2} from S_NodeInfo where ConfigID='{0}' and State='{4}' ) {1} on charindex({1}.ID,main.{3},1)>0 "; string attrField = string.Empty; foreach (var queryItem in _queryList) { var value = queryItem.GetValue("Value"); var af = queryItem.GetValue("AttrField"); var group = queryItem.GetValue("Group"); if (string.IsNullOrEmpty(value)) { continue; } string fieldStr = af; if (ConfigID != type) { fieldStr = name + "_" + af; attrField += "," + af + " as " + fieldStr; //属性名 //结果列表字段 resultFileds += "," + fieldStr; //属性名 } } if (!string.IsNullOrEmpty(attrField)) { sql = string.Format(sql, type, name, attrField, relateField, DocState.Published.ToString()); //查询条件 是 查询结果自身的属性 typeSql += sql; } } resultSql = string.Format(resultSql, resultFileds, typeSql); #endregion #region 拼结果列字段 //枚举key列表 List <Dictionary <string, object> > enumList = JsonHelper.ToList(""); //查询列表字段 List <Dictionary <string, object> > columnList = JsonHelper.ToList(""); var listCofig = this.Space.S_DOC_ListConfig.FirstOrDefault(d => d.RelationID == ConfigID); var gridColumnDetailList = listCofig.S_DOC_ListConfigDetail.Where(d => d.Dispaly == "True").OrderBy(d => d.DetailSort).ToList(); columnList.Add(new Dictionary <string, object>() { { "type", "checkcolumn" } }); //选择列 //columnList.Add(new Dictionary<string, object>() { { "type", "indexcolumn" } });//序号 columnList.Add(new Dictionary <string, object>() { { "header", "" }, { "field", "View" }, { "width", "70" } , { "align", "center" }, { "headerAlign", "center" } }); //查看 string attrFieldStr = "FileAttrField"; if (QueryType != "File") { attrFieldStr = "AttrField"; } foreach (var item in gridColumnDetailList) { var attrDic = attrList.FirstOrDefault(a => a.GetValue(attrFieldStr) == item.AttrField); if (attrDic == null) { continue; } var column = new Dictionary <string, object>(); column.Add("header", item.AttrName); column.Add("field", item.AttrField); column.Add("name", item.AttrField); column.Add("width", Convert.ToInt32(item.Width)); column.Add("allowSort", Convert.ToBoolean(item.AllowSort)); //if (Convert.ToBoolean(item.AllowSort)) // column.Add("sortField", item.AttrField); column.Add("align", item.Align); column.Add("headerAlign", "center"); var dataType = attrDic.GetValue("DataType"); if (dataType == AttrDataType.DateTime.ToString()) { column.Add("dataType", "date"); column.Add("dateFormat", "yyyy-MM-dd"); } //处理枚举 var isEnum = attrDic.GetValue("IsEnum"); if (isEnum == TrueOrFalse.True.ToString()) { var enumKey = attrDic.GetValue("EnumKey"); var enumName = enumKey.Split('.').Last(); var enumJson = enumService.GetEnumJson(enumKey); column.Add("renderer", "onEnumRender"); enumList.Add(new Dictionary <string, object>() { { "Field", item.AttrField }, { "EnumKey", enumKey }, { "EnumName", enumName }, { "EnumData", string.Format("var {0} = {1};", enumName, enumJson) } }); } columnList.Add(column); } #endregion DocInstance.Logic.DocInstanceHepler.QueryBuilderExtend(qb, ConfigID, queryList); DataTable dt = this.InstanceDB.ExecuteDataTable(resultSql, qb); Dictionary <string, object> result = new Dictionary <string, object>(); result.SetValue("data", dt); result.SetValue("total", qb.TotolCount); result.SetValue("columns", columnList); result.SetValue("enums", enumList); #region 保存查询数据 var userDic = new Dictionary <string, object>(); userDic.Add("QueryType", QueryType); userDic.Add("QueryNode", ConfigID); userDic.Add("List", queryList); var entities = FormulaHelper.GetEntities <DocConstEntities>(); var userInfo = FormulaHelper.GetUserInfo(); var userQueryInfo = entities.Set <S_UserAdvanceQueryInfo>().FirstOrDefault(d => d.UserID == userInfo.UserID); if (userQueryInfo == null) { userQueryInfo = new S_UserAdvanceQueryInfo(); userQueryInfo.ID = FormulaHelper.CreateGuid(); userQueryInfo.UserID = userInfo.UserID; userQueryInfo.CreateDate = DateTime.Now; entities.Set <S_UserAdvanceQueryInfo>().Add(userQueryInfo); } userQueryInfo.QueryData = JsonHelper.ToJson <Dictionary <string, object> >(userDic); userQueryInfo.ModifyDate = DateTime.Now; entities.SaveChanges(); #endregion return(Json(result)); }