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

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.PostgreSQLJsonbTypeHandler;
import java.util.Map;
import lombok.Data;
import lombok.EqualsAndHashCode;

/**
 * 工作台统一取费配置 DO
 * 
 * 记录工作台中统一取费的配置信息
 * 当费率文件切换时，需要清空该配置
 */
@TableName(value = "yhy_wb_unified_fee_config", autoResultMap = true)
@Data
@EqualsAndHashCode(callSuper = true)
public class WbUnifiedFeeConfigDO extends BaseDO {

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

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

    /**
     * 单位工程节点ID（关联 yhy_wb_compile_tree）
     */
    private Long compileTreeId;

    /**
     * 分部分项节点ID（范围，关联 yhy_wb_boq_division）
     */
    private Long divisionId;

    /**
     * 来源统一取费设置ID（关联 yhy_quota_unified_fee_setting）
     */
    private Long sourceUnifiedFeeSettingId;

    /**
     * 费率文件ID（关联费率模式节点）
     * 用于切换费率文件时清空配置
     */
    private Long rateModeId;

    /**
     * 配置数据（JSONB）
     */
    @TableField(typeHandler = PostgreSQLJsonbTypeHandler.class)
    private Map<String, Object> configData;

    /**
     * 扩展属性（JSONB）
     */
    @TableField(typeHandler = PostgreSQLJsonbTypeHandler.class)
    private Map<String, Object> attributes;

    /**
     * 排序字段
     */
    private Integer sortOrder;
}
