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

import cn.iocoder.yudao.framework.tenant.core.db.TenantBaseDO;
import com.baomidou.mybatisplus.annotation.KeySequence;
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 lombok.Data;
import lombok.EqualsAndHashCode;

import java.util.Map;

/**
 * 工作台-取费模板快照 DO
 * 
 * 创建单位工程时从后台 yhy_quota_fee_item 复制
 *
 * @author yihuiyong
 */
@TableName(value = "yhy_wb_fee_item", autoResultMap = true)
@KeySequence("yhy_wb_fee_item_id_seq")
@Data
@EqualsAndHashCode(callSuper = true)
public class WbFeeItemDO extends TenantBaseDO {

    /**
     * 主键ID
     */
    @TableId
    private Long id;

    /**
     * 关联单位工程ID
     */
    private Long compileTreeId;

    /**
     * 来源后台ID（yhy_quota_fee_item.id）
     */
    private Long sourceId;

    /**
     * 关联到"模式"节点
     */
    private Long catalogItemId;

    /**
     * 关联的费率项ID
     */
    private Long rateItemId;

    /**
     * 自定义序号
     */
    private String customCode;

    /**
     * 名称
     */
    private String name;

    /**
     * 计算基数（JSONB）
     */
    @TableField(typeHandler = PostgreSQLJsonbTypeHandler.class)
    private Map<String, Object> calcBase;

    /**
     * 代号
     */
    private String code;

    /**
     * 费用归属
     */
    private String feeCategory;

    /**
     * 基数说明
     */
    private String baseDescription;

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

    /**
     * 是否隐藏
     */
    private Boolean hidden;

    /**
     * 是否为变量
     */
    private Boolean variable;

    /**
     * 系统行标识：ZHDJ=综合单价
     */
    private String systemCode;

    // ==================== 常量 ====================

    public static final String SYSTEM_CODE_ZHDJ = "ZHDJ";
}
