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.math.BigDecimal;
import java.util.Map;

/**
 * 工作台-统一取费子目工料机快照 DO
 * 
 * 创建单位工程时从后台 yhy_quota_unified_fee_resource 复制
 *
 * @author yihuiyong
 */
@TableName(value = "yhy_wb_unified_fee_resource", autoResultMap = true)
@KeySequence("yhy_wb_unified_fee_resource_id_seq")
@Data
@EqualsAndHashCode(callSuper = true)
public class WbUnifiedFeeResourceDO extends TenantBaseDO {

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

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

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

    /**
     * 关联统一取费设置ID（yhy_wb_unified_fee_setting.id）
     */
    private Long unifiedFeeSettingId;

    /**
     * 关联工料机ID（yhy_resource_item.id）
     */
    private Long resourceItemId;

    /**
     * 定额消耗量
     */
    private BigDecimal dosage;

    /**
     * 调整消耗量
     */
    private BigDecimal adjustedDosage;

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

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

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

    /**
     * 获取有效消耗量
     */
    public BigDecimal getEffectiveDosage() {
        if (adjustedDosage != null && adjustedDosage.compareTo(BigDecimal.ZERO) != 0) {
            return adjustedDosage;
        }
        return dosage;
    }
}
