package com.zhyc.module.produce.breed.domain;

import java.util.Date;
import java.util.List;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.zhyc.common.annotation.Excel;
import com.zhyc.common.core.domain.BaseEntity;

/**
 * 羊只死淘记录对象 sc_sheep_death
 *
 * @author ruoyi
 * @date 2025-08-06
 */
public class ScSheepDeath extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 主键ID */
    private Long id;

    /** 羊只ID */
    @Excel(name = "羊只ID")
    private Long sheepId;

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

    /** 事件类型 */
    @Excel(name = "事件类型")
    private String eventType;

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

    /** 疾病类型ID */
    @Excel(name = "疾病类型ID")
    private Long diseaseTypeId;

    /** 疾病子类型ID */
    @Excel(name = "疾病子类型ID")
    private Long diseaseSubtypeId;

    /** 死淘去向 */
    @Excel(name = "死淘去向")
    private String disposalDirection;

    /** 技术员 */
    @Excel(name = "技术员")
    private String technician;

    /** 处理人 */
    @Excel(name = "处理人")
    private String handler;

    /** 班组 */
    @Excel(name = "班组")
    private String workGroup;

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

    /** 是否删除(0:未删除 1:已删除) */
    @Excel(name = "是否删除(0:未删除 1:已删除)")
    private Long isDelete;

    // 以下字段仅用于前端显示，不存储到数据库
    /** 品种 */
    private String variety;

    /** 羊只类型 (原事假类型改为羊只类型查询) */
    @Excel(name = "羊只类型")
    private String sheepType;

    /** 性别 */
    @Excel(name = "性别", readConverterExp = "1=母,2=公")
    private Integer gender;

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

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

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

    /** 繁育状态 */
    @Excel(name = "繁育状态")
    private String breedStatus;

    /** 死亡时产后天数 */
    private Integer postLambingDay;

    /** 死亡时泌乳天数 */
    private Integer lactationDay;

    /** 死亡时怀孕天数 */
    private Integer gestationDay;

    // 疾病名称
    private String diseaseTypeName;
    private String diseaseSubtypeName;

    // --- 多选查询条件 ---

    /** 多选管理耳号列表 */
    private List<String> manageTagsList;

    /** 多选羊只类型列表 */
    private List<String> sheepTypeList;

    /** 多选技术员列表 */
    private List<String> technicianList;

    /** 多选处理人列表 */
    private List<String> handlerList;

    /** 多选班组列表 */
    private List<String> workGroupList;

    // Getter & Setter
    public void setId(Long id) { this.id = id; }
    public Long getId() { return id; }

    public void setSheepId(Long sheepId) { this.sheepId = sheepId; }
    public Long getSheepId() { return sheepId; }

    public void setManageTags(String manageTags) { this.manageTags = manageTags; }
    public String getManageTags() { return manageTags; }

    public void setEventType(String eventType) { this.eventType = eventType; }
    public String getEventType() { return eventType; }

    public void setDeathDate(Date deathDate) { this.deathDate = deathDate; }
    public Date getDeathDate() { return deathDate; }

    public void setDiseaseTypeId(Long diseaseTypeId) { this.diseaseTypeId = diseaseTypeId; }
    public Long getDiseaseTypeId() { return diseaseTypeId; }

    public void setDiseaseSubtypeId(Long diseaseSubtypeId) { this.diseaseSubtypeId = diseaseSubtypeId; }
    public Long getDiseaseSubtypeId() { return diseaseSubtypeId; }

    public void setDisposalDirection(String disposalDirection) { this.disposalDirection = disposalDirection; }
    public String getDisposalDirection() { return disposalDirection; }

    public void setTechnician(String technician) { this.technician = technician; }
    public String getTechnician() { return technician; }

    public void setHandler(String handler) { this.handler = handler; }
    public String getHandler() { return handler; }

    public void setWorkGroup(String workGroup) { this.workGroup = workGroup; }
    public String getWorkGroup() { return workGroup; }

    public void setComment(String comment) { this.comment = comment; }
    public String getComment() { return comment; }

    public void setIsDelete(Long isDelete) { this.isDelete = isDelete; }
    public Long getIsDelete() { return isDelete; }

    public void setVariety(String variety) { this.variety = variety; }
    public String getVariety() { return variety; }

    public void setSheepType(String sheepType) { this.sheepType = sheepType; }
    public String getSheepType() { return sheepType; }

    public void setGender(Integer gender) { this.gender = gender; }
    public Integer getGender() { return gender; }

    public void setDayAge(Long dayAge) { this.dayAge = dayAge; }
    public Long getDayAge() { return dayAge; }

    public void setParity(Integer parity) { this.parity = parity; }
    public Integer getParity() { return parity; }

    public void setSheepfoldName(String sheepfoldName) { this.sheepfoldName = sheepfoldName; }
    public String getSheepfoldName() { return sheepfoldName; }

    public void setBreedStatus(String breedStatus) { this.breedStatus = breedStatus; }
    public String getBreedStatus() { return breedStatus; }

    public void setPostLambingDay(Integer postLambingDay) { this.postLambingDay = postLambingDay; }
    public Integer getPostLambingDay() { return postLambingDay; }

    public void setLactationDay(Integer lactationDay) { this.lactationDay = lactationDay; }
    public Integer getLactationDay() { return lactationDay; }

    public void setGestationDay(Integer gestationDay) { this.gestationDay = gestationDay; }
    public Integer getGestationDay() { return gestationDay; }

    public String getDiseaseTypeName() { return diseaseTypeName; }
    public void setDiseaseTypeName(String diseaseTypeName) { this.diseaseTypeName = diseaseTypeName; }

    public String getDiseaseSubtypeName() { return diseaseSubtypeName; }
    public void setDiseaseSubtypeName(String diseaseSubtypeName) { this.diseaseSubtypeName = diseaseSubtypeName; }

    public List<String> getManageTagsList() { return manageTagsList; }
    public void setManageTagsList(List<String> manageTagsList) { this.manageTagsList = manageTagsList; }

    public List<String> getSheepTypeList() { return sheepTypeList; }
    public void setSheepTypeList(List<String> sheepTypeList) { this.sheepTypeList = sheepTypeList; }

    public List<String> getTechnicianList() { return technicianList; }
    public void setTechnicianList(List<String> technicianList) { this.technicianList = technicianList; }

    public List<String> getHandlerList() { return handlerList; }
    public void setHandlerList(List<String> handlerList) { this.handlerList = handlerList; }

    public List<String> getWorkGroupList() { return workGroupList; }
    public void setWorkGroupList(List<String> workGroupList) { this.workGroupList = workGroupList; }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
                .append("id", getId())
                .append("sheepId", getSheepId())
                .append("manageTags", getManageTags())
                .append("eventType", getEventType())
                .append("deathDate", getDeathDate())
                .append("diseaseTypeId", getDiseaseTypeId())
                .append("diseaseSubtypeId", getDiseaseSubtypeId())
                .append("disposalDirection", getDisposalDirection())
                .append("technician", getTechnician())
                .append("handler", getHandler())
                .append("workGroup", getWorkGroup())
                .append("createBy", getCreateBy())
                .append("createTime", getCreateTime())
                .append("comment", getComment())
                .append("updateBy", getUpdateBy())
                .append("updateTime", getUpdateTime())
                .append("isDelete", getIsDelete())
                .toString();
    }

    /** 全部羊耳号列表（用于多耳号查询） */
    private List<String> allEarNumbers;

    public List<String> getAllEarNumbers() {
        return allEarNumbers;
    }

    public void setAllEarNumbers(List<String> allEarNumbers) {
        this.allEarNumbers = allEarNumbers;
    }
}