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 com.yhy.module.core.dal.typehandler.PostgreSQLTextArrayTypeHandler;
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_division", autoResultMap = true)
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class SyncLibraryDivisionDO extends BaseDO {

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

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

    /** 关联同步库主表ID */
    private Long syncLibraryId;

    /** 父节点ID */
    private Long parentId;

    /** 节点类型: division/boq/quota/work_content */
    private String nodeType;

    /** 来源类型 */
    private String sourceType;

    /** 引用清单目录ID */
    private Long sourceBoqCatalogId;

    /** 引用清单项树ID */
    private Long sourceBoqItemTreeId;

    /** 来源定额基价ID */
    private Long sourceQuotaItemId;

    /** 编码 */
    private String code;

    /** 名称 */
    private String name;

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

    /** 单位 */
    private String unit;

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

    /** 费率 */
    private BigDecimal rate;

    /** 费用代号 */
    private String costCode;

    /** 定额工程量公式 */
    private String quotaQtyFormula;

    /** 排序号 */
    private Integer sortOrder;

    /** 层级路径 */
    @TableField(typeHandler = PostgreSQLTextArrayTypeHandler.class)
    private String[] path;

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

    /** 备注 */
    private String remark;
}
