using FreeSql.DataAnnotations;
using F9WebAiTest.Domain.Events.SYS.WuziMulus;
namespace F9WebAiTest.Domain.Entities.SYS.WuziMulus;
///
/// 物资目录:具体物资(如 0101 优茧、0102 普茧),编号按所属分组编号 + 2 位序号自动生成。
///
[Table(Name = "sys_wuzi_mulu")]
public class WuziMulu : AggregateRoot
{
/// 所属物资分组 Id
[Column(Name = "groupid")]
public long GroupId { get; private set; }
/// 名称
[Column(Name = "name")]
public string Name { get; private set; }
/// 编号(如 0101)
[Column(Name = "code")]
public string Code { get; private set; }
/// 单位
[Column(Name = "unit")]
public string Unit { get; private set; }
/// 规格
[Column(Name = "guige")]
public string Guige { get; private set; }
/// 型号
[Column(Name = "xinghao")]
public string Xinghao { get; private set; }
/// 拼音码
[Column(Name = "pinyinname")]
public string PinyinName { get; private set; }
/// 库存预警数量
[Column(Name = "kucunyujing")]
public decimal Kucunyujing { get; private set; }
/// 顺序号
[Column(Name = "sortorder")]
public int SortOrder { get; private set; }
/// 是否启用预警
[Column(Name = "is_yujing")]
public bool IsYujing { get; private set; }
/// 销售税率
[Column(Name = "salerate")]
public decimal SaleRate { get; private set; }
public WuziMulu() { }
public WuziMulu(long id, long groupId, string name, string code, string unit, string guige, string xinghao,
string pinyinName, decimal kucunyujing, int sortOrder, bool isYujing, decimal saleRate)
{
Id = id;
GroupId = groupId;
Name = name;
Code = code;
Unit = unit;
Guige = guige;
Xinghao = xinghao;
PinyinName = pinyinName;
Kucunyujing = kucunyujing;
SortOrder = sortOrder;
IsYujing = isYujing;
SaleRate = saleRate;
AddDomainEvent(new WuziMulu_ChangedDomainEvent(Id));
}
public void Update(long groupId, string name, string unit, string guige, string xinghao, string pinyinName,
decimal kucunyujing, int sortOrder, bool isYujing, decimal saleRate)
{
GroupId = groupId;
Name = name;
Unit = unit;
Guige = guige;
Xinghao = xinghao;
PinyinName = pinyinName;
Kucunyujing = kucunyujing;
SortOrder = sortOrder;
IsYujing = isYujing;
SaleRate = saleRate;
AddDomainEvent(new WuziMulu_ChangedDomainEvent(Id));
}
public void Deleted() => AddDomainEvent(new WuziMulu_ChangedDomainEvent(Id));
}