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.math.BigDecimal;
import java.util.Map;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.ToString;

/**
 * 同步库主表 DO
 * 存储跨单位工程共享的清单/分部数据
 *
 * @author yhy
 */
@TableName(value = "yhy_wb_sync_library", autoResultMap = true)
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class SyncLibraryDO extends BaseDO {

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

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

    /** 项目ID */
    private Long projectId;

    /** 来源分部分项ID（首次设为同步时的节点） */
    private Long sourceDivisionId;

    /** 来源单位工程ID */
    private Long sourceCompileTreeId;

    /** 节点类型: boq-清单, division-分部 */
    private String nodeType;

    /** 原始编码 */
    private String code;

    /** 名称 */
    private String name;

    /** 项目特征 */
    private String feature;

    /** 单位 */
    private String unit;

    /** 工程量 */
    private BigDecimal qty;

    /** 费率 */
    private BigDecimal rate;

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

    /** 版本号（每次编辑+1，用于检测变更） */
    private Integer version;
}
