package com.zhyc.module.base.domain;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.zhyc.common.annotation.Excel;
import com.zhyc.common.core.domain.BaseEntity;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.Date;
import java.util.List;

/**
 * 羊只档案对象 sheep_file
 * * @author wyt
 * @date 2025-07-13
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
public class SheepFile extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 羊只id */
    private Long id;

    /** 管理耳号 */
    @Excel(name = "管理耳号")
    private String bsManageTags;

    /** ================= 新增：多选查询字段 ================= */
    /** 耳号集合（多选/模糊查询用） */
    private List<String> allEarNumbers;

    /** 牧场id */
//    @Excel(name = "牧场id")
    private Long ranchId;

    /** 牧场名称 */
    @Excel(name = "牧场名称")
    private String drRanch;

    /** 羊舍id */
//    @Excel(name = "羊舍id")
    private Long sheepfoldId;

    /** 羊舍名称 */
    @Excel(name = "羊舍名称")
    private String sheepfoldName;

    /** 电子耳号 */
    @Excel(name = "电子耳号")
    private String electronicTags;

    /** ================= 新增：多选查询字段 ================= */
    /** 电子耳号集合（多选查询用） */
    private List<String> allEleEarNumbers;

    /** 品种id */
//    @Excel(name = "品种id")
    private Long varietyId;

    /** 品种 */
    @Excel(name = "品种")
    private String variety;

    /** 家系 */
    @Excel(name = "家系")
    private String family;

    /** 羊只类型 */
    @Excel(name = "羊只类型")
    private String name;

    /** ================= 新增：多选查询字段 ================= */
    /** 羊只类型集合（多选查询用） */
    private List<String> allSheepTypes;

//    /** 性别 */
////    @Excel(name = "性别")
//    private Long gender;

    /** 性别 - 使用字典转换 */
    @Excel(name = "性别", dictType = "sheep_gender")
    private Long gender;

    /** ================= 新增：多选查询字段 ================= */
    /** 性别集合（多选查询用） */
    private List<Long> allGenders;

    /** 出生日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "出生日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date birthday;

    /** 日龄 */
    @Excel(name = "日龄")
    private Long dayAge;

    /** 月龄 */
    @Excel(name = "月龄")
    private Long monthAge;

    /** 胎次 */
    @Excel(name = "胎次")
    private Long parity;

    /** 出生体重 */
    @Excel(name = "出生体重")
    private Long birthWeight;

    /** 断奶日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "断奶日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date weaningDate;

    /** 羊只状态 - 使用字典转换 */
    @Excel(name = "羊只状态", dictType = "sheep_status")
    private Long statusId;

    /** 断奶体重 */
    @Excel(name = "断奶体重")
    private Double weaningWeight;

    /** 当前体重 */
    @Excel(name = "当前体重")
    private Double currentWeight;


    /** 断奶日龄 */
    @Excel(name = "断奶日龄")
    private Long weaningDayAge;

    /** 断奶日增重 */
    @Excel(name = "断奶日增重")
    private Double weaningDailyGain;

    /** 繁育状态id */
//    @Excel(name = "繁育状态id")
    private Long breedStatusId;

    /** 繁殖状态 */
    @Excel(name = "繁殖状态")
    private String breed;

    /** ================= 新增：多选查询字段 ================= */
    /** 繁殖状态集合（多选查询用） */
    private List<String> allBreedingStatus;

    /** 父号id */
//    @Excel(name = "父号id")
    private Long bsFatherId;

    /** 父亲管理耳号 */
    @Excel(name = "父亲管理耳号")
    private String fatherManageTags;

    /** 母号id */
//    @Excel(name = "母号id")
    private Long bsMotherId;

    /** 母亲管理耳号 */
    @Excel(name = "母亲管理耳号")
    private String motherManageTags;

    /** 受体id */
//    @Excel(name = "受体id")
    private Long receptorId;

    /** 受体管理耳号 */
    @Excel(name = "受体管理耳号")
    private String receptorManageTags;

    /** 祖父号id */
//    @Excel(name = "祖父号id")
    private Long fatherFatherId;

    /** 祖父管理耳号 */
    @Excel(name = "祖父管理耳号")
    private String grandfatherManageTags;

    /** 祖母号id */
//    @Excel(name = "祖母号id")
    private Long fatherMotherId;

    /** 祖母管理耳号 */
    @Excel(name = "祖母管理耳号")
    private String grandmotherManageTags;

    /** 外祖父号id */
//    @Excel(name = "外祖父号id")
    private Long fatherId;

    /** 外祖父管理耳号 */
    @Excel(name = "外祖父管理耳号")
    private String maternalGrandfatherManageTags;

    /** 外祖母号id */
//    @Excel(name = "外祖母号id")
    private Long motherId;

    /** 外祖母管理耳号 */
    @Excel(name = "外祖母管理耳号")
    private String maternalGrandmotherManageTags;

    /** 配种日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "配种日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date matingDate;

    /** 配种类型 */
    @Excel(name = "配种类型",dictType = "breed_type")
    private Long matingTypeId;

    /** 孕检日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "孕检日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date pregDate;

    /** 产羔日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "产羔日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date lambingDate;

    /** 产羔时怀孕天数 */
    @Excel(name = "产羔时怀孕天数")
    private Long lambingDay;

    /** 配后天数 */
    @Excel(name = "配后天数")
    private Long matingDay;

    /** 怀孕天数 */
    @Excel(name = "怀孕天数")
    private Long gestationDay;

    /** 预产日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "预产日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date expectedDate;

    /** 产后天数 */
    @Excel(name = "产后天数")
    private Long postLambingDay;

    /** 泌乳天数 */
    @Excel(name = "泌乳天数")
    private Long lactationDay;

    /** 空怀天数 */
    @Excel(name = "空怀天数")
    private Long anestrousDay;

    /** 配种次数 */
    @Excel(name = "配种次数")
    private Long matingCounts;

    /** 累计配种次数 */
    @Excel(name = "累计配种次数")
    private Long matingTotal;

    /** 累计流产次数 */
    @Excel(name = "累计流产次数")
    private Long miscarriageCounts;

    /** 备注 */
    @Excel(name = "备注")
    private String comment;

    /** 是否性控 */
    @Excel(name = "是否性控",dictType = "controlled")
    private Long controlled;

    /** 体况评分 */
    @Excel(name = "体况评分")
    private Long body;

    /** 乳房评分 */
    @Excel(name = "乳房评分")
    private Long breast;

    /** 入群来源 */
    @Excel(name = "入群来源",dictType = "source")
    private String source;

    /** 入群日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "入群日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date sourceDate;

    /** 来源牧场id */
//    @Excel(name = "来源牧场id")
    private Long sourceRanchId;

    /** 来源牧场 */
    @Excel(name = "来源牧场")
    private String sourceRanch;

    /** 是否删除 */
    private Long isDelete;

    /** 修改人 */
    @Excel(name = "修改人")
    private String updateBy;


    /** 修改日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "修改日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date updateTime;

    /** 创建人 */
    @Excel(name = "创建人")
    private String createBy;


    /** 创建日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "创建日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date createTime;
}