package org.dromara.web.domain.bo;

import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*;
import org.dromara.system.domain.bo.SysDiseaseLabelBo;
import org.dromara.web.domain.SuppliesManage;

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

/**
 * 耗材管理业务对象 supplies_manage
 *
 * @author Lion Li
 * @date 2025-07-02
 */
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = SuppliesManage.class, reverseConvertGenerate = false)
public class SuppliesManageBo extends BaseEntity {

    /**
     * 主键ID
     */
    @NotNull(message = "主键ID不能为空", groups = { EditGroup.class })
    private Long id;

    /**
     * 耗材名称
     */
    @NotBlank(message = "耗材名称不能为空", groups = { AddGroup.class, EditGroup.class })
    private String suppliesName;

    /**
     * 院方系统编码
     */
    @NotBlank(message = "院方系统编码不能为空", groups = { AddGroup.class, EditGroup.class })
    private String hospitalSystemCode;

    /**
     * 商品编码
     */
    @NotBlank(message = "商品编码不能为空", groups = { AddGroup.class, EditGroup.class })
    private String suppliesCode;

    /**
     * 生产厂商
     */
    private String manufacturer;

    /**
     * 商品许可证有效期至
     */
    private Date productLicenseExpiry;

    /**
     * 供应商
     */
    private String supplier;

    /**
     * 许可证有效期提醒
     */
    private String licenseExpiryReminder;

    /**
     * 保质期
     */
    @NotBlank(message = "保质期不能为空", groups = { AddGroup.class, EditGroup.class })
    private String shelfLife;

    /**
     * 商品资质
     */
    @NotBlank(message = "商品资质不能为空", groups = { AddGroup.class, EditGroup.class })
    private String productQualification;

    /**
     * 批准文号
     */
    private String approvalNumber;

    /**
     * 所属分类
     */
    @NotBlank(message = "所属分类不能为空", groups = { AddGroup.class, EditGroup.class })
    private String suppliesCategoryId;

    private List<String> suppliesCategoryList;

    private List<String[]> applicableDepartmentList;

    private List<SysDiseaseLabelBo> productLabelList;

    /**
     * 保质期临期提醒
     */
    @NotBlank(message = "保质期临期提醒不能为空", groups = { AddGroup.class, EditGroup.class })
    private String shelfLifeReminder;

    /**
     * 品牌
     */
    private String brand;

    /**
     * 产品所属标签
     */
    private String productLabel;

    /**
     * 产品适用科室
     */
    private String applicableDepartment;

    /**
     * 入货价格
     */
    @NotNull(message = "入货价格不能为空", groups = { AddGroup.class, EditGroup.class })
    private BigDecimal purchasePrice;

    /**
     * 耗材单位
     */
    @NotBlank(message = "耗材单位不能为空", groups = { AddGroup.class, EditGroup.class })
    private String suppliesUnit;

    /**
     * 销售价格
     */
    @NotNull(message = "销售价格不能为空", groups = { AddGroup.class, EditGroup.class })
    private BigDecimal sellPrice;

    /**
     * 耗材规格
     */
    @NotBlank(message = "耗材规格不能为空", groups = { AddGroup.class, EditGroup.class })
    private String suppliesSpec;

    /**
     * 耗材规格单位
     */
    private String suppliesSpecUnit;

    /**
     * 上架
     */
    private String putFlag;


}
