package com.jwipc.sys.dto;

import com.alibaba.fastjson2.annotation.JSONField;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;

import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * @author shenyang.ou
 * @date 2024/3/18 12:12
 * @desc
 */
@Data
public class ProductApiDTO {
    /**
     * 主键
     */
    private Long id;

    /**
     * 物料编码
     */
    @JSONField(name = "MATNR")
    private String materialCode;

    /**
     * 物料名称
     */
    @JSONField(name = "READ_TEXT")
    private String materialName;

    /**
     * SAP物料编码
     */
    private String sapMaterialCode;

    /**
     * 物料组编码
     */
    @JSONField(name = "MATKL")
    private String materialGroupCode;

    /**
     * 基本计量单位
     */
    @JSONField(name = "MEINS")
    private String basisUnit;

    /**
     * 订单单位
     */
    @JSONField(name = "BSTME")
    private String orderUnit;

    /**
     * 可变单位（扩展）
     */
    @JSONField(name = "VABME")
    private String changeUnit;

    /**
     * 价格单位
     */
    @JSONField(name = "PEINH")
    private String priceUnit;

    /**
     * 工厂编码
     */
    @JSONField(name = "WERKS")
    private String factoryCode;

    /**
     * 采购组
     */
    @JSONField(name = "EKGRP")
    private String materialPurchaseGroup;

    /**
     * MRP 控制者(物料计划人)
     */
    private String mrpControlUser;

    /**
     * SAP数据主键
     */
    private String dataPrimary;

    /**
     * SAP客户端
     */
    private String sapClient;

    /**
     * 语言代码
     */
    private String languageCode;

    /**
     * 物料在SAP创建时间
     */
    private String sapCreateDate;

    /**
     * 物料在SAP更新时间
     */
    private String sapUpdateDate;

    /**
     * 数据状态  1:可用 2:不可用
     */
    private Integer state;

    /**
     * 型号
     */
    private String materialModel;

    /**
     * 规格
     */
    @JSONField(name = "ZGGCS")
    private String materialSpec;

    /**
     * 物料种类
     */
    private String materialExp;

    /**
     * 物料类型
     */
    private String materialTypeId;

    /**
     * 产地
     */
    private String placeOrigin;

    /**
     * 品牌
     */
    private String brand;

    /**
     * 品名
     */
    private String productName;

    /**
     * 制造商
     */
    private String manufacturer;

    /**
     * 生成周期
     */
    private Double leadTime;

    /**
     * 图号
     */
    private String pictureNo;

    /**
     * 基本单位
     */
    private String baseUnitId;

    /**
     * 销售单位
     */
    private String saleUnitId;

    /**
     * 包装单位
     */
    private Integer packingUnitId;

    /**
     * 转换比例
     */
    private Double unitChange;

    /**
     * 批号规则
     */
    private String batchRule;

    /**
     * 最小采购批量MOQ
     */
    private BigDecimal limitedQty;

    /**
     * 最小包装量MOQ
     */
    private BigDecimal moq;

    /**
     * 成本
     */
    private BigDecimal cost;

    /**
     * 销售组织
     */
    @JSONField(name = "VKORG")
    private String sapSaleOrg;

    /**
     * 分销渠道
     */
    @JSONField(name = "VTWEG")
    private String sapDistributeChannel;

    /**
     * 产品组
     */
    @JSONField(name = "SPART")
    private String sapMaterialGroupCode;

    /**
     * 客户编码（某些物料只卖给指定客户）（陈列）
     */
    private String customerCodes;

    /**
     * 旧物料号
     */
    @JSONField(name = "BISMT")
    private String oldMaterialCode;

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

    /**
     * 物料描述
     */
    @JSONField(name = "MAKTX")
    private String materialDesc;

    /**
     * 物料类型编码
     */
    @JSONField(name = "MTART")
    private String materialTypeCode;

    /**
     * 物料类型描述
     */
    private String materialTypeName;

    /**
     * 物料组名称
     */
    private String materialGroupName;

    /**
     * 是否拥有次级物料 1：否 2：是
     */
    private Integer isBom;

    /**
     * 外部采购组
     */
    private String outsidePurchaseGroup;

    /**
     * 采购订单数量
     */
    private Integer purchaseOrderNum;

    /**
     * 采购价值代码
     */
    private String purchaseCode;

    /**
     * 国家
     */
    private String countryName;

    /**
     * 存储条件
     */
    private String storageConditions;

    /**
     * 存储条件名称
     */
    private String storageConditionsName;

    /**
     * 日期表示
     */
    private String dateId;

    /**
     * 批准文号/注册证号
     */
    private String standCode;

    /**
     * CAS/货号
     */
    private String casitemNo;

    /**
     * 容差
     */
    private String quantityRange;

    /**
     * 风险级别
     */
    private String riskLevel;

    /**
     * 质量控制物料
     */
    private String isGmp;

    /**
     * 安全库存
     */
    private String safetyStock;

    /**
     * 批准文号/注册证号有效期
     */
    private LocalDateTime standcodeTime;

    /**
     * 预估单价
     */
    private BigDecimal estimatedPrice;

    /**
     * 是否批次管理，0-否，1-是
     */
    private Integer isBatch;

    /**
     * 采购提前期
     */
    @JSONField(name = "ZYYTS")
    private Long purchaseTime;

    /**
     * 到货处理时间
     */
    private Long arrivalTime;

    /**
     * 冻结状态，1是，0否
     */
    private Integer freeze;

    /**
     * ERP库存组织编码
     */
    private String storeOrgCode;

    /**
     * ERP库存组织名称
     */
    private String storeOrgName;

    /**
     * 行业领域（扩展）
     */
    @JSONField(name = "MBRSH")
    private String industrySector;

    /**
     * 运输组（扩展）
     */
    @JSONField(name = "TRAGR")
    private String transportGroupCode;

    /**
     * 总货架寿命（保质期）（扩展）
     */
    @JSONField(name = "MHDHB")
    private String warranty;

    /**
     * 最小货架寿命（扩展）
     */
    @JSONField(name = "MHDRZ")
    private String minWarranty;

    /**
     * 是否启用批次管理（扩展）
     */
    @JSONField(name = "XCHPF")
    private String batchFlag;

    /**
     * 净重（扩展）
     */
    @JSONField(name = "NTGEW")
    private Double netWeight;

    /**
     * 跨工厂物料状态（扩展）
     */
    @JSONField(name = "MSTAE")
    private String factoryMaterialStatus;

    /**
     * 客户简称（扩展）
     */
    @JSONField(name = "ZKHJC")
    private String customerShortName;

    /**
     * 客户物料号（扩展）
     */
    @JSONField(name = "ZKHWL")
    private String customerMaterialCode;

    /**
     * 客户型号（扩展）
     */
    @JSONField(name = "ZKHXH")
    private String customerModel;

    /**
     * PCB（扩展）
     */
    @JSONField(name = "ZPCB")
    private String pcb;

    /**
     * 三大件基础信息（扩展）
     */
    @JSONField(name = "ZSDJ")
    private String threeBasicInformation;

    /**
     * 关键物料（扩展）
     */
    @JSONField(name = "ZGJWL")
    private String keyMaterial;

    /**
     * 版本号（扩展）
     */
    @JSONField(name = "ZBBH")
    private String version;

    /**
     * 切换库存（扩展）
     */
    @JSONField(name = "ZQHKC")
    private String switchInventory;

    /**
     * 提货安全库存（扩展）
     */
    @JSONField(name = "ZSAFE")
    private String safeStock;

    /**
     * 可用性检查（扩展）
     */
    @JSONField(name = "MTVFP")
    private String availabilityCheck;

    /**
     * 装载组（扩展）
     */
    @JSONField(name = "LADGR")
    private String loadingGroup;

    /**
     * 利润中心（扩展）
     */
    @JSONField(name = "PRCTR")
    private String profitCenter;

    /**
     * 源清单（扩展）
     */
    @JSONField(name = "KORDB")
    private String fromList;

    /**
     * 发货单位（扩展）
     */
    @JSONField(name = "LADGR")
    private String deliveryUnit;

    /**
     * 期间标识（扩展）
     */
    @JSONField(name = "PERKZ")
    private String periodFlag;

    /**
     * MRP 类型（扩展）
     */
    @JSONField(name = "DISMM")
    private String mrpType;

    /**
     * MRP组（扩展）
     */
    @JSONField(name = "DISGR")
    private String mrpGroup;

    /**
     * 再订货点（扩展）
     */
    @JSONField(name = "MINBE")
    private String reorderPoint;

    /**
     * MRP 控制者（扩展）
     */
    @JSONField(name = "DISPO")
    private String mrpController;

    /**
     * 批量大小（扩展）
     */
    @JSONField(name = "DISLS")
    private String batchSize;

    /**
     * 最小批量（扩展）
     */
    @JSONField(name = "BSTMI")
    private String minBatch;

    /**
     * 最大库存水平（扩展）
     */
    @JSONField(name = "MABST")
    private String maxInventoryLevel;

    /**
     * 最小包装（扩展）
     */
    @JSONField(name = "BSTRF")
    private String minPackag;

    /**
     * 采购类型（扩展）
     */
    @JSONField(name = "BESKZ")
    private String purchaseType;

    /**
     * 特殊采购类（扩展）
     */
    @JSONField(name = "SOBSL")
    private String specialPurchaseType;

    /**
     * 自制生产时间（天）（扩展）
     */
    @JSONField(name = "DZEIT")
    private Integer madeProductTime;

    /**
     * 计划交货时间（天）（扩展）
     */
    @JSONField(name = "PLIFZ")
    private Integer planDeliveryTime;

    /**
     * 收货处理时间（天）（扩展）
     */
    @JSONField(name = "WEBAZ")
    private Integer receiptHandleTime;

    /**
     * 计划边际码（扩展）
     */
    @JSONField(name = "FHORI")
    private String marginKey;

    /**
     * 生产仓储地点（扩展）
     */
    @JSONField(name = "LGPRO")
    private String productStorageLocation;

    /**
     * 外部采购仓储地点（扩展）
     */
    @JSONField(name = "LGFSB")
    private String outsidePurchaseStorageLocation;

    /**
     * 策略组（扩展）
     */
    @JSONField(name = "STRGR")
    private String policyGroup;

    /**
     * 独立/集中（扩展）
     */
    @JSONField(name = "SBDKZ")
    private String independentOrCentralized;

    /**
     * 生产调度员（扩展）
     */
    @JSONField(name = "FEVOR")
    private String productScheduler;

    /**
     * 无成本核算（扩展）
     */
    @JSONField(name = "NCOST")
    private String noCostAccounting;

    /**
     * 成本核算批量（扩展）
     */
    @JSONField(name = "LOSGR")
    private String costAccountingBatch;

    /**
     * 可选计量单位（扩展）
     */
    @JSONField(name = "MEINH")
    private String optionalMeasurementUnit;

    /**
     * 基本计量单位转换分子（扩展）
     */
    @JSONField(name = "UMREZ")
    private String basisUnitConvertMolecules;

    /**
     * 转换为基本计量单位的分母（扩展）
     */
    @JSONField(name = "UMREN")
    private String basisUnitConvertDenominator;

    /**
     * 估价范围（扩展）
     */
    @JSONField(name = "BWKEY")
    private String valuationScope;

    /**
     * 评估分类（扩展）
     */
    @JSONField(name = "BKLAS")
    private String assessmentClassify;

    /**
     * ML作业（扩展）
     */
    @JSONField(name = "MLMAA")
    private String mlHomework;

    /**
     * 价格控制（扩展）
     */
    @JSONField(name = "VPRSV")
    private String priceControl;

    /**
     * 价格确定（扩展）
     */
    @JSONField(name = "MLAST")
    private String priceConfirm;

    /**
     * 标准价格（扩展）
     */
    @JSONField(name = "STPRS")
    private String standardPrice;

    /**
     * 用QS的成本估算（扩展）
     */
    @JSONField(name = "EKALR")
    private String costEstimationQs;

    /**
     * 物料来源（扩展）
     */
    @JSONField(name = "HKMAT")
    private String materailSource;

    /**
     * 计划价格1（扩展）
     */
    @JSONField(name = "ZPLP1")
    private String planPrice1;

    /**
     * 计划价格日期1（扩展）
     */
    @JSONField(name = "ZPLD1")
    private String planPriceDate1;

    /**
     * 交货工厂（扩展）
     */
    @JSONField(name = "DWERK")
    private String deliveryFactory;

    /**
     * 项目类别组（扩展）
     */
    @JSONField(name = "MTPOS")
    private String productTypeGroup;

    /**
     * 科目设置组（扩展）
     */
    @JSONField(name = "KTGRM")
    private String subjectSetGroup;

    /**
     * 税分类（扩展）
     */
    @JSONField(name = "TAXKM")
    private String taxClassify;

    /**
     * 启用国家（扩展）
     */
    @JSONField(name = "ALAND")
    private String enableCountry;

    /**
     * 物料描述
     */
    @JSONField(name = "ZHBSX")
    private String environmentally;
}
