添加项目文件。

This commit is contained in:
2023-03-13 15:00:34 +08:00
parent 42bf06ca3e
commit 1d73df3235
1205 changed files with 185078 additions and 0 deletions

View File

@@ -0,0 +1,291 @@
using JNPF.Common.Const;
using JNPF.Common.Extension;
namespace JNPF.VisualDev.Engine.Security;
/// <summary>
/// 代码生成 统一处理帮助类.
/// </summary>
public class CodeGenUnifiedHandlerHelper
{
/// <summary>
/// 统一处理表单内控件.
/// </summary>
/// <returns></returns>
public static List<FieldsModel> UnifiedHandlerFormDataModel(List<FieldsModel> formDataModel, ColumnDesignModel pcColumnDesignModel, ColumnDesignModel appColumnDesignModel, bool isMain = true, string tableControlsKey = "")
{
var template = new List<FieldsModel>();
// 循环表单内控件
formDataModel.ForEach(item =>
{
var config = item.__config__;
switch (config.jnpfKey)
{
case JnpfKeyConst.TABLE:
item.__config__.children = UnifiedHandlerFormDataModel(item.__config__.children, pcColumnDesignModel, appColumnDesignModel, false, item.__vModel__);
template.Add(item);
break;
default:
{
if (isMain)
{
// 是否为PC端查询字段与移动端查询字段
bool pcSearch = (pcColumnDesignModel?.searchList?.Any(it => it.__vModel__.Equals(item.__vModel__))).ParseToBool();
bool appSearch = (appColumnDesignModel?.searchList?.Any(it => it.__vModel__.Equals(item.__vModel__))).ParseToBool();
if (pcSearch || appSearch)
item.isQueryField = true;
else
item.isQueryField = false;
bool pcColumn = (pcColumnDesignModel?.columnList?.Any(it => it.__vModel__.Equals(item.__vModel__))).ParseToBool();
bool appColumn = (appColumnDesignModel?.columnList?.Any(it => it.__vModel__.Equals(item.__vModel__))).ParseToBool();
if (pcColumn || appColumn)
item.isIndexShow = true;
else
item.isIndexShow = false;
}
else
{
bool pcSearch = (pcColumnDesignModel?.searchList?.Any(it => it.__vModel__.Equals(string.Format("{0}-{1}", tableControlsKey, item.__vModel__)))).ParseToBool();
bool appSearch = (appColumnDesignModel?.searchList?.Any(it => it.__vModel__.Equals(string.Format("{0}-{1}", tableControlsKey, item.__vModel__)))).ParseToBool();
if (pcSearch || appSearch)
item.isQueryField = true;
else
item.isQueryField = false;
bool pcColumn = (pcColumnDesignModel?.columnList?.Any(it => it.__vModel__.Equals(string.Format("{0}-{1}", tableControlsKey, item.__vModel__)))).ParseToBool();
bool appColumn = (appColumnDesignModel?.columnList?.Any(it => it.__vModel__.Equals(string.Format("{0}-{1}", tableControlsKey, item.__vModel__)))).ParseToBool();
if (pcColumn || appColumn)
item.isIndexShow = true;
else
item.isIndexShow = false;
}
template.Add(item);
}
break;
}
});
return template;
}
/// <summary>
/// 统一处理表单内控件.
/// </summary>
/// <returns></returns>
public static List<FieldsModel> UnifiedHandlerFormDataModel(List<FieldsModel> formDataModel, ColumnDesignModel columnDesignModel, bool isMain = true, string tableControlsKey = "")
{
var template = new List<FieldsModel>();
// 循环表单内控件
formDataModel.ForEach(item =>
{
var config = item.__config__;
switch (config.jnpfKey)
{
case JnpfKeyConst.TABLE:
item.__config__.children = UnifiedHandlerFormDataModel(item.__config__.children, columnDesignModel, false, item.__vModel__);
template.Add(item);
break;
default:
{
if (isMain)
{
// 是否为PC端查询字段与移动端查询字段
bool search = (bool)columnDesignModel?.searchList?.Any(it => it.__vModel__.Equals(item.__vModel__));
if (search)
item.isQueryField = true;
else
item.isQueryField = false;
bool column = (bool)columnDesignModel?.columnList?.Any(it => it.__vModel__.Equals(item.__vModel__));
if (column)
item.isIndexShow = true;
else
item.isIndexShow = false;
}
else
{
bool search = (bool)columnDesignModel?.searchList?.Any(it => it.__vModel__.Equals(string.Format("{0}-{1}", tableControlsKey, item.__vModel__)));
if (search)
{
item.isQueryField = true;
item.superiorVModel = tableControlsKey;
}
else
{
item.isQueryField = false;
}
bool column = (bool)columnDesignModel?.columnList?.Any(it => it.__vModel__.Equals(string.Format("{0}-{1}", tableControlsKey, item.__vModel__)));
if (column)
item.isIndexShow = true;
else
item.isIndexShow = false;
}
template.Add(item);
}
break;
}
});
return template;
}
/// <summary>
/// 联动关系链判断.
/// </summary>
/// <param name="formDataModel"></param>
/// <param name="columnDesignModel"></param>
/// <param name="isMain"></param>
/// <param name="tableControlsKey"></param>
/// <returns></returns>
public static List<FieldsModel> LinkageChainJudgment(List<FieldsModel> formDataModel, ColumnDesignModel columnDesignModel, bool isMain = true, string tableControlsKey = "")
{
var NewFormDataModel = formDataModel.Copy();
var childrenFormModel = new List<FieldsModel>();
if (!isMain)
{
formDataModel = NewFormDataModel.Find(it => it.__vModel__.Equals(tableControlsKey) && it.__config__.jnpfKey.Equals(JnpfKeyConst.TABLE)).__config__.children;
childrenFormModel = formDataModel.Copy();
}
formDataModel.ForEach(item =>
{
var config = item.__config__;
switch (config.jnpfKey)
{
case JnpfKeyConst.TABLE:
{
NewFormDataModel = LinkageChainJudgment(NewFormDataModel, columnDesignModel, false, item.__vModel__);
}
break;
case JnpfKeyConst.RADIO:
case JnpfKeyConst.CHECKBOX:
case JnpfKeyConst.SELECT:
case JnpfKeyConst.CASCADER:
case JnpfKeyConst.TREESELECT:
switch (isMain)
{
case true:
// dataType = dynamic && templateJson属性有长度则代表有远端联动
if (config.dataType == "dynamic" && config.templateJson?.Count() > 0)
{
config.templateJson.FindAll(it => it.relationField.Any()).ForEach(items =>
{
var fieldModel = NewFormDataModel.Where(it => it.__vModel__.Equals(items.relationField) && it.__config__.jnpfKey.Equals(items.jnpfKey)).FirstOrDefault();
fieldModel.IsLinked = true;
List<LinkageConfig> linkageConfigs = new List<LinkageConfig>
{
new LinkageConfig()
{
field = item.__vModel__,
fieldName = item.__vModel__.ToLowerCase(),
jnpfKey = config.jnpfKey,
IsMultiple = config.jnpfKey.Equals(JnpfKeyConst.CASCADER) ? item.props.props.multiple : config.jnpfKey.Equals(JnpfKeyConst.CHECKBOX)? true: item.multiple,
}
};
fieldModel.linkageReverseRelationship.AddRange(linkageConfigs);
});
}
break;
default:
if (config.dataType == "dynamic" && config.templateJson?.Count() > 0)
{
var childrenFieldModel = childrenFormModel.Where(it => item.__vModel__.Equals(it.__vModel__) && it.__config__.jnpfKey.Equals(config.jnpfKey)).FirstOrDefault();
childrenFieldModel.IsLinkage = true;
config.templateJson.FindAll(it => it.relationField.Any()).ForEach(items =>
{
var isTrigger = false;
var fieldModel = childrenFormModel.Where(it => items.relationField.Equals(string.Format("{0}-{1}", tableControlsKey, it.__vModel__)) && it.__config__.jnpfKey.Equals(items.jnpfKey)).FirstOrDefault();
if (fieldModel == null)
{
isTrigger = true;
fieldModel = NewFormDataModel.Where(it => it.__vModel__.Equals(items.relationField) && it.__config__.jnpfKey.Equals(items.jnpfKey)).FirstOrDefault();
}
fieldModel.IsLinked = true;
List<LinkageConfig> linkageConfigs = new List<LinkageConfig>
{
new LinkageConfig()
{
field = item.__vModel__,
fieldName = tableControlsKey,
jnpfKey = config.jnpfKey,
isChildren = isTrigger,
IsMultiple = config.jnpfKey.Equals(JnpfKeyConst.CASCADER) ? item.props.props.multiple : item.multiple,
}
};
fieldModel.linkageReverseRelationship.AddRange(linkageConfigs);
});
}
break;
}
break;
case JnpfKeyConst.POPUPTABLESELECT:
case JnpfKeyConst.POPUPSELECT:
switch (isMain)
{
case true:
var mainFieldModel = NewFormDataModel.Where(it => item.__vModel__.Equals(it.__vModel__) && it.__config__.jnpfKey.Equals(config.jnpfKey)).FirstOrDefault();
mainFieldModel.IsLinkage = true;
item.templateJson?.FindAll(it => it.relationField.Any()).ForEach(items =>
{
var fieldModel = NewFormDataModel.Where(it => it.__vModel__.Equals(items.relationField) && it.__config__.jnpfKey.Equals(items.jnpfKey)).FirstOrDefault();
fieldModel.IsLinked = true;
List<LinkageConfig> linkageConfigs = new List<LinkageConfig>
{
new LinkageConfig()
{
field = item.__vModel__,
fieldName = item.__vModel__.ToLowerCase(),
jnpfKey = config.jnpfKey,
IsMultiple = config.jnpfKey.Equals(JnpfKeyConst.CASCADER) ? item.props.props.multiple : config.jnpfKey.Equals(JnpfKeyConst.CHECKBOX) ? true : item.multiple,
}
};
fieldModel.linkageReverseRelationship.AddRange(linkageConfigs);
});
break;
default:
var childrenFieldModel = childrenFormModel.Where(it => item.__vModel__.Equals(it.__vModel__) && it.__config__.jnpfKey.Equals(config.jnpfKey)).FirstOrDefault();
childrenFieldModel.IsLinkage = true;
item.templateJson?.FindAll(it => it.relationField.Any()).ForEach(items =>
{
var isTrigger = false;
var fieldModel = childrenFormModel.Where(it => items.relationField.Equals(string.Format("{0}-{1}", tableControlsKey, it.__vModel__)) && it.__config__.jnpfKey.Equals(items.jnpfKey)).FirstOrDefault();
if (fieldModel == null)
{
isTrigger = true;
fieldModel = NewFormDataModel.Where(it => it.__vModel__.Equals(items.relationField) && it.__config__.jnpfKey.Equals(items.jnpfKey)).FirstOrDefault();
}
fieldModel.IsLinked = true;
List<LinkageConfig> linkageConfigs = new List<LinkageConfig>
{
new LinkageConfig()
{
field = item.__vModel__,
fieldName = tableControlsKey,
jnpfKey = config.jnpfKey,
isChildren = isTrigger,
IsMultiple = config.jnpfKey.Equals(JnpfKeyConst.CASCADER) ? item.props.props.multiple : item.multiple,
}
};
fieldModel.linkageReverseRelationship.AddRange(linkageConfigs);
});
break;
}
break;
}
});
if (!isMain)
{
NewFormDataModel.Find(it => it.__vModel__.Equals(tableControlsKey) && it.__config__.jnpfKey.Equals(JnpfKeyConst.TABLE)).__config__.children = childrenFormModel;
}
return NewFormDataModel;
}
}