using JNPF.Common.Const; using JNPF.Common.Extension; using JNPF.Common.Models; using SqlSugar; namespace JNPF.Common.Security; /// /// 高级查询帮助类. /// public class SuperQueryHelper { /// /// 组装高级查询信息. /// /// 查询条件json. /// 取代内容. /// 实体信息. /// 表类型 0-主表,1-子表,2-副表. public static List GetSuperQueryInput(string superQueryJson, string replaceContent, EntityInfo entityInfo, int tableType) { SuperQueryModel result = new SuperQueryModel(); SuperQueryModel? model = string.IsNullOrEmpty(superQueryJson) ? null : superQueryJson.ToObject(); var queryList = new List(); if (model != null) { var matchLogic = model.matchLogic; var whereType = matchLogic.Equals("AND") ? WhereType.And : WhereType.Or; foreach (var item in model.conditionJson) { var field = string.Empty; switch (tableType) { case 1: if (item.field.Contains(replaceContent)) { field = entityInfo.Columns.Find(it => it.PropertyName.Equals(item.field.Replace(replaceContent, "").ToUpperCase()))?.DbColumnName; } break; case 2: if (item.field.Contains(replaceContent) && item.field.Contains("_jnpf_")) { var queryField = item.field.Replace("_jnpf_", "@").Split('@')[1]; field = entityInfo.Columns.Find(it => it.PropertyName.Equals(queryField.ToUpperCase()))?.DbColumnName; } break; default: field = entityInfo.Columns.Find(it => it.PropertyName.Equals(item.field.ToUpperCase()))?.DbColumnName; break; } if (string.IsNullOrEmpty(field)) { continue; } var conditionalType = ConditionalType.IsNullOrEmpty; switch (item.jnpfKey) { case JnpfKeyConst.COMINPUT: case JnpfKeyConst.TEXTAREA: item.fieldValue = item.fieldValue?.ToString().Replace("\r\n", string.Empty); switch (item.symbol) { case "==": // 等于 conditionalType = ConditionalType.Equal; break; case "like": // 包含 conditionalType = ConditionalType.Like; break; case "notLike": // 不包含 conditionalType = ConditionalType.NoLike; break; case ">=": // 大于等于 conditionalType = ConditionalType.GreaterThanOrEqual; break; case "<=": // 小于等于 conditionalType = ConditionalType.LessThanOrEqual; break; case "<": // 小于 conditionalType = ConditionalType.LessThan; break; case "<>": // 不等于 conditionalType = ConditionalType.NoEqual; break; case ">": // 大于 conditionalType = ConditionalType.GreaterThan; break; } queryList.Add(ControlAdvancedQueryAssembly(whereType, item.jnpfKey, field, item.fieldValue.ParseToString(), conditionalType, true)); switch (item.symbol) { case "like": // 包含 conditionalType = ConditionalType.NoLike; break; case "notLike": // 不包含 conditionalType = ConditionalType.Like; break; case "<>": // 不等于 conditionalType = ConditionalType.IsNullOrEmpty; queryList.Add(ControlAdvancedQueryAssembly(WhereType.Or, item.jnpfKey, field, null, conditionalType)); break; } break; case JnpfKeyConst.NUMINPUT: switch (item.symbol) { case ">=": // 大于等于 conditionalType = ConditionalType.GreaterThanOrEqual; break; case ">": // 大于 conditionalType = ConditionalType.GreaterThan; break; case "==": // 等于 conditionalType = ConditionalType.Equal; break; case "<=": // 小于等于 conditionalType = ConditionalType.GreaterThanOrEqual; break; case "<": // 小于 conditionalType = ConditionalType.LessThan; break; case "<>": // 不等于 conditionalType = ConditionalType.NoEqual; break; case "like": // 包含 conditionalType = ConditionalType.Like; break; case "notLike": // 不包含 conditionalType = ConditionalType.NoLike; break; } queryList.Add(ControlAdvancedQueryAssembly(whereType, item.jnpfKey, field, item.fieldValue.ParseToString(), conditionalType, true)); break; case JnpfKeyConst.SWITCH: switch (item.symbol) { case ">=": // 大于等于 conditionalType = ConditionalType.GreaterThanOrEqual; break; case ">": // 大于 conditionalType = ConditionalType.GreaterThan; break; case "==": // 等于 conditionalType = ConditionalType.Equal; break; case "<=": // 小于等于 conditionalType = ConditionalType.GreaterThanOrEqual; break; case "<": // 小于 conditionalType = ConditionalType.LessThan; break; case "<>": // 不等于 conditionalType = ConditionalType.NoEqual; break; case "like": // 包含 conditionalType = ConditionalType.Like; break; case "notLike": // 不包含 conditionalType = ConditionalType.NoLike; break; } queryList.Add(ControlAdvancedQueryAssembly(whereType, item.jnpfKey, field, item.fieldValue.ParseToString(), conditionalType, true)); break; case JnpfKeyConst.RADIO: switch (item.symbol) { case ">=": // 大于等于 conditionalType = ConditionalType.GreaterThanOrEqual; break; case ">": // 大于 conditionalType = ConditionalType.GreaterThan; break; case "==": // 等于 conditionalType = ConditionalType.Equal; break; case "<=": // 小于等于 conditionalType = ConditionalType.GreaterThanOrEqual; break; case "<": // 小于 conditionalType = ConditionalType.LessThan; break; case "<>": // 不等于 conditionalType = ConditionalType.NoEqual; break; case "like": // 包含 conditionalType = ConditionalType.Like; break; case "notLike": // 不包含 conditionalType = ConditionalType.NoLike; break; } queryList.Add(ControlAdvancedQueryAssembly(whereType, item.jnpfKey, field, item.fieldValue.ParseToString(), conditionalType, true)); break; case JnpfKeyConst.CHECKBOX: switch (item.symbol) { case ">=": // 大于等于 conditionalType = ConditionalType.GreaterThanOrEqual; break; case ">": // 大于 conditionalType = ConditionalType.GreaterThan; break; case "==": // 等于 conditionalType = ConditionalType.Equal; break; case "<=": // 小于等于 conditionalType = ConditionalType.GreaterThanOrEqual; break; case "<": // 小于 conditionalType = ConditionalType.LessThan; break; case "<>": // 不等于 conditionalType = ConditionalType.NoEqual; break; case "like": // 包含 conditionalType = ConditionalType.Like; break; case "notLike": // 不包含 conditionalType = ConditionalType.NoLike; break; } queryList.Add(ControlAdvancedQueryAssembly(whereType, item.jnpfKey, field, item.fieldValue.ParseToString(), conditionalType, true)); break; case JnpfKeyConst.SELECT: switch (item.symbol) { case ">=": // 大于等于 conditionalType = ConditionalType.GreaterThanOrEqual; break; case ">": // 大于 conditionalType = ConditionalType.GreaterThan; break; case "==": // 等于 conditionalType = ConditionalType.Equal; break; case "<=": // 小于等于 conditionalType = ConditionalType.GreaterThanOrEqual; break; case "<": // 小于 conditionalType = ConditionalType.LessThan; break; case "<>": // 不等于 conditionalType = ConditionalType.NoEqual; break; case "like": // 包含 conditionalType = ConditionalType.Like; break; case "notLike": // 不包含 conditionalType = ConditionalType.NoLike; break; } queryList.Add(ControlAdvancedQueryAssembly(whereType, item.jnpfKey, field, item.fieldValue.ParseToString(), conditionalType, true)); break; case JnpfKeyConst.POPUPTABLESELECT: switch (item.symbol) { case ">=": // 大于等于 conditionalType = ConditionalType.GreaterThanOrEqual; break; case ">": // 大于 conditionalType = ConditionalType.GreaterThan; break; case "==": // 等于 conditionalType = ConditionalType.Equal; break; case "<=": // 小于等于 conditionalType = ConditionalType.GreaterThanOrEqual; break; case "<": // 小于 conditionalType = ConditionalType.LessThan; break; case "<>": // 不等于 conditionalType = ConditionalType.NoEqual; break; case "like": // 包含 conditionalType = ConditionalType.Like; break; case "notLike": // 不包含 conditionalType = ConditionalType.NoLike; break; } queryList.Add(ControlAdvancedQueryAssembly(whereType, item.jnpfKey, field, item.fieldValue.ParseToString(), conditionalType, true)); break; case JnpfKeyConst.CASCADER: switch (item.symbol) { case ">=": // 大于等于 conditionalType = ConditionalType.GreaterThanOrEqual; break; case ">": // 大于 conditionalType = ConditionalType.GreaterThan; break; case "==": // 等于 conditionalType = ConditionalType.Equal; break; case "<=": // 小于等于 conditionalType = ConditionalType.GreaterThanOrEqual; break; case "<": // 小于 conditionalType = ConditionalType.LessThan; break; case "<>": // 不等于 conditionalType = ConditionalType.NoEqual; break; case "like": // 包含 conditionalType = ConditionalType.Like; break; case "notLike": // 不包含 conditionalType = ConditionalType.NoLike; break; } queryList.Add(ControlAdvancedQueryAssembly(whereType, item.jnpfKey, field, item.fieldValue.ParseToString(), conditionalType, true)); break; case JnpfKeyConst.DATE: switch (item.symbol) { case ">=": // 大于等于 conditionalType = ConditionalType.GreaterThanOrEqual; break; case ">": // 大于 conditionalType = ConditionalType.GreaterThan; break; case "==": // 等于 conditionalType = ConditionalType.Equal; break; case "<=": // 小于等于 conditionalType = ConditionalType.GreaterThanOrEqual; break; case "<": // 小于 conditionalType = ConditionalType.LessThan; break; case "<>": // 不等于 conditionalType = ConditionalType.NoEqual; break; case "like": // 包含 conditionalType = ConditionalType.Like; break; case "notLike": // 不包含 conditionalType = ConditionalType.NoLike; break; } queryList.Add(ControlAdvancedQueryAssembly(whereType, item.jnpfKey, field, item.fieldValue.ParseToString(), conditionalType, true)); break; case JnpfKeyConst.TIME: switch (item.symbol) { case ">=": // 大于等于 conditionalType = ConditionalType.GreaterThanOrEqual; break; case ">": // 大于 conditionalType = ConditionalType.GreaterThan; break; case "==": // 等于 conditionalType = ConditionalType.Equal; break; case "<=": // 小于等于 conditionalType = ConditionalType.GreaterThanOrEqual; break; case "<": // 小于 conditionalType = ConditionalType.LessThan; break; case "<>": // 不等于 conditionalType = ConditionalType.NoEqual; break; case "like": // 包含 conditionalType = ConditionalType.Like; break; case "notLike": // 不包含 conditionalType = ConditionalType.NoLike; break; } queryList.Add(ControlAdvancedQueryAssembly(whereType, item.jnpfKey, field, item.fieldValue.ParseToString(), conditionalType, true)); break; case JnpfKeyConst.COMSELECT: switch (item.symbol) { case ">=": // 大于等于 conditionalType = ConditionalType.GreaterThanOrEqual; break; case ">": // 大于 conditionalType = ConditionalType.GreaterThan; break; case "==": // 等于 conditionalType = ConditionalType.Equal; break; case "<=": // 小于等于 conditionalType = ConditionalType.GreaterThanOrEqual; break; case "<": // 小于 conditionalType = ConditionalType.LessThan; break; case "<>": // 不等于 conditionalType = ConditionalType.NoEqual; break; case "like": // 包含 conditionalType = ConditionalType.Like; break; case "notLike": // 不包含 conditionalType = ConditionalType.NoLike; break; } queryList.Add(ControlAdvancedQueryAssembly(whereType, item.jnpfKey, field, item.fieldValue.ParseToString(), conditionalType, true)); break; case JnpfKeyConst.DEPSELECT: switch (item.symbol) { case ">=": // 大于等于 conditionalType = ConditionalType.GreaterThanOrEqual; break; case ">": // 大于 conditionalType = ConditionalType.GreaterThan; break; case "==": // 等于 conditionalType = ConditionalType.Equal; break; case "<=": // 小于等于 conditionalType = ConditionalType.GreaterThanOrEqual; break; case "<": // 小于 conditionalType = ConditionalType.LessThan; break; case "<>": // 不等于 conditionalType = ConditionalType.NoEqual; break; case "like": // 包含 conditionalType = ConditionalType.Like; break; case "notLike": // 不包含 conditionalType = ConditionalType.NoLike; break; } queryList.Add(ControlAdvancedQueryAssembly(whereType, item.jnpfKey, field, item.fieldValue.ParseToString(), conditionalType, true)); break; case JnpfKeyConst.POSSELECT: switch (item.symbol) { case ">=": // 大于等于 conditionalType = ConditionalType.GreaterThanOrEqual; break; case ">": // 大于 conditionalType = ConditionalType.GreaterThan; break; case "==": // 等于 conditionalType = ConditionalType.Equal; break; case "<=": // 小于等于 conditionalType = ConditionalType.GreaterThanOrEqual; break; case "<": // 小于 conditionalType = ConditionalType.LessThan; break; case "<>": // 不等于 conditionalType = ConditionalType.NoEqual; break; case "like": // 包含 conditionalType = ConditionalType.Like; break; case "notLike": // 不包含 conditionalType = ConditionalType.NoLike; break; } queryList.Add(ControlAdvancedQueryAssembly(whereType, item.jnpfKey, field, item.fieldValue.ParseToString(), conditionalType, true)); break; case JnpfKeyConst.USERSELECT: switch (item.symbol) { case ">=": // 大于等于 conditionalType = ConditionalType.GreaterThanOrEqual; break; case ">": // 大于 conditionalType = ConditionalType.GreaterThan; break; case "==": // 等于 conditionalType = ConditionalType.Equal; break; case "<=": // 小于等于 conditionalType = ConditionalType.GreaterThanOrEqual; break; case "<": // 小于 conditionalType = ConditionalType.LessThan; break; case "<>": // 不等于 conditionalType = ConditionalType.NoEqual; break; case "like": // 包含 conditionalType = ConditionalType.Like; break; case "notLike": // 不包含 conditionalType = ConditionalType.NoLike; break; } queryList.Add(ControlAdvancedQueryAssembly(whereType, item.jnpfKey, field, item.fieldValue.ParseToString(), conditionalType, true)); break; case JnpfKeyConst.USERSSELECT: if (item.fieldValue != null && (item.symbol.Equals("like") || item.symbol.Equals("notLike"))) { var rIdList = GetUserRelationByUserId(item.fieldValue.ToString()); var objIdList = new List() { item.fieldValue.ToString() }; rIdList.ForEach(x => { if (x["OBJECTTYPE"].Equals("Organize")) { objIdList.Add(x["OBJECTID"] + "--company"); objIdList.Add(x["OBJECTID"] + "--department"); } else { objIdList.Add(x["OBJECTID"] + "--" + x["OBJECTTYPE"].ToLower()); } }); var whereList = new List>(); for (var i = 0; i < objIdList.Count(); i++) { if (i == 0) { var queryOr = new ConvertSuperQuery(); queryOr.whereType = WhereType.And; queryOr.jnpfKey = item.jnpfKey; queryOr.field = field; queryOr.fieldValue = objIdList[i]; queryOr.conditionalType = item.symbol.Equals("like") ? ConditionalType.Like : ConditionalType.NoLike; queryOr.mainWhere = true; queryList.Add(queryOr); } else { var queryOr = new ConvertSuperQuery(); queryOr.whereType = item.symbol.Equals("like") ? WhereType.Or : WhereType.And; queryOr.jnpfKey = item.jnpfKey; queryOr.field = field; queryOr.fieldValue = objIdList[i]; queryOr.conditionalType = item.symbol.Equals("like") ? ConditionalType.Like : ConditionalType.NoLike; queryOr.mainWhere = true; queryList.Add(queryOr); } } if (item.symbol.Equals("notLike")) { var queryOr = new ConvertSuperQuery(); queryOr.whereType = WhereType.Or; queryOr.jnpfKey = item.jnpfKey; queryOr.field = field; queryOr.fieldValue = null; queryOr.conditionalType = ConditionalType.EqualNull; queryOr.mainWhere = true; queryList.Add(queryOr); } } continue; switch (item.symbol) { case ">=": // 大于等于 conditionalType = ConditionalType.GreaterThanOrEqual; break; case ">": // 大于 conditionalType = ConditionalType.GreaterThan; break; case "==": // 等于 conditionalType = ConditionalType.Equal; break; case "<=": // 小于等于 conditionalType = ConditionalType.GreaterThanOrEqual; break; case "<": // 小于 conditionalType = ConditionalType.LessThan; break; case "<>": // 不等于 conditionalType = ConditionalType.NoEqual; break; case "like": // 包含 conditionalType = ConditionalType.Like; break; case "notLike": // 不包含 conditionalType = ConditionalType.NoLike; break; } queryList.Add(ControlAdvancedQueryAssembly(whereType, item.jnpfKey, field, item.fieldValue.ParseToString(), conditionalType, true)); break; case JnpfKeyConst.ROLESELECT: switch (item.symbol) { case ">=": // 大于等于 conditionalType = ConditionalType.GreaterThanOrEqual; break; case ">": // 大于 conditionalType = ConditionalType.GreaterThan; break; case "==": // 等于 conditionalType = ConditionalType.Equal; break; case "<=": // 小于等于 conditionalType = ConditionalType.GreaterThanOrEqual; break; case "<": // 小于 conditionalType = ConditionalType.LessThan; break; case "<>": // 不等于 conditionalType = ConditionalType.NoEqual; break; case "like": // 包含 conditionalType = ConditionalType.Like; break; case "notLike": // 不包含 conditionalType = ConditionalType.NoLike; break; } queryList.Add(ControlAdvancedQueryAssembly(whereType, item.jnpfKey, field, item.fieldValue.ParseToString(), conditionalType, true)); break; case JnpfKeyConst.GROUPSELECT: switch (item.symbol) { case ">=": // 大于等于 conditionalType = ConditionalType.GreaterThanOrEqual; break; case ">": // 大于 conditionalType = ConditionalType.GreaterThan; break; case "==": // 等于 conditionalType = ConditionalType.Equal; break; case "<=": // 小于等于 conditionalType = ConditionalType.GreaterThanOrEqual; break; case "<": // 小于 conditionalType = ConditionalType.LessThan; break; case "<>": // 不等于 conditionalType = ConditionalType.NoEqual; break; case "like": // 包含 conditionalType = ConditionalType.Like; break; case "notLike": // 不包含 conditionalType = ConditionalType.NoLike; break; } queryList.Add(ControlAdvancedQueryAssembly(whereType, item.jnpfKey, field, item.fieldValue.ParseToString(), conditionalType, true)); break; case JnpfKeyConst.TREESELECT: switch (item.symbol) { case ">=": // 大于等于 conditionalType = ConditionalType.GreaterThanOrEqual; break; case ">": // 大于 conditionalType = ConditionalType.GreaterThan; break; case "==": // 等于 conditionalType = ConditionalType.Equal; break; case "<=": // 小于等于 conditionalType = ConditionalType.GreaterThanOrEqual; break; case "<": // 小于 conditionalType = ConditionalType.LessThan; break; case "<>": // 不等于 conditionalType = ConditionalType.NoEqual; break; case "like": // 包含 conditionalType = ConditionalType.Like; break; case "notLike": // 不包含 conditionalType = ConditionalType.NoLike; break; } queryList.Add(ControlAdvancedQueryAssembly(whereType, item.jnpfKey, field, item.fieldValue.ParseToString(), conditionalType, true)); break; case JnpfKeyConst.BILLRULE: switch (item.symbol) { case ">=": // 大于等于 conditionalType = ConditionalType.GreaterThanOrEqual; break; case ">": // 大于 conditionalType = ConditionalType.GreaterThan; break; case "==": // 等于 conditionalType = ConditionalType.Equal; break; case "<=": // 小于等于 conditionalType = ConditionalType.GreaterThanOrEqual; break; case "<": // 小于 conditionalType = ConditionalType.LessThan; break; case "<>": // 不等于 conditionalType = ConditionalType.NoEqual; break; case "like": // 包含 conditionalType = ConditionalType.Like; break; case "notLike": // 不包含 conditionalType = ConditionalType.NoLike; break; } queryList.Add(ControlAdvancedQueryAssembly(whereType, item.jnpfKey, field, item.fieldValue.ParseToString(), conditionalType, true)); break; case JnpfKeyConst.ADDRESS: switch (item.symbol) { case ">=": // 大于等于 conditionalType = ConditionalType.GreaterThanOrEqual; break; case ">": // 大于 conditionalType = ConditionalType.GreaterThan; break; case "==": // 等于 conditionalType = ConditionalType.Equal; break; case "<=": // 小于等于 conditionalType = ConditionalType.GreaterThanOrEqual; break; case "<": // 小于 conditionalType = ConditionalType.LessThan; break; case "<>": // 不等于 conditionalType = ConditionalType.NoEqual; break; case "like": // 包含 conditionalType = ConditionalType.Like; break; case "notLike": // 不包含 conditionalType = ConditionalType.NoLike; break; } queryList.Add(ControlAdvancedQueryAssembly(whereType, item.jnpfKey, field, item.fieldValue.ParseToString(), conditionalType, true)); break; case JnpfKeyConst.RELATIONFORM: switch (item.symbol) { case ">=": // 大于等于 conditionalType = ConditionalType.GreaterThanOrEqual; break; case ">": // 大于 conditionalType = ConditionalType.GreaterThan; break; case "==": // 等于 conditionalType = ConditionalType.Equal; break; case "<=": // 小于等于 conditionalType = ConditionalType.GreaterThanOrEqual; break; case "<": // 小于 conditionalType = ConditionalType.LessThan; break; case "<>": // 不等于 conditionalType = ConditionalType.NoEqual; break; case "like": // 包含 conditionalType = ConditionalType.Like; break; case "notLike": // 不包含 conditionalType = ConditionalType.NoLike; break; } queryList.Add(ControlAdvancedQueryAssembly(whereType, item.jnpfKey, field, item.fieldValue.ParseToString(), conditionalType, true)); break; case JnpfKeyConst.POPUPSELECT: switch (item.symbol) { case ">=": // 大于等于 conditionalType = ConditionalType.GreaterThanOrEqual; break; case ">": // 大于 conditionalType = ConditionalType.GreaterThan; break; case "==": // 等于 conditionalType = ConditionalType.Equal; break; case "<=": // 小于等于 conditionalType = ConditionalType.GreaterThanOrEqual; break; case "<": // 小于 conditionalType = ConditionalType.LessThan; break; case "<>": // 不等于 conditionalType = ConditionalType.NoEqual; break; case "like": // 包含 conditionalType = ConditionalType.Like; break; case "notLike": // 不包含 conditionalType = ConditionalType.NoLike; break; } queryList.Add(ControlAdvancedQueryAssembly(whereType, item.jnpfKey, field, item.fieldValue.ParseToString(), conditionalType, true)); break; case JnpfKeyConst.CALCULATE: switch (item.symbol) { case ">=": // 大于等于 conditionalType = ConditionalType.GreaterThanOrEqual; break; case ">": // 大于 conditionalType = ConditionalType.GreaterThan; break; case "==": // 等于 conditionalType = ConditionalType.Equal; break; case "<=": // 小于等于 conditionalType = ConditionalType.GreaterThanOrEqual; break; case "<": // 小于 conditionalType = ConditionalType.LessThan; break; case "<>": // 不等于 conditionalType = ConditionalType.NoEqual; break; case "like": // 包含 conditionalType = ConditionalType.Like; break; case "notLike": // 不包含 conditionalType = ConditionalType.NoLike; break; } queryList.Add(ControlAdvancedQueryAssembly(whereType, item.jnpfKey, field, item.fieldValue.ParseToString(), conditionalType, true)); break; case JnpfKeyConst.CREATEUSER: switch (item.symbol) { case ">=": // 大于等于 conditionalType = ConditionalType.GreaterThanOrEqual; break; case ">": // 大于 conditionalType = ConditionalType.GreaterThan; break; case "==": // 等于 conditionalType = ConditionalType.Equal; break; case "<=": // 小于等于 conditionalType = ConditionalType.GreaterThanOrEqual; break; case "<": // 小于 conditionalType = ConditionalType.LessThan; break; case "<>": // 不等于 conditionalType = ConditionalType.NoEqual; break; case "like": // 包含 conditionalType = ConditionalType.Like; break; case "notLike": // 不包含 conditionalType = ConditionalType.NoLike; break; } queryList.Add(ControlAdvancedQueryAssembly(whereType, item.jnpfKey, field, item.fieldValue.ParseToString(), conditionalType, true)); break; case JnpfKeyConst.CREATETIME: if (item.fieldValue.IsNotEmptyOrNull()) item.fieldValue = string.Format("{0:yyyy-MM-dd HH:mm:ss}", item.fieldValue?.ToString().TimeStampToDateTime()); switch (item.symbol) { case ">=": // 大于等于 conditionalType = ConditionalType.GreaterThanOrEqual; break; case ">": // 大于 conditionalType = ConditionalType.GreaterThan; break; case "==": // 等于 conditionalType = ConditionalType.Equal; break; case "<=": // 小于等于 conditionalType = ConditionalType.GreaterThanOrEqual; break; case "<": // 小于 conditionalType = ConditionalType.LessThan; break; case "<>": // 不等于 conditionalType = ConditionalType.NoEqual; break; case "like": // 包含 conditionalType = ConditionalType.Like; break; case "notLike": // 不包含 conditionalType = ConditionalType.NoLike; break; } queryList.Add(ControlAdvancedQueryAssembly(whereType, item.jnpfKey, field, item.fieldValue.ParseToString(), conditionalType, true)); break; case JnpfKeyConst.MODIFYUSER: switch (item.symbol) { case ">=": // 大于等于 conditionalType = ConditionalType.GreaterThanOrEqual; break; case ">": // 大于 conditionalType = ConditionalType.GreaterThan; break; case "==": // 等于 conditionalType = ConditionalType.Equal; break; case "<=": // 小于等于 conditionalType = ConditionalType.GreaterThanOrEqual; break; case "<": // 小于 conditionalType = ConditionalType.LessThan; break; case "<>": // 不等于 conditionalType = ConditionalType.NoEqual; break; case "like": // 包含 conditionalType = ConditionalType.Like; break; case "notLike": // 不包含 conditionalType = ConditionalType.NoLike; break; } queryList.Add(ControlAdvancedQueryAssembly(whereType, item.jnpfKey, field, item.fieldValue.ParseToString(), conditionalType, true)); break; case JnpfKeyConst.MODIFYTIME: if (item.fieldValue.IsNotEmptyOrNull()) item.fieldValue = string.Format("{0:yyyy-MM-dd HH:mm:ss}", item.fieldValue?.ToString().TimeStampToDateTime()); switch (item.symbol) { case ">=": // 大于等于 conditionalType = ConditionalType.GreaterThanOrEqual; break; case ">": // 大于 conditionalType = ConditionalType.GreaterThan; break; case "==": // 等于 conditionalType = ConditionalType.Equal; break; case "<=": // 小于等于 conditionalType = ConditionalType.GreaterThanOrEqual; break; case "<": // 小于 conditionalType = ConditionalType.LessThan; break; case "<>": // 不等于 conditionalType = ConditionalType.NoEqual; break; case "like": // 包含 conditionalType = ConditionalType.Like; break; case "notLike": // 不包含 conditionalType = ConditionalType.NoLike; break; } queryList.Add(ControlAdvancedQueryAssembly(whereType, item.jnpfKey, field, item.fieldValue.ParseToString(), conditionalType, true)); break; case JnpfKeyConst.CURRDEPT: switch (item.symbol) { case ">=": // 大于等于 conditionalType = ConditionalType.GreaterThanOrEqual; break; case ">": // 大于 conditionalType = ConditionalType.GreaterThan; break; case "==": // 等于 conditionalType = ConditionalType.Equal; break; case "<=": // 小于等于 conditionalType = ConditionalType.GreaterThanOrEqual; break; case "<": // 小于 conditionalType = ConditionalType.LessThan; break; case "<>": // 不等于 conditionalType = ConditionalType.NoEqual; break; case "like": // 包含 conditionalType = ConditionalType.Like; break; case "notLike": // 不包含 conditionalType = ConditionalType.NoLike; break; } queryList.Add(ControlAdvancedQueryAssembly(whereType, item.jnpfKey, field, item.fieldValue.ParseToString(), conditionalType, true)); break; case JnpfKeyConst.CURRORGANIZE: switch (item.symbol) { case ">=": // 大于等于 conditionalType = ConditionalType.GreaterThanOrEqual; break; case ">": // 大于 conditionalType = ConditionalType.GreaterThan; break; case "==": // 等于 conditionalType = ConditionalType.Equal; break; case "<=": // 小于等于 conditionalType = ConditionalType.GreaterThanOrEqual; break; case "<": // 小于 conditionalType = ConditionalType.LessThan; break; case "<>": // 不等于 conditionalType = ConditionalType.NoEqual; break; case "like": // 包含 conditionalType = ConditionalType.Like; break; case "notLike": // 不包含 conditionalType = ConditionalType.NoLike; break; } queryList.Add(ControlAdvancedQueryAssembly(whereType, item.jnpfKey, field, item.fieldValue.ParseToString(), conditionalType, true)); break; case JnpfKeyConst.CURRPOSITION: switch (item.symbol) { case ">=": // 大于等于 conditionalType = ConditionalType.GreaterThanOrEqual; break; case ">": // 大于 conditionalType = ConditionalType.GreaterThan; break; case "==": // 等于 conditionalType = ConditionalType.Equal; break; case "<=": // 小于等于 conditionalType = ConditionalType.GreaterThanOrEqual; break; case "<": // 小于 conditionalType = ConditionalType.LessThan; break; case "<>": // 不等于 conditionalType = ConditionalType.NoEqual; break; case "like": // 包含 conditionalType = ConditionalType.Like; break; case "notLike": // 不包含 conditionalType = ConditionalType.NoLike; break; } queryList.Add(ControlAdvancedQueryAssembly(whereType, item.jnpfKey, field, item.fieldValue.ParseToString(), conditionalType, true)); break; } } } return queryList; } public static ConvertSuperQuery ControlAdvancedQueryAssembly(WhereType whereType, string jnpfKey, string field, string fieldValue, ConditionalType conditionalType, bool mainWhere = false) { return new ConvertSuperQuery { whereType = whereType, jnpfKey = jnpfKey, field = field, fieldValue = fieldValue, conditionalType = conditionalType, mainWhere = mainWhere }; } /// /// 组装高级查询条件. /// /// public static List GetSuperQueryJson(List list) { List conModels = new List(); list.FindAll(it => it.mainWhere).ForEach(item => { ConditionalCollections conditional = new ConditionalCollections(); conditional.ConditionalList = new List>(); var sameList = list.FindAll(it => it.field.Equals(item.field)); sameList.ForEach(items => { conditional.ConditionalList.Add(new KeyValuePair(items.whereType, new ConditionalModel { FieldName = items.field, ConditionalType = items.conditionalType, FieldValue = !string.IsNullOrEmpty(items.fieldValue) ? items.fieldValue : null })); }); conModels.Add(conditional); }); return conModels; } /// /// 根据用户Id,获取用户关系id集合. /// /// /// private static List> GetUserRelationByUserId(string fieldValue) { // 获取数据库连接选项 ConnectionStringsOptions conn = App.GetConfig("ConnectionStrings", true); SqlSugarClient db = new SqlSugarClient(new ConnectionConfig { ConnectionString = string.Format(conn.DefaultConnection, conn.Host, conn.Port, conn.DBName, conn.UserName, conn.Password), DbType = (DbType)Enum.Parse(typeof(DbType), conn.DBType), IsAutoCloseConnection = true, ConfigId = conn.ConfigId, InitKeyType = InitKeyType.Attribute, MoreSettings = new ConnMoreSettings() { IsAutoRemoveDataCache = true // 自动清理缓存 } }); var sql = string.Format("SELECT F_OBJECTID OBJECTID,F_OBJECTTYPE OBJECTTYPE FROM BASE_USERRELATION WHERE F_USERID='{0}'", fieldValue.ToString().Replace("--user", string.Empty)); var res = db.SqlQueryable(sql).ToDataTable(); return res.ToObject>>(); } }