81 lines
1.9 KiB
C#
81 lines
1.9 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
|
|
namespace CustomOpenAddins.Models
|
|
{
|
|
public class BaseItem
|
|
{
|
|
public BaseItem(string name)
|
|
{
|
|
Name = name;
|
|
}
|
|
|
|
public string Name { get; }
|
|
}
|
|
/// <summary>
|
|
/// 一级开项
|
|
/// </summary>
|
|
public class PrimaryItem : BaseItem
|
|
{
|
|
public PrimaryItem(string name, SheetTable table) : base(name)
|
|
{
|
|
Table = table;
|
|
SubCategories = new HashSet<SubItem>();
|
|
}
|
|
/// <summary>
|
|
/// 表名
|
|
/// </summary>
|
|
public SheetTable Table { get; set; }
|
|
public SubItem this[int index]
|
|
{
|
|
get => SubCategories.ElementAt(index);
|
|
}
|
|
|
|
public override string ToString()
|
|
{
|
|
StringBuilder sb = new StringBuilder($"<主项>{Name};");
|
|
if (SubCategories.Count == 0)
|
|
{
|
|
return sb.Append("无;").ToString();
|
|
}
|
|
foreach (var item in SubCategories)
|
|
{
|
|
sb.AppendLine($"{item}");
|
|
}
|
|
return sb.ToString();
|
|
}
|
|
/// <summary>
|
|
/// 子类项目
|
|
/// </summary>
|
|
public HashSet<SubItem> SubCategories { get; private set; }
|
|
|
|
public SubItem AddSub(string subName)
|
|
{
|
|
var sub = new SubItem(subName, this);
|
|
|
|
if (SubCategories == null)
|
|
{
|
|
SubCategories = new HashSet<SubItem>();
|
|
}
|
|
SubCategories.Add(sub);
|
|
return sub;
|
|
}
|
|
public void AddSubCategories(List<SubItem> subs)
|
|
{
|
|
if (SubCategories == null)
|
|
{
|
|
SubCategories = new HashSet<SubItem>();
|
|
}
|
|
|
|
subs.ForEach(x =>
|
|
{
|
|
x.Primary = this;
|
|
SubCategories.Add(x);
|
|
});
|
|
}
|
|
}
|
|
}
|
|
|