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

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

import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.Date;
import java.util.List;

/**
 * 体尺测量对象 sc_body_measure
 *
 * @author ruoyi
 * @date 2025-07-27
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
public class ScBodyMeasure extends BaseEntity {
    private static final long serialVersionUID = 1L;

    /**
     * $column.columnComment
     */
    private Long id;

    /**
     * 耳号
     */
    private Long sheepId;
    @Excel(name = "耳号")
    private String manageTags;

    /**
     * 羊舍ID
     */
    private Long sheepfoldId;
    @Excel(name = "羊舍")
    /** 羊舍名称（用于展示） */
    private String sheepfoldName;

    /**
     * 品种ID（关联羊只表）
     */
    private Long varietyId;

    /**
     * 品种名称（用于展示）
     */
    @Excel(name = "羊只品种")
    private String varietyName;

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

    /**
     * 测量日期
     */
    @Excel(name = "测量日期", dateFormat = "yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date measureDate;
    /**
     * 羊只类别
     */
    private Long sheepTypeId;
    @Excel(name = "羊只类别")
    private String sheepTypeName;
    /**
     * 性别
     */
    @Excel(name = "性别", readConverterExp = "1=母,2=公,3=阉羊")
    private String gender;
    /**
     * 胎次
     */
    private Integer parity;
    /**
     * 出生体重
     */
    @Excel(name = "出生体重")
    private BigDecimal birthWeight;
    /**
     * 断奶体重
     */
    @Excel(name = "断奶体重")
    private BigDecimal weaningWeight;
    /**
     * 当前体重
     */
    @Excel(name = "当前体重")
    private Long currentWeight;

    /**
     * 体高
     */
    @Excel(name = "体高")
    private Long height;

    /**
     * 胸围
     */
    @Excel(name = "胸围")
    private Long bust;

    /**
     * 体斜长
     */
    @Excel(name = "体斜长")
    private Long bodyLength;

    /**
     * 管围
     */
    @Excel(name = "管围")
    private Long pipeLength;

    /**
     * 胸深
     */
    @Excel(name = "胸深")
    private Long chestDepth;

    /**
     * 臀高
     */
    @Excel(name = "臀高")
    private Long hipHeight;

    /**
     * 尻宽
     */
    @Excel(name = "尻宽")
    private Long rumpWidth;

    /**
     * 尻高
     */
    @Excel(name = "尻高")
    private Long rumpHeignt;

    /**
     * 腰角宽
     */
    @Excel(name = "腰角宽")
    private Long hipWidth;

    /**
     * 十字部高
     */
    @Excel(name = "十字部高")
    private Long hipCrossHeight;

    /**
     * 繁育状态
     */
    @Excel(name = "繁育状态")
    private String breedStatusName;
    /**
     * 泌乳天数
     */
    @Excel(name = "泌乳天数")
    private Integer lactationDay;
    /**
     * 怀孕天数
     */
    @Excel(name = "怀孕天数")
    private Integer gestationDay;
    /**
     * 配后天数
     */
    @Excel(name = "配后天数")
    private Integer postMatingDay;


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

    /**
     * 前端多耳号查询条件，非表字段
     */
    private List<String> manageTagsList;

    /**
     * 是否在群查询条件（0-在群，1-离群），非数据库字段
     */
    private Integer isDelete;

    /**
     * 月龄查询条件（开始），非数据库字段
     */
    private Integer monthAgeStart;

    /**
     * 月龄查询条件（结束），非数据库字段
     */
    private Integer monthAgeEnd;

    @Excel(name = "月龄")
    private Integer monthAge;              // 测量时月龄

    @Excel(name = "乳房深度")
    private Long breastDepth;              // 测量时乳房深度

    @Excel(name = "乳头位置")
    private String breastPosition;         // 测量时乳头位置

    @Excel(name = "乳头长度")
    private Long breastLength;             // 测量时乳头长度

    @Excel(name = "乳房附着")
    private String breastAdbere;           // 测量时乳房附着

    @Excel(name = "乳房间隔度")
    private String breastSpacing;          // 测量时乳房间隔度

    @Excel(name = "乳房评分")
    private Long breastScore;              // 测量时乳房评分（快照）

    @Excel(name = "体况评分")
    private Long bodyScore;                // 测量时体况评分（快照）

    /**
     * 用户编号（数据分离用）
     */
    private Long userId;

    /**
     * 部门编号（数据分离用）
     */
    private Long deptId;
}
