package com.njcn.gather.icd.mapping.pojo.bo.mapping;

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

import java.util.ArrayList;
import java.util.List;

/**
 * 最终映射文档。
 *
 * 关键说明：
 * 1. Java 字段统一使用 lowerCamelCase，避免 Jackson 同时输出 ied/IED 这类重复字段。
 * 2. JSON 输出名通过 @JsonProperty 显式指定，确保与原 C# 输出格式一致。
 */
@Data
public class MappingDocument {

    /** 映射文档版本。 */
    @JsonProperty("version")
    private String version;

    /** 映射文档作者。 */
    @JsonProperty("author")
    private String author;

    /** ICD 中的 IED 名称，输出字段固定为 IED。 */
    @JsonProperty("IED")
    private String ied;

    /** LD 前缀，输出字段固定为 LD。 */
    @JsonProperty("LD")
    private String ld;

    /**
     * 原 C# mainFrom.txt 固定调用：
     * Set_WaveTimeFlag("BeiJing")
     */
    @JsonProperty("WaveTimeFlag")
    private String waveTimeFlag;

    /**
     * 原 C# mainFrom.txt 固定调用：
     * Set_DataType("1")
     */
    @JsonProperty("DataType")
    private String dataType;

    /**
     * 原 C# mainFrom.txt 固定调用：
     * Set_unit("1")
     */
    @JsonProperty("unit")
    private String unit;

    /** 报告映射列表，每个报告控制块输出一条。 */
    @JsonProperty("ReportMap")
    private List<ReportMapItem> reportMap = new ArrayList<ReportMapItem>();

    /** 数据集映射列表，按 lnClass 和 inst 聚合。 */
    @JsonProperty("DataSetList")
    private List<DataSetGroupItem> dataSetList = new ArrayList<DataSetGroupItem>();
}