using FreeSql.DataAnnotations;
using F9WebAiTest.Domain.Enums.SYS.Departments;
using F9WebAiTest.Domain.Enums.SYS.WuziMulus;
using F9WebAiTest.Domain.Events.SYS.WuziMulus;
namespace F9WebAiTest.Domain.Entities.SYS.WuziMulus;
///
/// 物资分组:物资目录的分类树(如 01 干茧、04 副产品、0401 副产品-副产车间…),编号按父级编号 + 2 位序号自动生成。
///
[Table(Name = "sys_wuzi_group")]
public class WuziGroup : AggregateRoot
{
/// 业务类型(原料/中间品/生丝/副产品/五金)
[Column(Name = "businesstype")]
public WuziBusiness_Type_Enum BusinessType { get; private set; }
/// 归属部门职责类型
[Column(Name = "departmenttype")]
public Department_DutyType_Enum DepartmentType { get; private set; }
/// 编号(如 01、0101)
[Column(Name = "code")]
public string Code { get; private set; }
/// 名称
[Column(Name = "name")]
public string Name { get; private set; }
/// 父级 Id(0 = 一级分类)
[Column(Name = "parentid")]
public long ParentId { get; private set; }
/// 顺序号
[Column(Name = "sortorder")]
public int SortOrder { get; private set; }
/// 描述
[Column(Name = "description")]
public string Description { get; private set; }
public WuziGroup() { }
public WuziGroup(long id, WuziBusiness_Type_Enum businessType, Department_DutyType_Enum departmentType,
string code, string name, long parentId, int sortOrder, string description)
{
Id = id;
BusinessType = businessType;
DepartmentType = departmentType;
Code = code;
Name = name;
ParentId = parentId;
SortOrder = sortOrder;
Description = description;
AddDomainEvent(new WuziGroup_ChangedDomainEvent(Id));
}
public void Update(WuziBusiness_Type_Enum businessType, Department_DutyType_Enum departmentType,
string name, int sortOrder, string description)
{
BusinessType = businessType;
DepartmentType = departmentType;
Name = name;
SortOrder = sortOrder;
Description = description;
AddDomainEvent(new WuziGroup_ChangedDomainEvent(Id));
}
public void Deleted() => AddDomainEvent(new WuziGroup_ChangedDomainEvent(Id));
}