v3.4.6
This commit is contained in:
@@ -1,11 +1,10 @@
|
||||
using JNPF.Common.Const;
|
||||
using JNPF.Common.Extension;
|
||||
using JNPF.Common.Models;
|
||||
using JNPF.Common.Security;
|
||||
using JNPF.Systems.Entitys.System;
|
||||
using JNPF.VisualDev.Engine.Model;
|
||||
using JNPF.VisualDev.Entitys;
|
||||
using Mapster;
|
||||
using SqlSugar;
|
||||
|
||||
namespace JNPF.VisualDev.Engine.Core;
|
||||
|
||||
@@ -145,6 +144,16 @@ public class TemplateParsingBase
|
||||
/// </summary>
|
||||
public List<string> selectKey { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// PC数据过滤 .
|
||||
/// </summary>
|
||||
public List<IConditionalModel> DataRuleListJson { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// App数据过滤 .
|
||||
/// </summary>
|
||||
public List<IConditionalModel> AppDataRuleListJson { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 模板解析帮助 构造 (功能表单).
|
||||
/// </summary>
|
||||
@@ -177,96 +186,75 @@ public class TemplateParsingBase
|
||||
visualDevEntity = entity;
|
||||
WebType = entity.WebType;
|
||||
if (entity.FlowId.IsNotEmptyOrNull() && entity.EnableFlow.Equals(1)) WebType = 3;
|
||||
FormDataModel formModel = entity.FormData.ToObject<FormDataModel>();
|
||||
FormModel = formModel; // 表单Json模型
|
||||
IsHasTable = !string.IsNullOrEmpty(entity.Tables) && !"[]".Equals(entity.Tables); // 是否有表
|
||||
AllFieldsModel = GetInDataFieldsModel(formModel.fields.ToJsonString().ToObject<List<FieldsModel>>()); // 所有控件集合
|
||||
FieldsModelList = GetInDataFieldsModel(formModel.fields); // 已剔除布局控件集合
|
||||
MainTable = entity.Tables.ToList<TableModel>().Find(m => m.typeId.Equals("1")); // 主表
|
||||
MainTableName = MainTable?.table; // 主表名称
|
||||
AddChlidTableFeildsModel();
|
||||
|
||||
// 处理旧控件 部分没有 tableName
|
||||
FieldsModelList.Where(x => string.IsNullOrWhiteSpace(x.__config__.tableName)).ToList().ForEach(item =>
|
||||
// 数据视图
|
||||
if (entity.WebType.Equals(4))
|
||||
{
|
||||
if (item.__vModel__.Contains("_jnpf_")) item.__config__.tableName = item.__vModel__.ReplaceRegex(@"_jnpf_(\w+)", string.Empty).Replace("jnpf_", string.Empty); // 副表
|
||||
else item.__config__.tableName = MainTableName != null ? MainTableName : string.Empty; // 主表
|
||||
});
|
||||
AllTable = entity.Tables.ToObject<List<TableModel>>(); // 所有表
|
||||
AuxiliaryTableFieldsModelList = FieldsModelList.Where(x => x.__vModel__.Contains("_jnpf_")).ToList(); // 单控件副表集合
|
||||
ChildTableFieldsModelList = FieldsModelList.Where(x => x.__config__.jnpfKey == "table").ToList(); // 子表集合
|
||||
MainTableFieldsModelList = FieldsModelList.Except(AuxiliaryTableFieldsModelList).Except(ChildTableFieldsModelList).ToList(); // 主表控件集合
|
||||
SingleFormData = FieldsModelList.Where(x => x.__config__.jnpfKey != "table").ToList(); // 非子表集合
|
||||
GenerateFields = GetGenerateFields(); // 系统生成控件
|
||||
|
||||
MainTableFields = new Dictionary<string, string>();
|
||||
AuxiliaryTableFields = new Dictionary<string, string>();
|
||||
ChildTableFields = new Dictionary<string, string>();
|
||||
AllTableFields = new Dictionary<string, string>();
|
||||
MainTableFieldsModelList.Where(x => x.__vModel__.IsNotEmptyOrNull()).ToList().ForEach(x =>
|
||||
{
|
||||
MainTableFields.Add(x.__vModel__, x.__config__.tableName + "." + x.__vModel__);
|
||||
AllTableFields.Add(x.__vModel__, x.__config__.tableName + "." + x.__vModel__);
|
||||
});
|
||||
AuxiliaryTableFieldsModelList.Where(x => x.__vModel__.IsNotEmptyOrNull()).ToList().ForEach(x =>
|
||||
{
|
||||
AuxiliaryTableFields.Add(x.__vModel__, x.__vModel__.Replace("_jnpf_", ".").Replace("jnpf_", string.Empty));
|
||||
AllTableFields.Add(x.__vModel__, x.__vModel__.Replace("_jnpf_", ".").Replace("jnpf_", string.Empty));
|
||||
});
|
||||
ChildTableFieldsModelList.ForEach(item =>
|
||||
{
|
||||
item.__config__.children.Where(x => x.__vModel__.IsNotEmptyOrNull()).ToList().ForEach(x =>
|
||||
FullName = entity.FullName;
|
||||
IsHasTable = false;
|
||||
InitColumnData(entity);
|
||||
AllFieldsModel = new List<FieldsModel>();
|
||||
ColumnData.columnList.ForEach(item =>
|
||||
{
|
||||
ChildTableFields.Add(item.__vModel__ + "-" + x.__vModel__, item.__config__.tableName + "." + x.__vModel__);
|
||||
AllTableFields.Add(item.__vModel__ + "-" + x.__vModel__, item.__config__.tableName + "." + x.__vModel__);
|
||||
AllFieldsModel.Add(new FieldsModel() { __vModel__ = item.__vModel__, __config__ = new ConfigModel() { label = item.label, jnpfKey = item.jnpfKey } });
|
||||
});
|
||||
});
|
||||
|
||||
if (!string.IsNullOrWhiteSpace(entity.ColumnData)) ColumnData = entity.ColumnData.ToObject<ColumnDesignModel>(); // 列配置模型
|
||||
else ColumnData = new ColumnDesignModel();
|
||||
|
||||
if (!string.IsNullOrWhiteSpace(entity.AppColumnData)) AppColumnData = entity.AppColumnData.ToObject<ColumnDesignModel>(); // 列配置模型
|
||||
else AppColumnData = new ColumnDesignModel();
|
||||
|
||||
if (AppColumnData.columnList != null && AppColumnData.columnList.Any())
|
||||
{
|
||||
AppColumnData.columnList.ForEach(item =>
|
||||
{
|
||||
var addColumn = ColumnData.columnList.Find(x => x.prop == item.prop);
|
||||
if (addColumn == null) ColumnData.columnList.Add(item);
|
||||
AllFieldsModel.Add(new FieldsModel() { __vModel__ = item.__vModel__, __config__ = new ConfigModel() { label = item.label, jnpfKey = item.jnpfKey } });
|
||||
});
|
||||
AllFieldsModel = AllFieldsModel.DistinctBy(x => x.__vModel__).ToList();
|
||||
FieldsModelList = AllFieldsModel;
|
||||
AuxiliaryTableFieldsModelList = AllFieldsModel;
|
||||
MainTableFieldsModelList = AllFieldsModel;
|
||||
SingleFormData = AllFieldsModel;
|
||||
}
|
||||
|
||||
if (AppColumnData.searchList != null && AppColumnData.searchList.Any())
|
||||
else
|
||||
{
|
||||
AppColumnData.searchList.ForEach(item =>
|
||||
FormDataModel formModel = entity.FormData.ToObjectOld<FormDataModel>();
|
||||
FormModel = formModel; // 表单Json模型
|
||||
IsHasTable = !string.IsNullOrEmpty(entity.Tables) && !"[]".Equals(entity.Tables); // 是否有表
|
||||
AllFieldsModel = GetInDataFieldsModel(formModel.fields.ToJsonString().ToObjectOld<List<FieldsModel>>()); // 所有控件集合
|
||||
FieldsModelList = GetInDataFieldsModel(formModel.fields); // 已剔除布局控件集合
|
||||
MainTable = entity.Tables.ToList<TableModel>().Find(m => m.typeId.Equals("1")); // 主表
|
||||
MainTableName = MainTable?.table; // 主表名称
|
||||
AddChlidTableFeildsModel();
|
||||
|
||||
// 处理旧控件 部分没有 tableName
|
||||
FieldsModelList.Where(x => string.IsNullOrWhiteSpace(x.__config__.tableName)).ToList().ForEach(item =>
|
||||
{
|
||||
var addSearch = ColumnData.searchList.Find(x => x.__config__.jnpfKey == item.__config__.jnpfKey);
|
||||
if (addSearch == null) ColumnData.searchList.Add(item);
|
||||
if (item.__vModel__.Contains("_jnpf_")) item.__config__.tableName = item.__vModel__.ReplaceRegex(@"_jnpf_(\w+)", string.Empty).Replace("jnpf_", string.Empty); // 副表
|
||||
else item.__config__.tableName = MainTableName != null ? MainTableName : string.Empty; // 主表
|
||||
});
|
||||
}
|
||||
AllTable = entity.Tables.ToObject<List<TableModel>>(); // 所有表
|
||||
AuxiliaryTableFieldsModelList = FieldsModelList.Where(x => x.__vModel__.Contains("_jnpf_")).ToList(); // 单控件副表集合
|
||||
ChildTableFieldsModelList = FieldsModelList.Where(x => x.__config__.jnpfKey == JnpfKeyConst.TABLE).ToList(); // 子表集合
|
||||
MainTableFieldsModelList = FieldsModelList.Except(AuxiliaryTableFieldsModelList).Except(ChildTableFieldsModelList).ToList(); // 主表控件集合
|
||||
SingleFormData = FieldsModelList.Where(x => x.__config__.jnpfKey != JnpfKeyConst.TABLE).ToList(); // 非子表集合
|
||||
GenerateFields = GetGenerateFields(); // 系统生成控件
|
||||
|
||||
if (ColumnData.searchList != null && ColumnData.searchList.Any())
|
||||
{
|
||||
ColumnData.searchList.Where(x => x.__config__.jnpfKey == JnpfKeyConst.CASCADER).ToList().ForEach(item =>
|
||||
MainTableFields = new Dictionary<string, string>();
|
||||
AuxiliaryTableFields = new Dictionary<string, string>();
|
||||
ChildTableFields = new Dictionary<string, string>();
|
||||
AllTableFields = new Dictionary<string, string>();
|
||||
MainTableFieldsModelList.Where(x => x.__vModel__.IsNotEmptyOrNull()).ToList().ForEach(x =>
|
||||
{
|
||||
MainTableFields.Add(x.__vModel__, x.__config__.tableName + "." + x.__vModel__);
|
||||
AllTableFields.Add(x.__vModel__, x.__config__.tableName + "." + x.__vModel__);
|
||||
});
|
||||
AuxiliaryTableFieldsModelList.Where(x => x.__vModel__.IsNotEmptyOrNull()).ToList().ForEach(x =>
|
||||
{
|
||||
AuxiliaryTableFields.Add(x.__vModel__, x.__vModel__.Replace("_jnpf_", ".").Replace("jnpf_", string.Empty));
|
||||
AllTableFields.Add(x.__vModel__, x.__vModel__.Replace("_jnpf_", ".").Replace("jnpf_", string.Empty));
|
||||
});
|
||||
ChildTableFieldsModelList.ForEach(item =>
|
||||
{
|
||||
item.__config__.children.Where(x => x.__vModel__.IsNotEmptyOrNull()).ToList().ForEach(x =>
|
||||
{
|
||||
var it = SingleFormData.FirstOrDefault(x => x.__vModel__ == item.__vModel__);
|
||||
if (it != null) item.multiple = it.props.props.multiple;
|
||||
ChildTableFields.Add(item.__vModel__ + "-" + x.__vModel__, item.__config__.tableName + "." + x.__vModel__);
|
||||
AllTableFields.Add(item.__vModel__ + "-" + x.__vModel__, item.__config__.tableName + "." + x.__vModel__);
|
||||
});
|
||||
}
|
||||
|
||||
FullName = entity.FullName;
|
||||
|
||||
if (ColumnData.uploaderTemplateJson != null && ColumnData.uploaderTemplateJson.selectKey != null)
|
||||
{
|
||||
dataType = ColumnData.uploaderTemplateJson.dataType;
|
||||
selectKey = new List<string>();
|
||||
|
||||
// 列顺序
|
||||
AllFieldsModel.ForEach(item =>
|
||||
{
|
||||
if (ColumnData.uploaderTemplateJson.selectKey.Any(x => x.Equals(item.__vModel__))) selectKey.Add(item.__vModel__);
|
||||
});
|
||||
InitColumnData(entity);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -312,9 +300,9 @@ public class TemplateParsingBase
|
||||
else item.__config__.tableName = MainTableName != null ? MainTableName : string.Empty; // 主表
|
||||
});
|
||||
AuxiliaryTableFieldsModelList = FieldsModelList.Where(x => x.__vModel__.Contains("_jnpf_")).ToList(); // 单控件副表集合
|
||||
ChildTableFieldsModelList = FieldsModelList.Where(x => x.__config__.jnpfKey == "table").ToList(); // 子表集合
|
||||
ChildTableFieldsModelList = FieldsModelList.Where(x => x.__config__.jnpfKey == JnpfKeyConst.TABLE).ToList(); // 子表集合
|
||||
MainTableFieldsModelList = FieldsModelList.Except(AuxiliaryTableFieldsModelList).Except(ChildTableFieldsModelList).ToList(); // 主表控件集合
|
||||
SingleFormData = FieldsModelList.Where(x => x.__config__.jnpfKey != "table").ToList(); // 非子表集合
|
||||
SingleFormData = FieldsModelList.Where(x => x.__config__.jnpfKey != JnpfKeyConst.TABLE).ToList(); // 非子表集合
|
||||
GenerateFields = GetGenerateFields(); // 系统生成控件
|
||||
|
||||
MainTableFields = new Dictionary<string, string>();
|
||||
@@ -356,7 +344,7 @@ public class TemplateParsingBase
|
||||
/// <returns>true 通过.</returns>
|
||||
public bool VerifyTemplate()
|
||||
{
|
||||
if (FieldsModelList != null && FieldsModelList.Any(x => x.__config__.jnpfKey == "table"))
|
||||
if (FieldsModelList != null && FieldsModelList.Any(x => x.__config__.jnpfKey == JnpfKeyConst.TABLE))
|
||||
{
|
||||
foreach (FieldsModel? item in ChildTableFieldsModelList)
|
||||
{
|
||||
@@ -477,10 +465,10 @@ public class TemplateParsingBase
|
||||
}
|
||||
else
|
||||
{
|
||||
FormDataModel formModel = formJson.ToObject<FormDataModel>();
|
||||
FormDataModel formModel = formJson.ToObjectOld<FormDataModel>();
|
||||
FormModel = formModel; // 表单Json模型
|
||||
IsHasTable = !string.IsNullOrEmpty(tables) && !"[]".Equals(tables); // 是否有表
|
||||
AllFieldsModel = GetInDataFieldsModel(formModel.fields.ToJsonString().ToObject<List<FieldsModel>>()); // 所有控件集合
|
||||
IsHasTable = !string.IsNullOrEmpty(tables) && !"[]".Equals(tables) && tables.IsNullOrEmpty(); // 是否有表
|
||||
AllFieldsModel = GetInDataFieldsModel(formModel.fields.ToJsonString().ToObjectOld<List<FieldsModel>>()); // 所有控件集合
|
||||
FieldsModelList = GetInDataFieldsModel(formModel.fields); // 已剔除布局控件集合
|
||||
MainTable = tables.ToList<TableModel>().Find(m => m.typeId.Equals("1")); // 主表
|
||||
MainTableName = MainTable?.table; // 主表名称
|
||||
@@ -494,9 +482,9 @@ public class TemplateParsingBase
|
||||
});
|
||||
AllTable = tables.ToObject<List<TableModel>>(); // 所有表
|
||||
AuxiliaryTableFieldsModelList = FieldsModelList.Where(x => x.__vModel__.Contains("_jnpf_")).ToList(); // 单控件副表集合
|
||||
ChildTableFieldsModelList = FieldsModelList.Where(x => x.__config__.jnpfKey == "table").ToList(); // 子表集合
|
||||
ChildTableFieldsModelList = FieldsModelList.Where(x => x.__config__.jnpfKey == JnpfKeyConst.TABLE).ToList(); // 子表集合
|
||||
MainTableFieldsModelList = FieldsModelList.Except(AuxiliaryTableFieldsModelList).Except(ChildTableFieldsModelList).ToList(); // 主表控件集合
|
||||
SingleFormData = FieldsModelList.Where(x => x.__config__.jnpfKey != "table").ToList(); // 非子表集合
|
||||
SingleFormData = FieldsModelList.Where(x => x.__config__.jnpfKey != JnpfKeyConst.TABLE).ToList(); // 非子表集合
|
||||
GenerateFields = GetGenerateFields(); // 系统生成控件
|
||||
|
||||
MainTableFields = new Dictionary<string, string>();
|
||||
@@ -526,4 +514,233 @@ public class TemplateParsingBase
|
||||
AppColumnData = new ColumnDesignModel();
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 初始化列配置模型.
|
||||
/// </summary>
|
||||
private void InitColumnData(VisualDevEntity entity)
|
||||
{
|
||||
if (!string.IsNullOrWhiteSpace(entity.ColumnData)) ColumnData = entity.ColumnData.ToObject<ColumnDesignModel>(); // 列配置模型
|
||||
else ColumnData = new ColumnDesignModel();
|
||||
|
||||
if (!string.IsNullOrWhiteSpace(entity.AppColumnData)) AppColumnData = entity.AppColumnData.ToObject<ColumnDesignModel>(); // 列配置模型
|
||||
else AppColumnData = new ColumnDesignModel();
|
||||
|
||||
if (AppColumnData.columnList != null && AppColumnData.columnList.Any())
|
||||
{
|
||||
AppColumnData.columnList.ForEach(item =>
|
||||
{
|
||||
var addColumn = ColumnData.columnList.Find(x => x.prop == item.prop);
|
||||
if (addColumn == null) ColumnData.columnList.Add(item);
|
||||
});
|
||||
}
|
||||
|
||||
if (AppColumnData.searchList != null && AppColumnData.searchList.Any())
|
||||
{
|
||||
AppColumnData.searchList.ForEach(item =>
|
||||
{
|
||||
var addSearch = ColumnData.searchList.Find(x => x.__config__.jnpfKey == item.__config__.jnpfKey);
|
||||
if (addSearch == null) ColumnData.searchList.Add(item);
|
||||
});
|
||||
}
|
||||
|
||||
if (ColumnData.searchList != null && ColumnData.searchList.Any())
|
||||
{
|
||||
ColumnData.searchList.Where(x => x.__config__.jnpfKey == JnpfKeyConst.CASCADER).ToList().ForEach(item =>
|
||||
{
|
||||
var it = SingleFormData.FirstOrDefault(x => x.__vModel__ == item.__vModel__);
|
||||
if (it != null) item.multiple = it.props.props.multiple;
|
||||
});
|
||||
}
|
||||
|
||||
FullName = entity.FullName;
|
||||
|
||||
if (ColumnData.uploaderTemplateJson != null && ColumnData.uploaderTemplateJson.selectKey != null)
|
||||
{
|
||||
dataType = ColumnData.uploaderTemplateJson.dataType;
|
||||
selectKey = new List<string>();
|
||||
|
||||
// 列顺序
|
||||
AllFieldsModel.ForEach(item =>
|
||||
{
|
||||
if (ColumnData.uploaderTemplateJson.selectKey.Any(x => x.Equals(item.__vModel__))) selectKey.Add(item.__vModel__);
|
||||
});
|
||||
}
|
||||
|
||||
// 数据过滤
|
||||
if (ColumnData.ruleList != null && ColumnData.ruleList.Any())
|
||||
{
|
||||
DataRuleListJson = new List<IConditionalModel>();
|
||||
var condTree = new ConditionalTree() { ConditionalList = new List<KeyValuePair<WhereType, IConditionalModel>>() };
|
||||
ColumnData.ruleList.ForEach(item => condTree.ConditionalList.Add(new KeyValuePair<WhereType, IConditionalModel>(WhereType.And, GetItemRule(item))));
|
||||
DataRuleListJson.Add(condTree);
|
||||
}
|
||||
|
||||
if (AppColumnData.ruleListApp != null && AppColumnData.ruleListApp.Any())
|
||||
{
|
||||
AppDataRuleListJson = new List<IConditionalModel>();
|
||||
var condTree = new ConditionalTree() { ConditionalList = new List<KeyValuePair<WhereType, IConditionalModel>>() };
|
||||
AppColumnData.ruleListApp.ForEach(item => condTree.ConditionalList.Add(new KeyValuePair<WhereType, IConditionalModel>(WhereType.And, GetItemRule(item))));
|
||||
AppDataRuleListJson.Add(condTree);
|
||||
}
|
||||
}
|
||||
|
||||
private IConditionalModel GetItemRule(RuleFieldModel item)
|
||||
{
|
||||
var conditionalType = ConditionalType.Equal;
|
||||
var between = new List<string>();
|
||||
if (item.fieldValue.IsNotEmptyOrNull())
|
||||
{
|
||||
if (item.symbol.Equals("between")) between = item.fieldValue.ToObject<List<string>>();
|
||||
switch (item.jnpfKey)
|
||||
{
|
||||
case JnpfKeyConst.CREATETIME:
|
||||
case JnpfKeyConst.MODIFYTIME:
|
||||
case JnpfKeyConst.DATE:
|
||||
{
|
||||
if (item.symbol.Equals("between"))
|
||||
{
|
||||
var startTime = between.First().TimeStampToDateTime();
|
||||
var endTime = between.Last().TimeStampToDateTime();
|
||||
between[0] = startTime.ToString();
|
||||
between[1] = endTime.ToString();
|
||||
if (item.format == "yyyy-MM-dd")
|
||||
{
|
||||
between[0] = new DateTime(startTime.Year, startTime.Month, startTime.Day, 0, 0, 0, 0).ToString();
|
||||
between[1] = new DateTime(endTime.Year, endTime.Month, endTime.Day, 23, 59, 59, 999).ToString();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (item.format == "yyyy-MM-dd")
|
||||
{
|
||||
var value = item.fieldValue.ToString().TimeStampToDateTime();
|
||||
item.fieldValue = new DateTime(value.Year, value.Month, value.Day, 0, 0, 0, 0).ToString();
|
||||
}
|
||||
else
|
||||
{
|
||||
item.fieldValue = item.fieldValue.IsNotEmptyOrNull() ? item.fieldValue.ToString().TimeStampToDateTime() : item.fieldValue;
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
switch (item.symbol)
|
||||
{
|
||||
case ">=":
|
||||
conditionalType = ConditionalType.GreaterThanOrEqual;
|
||||
break;
|
||||
case ">":
|
||||
conditionalType = ConditionalType.GreaterThan;
|
||||
break;
|
||||
case "==":
|
||||
conditionalType = ConditionalType.Equal;
|
||||
break;
|
||||
case "<=":
|
||||
conditionalType = ConditionalType.LessThanOrEqual;
|
||||
break;
|
||||
case "<":
|
||||
conditionalType = ConditionalType.LessThan;
|
||||
break;
|
||||
case "<>":
|
||||
conditionalType = ConditionalType.NoEqual;
|
||||
break;
|
||||
case "like":
|
||||
if (item.fieldValue != null && item.fieldValue.ToString().Contains("[")) item.fieldValue = item.fieldValue.ToString().Replace("[", string.Empty).Replace("]", string.Empty);
|
||||
conditionalType = ConditionalType.Like;
|
||||
break;
|
||||
case "notLike":
|
||||
if (item.fieldValue != null && item.fieldValue.ToString().Contains("[")) item.fieldValue = item.fieldValue.ToString().Replace("[", string.Empty).Replace("]", string.Empty);
|
||||
conditionalType = ConditionalType.NoLike;
|
||||
break;
|
||||
case "in":
|
||||
case "notIn":
|
||||
if (item.fieldValue != null && item.fieldValue.ToString().Contains("["))
|
||||
{
|
||||
var isListValue = false;
|
||||
var itemField = AllFieldsModel.Find(x => x.__vModel__.Equals(item.__vModel__));
|
||||
if (itemField.multiple || item.jnpfKey.Equals(JnpfKeyConst.CHECKBOX) || item.jnpfKey.Equals(JnpfKeyConst.CASCADER) || item.jnpfKey.Equals(JnpfKeyConst.ADDRESS))
|
||||
isListValue = true;
|
||||
var conditionalList = new ConditionalCollections() { ConditionalList = new List<KeyValuePair<WhereType, ConditionalModel>>() };
|
||||
var ids = new List<string>();
|
||||
if (item.fieldValue.ToString().Replace("\r\n", "").Replace(" ", "").Contains("[[")) ids = item.fieldValue.ToObject<List<List<string>>>().Select(x => x.Last()).ToList();
|
||||
else ids = item.fieldValue.ToObject<List<string>>();
|
||||
|
||||
for (var i = 0; i < ids.Count; i++)
|
||||
{
|
||||
var it = ids[i];
|
||||
var whereType = WhereType.And;
|
||||
if (item.symbol.Equals("in")) whereType = i.Equals(0) && item.logic.Equals("&&") ? WhereType.And : WhereType.Or;
|
||||
else whereType = i.Equals(0) && item.logic.Equals("||") ? WhereType.Or : WhereType.And;
|
||||
conditionalList.ConditionalList.Add(new KeyValuePair<WhereType, ConditionalModel>(whereType, new ConditionalModel
|
||||
{
|
||||
FieldName = item.field,
|
||||
ConditionalType = item.symbol.Equals("in") ? ConditionalType.Like : ConditionalType.NoLike,
|
||||
FieldValue = isListValue ? it.ToJsonString() : it
|
||||
}));
|
||||
}
|
||||
|
||||
if (item.symbol.Equals("notIn"))
|
||||
{
|
||||
conditionalList.ConditionalList.Add(new KeyValuePair<WhereType, ConditionalModel>(WhereType.And, new ConditionalModel
|
||||
{
|
||||
FieldName = item.field,
|
||||
ConditionalType = ConditionalType.IsNot,
|
||||
FieldValue = null
|
||||
}));
|
||||
conditionalList.ConditionalList.Add(new KeyValuePair<WhereType, ConditionalModel>(WhereType.And, new ConditionalModel
|
||||
{
|
||||
FieldName = item.field,
|
||||
ConditionalType = ConditionalType.IsNot,
|
||||
FieldValue = string.Empty
|
||||
}));
|
||||
}
|
||||
|
||||
return conditionalList;
|
||||
}
|
||||
conditionalType = item.symbol.Equals("in") ? ConditionalType.In : ConditionalType.NotIn;
|
||||
break;
|
||||
case "null":
|
||||
conditionalType = (item.jnpfKey.Equals(JnpfKeyConst.CALCULATE) || item.jnpfKey.Equals(JnpfKeyConst.NUMINPUT)) ? ConditionalType.EqualNull : ConditionalType.IsNullOrEmpty;
|
||||
break;
|
||||
case "notNull":
|
||||
conditionalType = ConditionalType.IsNot;
|
||||
break;
|
||||
case "between":
|
||||
return new ConditionalCollections()
|
||||
{
|
||||
ConditionalList = new List<KeyValuePair<WhereType, ConditionalModel>>()
|
||||
{
|
||||
new KeyValuePair<WhereType, ConditionalModel>((item.logic.Equals("&&") ? WhereType.And : WhereType.Or), new ConditionalModel
|
||||
{
|
||||
FieldName = item.field,
|
||||
ConditionalType = ConditionalType.GreaterThanOrEqual,
|
||||
FieldValue = between.First(),
|
||||
FieldValueConvertFunc = it => Convert.ToDateTime(it)
|
||||
}),
|
||||
new KeyValuePair<WhereType, ConditionalModel>(WhereType.And, new ConditionalModel
|
||||
{
|
||||
FieldName = item.field,
|
||||
ConditionalType = ConditionalType.LessThanOrEqual,
|
||||
FieldValue = between.Last(),
|
||||
FieldValueConvertFunc = it => Convert.ToDateTime(it)
|
||||
})
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
return new ConditionalCollections()
|
||||
{
|
||||
ConditionalList = new List<KeyValuePair<WhereType, ConditionalModel>>()
|
||||
{
|
||||
new KeyValuePair<WhereType, ConditionalModel>((item.logic.Equals("&&") ? WhereType.And : WhereType.Or), new ConditionalModel
|
||||
{
|
||||
FieldName = item.field,
|
||||
ConditionalType = conditionalType,
|
||||
FieldValue = item.fieldValue == null ? null : item.fieldValue.ToString()
|
||||
})
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user