package com.openhis.check.domain;

import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableField;
import lombok.Data;
import lombok.experimental.Accessors;

import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;

/**
 * 检查套餐
 * 
 * @author system
 * @date 2025-07-22
 * @updated 2025-11-26 - 扩展字段以支持套餐设置PRD需求
 */
@Data
@Accessors(chain = true)
@TableName(value = "check_package", autoResultMap = true)
public class CheckPackage {
    private static final long serialVersionUID = 1L;

    /** 检查套餐ID */
    @TableId(type = IdType.AUTO)
    private Long id;

    /** 套餐名称 */
    @TableField("package_name")
    private String packageName;

    /** 套餐编码 */
    private String code;

    /** 套餐类别 */
    @TableField("package_type")
    private String packageType;

    /** 套餐级别 (1:全院套餐 2:科室套餐 3:个人套餐) */
    @TableField("package_level")
    private String packageLevel;

    /** 适用科室 (当套餐级别为科室套餐时必填) */
    @TableField("department")
    private String department;

    /** 适用用户 (当套餐级别为个人套餐时必填) */
    @TableField("\"user\"")
    private String user;

    /** 卫生机构 */
    @TableField("organization")
    private String organization;

    /** 套餐金额 */
    @TableField("package_price")
    private BigDecimal packagePrice;

    /** 折扣 (百分比) */
    @TableField("discount")
    private BigDecimal discount;

    /** 制单人 */
    @TableField("creator")
    private String creator;

    /** 是否停用 (0:启用 1:停用) */
    @TableField("is_disabled")
    private Integer isDisabled;

    /** 显示套餐名 (0:否 1:是) */
    @TableField("show_package_name")
    private Integer showPackageName;

    /** 生成服务费 (0:否 1:是) */
    @TableField("generate_service_fee")
    private Integer generateServiceFee;

    /** 套餐价格启用状态 (0:不启用 1:启用) */
    @TableField("package_price_enabled")
    private Integer packagePriceEnabled;

    /** 服务费 */
    @TableField("service_fee")
    private BigDecimal serviceFee;

    /** 备注 */
    private String remark;

    /** 描述 */
    private String description;

    /** 序号 */
    private Integer number;

    /** 套餐维护日期 (系统自动生成) */
    @TableField("maintain_date")
    private LocalDate maintainDate;

    /** 创建时间 */
    private LocalDateTime createTime;

    /** 更新时间 */
    private LocalDateTime updateTime;

    /**
     * 禁用逻辑删除，因为数据库表中没有delete_flag字段
     */
    @TableField(exist = false)
    private String deleteFlag;

    /**
     * 以下字段数据库表中不存在，用于禁用MyBatis Plus自动添加的字段
     */
    @TableField(exist = false)
    private String createBy;

    @TableField(exist = false)
    private String updateBy;

    @TableField(exist = false)
    private Integer tenantId;
}
