package com.xdap.self_development.domain.dto;

import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.format.DateTimeFormat;
import com.definesys.mpaas.query.annotation.SQL;
import com.definesys.mpaas.query.annotation.SQLQuery;
import com.definesys.mpaas.query.model.MpaasBasePojo;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.util.Date;

/**
 * <p>
 * 发动机型号数据表
 * </p>
 *
 * @author Lys111
 * @since 2025-11-12
 */
@EqualsAndHashCode(callSuper = true)
@SQLQuery(value = {
        @SQL(view = "selectVersionByConditionPage",
                sql = "WITH ranked_models AS ( SELECT deem.*, epd.major_version AS parameterVersion, ROW_NUMBER() OVER (PARTITION BY deem.id, epd.major_version ORDER BY deem.id) AS rn FROM data_entry_engine_model deem JOIN engine_param_detail epd ON deem.id = epd.engine_model_id ) SELECT * FROM ranked_models WHERE rn = 1 AND is_delete = 0 ORDER BY model_name, parameterVersion")
})
@Data
public class DataEntryEngineModelDto extends MpaasBasePojo {



    /**
     * 产品型号（全称）
     */
    private String id;

    /**
     * 产品型号（全称）
     */
    private String modelName;

    /**
     * yc或oth
     */
    private String ycOrOth;

    /**
     * 产品编号
     */
    private String productNumber;

    /**
     * 板块
     */

    private String plate;

    /**
     * 平台
     */

    private String platform;

    /**
     * 系列
     */

    private String series;

    /**
     * 细分市场
     */

    private String marketSegment;

    /**
     * 项目名称
     */

    private String projectName;

    /**
     * 项目编号
     */
    private String projectNumber;

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

    /**
     * 品牌
     */
    private String burnType;

    /**
     * 品牌
     */
    private String engineCapacity;

    /**
     * 生产日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date productionDate;

    /**
     * 标准参数数量
     */
    @ExcelProperty("标准参数数量")
    private Integer parameterNum;

    /**
     * 已维护参数数量
     */
    @ExcelProperty("已维护参数数量")
    private Integer maintainedParameterNum;

    /**
     * 填写部门
     */
    private String dept;
    /**
     * 责任人
     */
    private String resPerson;

    /**
     * 分发状态
     */
    private String distributeStatus;

    /**
     * 版本
     */
    private Integer versionNumber;

    /**
     * 参数版本
     */
    private Integer parameterVersion;

    /**
     * 创建时间
     */
    @DateTimeFormat("yyyy-MM-dd HH:mm:ss")
    private Date creationDate;

}
