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