Files
tnb.server/common/Tnb.Common/Security/SuperQueryHelper.cs
2023-03-23 11:09:53 +08:00

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 conn = App.GetConfig<ConnectionStringsOptions>("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<object>(sql).ToDataTable();
return res.ToObject<List<Dictionary<string, string>>>();
}
}