package com.yhy.module.core.dal.dataobject.quota;

import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.yhy.module.core.dal.typehandler.PostgreSQLBigintArrayTypeHandler;
import lombok.Data;
import lombok.EqualsAndHashCode;

/**
 * 定额费率字段绑定 DO
 * 
 * 存储费率模式节点与定额基价节点的绑定关系
 * 每个费率模式节点可以有多个字段（field_1, field_2, ...），每个字段可以绑定多个定额基价节点
 * 绑定关系影响该费率模式节点下的所有费率项
 */
@TableName(value = "yhy_quota_rate_field", autoResultMap = true)
@Data
@EqualsAndHashCode(callSuper = true)
public class QuotaRateFieldDO extends BaseDO {

    /**
     * 主键ID
     */
    @TableId(type = IdType.ASSIGN_ID)
    private Long id;

    /**
     * 租户ID
     */
    private Long tenantId;

    /**
     * 关联费率模式节点ID（yhy_quota_catalog_item）
     */
    private Long catalogItemId;

    /**
     * 字段索引（1, 2, 3...）
     * 对应 field_1, field_2, field_3...
     */
    private Integer fieldIndex;

    /**
     * 字段值（用于标识，支持小数）
     * 如：1, 2, 3 分别代表 1区, 2区, 3区
     * 或：0.01, 0.224 等小数值
     */
    private java.math.BigDecimal fieldValue;

    /**
     * 字段标签ID（引用yhy_quota_rate_field_label）
     */
    private Long fieldLabelId;

    /**
     * 绑定的定额基价节点ID数组
     * 存储 yhy_catalog_item.id（定额基价第二层节点）
     */
    @TableField(typeHandler = PostgreSQLBigintArrayTypeHandler.class)
    private Long[] bindingIds;

    // ==================== 便捷方法 ====================

    /**
     * 是否有绑定
     */
    public boolean hasBindings() {
        return bindingIds != null && bindingIds.length > 0;
    }

    /**
     * 获取绑定数量
     */
    public int getBindingCount() {
        return bindingIds == null ? 0 : bindingIds.length;
    }
}
