Merge pull request #19 from kteong1012/pr220816

feat:支持tables.xlsx中value_type定义parent,定义格式为TypeChild#parent=TypeParent
main
walon 2022-08-22 08:42:24 +08:00 committed by GitHub
commit 741d820587
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 27 additions and 4 deletions

View File

@ -326,14 +326,37 @@ namespace Luban.Job.Cfg.Defs
ExcelTableValueTypeDefInfoCacheManager.Instance.AddTableDefInfoToCache(file.MD5, file.SheetName, tableDefInfo);
}
var ns = TypeUtil.GetNamespace(table.ValueType);
var (valueType, tags) = DefUtil.ParseType(table.ValueType);
var ns = TypeUtil.GetNamespace(valueType);
string valueTypeNamespace = string.IsNullOrEmpty(ns) ? table.Namespace : ns;
string valueTypeName = TypeUtil.GetName(table.ValueType);
string valueTypeName = TypeUtil.GetName(valueType);
Bean parentBean = null;
if (tags.TryGetValue("parent", out string parentType))
{
var parentNs = TypeUtil.GetNamespace(parentType);
string parentNamespace = string.IsNullOrEmpty(parentNs) ? table.Namespace : parentNs;
string parentName = TypeUtil.GetName(parentType);
parentType = string.Join(".", parentNamespace, parentName);
parentBean = _beans.FirstOrDefault(x => x.FullName == parentType);
}
var cb = new CfgBean() { Namespace = valueTypeNamespace, Name = valueTypeName, Comment = "", Parent = parentType };
if (parentBean != null)
{
foreach (var parentField in parentBean.Fields)
{
if (!tableDefInfo.FieldInfos.Any(x => x.Key == parentField.Name && x.Value.Type == parentField.Type))
{
throw new Exception($"table:'{table.Name}' file:{file.OriginFile} title:缺失父类字段:'{parentField.Type} {parentField.Name}'");
}
}
}
var cb = new CfgBean() { Namespace = valueTypeNamespace, Name = valueTypeName, Comment = "" };
foreach (var (name, f) in tableDefInfo.FieldInfos)
{
if (parentBean != null && parentBean.Fields.Any(x => x.Name == name && x.Type == f.Type))
{
continue;
}
var cf = new CfgField() { Name = name, Id = 0 };
string[] attrs = f.Type.Trim().Split('&').Select(s => s.Trim()).ToArray();