v3.4.6
This commit is contained in:
@@ -1,5 +1,4 @@
|
||||
using System.Text.RegularExpressions;
|
||||
using JNPF.Common.Const;
|
||||
using JNPF.Common.Const;
|
||||
using JNPF.Common.Core.Manager;
|
||||
using JNPF.Common.Dtos;
|
||||
using JNPF.Common.Extension;
|
||||
@@ -22,7 +21,6 @@ using JNPF.VisualDev.Entitys.Dto.VisualDevModelData;
|
||||
using JNPF.VisualDev.Interfaces;
|
||||
using JNPF.WorkFlow.Entitys.Entity;
|
||||
using Mapster;
|
||||
using Microsoft.Extensions.Caching.Memory;
|
||||
using Newtonsoft.Json.Linq;
|
||||
using SqlSugar;
|
||||
|
||||
@@ -55,53 +53,44 @@ public class FormDataParsing : ITransient
|
||||
/// </summary>
|
||||
private readonly ICacheManager _cacheManager;
|
||||
|
||||
/// <summary>
|
||||
/// 缓存管理.
|
||||
/// </summary>
|
||||
private readonly IMemoryCache _memCache;
|
||||
/// <summary>
|
||||
/// 服务基础仓储.
|
||||
/// </summary>
|
||||
private readonly ISqlSugarRepository<VisualDevEntity> _db;
|
||||
|
||||
/// <summary>
|
||||
/// 服务基础仓储.
|
||||
/// </summary>
|
||||
//private readonly ISqlSugarRepository<VisualDevEntity> _db;
|
||||
private readonly ISqlSugarClient _sugar;
|
||||
/// <summary>
|
||||
/// 构造.
|
||||
/// </summary>
|
||||
/// <param name="userManager"></param>
|
||||
/// <param name="cacheManager"></param>
|
||||
/// <param name="databaseService"></param>
|
||||
/// <param name="dataInterfaceService"></param>
|
||||
/// <param name="context"></param>
|
||||
public FormDataParsing(
|
||||
IUserManager userManager,
|
||||
ICacheManager cacheManager,
|
||||
IDataBaseManager databaseService,
|
||||
IDataInterfaceService dataInterfaceService,
|
||||
ISqlSugarRepository<VisualDevEntity> context)
|
||||
{
|
||||
_userManager = userManager;
|
||||
_cacheManager = cacheManager;
|
||||
_databaseService = databaseService;
|
||||
_dataInterfaceService = dataInterfaceService;
|
||||
_db = context;
|
||||
}
|
||||
#endregion
|
||||
|
||||
/// <summary>
|
||||
/// 构造.
|
||||
/// </summary>
|
||||
/// <param name="userManager"></param>
|
||||
/// <param name="cacheManager"></param>
|
||||
/// <param name="databaseService"></param>
|
||||
/// <param name="dataInterfaceService"></param>
|
||||
/// <param name="context"></param>
|
||||
public FormDataParsing(
|
||||
IUserManager userManager,
|
||||
ICacheManager cacheManager,
|
||||
IDataBaseManager databaseService,
|
||||
IDataInterfaceService dataInterfaceService,
|
||||
ISqlSugarRepository<VisualDevEntity> context,
|
||||
IMemoryCache memCache)
|
||||
{
|
||||
_userManager = userManager;
|
||||
_cacheManager = cacheManager;
|
||||
_databaseService = databaseService;
|
||||
_dataInterfaceService = dataInterfaceService;
|
||||
_sugar = context.AsSugarClient().CopyNew();
|
||||
//_db = context;
|
||||
_memCache = memCache;
|
||||
}
|
||||
#endregion
|
||||
#region 解析模板数据
|
||||
|
||||
#region 解析模板数据
|
||||
|
||||
/// <summary>
|
||||
/// 控制模板数据转换.
|
||||
/// </summary>
|
||||
/// <param name="data">数据.</param>
|
||||
/// <param name="fieldsModel">数据模板.</param>
|
||||
/// <param name="actionType">操作类型(List-列表值,create-创建值,update-更新值,detail-详情值,transition-过渡值,query-查询).</param>
|
||||
/// <returns>object.</returns>
|
||||
public object TemplateControlsDataConversion(object data, FieldsModel fieldsModel, string? actionType = null)
|
||||
/// <summary>
|
||||
/// 控制模板数据转换.
|
||||
/// </summary>
|
||||
/// <param name="data">数据.</param>
|
||||
/// <param name="fieldsModel">数据模板.</param>
|
||||
/// <param name="actionType">操作类型(List-列表值,create-创建值,update-更新值,detail-详情值,transition-过渡值,query-查询).</param>
|
||||
/// <returns>object.</returns>
|
||||
public object TemplateControlsDataConversion(object data, FieldsModel fieldsModel, string? actionType = null)
|
||||
{
|
||||
if (fieldsModel == null || data == null || data.Equals("[]") || data.ToString().Equals("[]") || string.IsNullOrEmpty(data.ToString())) return string.Empty;
|
||||
try
|
||||
@@ -117,11 +106,20 @@ public class FormDataParsing : ITransient
|
||||
if (fieldsModel.precision.IsNullOrEmpty()) fieldsModel.precision = 0; // 数字输入
|
||||
if (data.ToString().Contains("."))
|
||||
{
|
||||
var len = data.ToString().Split('.').Last().Length;
|
||||
if (fieldsModel.precision > len) fieldsModel.precision = len;
|
||||
conversionData = data.ToString().Substring(0, data.ToString().IndexOf(".") + (int)fieldsModel.precision + 1);//modifyby zhoukeda 20230512 增加+1
|
||||
conversionData = data.ParseToDouble();//modifyby zhoukeda 20230512
|
||||
var dataList = data.ToString().Split('.');
|
||||
if (fieldsModel.precision == 0)
|
||||
{
|
||||
conversionData = dataList.First();
|
||||
}
|
||||
else
|
||||
{
|
||||
if (fieldsModel.precision > dataList.Last().Length) fieldsModel.precision = dataList.Last().Length;
|
||||
conversionData = dataList.First() + "." + dataList.Last().Substring(0, (int)fieldsModel.precision);
|
||||
}
|
||||
//conversionData = data.ToString().Substring(0, data.ToString().IndexOf(".") + (int)fieldsModel.precision + 1);//modifyby zhoukeda 20230512 增加+1
|
||||
//conversionData = data.ParseToDouble();//modifyby zhoukeda 20230512
|
||||
}
|
||||
else if (fieldsModel.precision > 0) conversionData = data.ToString() + ".".PadRight((int)fieldsModel.precision + 1, '0');
|
||||
else conversionData = data;
|
||||
break;
|
||||
case JnpfKeyConst.JNPFAMOUNT:
|
||||
@@ -206,7 +204,10 @@ public class FormDataParsing : ITransient
|
||||
conversionData = string.Format("{0:yyyy-MM-dd HH:mm:ss}", data.ToString().TimeStampToDateTime());
|
||||
break;
|
||||
case "create":
|
||||
conversionData = string.Format("{0:yyyy-MM-dd HH:mm:ss}", data.ToString().TimeStampToDateTime());
|
||||
if (fieldsModel.format.ToLower().Equals("yyyy-mm-dd"))
|
||||
conversionData = string.Format("{0:yyyy-MM-dd}", data.ToString().TimeStampToDateTime());
|
||||
else
|
||||
conversionData = string.Format("{0:yyyy-MM-dd HH:mm:ss}", data.ToString().TimeStampToDateTime());
|
||||
break;
|
||||
case "detail":
|
||||
conversionData = data;
|
||||
@@ -435,6 +436,11 @@ public class FormDataParsing : ITransient
|
||||
if (data.GetType().Name.ToLower().Equals("string")) conversionData = data;
|
||||
else if (data.ToString().Contains("[")) conversionData = data.ToJsonString();
|
||||
else conversionData = data;
|
||||
break;
|
||||
case "List":
|
||||
if (fieldsModel.multiple) conversionData = data.ToString().ToObject<List<object>>();
|
||||
else conversionData = data;
|
||||
|
||||
break;
|
||||
default:
|
||||
if (fieldsModel.multiple) conversionData = data.ToString().ToObject<List<object>>();
|
||||
@@ -498,8 +504,9 @@ public class FormDataParsing : ITransient
|
||||
/// <param name="data">插入的数据.</param>
|
||||
/// <param name="_fieldsModelList">控件集合.</param>
|
||||
/// <param name="actionType">操作类型.</param>
|
||||
/// <param name="isShortLink">是否外链.</param>
|
||||
/// <returns>string.</returns>
|
||||
public object InsertValueHandle(string dbType, List<DbTableFieldModel> _tableList, string field, object data, List<FieldsModel> _fieldsModelList, string actionType = "create")
|
||||
public object InsertValueHandle(string dbType, List<DbTableFieldModel> _tableList, string field, object data, List<FieldsModel> _fieldsModelList, string actionType = "create", bool isShortLink = false)
|
||||
{
|
||||
// 根据KEY查找模板
|
||||
FieldsModel? model = _fieldsModelList.Find(f => f.__vModel__ == field);
|
||||
@@ -514,7 +521,9 @@ public class FormDataParsing : ITransient
|
||||
var res = TemplateControlsDataConversion(data, model, actionType);
|
||||
if (actionType.Equals("create"))
|
||||
{
|
||||
if (model.__config__.jnpfKey.Equals(JnpfKeyConst.CREATETIME) || model.__config__.jnpfKey.Equals(JnpfKeyConst.DATE))
|
||||
if (isShortLink && model.__config__.jnpfKey.Equals(JnpfKeyConst.CREATETIME))
|
||||
return null;
|
||||
else if(model.__config__.jnpfKey.Equals(JnpfKeyConst.CREATETIME) || model.__config__.jnpfKey.Equals(JnpfKeyConst.DATE))
|
||||
return res.ToString().ParseToDateTime();
|
||||
else if (model.__config__.jnpfKey.Equals(JnpfKeyConst.NUMINPUT) || model.__config__.jnpfKey.Equals(JnpfKeyConst.SWITCH))//modify by zhoukeda 2023427 开关默认数字
|
||||
return res;
|
||||
@@ -561,11 +570,23 @@ public class FormDataParsing : ITransient
|
||||
if (vModelType.DYNAMIC.GetDescription() == configModel.dataType) list = await GetDynamicList(model);
|
||||
if (vModelType.STATIC.GetDescription() == configModel.dataType)
|
||||
{
|
||||
foreach (Dictionary<string, object>? item in model.__slot__.options)
|
||||
if (model.__slot__ != null && model.__slot__.options != null && model.__slot__.options.Any())
|
||||
{
|
||||
Dictionary<string, string> option = new Dictionary<string, string>();
|
||||
option.Add(item[model.__config__.props.value].ToString(), item[model.__config__.props.label].ToString());
|
||||
list.Add(option);
|
||||
foreach (Dictionary<string, object>? item in model.__slot__.options)
|
||||
{
|
||||
Dictionary<string, string> option = new Dictionary<string, string>();
|
||||
option.Add(item[model.__config__.props.value].ToString(), item[model.__config__.props.label].ToString());
|
||||
list.Add(option);
|
||||
}
|
||||
}
|
||||
else if (model.options != null && model.options.Any())
|
||||
{
|
||||
foreach (Dictionary<string, object>? item in model.options.ToObject<List<Dictionary<string, object>>>())
|
||||
{
|
||||
Dictionary<string, string> option = new Dictionary<string, string>();
|
||||
option.Add(item[model.props.props.value].ToString(), item[model.props.props.label].ToString());
|
||||
list.Add(option);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -621,7 +642,7 @@ public class FormDataParsing : ITransient
|
||||
case JnpfKeyConst.POSSELECT: // 岗位
|
||||
if (!GetCacheValues(fieldCacheKey, templateData))
|
||||
{
|
||||
List<PositionEntity>? positionEntityList = await _sugar.Queryable<PositionEntity>().Where(u => u.DeleteMark == null).ToListAsync();
|
||||
List<PositionEntity>? positionEntityList = await _db.AsSugarClient().Queryable<PositionEntity>().Where(u => u.DeleteMark == null).ToListAsync();
|
||||
List<Dictionary<string, string>> positionList = new List<Dictionary<string, string>>();
|
||||
foreach (PositionEntity? item in positionEntityList)
|
||||
{
|
||||
@@ -638,7 +659,7 @@ public class FormDataParsing : ITransient
|
||||
case JnpfKeyConst.GROUPSELECT: // 分组
|
||||
if (!GetCacheValues(fieldCacheKey, templateData))
|
||||
{
|
||||
List<GroupEntity>? positionEntityList = await _sugar.Queryable<GroupEntity>().Where(u => u.DeleteMark == null).ToListAsync();
|
||||
List<GroupEntity>? positionEntityList = await _db.AsSugarClient().Queryable<GroupEntity>().Where(u => u.DeleteMark == null).ToListAsync();
|
||||
List<Dictionary<string, string>> positionList = new List<Dictionary<string, string>>();
|
||||
foreach (GroupEntity? item in positionEntityList)
|
||||
{
|
||||
@@ -655,7 +676,7 @@ public class FormDataParsing : ITransient
|
||||
case JnpfKeyConst.ROLESELECT: // 角色
|
||||
if (!GetCacheValues(fieldCacheKey, templateData))
|
||||
{
|
||||
List<RoleEntity>? positionEntityList = await _sugar.Queryable<RoleEntity>().Where(u => u.DeleteMark == null).ToListAsync();
|
||||
List<RoleEntity>? positionEntityList = await _db.AsSugarClient().Queryable<RoleEntity>().Where(u => u.DeleteMark == null).ToListAsync();
|
||||
List<Dictionary<string, string>> positionList = new List<Dictionary<string, string>>();
|
||||
foreach (RoleEntity? item in positionEntityList)
|
||||
{
|
||||
@@ -689,7 +710,7 @@ public class FormDataParsing : ITransient
|
||||
}
|
||||
else
|
||||
{
|
||||
List<ProvinceEntity>? addressEntityList = await _sugar.Queryable<ProvinceEntity>().Select(x => new ProvinceEntity { Id = x.Id, ParentId = x.ParentId, Type = x.Type, FullName = x.FullName }).ToListAsync();
|
||||
List<ProvinceEntity>? addressEntityList = await _db.AsSugarClient().Queryable<ProvinceEntity>().Select(x => new ProvinceEntity { Id = x.Id, ParentId = x.ParentId, Type = x.Type, FullName = x.FullName }).ToListAsync();
|
||||
|
||||
// 处理省市区树
|
||||
addressEntityList.Where(x => x.Type == "1").ToList().ForEach(item => item.QuickQuery = item.FullName);
|
||||
@@ -731,7 +752,7 @@ public class FormDataParsing : ITransient
|
||||
}
|
||||
else
|
||||
{
|
||||
List<ProvinceEntity>? addressEntityList = await _sugar.Queryable<ProvinceEntity>().Select(x => new ProvinceEntity { Id = x.Id, ParentId = x.ParentId, Type = x.Type, FullName = x.FullName }).ToListAsync();
|
||||
List<ProvinceEntity>? addressEntityList = await _db.AsSugarClient().Queryable<ProvinceEntity>().Select(x => new ProvinceEntity { Id = x.Id, ParentId = x.ParentId, Type = x.Type, FullName = x.FullName }).ToListAsync();
|
||||
|
||||
// 处理省市区树
|
||||
addressEntityList.Where(x => x.Type == "1").ToList().ForEach(item => item.QuickQuery = item.FullName);
|
||||
@@ -787,7 +808,7 @@ public class FormDataParsing : ITransient
|
||||
}
|
||||
else
|
||||
{
|
||||
List<UserEntity>? userEntityList = await _sugar.Queryable<UserEntity>().Where(x => x.DeleteMark == null).Select(x => new UserEntity() { Id = x.Id, RealName = x.RealName, Account = x.Account }).ToListAsync();
|
||||
List<UserEntity>? userEntityList = await _db.AsSugarClient().Queryable<UserEntity>().Where(x => x.DeleteMark == null).Select(x => new UserEntity() { Id = x.Id, RealName = x.RealName, Account = x.Account }).ToListAsync();
|
||||
|
||||
List<Dictionary<string, string>> userList = new List<Dictionary<string, string>>();
|
||||
foreach (UserEntity? item in userEntityList)
|
||||
@@ -813,32 +834,32 @@ public class FormDataParsing : ITransient
|
||||
else
|
||||
{
|
||||
var addList = new List<Dictionary<string, string>>();
|
||||
(await _sugar.Queryable<UserEntity>().Where(x => x.DeleteMark == null).Select(x => new { x.Id, x.RealName, x.Account }).ToListAsync()).ForEach(item =>
|
||||
(await _db.AsSugarClient().Queryable<UserEntity>().Where(x => x.DeleteMark == null).Select(x => new { x.Id, x.RealName, x.Account }).ToListAsync()).ForEach(item =>
|
||||
{
|
||||
Dictionary<string, string> user = new Dictionary<string, string>();
|
||||
user.Add(item.Id + "--user", item.RealName + "/" + item.Account);
|
||||
addList.Add(user);
|
||||
});
|
||||
(await _sugar.Queryable<OrganizeEntity>().Where(x => x.DeleteMark == null).Select(x => new { x.Id, x.FullName }).ToListAsync()).ForEach(item =>
|
||||
(await _db.AsSugarClient().Queryable<OrganizeEntity>().Where(x => x.DeleteMark == null).Select(x => new { x.Id, x.FullName }).ToListAsync()).ForEach(item =>
|
||||
{
|
||||
Dictionary<string, string> user = new Dictionary<string, string>();
|
||||
user.Add(item.Id + "--company", item.FullName);
|
||||
user.Add(item.Id + "--department", item.FullName);
|
||||
addList.Add(user);
|
||||
});
|
||||
(await _sugar.Queryable<RoleEntity>().Where(x => x.DeleteMark == null).Select(x => new { x.Id, x.FullName }).ToListAsync()).ForEach(item =>
|
||||
(await _db.AsSugarClient().Queryable<RoleEntity>().Where(x => x.DeleteMark == null).Select(x => new { x.Id, x.FullName }).ToListAsync()).ForEach(item =>
|
||||
{
|
||||
Dictionary<string, string> user = new Dictionary<string, string>();
|
||||
user.Add(item.Id + "--role", item.FullName);
|
||||
addList.Add(user);
|
||||
});
|
||||
(await _sugar.Queryable<PositionEntity>().Where(x => x.DeleteMark == null).Select(x => new { x.Id, x.FullName }).ToListAsync()).ForEach(item =>
|
||||
(await _db.AsSugarClient().Queryable<PositionEntity>().Where(x => x.DeleteMark == null).Select(x => new { x.Id, x.FullName }).ToListAsync()).ForEach(item =>
|
||||
{
|
||||
Dictionary<string, string> user = new Dictionary<string, string>();
|
||||
user.Add(item.Id + "--position", item.FullName);
|
||||
addList.Add(user);
|
||||
});
|
||||
(await _sugar.Queryable<GroupEntity>().Where(x => x.DeleteMark == null).Select(x => new { x.Id, x.FullName }).ToListAsync()).ForEach(item =>
|
||||
(await _db.AsSugarClient().Queryable<GroupEntity>().Where(x => x.DeleteMark == null).Select(x => new { x.Id, x.FullName }).ToListAsync()).ForEach(item =>
|
||||
{
|
||||
Dictionary<string, string> user = new Dictionary<string, string>();
|
||||
user.Add(item.Id + "--group", item.FullName);
|
||||
@@ -884,7 +905,7 @@ public class FormDataParsing : ITransient
|
||||
{
|
||||
if (!GetCacheValues(fieldCacheKey, templateData))
|
||||
{
|
||||
List<OrganizeEntity>? dep_organizeEntityList = await _sugar.Queryable<OrganizeEntity>().Where(d => d.EnabledMark == 1 && d.DeleteMark == null)
|
||||
List<OrganizeEntity>? dep_organizeEntityList = await _db.AsSugarClient().Queryable<OrganizeEntity>().Where(d => d.EnabledMark == 1 && d.DeleteMark == null)
|
||||
.WhereIF(orgType.Equals(JnpfKeyConst.DEPSELECT), d => d.Category.Equals("department")).ToListAsync();
|
||||
|
||||
List<Dictionary<string, object>> vlist = new List<Dictionary<string, object>>();
|
||||
@@ -954,7 +975,7 @@ public class FormDataParsing : ITransient
|
||||
parameter.Add(new SugarParameter("@currentChargeorganizationAndSuborganization", subsidiary));
|
||||
}
|
||||
|
||||
DbLinkEntity? linkEntity = await _sugar.Queryable<DbLinkEntity>().Where(m => m.Id == dynamic.DBLinkId && m.DeleteMark == null).FirstAsync();
|
||||
DbLinkEntity? linkEntity = await _db.AsSugarClient().Queryable<DbLinkEntity>().Where(m => m.Id == dynamic.DBLinkId && m.DeleteMark == null).FirstAsync();
|
||||
if (linkEntity == null) linkEntity = _databaseService.GetTenantDbLink(_userManager.TenantId, _userManager.TenantDbName);
|
||||
_dataInterfaceService.ReplaceParameterValue(dynamic, new Dictionary<string, string>());
|
||||
System.Data.DataTable? dt = _databaseService.GetInterFaceData(linkEntity, dynamic.Query, parameter.ToArray());
|
||||
@@ -1064,7 +1085,7 @@ public class FormDataParsing : ITransient
|
||||
/// <returns>List.</returns>
|
||||
private async Task<List<Dictionary<string, string>>> GetDictionaryList(string? dictionaryTypeId = null)
|
||||
{
|
||||
List<DictionaryDataEntity> dictionaryDataEntityList = await _sugar.Queryable<DictionaryDataEntity, DictionaryTypeEntity>((a, b) => new JoinQueryInfos(JoinType.Left, b.Id == a.DictionaryTypeId))
|
||||
List<DictionaryDataEntity> dictionaryDataEntityList = await _db.AsSugarClient().Queryable<DictionaryDataEntity, DictionaryTypeEntity>((a, b) => new JoinQueryInfos(JoinType.Left, b.Id == a.DictionaryTypeId))
|
||||
.WhereIF(dictionaryTypeId.IsNotEmptyOrNull(), (a, b) => b.Id == dictionaryTypeId || b.EnCode == dictionaryTypeId).Where(a => a.DeleteMark == null).ToListAsync();
|
||||
|
||||
List<Dictionary<string, string>> dictionaryDataList = new List<Dictionary<string, string>>();
|
||||
@@ -1141,7 +1162,7 @@ public class FormDataParsing : ITransient
|
||||
Dictionary<string, object> dataMap = modelData.ToObject<Dictionary<string, object>>(); // 数据库保存的F_Data
|
||||
|
||||
// 序列化后时间戳转换处理
|
||||
List<FieldsModel>? timeList = formData.Where(x => x.__config__.jnpfKey == "createTime" || x.__config__.jnpfKey == "modifyTime").ToList();
|
||||
List<FieldsModel>? timeList = formData.Where(x => x.__config__.jnpfKey == JnpfKeyConst.CREATETIME || x.__config__.jnpfKey == JnpfKeyConst.MODIFYTIME).ToList();
|
||||
if (timeList.Any())
|
||||
{
|
||||
timeList.ForEach(item =>
|
||||
@@ -1185,10 +1206,10 @@ public class FormDataParsing : ITransient
|
||||
break;
|
||||
case JnpfKeyConst.CREATEUSER:
|
||||
case JnpfKeyConst.MODIFYUSER:
|
||||
dataMap[key] = await _sugar.Queryable<UserEntity>().Where(x => x.Id == dataValue).Select(x => SqlFunc.MergeString(x.RealName, "/", x.Account)).FirstAsync();
|
||||
dataMap[key] = await _db.AsSugarClient().Queryable<UserEntity>().Where(x => x.Id == dataValue).Select(x => SqlFunc.MergeString(x.RealName, "/", x.Account)).FirstAsync();
|
||||
break;
|
||||
case JnpfKeyConst.CURRPOSITION:
|
||||
dataMap[key] = (await _sugar.Queryable<PositionEntity>().FirstAsync(p => p.Id == dataMap[key].ToString()))?.FullName;
|
||||
dataMap[key] = (await _db.AsSugarClient().Queryable<PositionEntity>().FirstAsync(p => p.Id == dataMap[key].ToString()))?.FullName;
|
||||
if (dataMap[key].IsNullOrEmpty()) dataMap[key] = " ";
|
||||
break;
|
||||
case JnpfKeyConst.CURRORGANIZE:
|
||||
@@ -1267,111 +1288,6 @@ public class FormDataParsing : ITransient
|
||||
|
||||
#endregion
|
||||
|
||||
#region 无表的数据查询筛选
|
||||
|
||||
/// <summary>
|
||||
/// 无表的数据筛选.
|
||||
/// </summary>
|
||||
/// <param name="list">数据列表.</param>
|
||||
/// <param name="keyJsonMap">查询条件值.</param>
|
||||
/// <param name="formData"></param>
|
||||
/// <returns></returns>
|
||||
public List<Dictionary<string, object>> GetNoTableFilteringData(List<VisualDevModelDataEntity> list, Dictionary<string, object> keyJsonMap, List<FieldsModel> formData)
|
||||
{
|
||||
List<Dictionary<string, object>> realList = new List<Dictionary<string, object>>();
|
||||
foreach (var entity in list)
|
||||
{
|
||||
Dictionary<string, object> query = keyJsonMap;
|
||||
Dictionary<string, object> realEntity = entity.Data.ToObject<Dictionary<string, object>>();
|
||||
realEntity.Add("id", entity.Id);
|
||||
if (query != null && query.Count != 0)
|
||||
{
|
||||
int m = 0;
|
||||
int dicCount = query.Keys.Count;
|
||||
string[] strKey = new string[dicCount];
|
||||
query.Keys.CopyTo(strKey, 0);
|
||||
for (int i = 0; i < strKey.Length; i++)
|
||||
{
|
||||
var keyValue = keyJsonMap[strKey[i]];
|
||||
var queryEntity = realEntity.Where(e => e.Key == strKey[i]).FirstOrDefault();
|
||||
var model = formData.Where(f => f.__vModel__ == strKey[i]).FirstOrDefault();
|
||||
if (queryEntity.Value != null && !string.IsNullOrWhiteSpace(keyValue.ToString()))
|
||||
{
|
||||
var realValue = queryEntity.Value.ObjToString();
|
||||
var type = model.__config__.jnpfKey;
|
||||
switch (type)
|
||||
{
|
||||
case JnpfKeyConst.TIME:
|
||||
{
|
||||
var queryTime = new List<string>();
|
||||
keyValue.ToObject<List<string>>().ForEach(item => { if (!string.IsNullOrWhiteSpace(item)) queryTime.Add(item.ParseToDateTime().ToLongTimeString()); });
|
||||
|
||||
if (Common.Extension.Extensions.IsInTimeRange(realValue.ParseToDateTime(), queryTime.First(), queryTime.Last(), 3)) m++;
|
||||
}
|
||||
break;
|
||||
case JnpfKeyConst.DATE:
|
||||
{
|
||||
List<string> queryTime = keyValue.ToObject<List<string>>();
|
||||
int formatType = 0;
|
||||
if (model.format == "yyyy-MM") formatType = 1;
|
||||
else if (model.format == "yyyy") formatType = 2;
|
||||
string value1 = string.Format("{0:yyyy-MM-dd}", queryTime.First().ParseToDateTime());
|
||||
string value2 = string.Format("{0:yyyy-MM-dd}", queryTime.Last().ParseToDateTime());
|
||||
if (Common.Extension.Extensions.IsInTimeRange(realValue.ParseToDateTime(), value1, value2, formatType)) m++;
|
||||
}
|
||||
break;
|
||||
case JnpfKeyConst.CREATETIME:
|
||||
case JnpfKeyConst.MODIFYTIME:
|
||||
{
|
||||
List<string> dayTime1 = keyValue.ToObject<List<string>>();
|
||||
string value1 = string.Format("{0:yyyy-MM-dd 00:00:00}", dayTime1.First().ParseToDateTime());
|
||||
string value2 = string.Format("{0:yyyy-MM-dd 23:59:59}", dayTime1.Last().ParseToDateTime());
|
||||
if (!string.IsNullOrEmpty(realValue) && Common.Extension.Extensions.IsInTimeRange(Convert.ToDateTime(realValue), value1, value2)) m++;
|
||||
}
|
||||
break;
|
||||
case JnpfKeyConst.NUMINPUT:
|
||||
case JnpfKeyConst.CALCULATE:
|
||||
{
|
||||
List<string> numArray = keyValue.ToObject<List<string>>();
|
||||
var numA = numArray.First().ParseToInt();
|
||||
var numB = numArray.Last() == null ? long.MaxValue : numArray.Last().ParseToInt();
|
||||
var numC = realValue.ParseToInt();
|
||||
if (numC >= numA && numC <= numB) m++;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
if (realValue.IsNotEmptyOrNull() && keyValue != null)
|
||||
{
|
||||
string keyV = keyValue.ToString();
|
||||
|
||||
if (model.searchType == 2 && realValue.Contains(keyV)) m++;
|
||||
else if (model.searchType == 1)
|
||||
{
|
||||
// 多选时为模糊查询
|
||||
if ((model.multiple || type == "checkbox") && realValue.Contains(keyV)) m++;
|
||||
else if (realValue.Equals(keyV)) m++;
|
||||
}
|
||||
else if (realValue.Replace(" ", "").Contains(keyV.Replace(" ", ""))) m++;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (m == dicCount) realList.Add(realEntity);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
realList.Add(realEntity);
|
||||
}
|
||||
}
|
||||
|
||||
return realList;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region 列表转换数据(Id 转 Name)
|
||||
|
||||
/// <summary>
|
||||
@@ -1383,17 +1299,31 @@ public class FormDataParsing : ITransient
|
||||
/// <param name="actionType"></param>
|
||||
/// <param name="webType">表单类型1-纯表单、2-普通表单、3-工作流表单.</param>
|
||||
/// <param name="primaryKey">数据主键.</param>
|
||||
/// <param name="mainData">子表解析时调用 (控件联动可能需要主表的数据).</param>
|
||||
/// <param name="isShortLink">是否外链.</param>
|
||||
/// <returns></returns>
|
||||
public async Task<List<Dictionary<string, object>>> GetKeyData(
|
||||
List<FieldsModel> formData,
|
||||
public async Task<List<Dictionary<string, object>>> GetKeyData(List<FieldsModel> formData,
|
||||
List<Dictionary<string, object>> list,
|
||||
ColumnDesignModel? columnDesign = null,
|
||||
string actionType = "List",
|
||||
int webType = 2,
|
||||
string primaryKey = "F_Id",
|
||||
Dictionary<string, object>? mainData = null)
|
||||
bool isShortLink = false)
|
||||
{
|
||||
if (isShortLink)
|
||||
{
|
||||
formData = formData.Where(x => x.__config__.jnpfKey == JnpfKeyConst.COMINPUT || x.__config__.jnpfKey == JnpfKeyConst.TEXTAREA
|
||||
|| (x.__config__.jnpfKey == JnpfKeyConst.NUMINPUT && x.__config__.jnpfKey == JnpfKeyConst.SWITCH)
|
||||
|| (x.__config__.jnpfKey == JnpfKeyConst.RADIO && x.__config__.dataType.Equals("static"))
|
||||
|| (x.__config__.jnpfKey == JnpfKeyConst.CHECKBOX && x.__config__.dataType.Equals("static"))
|
||||
|| (x.__config__.jnpfKey == JnpfKeyConst.SELECT && x.__config__.dataType.Equals("static"))
|
||||
|| (x.__config__.jnpfKey == JnpfKeyConst.CASCADER && x.__config__.dataType.Equals("static"))
|
||||
|| (x.__config__.jnpfKey == JnpfKeyConst.TREESELECT && x.__config__.dataType.Equals("static"))
|
||||
|| x.__config__.jnpfKey == JnpfKeyConst.DATE || x.__config__.jnpfKey == JnpfKeyConst.TIME || x.__config__.jnpfKey == JnpfKeyConst.COLORPICKER
|
||||
|| x.__config__.jnpfKey == JnpfKeyConst.RATE || x.__config__.jnpfKey == JnpfKeyConst.SLIDER || x.__config__.jnpfKey == JnpfKeyConst.EDITOR
|
||||
|| x.__config__.jnpfKey == JnpfKeyConst.LINK || x.__config__.jnpfKey == JnpfKeyConst.JNPFTEXT || x.__config__.jnpfKey == JnpfKeyConst.ALERT)
|
||||
.Where(x => !x.__config__.jnpfKey.Equals(JnpfKeyConst.POPUPTABLESELECT)).ToList();
|
||||
}
|
||||
|
||||
// 获取控件缓存数据
|
||||
Dictionary<string, object> templateData = await GetVisualDevCaCheData(formData);
|
||||
|
||||
@@ -1418,12 +1348,13 @@ public class FormDataParsing : ITransient
|
||||
List<Dictionary<string, string>>? roleTemplateValue = new List<Dictionary<string, string>>(); // 角色
|
||||
Dictionary<string, List<Dictionary<string, string>>>? templateValues = new Dictionary<string, List<Dictionary<string, string>>>(); // 其他
|
||||
|
||||
if (webType == 3)
|
||||
if (webType == 3 && list.Any(x => x.ContainsKey(primaryKey)))
|
||||
{
|
||||
var ids = list.Select(x => x[primaryKey]).ToList();
|
||||
var flowTaskList = await _sugar.Queryable<FlowTaskEntity>().Where(x => ids.Contains(x.Id)).Select(x => new FlowTaskEntity() { Id = x.Id, Status = x.Status }).ToListAsync();
|
||||
var flowTaskList = await _db.AsSugarClient().Queryable<FlowTaskEntity>().Where(x => ids.Contains(x.Id)).Select(x => new FlowTaskEntity() { Id = x.Id, Status = x.Status }).ToListAsync();
|
||||
list.ForEach(item =>
|
||||
{
|
||||
if (item.ContainsKey("F_FlowId")) item["flowId"] = item["F_FlowId"];
|
||||
if (flowTaskList.Any(x => x.Id.Equals(item[primaryKey].ToString())))
|
||||
{
|
||||
var flowTask = flowTaskList.Where(x => x.Id.Equals(item[primaryKey].ToString())).FirstOrDefault();
|
||||
@@ -1442,7 +1373,6 @@ public class FormDataParsing : ITransient
|
||||
foreach (Dictionary<string, object>? dataMap in list)
|
||||
{
|
||||
var oldDataMap = dataMap.Copy();
|
||||
if (mainData != null) oldDataMap.Add("JnpfKeyConst_MainData", mainData);
|
||||
if (dataMap.ContainsKey(primaryKey)) dataMap["id"] = dataMap[primaryKey].ToString(); // 主键
|
||||
|
||||
int dicCount = dataMap.Keys.Count;
|
||||
@@ -1455,7 +1385,6 @@ public class FormDataParsing : ITransient
|
||||
if (!(dataMap[strKey[i]] is null))
|
||||
{
|
||||
FieldsModel? form = formData.Where(f => f.__vModel__ == strKey[i]).FirstOrDefault();
|
||||
|
||||
if (form != null)
|
||||
{
|
||||
if (form.__vModel__.Contains(form.__config__.jnpfKey + "Field")) dataMap[strKey[i]] = TemplateControlsDataConversion(dataMap[strKey[i]], form);
|
||||
@@ -1707,30 +1636,18 @@ public class FormDataParsing : ITransient
|
||||
}
|
||||
break;
|
||||
case JnpfKeyConst.CURRDEPT:
|
||||
dataMap[key] = await _memCache.GetOrCreateAsync($"organizeId_{dataValue}", async entry =>
|
||||
{
|
||||
entry.SlidingExpiration = TimeSpan.FromSeconds(60);
|
||||
return (await _sugar.Queryable<OrganizeEntity>().FirstAsync(x => x.Id == dataValue.ToString()))?.FullName;
|
||||
});
|
||||
dataMap[key] = (await _db.AsSugarClient().Queryable<OrganizeEntity>().FirstAsync(x => x.Id == dataValue.ToString()))?.FullName;
|
||||
break;
|
||||
case JnpfKeyConst.MODIFYUSER:
|
||||
case JnpfKeyConst.CREATEUSER:
|
||||
dataMap[key] = await _memCache.GetOrCreateAsync($"userId_{dataValue}", async entry =>
|
||||
{
|
||||
entry.SlidingExpiration = TimeSpan.FromSeconds(60);
|
||||
return await _sugar.Queryable<UserEntity>().Where(x => x.Id == dataValue.ToString()).Select(x => SqlFunc.MergeString(x.RealName, "/", x.Account)).FirstAsync();
|
||||
});
|
||||
dataMap[key] = await _db.AsSugarClient().Queryable<UserEntity>().Where(x => x.Id == dataValue.ToString()).Select(x => SqlFunc.MergeString(x.RealName, "/", x.Account)).FirstAsync();
|
||||
break;
|
||||
case JnpfKeyConst.MODIFYTIME:
|
||||
case JnpfKeyConst.CREATETIME:
|
||||
dataMap[key] = string.Format("{0:yyyy-MM-dd HH:mm:ss}", dataMap[key].ToString().ParseToDateTime());
|
||||
dataMap[key] = string.Format("{0:yyyy-MM-dd HH:mm}", dataMap[key].ToString().ParseToDateTime());
|
||||
break;
|
||||
case JnpfKeyConst.CURRPOSITION:
|
||||
dataMap[key] = await _memCache.GetOrCreateAsync($"positionId_{dataValue}", async entry =>
|
||||
{
|
||||
entry.SlidingExpiration = TimeSpan.FromSeconds(60);
|
||||
return (await _sugar.Queryable<PositionEntity>().FirstAsync(x => x.Id == dataValue.ToString()))?.FullName;
|
||||
});
|
||||
dataMap[key] = (await _db.AsSugarClient().Queryable<PositionEntity>().FirstAsync(x => x.Id == dataValue.ToString()))?.FullName;
|
||||
break;
|
||||
case JnpfKeyConst.POPUPTABLESELECT:
|
||||
case JnpfKeyConst.POPUPSELECT:
|
||||
@@ -1883,7 +1800,7 @@ public class FormDataParsing : ITransient
|
||||
else
|
||||
{
|
||||
// 根据可视化功能ID获取该模板全部数据
|
||||
var relationFormModel = await _sugar.Queryable<VisualDevEntity>().FirstAsync(v => v.Id == model.modelId);
|
||||
var relationFormModel = await _db.AsSugarClient().Queryable<VisualDevEntity>().FirstAsync(v => v.Id == model.modelId);
|
||||
var newFieLdsModelList = relationFormModel.FormData.ToObject<FormDataModel>().fields.FindAll(x => model.relationField.Equals(x.__vModel__));
|
||||
VisualDevModelListQueryInput listQueryInput = new VisualDevModelListQueryInput
|
||||
{
|
||||
@@ -1892,27 +1809,21 @@ public class FormDataParsing : ITransient
|
||||
sort = columnDesign.sort,
|
||||
pageSize = 999999
|
||||
};
|
||||
//Scoped.Create(async (_, scope) =>
|
||||
//{
|
||||
// var services = scope.ServiceProvider;
|
||||
// var _runService = App.GetService<IRunService>(services);
|
||||
// var res = await _runService.GetRelationFormList(relationFormModel, listQueryInput);
|
||||
// _cacheManager.Set(redisName, res.list.ToList(), TimeSpan.FromMinutes(10)); // 缓存10分钟
|
||||
//});
|
||||
|
||||
var cacheStr = _cacheManager.Get(redisName);
|
||||
if (cacheStr.IsNotEmptyOrNull()) relationFormDataList = cacheStr.ToObject<List<Dictionary<string, object>>>();
|
||||
//modified by PhilPan
|
||||
if (string.IsNullOrEmpty(cacheStr))
|
||||
else
|
||||
{
|
||||
await Scoped.CreateAsync(async (_, scope) =>
|
||||
Scoped.Create((_, scope) =>
|
||||
{
|
||||
var services = scope.ServiceProvider;
|
||||
var _runService = App.GetService<IRunService>(services);
|
||||
var res = await _runService.GetRelationFormList(relationFormModel, listQueryInput);
|
||||
_cacheManager.Set(redisName, res.list.ToList(), TimeSpan.FromMinutes(10)); // 缓存10分钟
|
||||
cacheStr = _cacheManager.Get(redisName);
|
||||
});
|
||||
var res = _runService.GetRelationFormList(relationFormModel, listQueryInput).WaitAsync(TimeSpan.FromMinutes(2)).Result;
|
||||
relationFormDataList = res.list.ToList();
|
||||
_cacheManager.Set(redisName, relationFormDataList, TimeSpan.FromMinutes(10)); // 缓存10分钟
|
||||
});
|
||||
}
|
||||
if (cacheStr.IsNotEmptyOrNull()) relationFormDataList = cacheStr.ToObject<List<Dictionary<string, object>>>();
|
||||
}
|
||||
|
||||
var relationFormRealData = relationFormDataList.Where(it => it["id"].Equals(dataMap[key])).FirstOrDefault();
|
||||
@@ -1990,36 +1901,16 @@ public class FormDataParsing : ITransient
|
||||
if (data.ToJsonString().Equals(mValue.ToJsonString()) && (form.__config__.templateJson != null && form.__config__.templateJson.Any()))
|
||||
{
|
||||
data.Clear();
|
||||
form.__config__.templateJson.ForEach(x =>
|
||||
{
|
||||
if (x.relationField.ToLower().Contains("tablefield") && x.relationField.Contains("-"))
|
||||
{
|
||||
var rField = x.relationField.Split("-").Last();
|
||||
if (dataMap.ContainsKey(rField)) x.defaultValue = dataMap[rField] != null ? dataMap[rField]?.ToString() : x.defaultValue;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (dataMap.ContainsKey(x.relationField))
|
||||
{
|
||||
x.defaultValue = dataMap[x.relationField] != null ? dataMap[x.relationField]?.ToString() : x.defaultValue;
|
||||
}
|
||||
else if (dataMap.ContainsKey("JnpfKeyConst_MainData"))
|
||||
{
|
||||
var mainData = dataMap["JnpfKeyConst_MainData"].ToObject<Dictionary<string, object>>();
|
||||
if (mainData.ContainsKey(x.relationField)) x.defaultValue = mainData[x.relationField] != null ? mainData[x.relationField]?.ToString() : x.defaultValue;
|
||||
}
|
||||
}
|
||||
});
|
||||
form.__config__.templateJson.ForEach(x => x.defaultValue = (dataMap.ContainsKey(x.relationField) && dataMap[x.relationField] != null) ? dataMap[x.relationField]?.ToString() : x.defaultValue);
|
||||
_databaseService.ChangeDataBase(_databaseService.GetTenantDbLink(_userManager.TenantId, _userManager.TenantDbName));
|
||||
var res = _dataInterfaceService.GetResponseByType(form.__config__.propsUrl, 0, string.Empty, new Common.Dtos.VisualDev.VisualDevDataFieldDataListInput() { paramList = form.__config__.templateJson.Adapt<List<DataInterfaceReqParameterInfo>>(), pageSize = 500, currentPage = 1 }).Result;
|
||||
var resList = res.ToObject<PageResult<Dictionary<string, object>>>();
|
||||
var resList = res.ToObject<PageResult<Dictionary<string,object>>>();
|
||||
if (resList != null && resList.list.Any())
|
||||
{
|
||||
foreach (object? item in mValue)
|
||||
{
|
||||
var comData = resList.list.Where(a => a.ContainsValue(item.ToString())).FirstOrDefault();
|
||||
var props = form.__config__.props != null ? form.__config__.props.label : form.props.props.label;
|
||||
if (comData != null) data.Add(comData[props].ToString());
|
||||
if (comData != null) data.Add(comData[form.__config__.props.label].ToString());
|
||||
else data.Add(item.ToString());
|
||||
}
|
||||
}
|
||||
@@ -2055,7 +1946,7 @@ public class FormDataParsing : ITransient
|
||||
/// <param name="_dataMap"></param>
|
||||
public void GetBARAndQR(List<FieldsModel> fieldsModels, Dictionary<string, object> _newDataMap, Dictionary<string, object> _dataMap)
|
||||
{
|
||||
fieldsModels.Where(x => x.__config__.jnpfKey == "barcode" || x.__config__.jnpfKey == "qrcode").Where(x => !string.IsNullOrWhiteSpace(x.relationField)).ToList().ForEach(item =>
|
||||
fieldsModels.Where(x => x.__config__.jnpfKey == JnpfKeyConst.BARCODE || x.__config__.jnpfKey == JnpfKeyConst.QRCODE).Where(x => !string.IsNullOrWhiteSpace(x.relationField)).ToList().ForEach(item =>
|
||||
{
|
||||
if (!_newDataMap.ContainsKey(item.relationField + "_id") && _dataMap.ContainsKey(item.relationField))
|
||||
_newDataMap.Add(item.relationField + "_id", _dataMap[item.relationField]);
|
||||
|
||||
@@ -23,6 +23,7 @@ public static class TemplateAnalysis
|
||||
switch (config.jnpfKey)
|
||||
{
|
||||
case JnpfKeyConst.TABLE:
|
||||
item.__config__.defaultCurrent = item.__config__.children.Any(it => it.__config__.defaultCurrent);
|
||||
template.Add(item);
|
||||
break;
|
||||
case JnpfKeyConst.ROW:
|
||||
|
||||
@@ -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