package com.yice.webadmin.app.model;

import com.baomidou.mybatisplus.annotation.*;
import com.yice.common.core.annotation.*;
import com.yice.common.core.base.model.BaseModel;
import com.yice.common.core.base.mapper.BaseModelMapper;
import com.yice.webadmin.app.vo.DatasetVersionVo;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.mapstruct.*;
import org.mapstruct.factory.Mappers;

/**
 * DatasetVersion实体对象。
 *
 * @author linking
 * @date 2023-04-13
 */
@Data
@EqualsAndHashCode(callSuper = true)
@TableName(value = "lmp_dataset_version")
public class DatasetVersion extends BaseModel {

    /**
     * 版本ID。
     */
    @TableId(value = "version_id")
    private Long versionId;

    /**
     * 版本。
     */
    private String datasetVersion;

    /**
     * 导入状态。
     */
    private Integer inputStatus;

    /**
     * 逻辑删除标记字段(1: 正常 -1: 已删除)。
     */
    @TableLogic
    private Integer deletedFlag;

    /**
     * 数据集ID。
     */
    private Long datasetId;

    /**
     * 导出状态。
     */
    private Integer outputStatus;

    /**
     * 清洗状态。
     */
    private Integer cleanStatus;

    /**
     * 增强状态。
     */
    private Integer enhanceStatus;

    /**
     * 发布状态。
     */
    private Integer releaseStatus;

    /**
     * 标注进度。
     */
    private Integer markProgress;

    /**
     * 数据量。
     */
    private Long dataVolume;

    @RelationOneToOne(
            masterIdField = "versionId",
            slaveModelClass = DatasetDetail.class,
            slaveIdField = "versionId")
    @TableField(exist = false)
    private DatasetDetail datasetDetail;

    @Mapper
    public interface DatasetVersionModelMapper extends BaseModelMapper<DatasetVersionVo, DatasetVersion> {
        /**
         * 转换Vo对象到实体对象。
         *
         * @param datasetVersionVo 域对象。
         * @return 实体对象。
         */
        @Mapping(target = "datasetDetail", expression = "java(mapToBean(datasetVersionVo.getDatasetDetail(), com.yice.webadmin.app.model.DatasetDetail.class))")
        @Override
        DatasetVersion toModel(DatasetVersionVo datasetVersionVo);
        /**
         * 转换实体对象到VO对象。
         *
         * @param datasetVersion 实体对象。
         * @return 域对象。
         */
        @Mapping(target = "datasetDetail", expression = "java(beanToMap(datasetVersion.getDatasetDetail(), false))")
        @Override
        DatasetVersionVo fromModel(DatasetVersion datasetVersion);
    }
    public static final DatasetVersionModelMapper INSTANCE = Mappers.getMapper(DatasetVersionModelMapper.class);
}
