using FreeSql.DataAnnotations;
using F9WebAiTest.Domain.Enums.SYS.YuanliaoZhuangkous;
using F9WebAiTest.Domain.Events.SYS.YuanliaoZhuangkous;
namespace F9WebAiTest.Domain.Entities.SYS.YuanliaoZhuangkous;
///
/// 原料庄口:按年度 + 站点 + 季别 + 批次 + 物资(茧别)+ 蚕品种 标识一批原料,
/// 名称按 "{年度}{站点}{季别}{批次中文}{物资名去茧}({蚕品种})" 规则生成。
///
[Table(Name = "sys_yuanliao_zhuangkou")]
public class YuanliaoZhuangkou : AggregateRoot
{
/// 年度
[Column(Name = "year")]
public int Year { get; private set; }
/// 庄口名称
[Column(Name = "name")]
public string Name { get; private set; }
/// 编号(按年度自动生成,如 2025001)
[Column(Name = "code")]
public string Code { get; private set; }
/// 季别(春/夏/秋/晚秋/晚晚秋…)
[Column(Name = "jibie")]
public string Jibie { get; private set; }
/// 产地分类(本地/外地)
[Column(Name = "bendiwaidi")]
public BendiWaidi_Enum Bendiwaidi { get; private set; }
/// 产地
[Column(Name = "chandi")]
public string Chandi { get; private set; }
/// 蚕品种
[Column(Name = "canpinzhong")]
public string Canpinzhong { get; private set; }
/// 物资目录 Id
[Column(Name = "wzmlid")]
public long WzmlId { get; private set; }
/// 站点
[Column(Name = "zhandian")]
public string Zhandian { get; private set; }
/// 批次
[Column(Name = "pici")]
public int Pici { get; private set; }
public YuanliaoZhuangkou() { }
public YuanliaoZhuangkou(long id, int year, string name, string code, string jibie, BendiWaidi_Enum bendiwaidi,
string chandi, string canpinzhong, long wzmlId, string zhandian, int pici)
{
Id = id;
Year = year;
Name = name;
Code = code;
Jibie = jibie;
Bendiwaidi = bendiwaidi;
Chandi = chandi;
Canpinzhong = canpinzhong;
WzmlId = wzmlId;
Zhandian = zhandian;
Pici = pici;
AddDomainEvent(new YuanliaoZhuangkou_ChangedDomainEvent(Id));
}
public void Update(int year, string name, string jibie, BendiWaidi_Enum bendiwaidi,
string chandi, string canpinzhong, long wzmlId, string zhandian, int pici)
{
Year = year;
Name = name;
Jibie = jibie;
Bendiwaidi = bendiwaidi;
Chandi = chandi;
Canpinzhong = canpinzhong;
WzmlId = wzmlId;
Zhandian = zhandian;
Pici = pici;
AddDomainEvent(new YuanliaoZhuangkou_ChangedDomainEvent(Id));
}
public void Deleted() => AddDomainEvent(new YuanliaoZhuangkou_ChangedDomainEvent(Id));
}