package com.gx.obe.server.management.boq.entity;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import com.fasterxml.jackson.annotation.JsonBackReference;
import com.fasterxml.jackson.annotation.JsonManagedReference;
import lombok.Data;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;

/**
 * @author mazc
 * @Description:
 */
@Data
@TableName("obe_provisional_sums")
public class ObeProvisionalSums extends Model<ObeProvisionalSums> {

    private static final long serialVersionUID = 1L;

    /**
     * 暂列金额主键,唯一标识。
     */
    @TableId("PROVISIONAL_SUMS_ID")
    private String id;
    /**
     * 暂列金额父ID
     */
    @TableField("PARENT_ID")
    private String parentId;
    /**
     * 序号
     */
    @TableField("PROVISIONAL_CODE")
    private String provisionalCode;
    /**
     * 名称
     */
    @TableField("PROVISIONAL_NAME")
    private String provisionalName;
    /**
     * 单位
     */
    @TableField("UNIT")
    private String unit;
    /**
     * 金额(元)
     */
    @TableField("TOTAL")
    private BigDecimal total;
    /**
     * 备注
     */
    @TableField("REMARK")
    private String remark;
    /**
     * 工程项目外键Id
     */
    @TableField("PROJECT_ID")
    private String projectId;
    /**
     * 序号
     */
    @TableField("SORT_NO")
    private Integer sortNo;
    /**
     * 招标项目外键Id
     */
    @TableField("TENDER_ID")
    private String tenderId;
    /**
     * 供应商Id
     */
    @TableField("SUPPLIER_ID")
    private String supplierId;
    /**
     * 序号
     */
    @TableField("NUMBER")
    private String number;

    @TableField(exist = false)
    @JsonBackReference
    private ObeProvisionalSums parentProvisional;

    @TableField(exist = false)
    @JsonManagedReference
    private List<ObeProvisionalSums> childProvisionalList = new ArrayList<>();

    public void addChild(ObeProvisionalSums childProvisional) {
        if (childProvisionalList == null) {
            childProvisionalList = new ArrayList<>();
        }
        childProvisionalList.add(childProvisional);
    }

    public static final String PROVISIONAL_SUMS_ID = "PROVISIONAL_SUMS_ID";

    public static final String PARENT_ID = "PARENT_ID";

    public static final String PROVISIONAL_CODE = "PROVISIONAL_CODE";

    public static final String PROVISIONAL_NAME = "PROVISIONAL_NAME";

    public static final String UNIT = "UNIT";

    public static final String TOTAL = "TOTAL";

    public static final String REMARK = "REMARK";

    public static final String PROJECT_ID = "PROJECT_ID";

    public static final String SORT_NO = "SORT_NO";

    public static final String TENDER_ID = "TENDER_ID";

    public static final String SUPPLIER_ID = "SUPPLIER_ID";

    public static final String NUMBER = "NUMBER";

}