package com.fs.erp.dto.wdt;

import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.List;

/**
 * 货品节点 (SPU) DTO
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
public class ErpWdtGoodsDto {

    /**
     * 货品ID (货品表主键)
     */
    @JsonProperty("goods_id")
    private Integer goodsId;

    /**
     * 货品编号 (代表SPU所有属性的唯一编号)
     */
    @JsonProperty("goods_no")
    private String goodsNo;

    /**
     * 货品名称
     */
    @JsonProperty("goods_name")
    private String goodsName;

    /**
     * 简称
     */
    @JsonProperty("short_name")
    private String shortName;

    /**
     * 货品别名
     */
    @JsonProperty("alias")
    private String alias;

    /**
     * 货品类别 0:其它, 1:销售货品, 2:原材料, 3:包装物, 4:周转材料, 5:虚拟商品, 6:固定资产,7:保修配件 8:虚拟代发货品
     */
    @JsonProperty("goods_type")
    private Integer goodsType; // tinyint mapped to Integer

    /**
     * 规格数
     */
    @JsonProperty("spec_count")
    private Integer specCount;

    /**
     * 拼音
     */
    @JsonProperty("pinyin")
    private String pinyin;

    /**
     * 品牌编号
     */
    @JsonProperty("brand_no")
    private String brandNo;

    /**
     * 品牌名称
     */
    @JsonProperty("brand_name")
    private String brandName;

    /**
     * 备注
     */
    @JsonProperty("remark")
    private String remark;

    /**
     * 自定义属性1
     */
    @JsonProperty("prop1")
    private String prop1;

    /**
     * 自定义属性2
     */
    @JsonProperty("prop2")
    private String prop2;

    /**
     * 自定义属性3
     */
    @JsonProperty("prop3")
    private String prop3;

    /**
     * 自定义属性4
     */
    @JsonProperty("prop4")
    private String prop4;

    /**
     * 自定义属性5
     */
    @JsonProperty("prop5")
    private String prop5;

    /**
     * 自定义属性6
     */
    @JsonProperty("prop6")
    private String prop6;

    /**
     * 产地
     */
    @JsonProperty("origin")
    private String origin;

    /**
     * 分类id
     */
    @JsonProperty("class_id")
    private String classId;

    /**
     * 分类名称
     */
    @JsonProperty("class_name")
    private String className;

    /**
     * 品牌ID
     */
    @JsonProperty("brand_id")
    private String brandId;

    /**
     * 基本单位id
     */
    @JsonProperty("unit")
    private String unit;

    /**
     * 辅助单位id
     */
    @JsonProperty("aux_unit")
    private String auxUnit;

    /**
     * 标记
     */
    @JsonProperty("flag_id")
    private String flagId;

    /**
     * 属性
     */
    @JsonProperty("properties")
    private String properties;

    /**
     * 版本号，用来检查同时修改的
     */
    @JsonProperty("version_id")
    private String versionId;

    /**
     * 最后修改时间 格式：yyyy-MM-dd HH:mm:ss
     */
    @JsonProperty("modified")
    private String modified; // Keep as String for direct mapping

    /**
     * 创建时间 格式：yyyy-MM-dd HH:mm:ss
     */
    @JsonProperty("created")
    private String created; // Keep as String for direct mapping

    /**
     * 基本单位名称
     */
    @JsonProperty("unit_name")
    private String unitName;

    /**
     * 辅助单位名称
     */
    @JsonProperty("aux_unit_name")
    private String auxUnitName;

    /**
     * 标记名称
     */
    @JsonProperty("flag_name")
    private String flagName;

    /**
     * 创建时间 (ERP客户端需升级至V2.3.8.6及以上版本可获取此字段) 格式：yyyy-MM-dd HH:mm:ss
     */
    @JsonProperty("goods_created")
    private String goodsCreated; // Keep as String

    /**
     * 最后修改时间 格式：yyyy-MM-dd HH:mm:ss
     */
    @JsonProperty("goods_modified")
    private String goodsModified; // Keep as String

    /**
     * 是否已删除： 0：未删除 >0代表已删除
     */
    @JsonProperty("deleted")
    private Integer deleted;

    /**
     * 单品节点列表 (SKU)
     */
    @JsonProperty("spec_list")
    private List<ErpWdtSpecDto> specList;
}
