1107 lines
59 KiB
C#
1107 lines
59 KiB
C#
using JNPF.Common.Const;
|
|
using JNPF.Common.Extension;
|
|
using JNPF.Common.Models;
|
|
using SqlSugar;
|
|
|
|
namespace JNPF.Common.Security;
|
|
|
|
/// <summary>
|
|
/// 高级查询帮助类.
|
|
/// </summary>
|
|
public class SuperQueryHelper
|
|
{
|
|
/// <summary>
|
|
/// 组装高级查询信息.
|
|
/// </summary>
|
|
/// <param name="superQueryJson">查询条件json.</param>
|
|
/// <param name="replaceContent">取代内容.</param>
|
|
/// <param name="entityInfo">实体信息.</param>
|
|
/// <param name="tableType">表类型 0-主表,1-子表,2-副表.</param>
|
|
public static List<ConvertSuperQuery> GetSuperQueryInput(string superQueryJson, string replaceContent, EntityInfo entityInfo, int tableType)
|
|
{
|
|
SuperQueryModel result = new SuperQueryModel();
|
|
SuperQueryModel? model = string.IsNullOrEmpty(superQueryJson) ? null : superQueryJson.ToObject<SuperQueryModel>();
|
|
var queryList = new List<ConvertSuperQuery>();
|
|
|
|
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<string>() { 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<KeyValuePair<WhereType, ConditionalModel>>();
|
|
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
|
|
};
|
|
}
|
|
|
|
/// <summary>
|
|
/// 组装高级查询条件.
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
public static List<IConditionalModel> GetSuperQueryJson(List<ConvertSuperQuery> list)
|
|
{
|
|
List<IConditionalModel> conModels = new List<IConditionalModel>();
|
|
|
|
list.FindAll(it => it.mainWhere).ForEach(item =>
|
|
{
|
|
ConditionalCollections conditional = new ConditionalCollections();
|
|
conditional.ConditionalList = new List<KeyValuePair<WhereType, ConditionalModel>>();
|
|
var sameList = list.FindAll(it => it.field.Equals(item.field));
|
|
sameList.ForEach(items =>
|
|
{
|
|
conditional.ConditionalList.Add(new KeyValuePair<WhereType, ConditionalModel>(items.whereType, new ConditionalModel
|
|
{
|
|
FieldName = items.field,
|
|
ConditionalType = items.conditionalType,
|
|
FieldValue = !string.IsNullOrEmpty(items.fieldValue) ? items.fieldValue : null
|
|
}));
|
|
});
|
|
conModels.Add(conditional);
|
|
});
|
|
return conModels;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 根据用户Id,获取用户关系id集合.
|
|
/// </summary>
|
|
/// <param name="fieldValue"></param>
|
|
/// <returns></returns>
|
|
private static List<Dictionary<string, string>> GetUserRelationByUserId(string fieldValue)
|
|
{
|
|
// 获取数据库连接选项
|
|
ConnectionStringsOptions connectionStrings = App.GetConfig<ConnectionStringsOptions>("ConnectionStrings", true);
|
|
SqlSugarClient db = new SqlSugarClient(new ConnectionConfig
|
|
{
|
|
ConnectionString = string.Format(connectionStrings.DefaultConnection, connectionStrings.DBName),
|
|
DbType = (SqlSugar.DbType)Enum.Parse(typeof(SqlSugar.DbType), connectionStrings.DBType),
|
|
IsAutoCloseConnection = true,
|
|
ConfigId = connectionStrings.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<object>(sql).ToDataTable();
|
|
return res.ToObject<List<Dictionary<string, string>>>();
|
|
}
|
|
} |