package com.jwipc.spe.dto;

import com.jwipc.aggregation.annotation.RelationAggregationField;
import com.jwipc.sys.client.CompanyClient;
import com.jwipc.sys.client.FileClient;
import lombok.Data;

import java.io.Serial;
import java.io.Serializable;
import java.time.LocalDateTime;

/**
 * <p>
 * 供应商考核计划
 * </p>
 *
 * @author zhangjie
 * @since 2024-03-11
 */
@Data
public class SupAppraisePlanBaseDTO implements Serializable {


    @Serial
    private static final long serialVersionUID = -7167292262213879653L;
    private Long id;

    /**
     * 计划编码
     */
    private String planCode;

    /**
     * 计划标题
     */
    private String planTitle;

    /**
     * 考核模板ID
     */
    private Integer templateId;

    /**
     * 考核模板名称
     */
    private String templateName;

    /**
     * 考核周期 根据所选考核模板带出 1:年度 2:季度 3:月度
     */
    private Integer evaluationCycle;

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

    /**
     * 创建用户ID
     */
    private Long createUserId;

    /**
     * 创建用户姓名
     */
    private String createUserName;

    /**
     * 创建时间
     */
    private LocalDateTime createTime;

    /**
     * 最后一次更新用户ID
     */
    private Long updateUserId;

    /**
     * 最后一次更新用户姓名
     */
    private String updateUserName;

    /**
     * 最后一次更新时间
     */
    private LocalDateTime updateTime;

    /**
     * 删除标记 0:未删除 1:已删除
     */
    private Integer deleteFlag;

    /**
     * 数据状态 0:新建 1:执行 2:生成报告
     */
    private Integer status;

    /**
     * 年
     */
    private Integer year;

    /**
     * 季
     */
    private Integer quarter;

    /**
     * 月
     */
    private Integer month;

    /**
     * 导入的明细文件地址
     */
    private Long importFile;

    /**
     * 导入的明细文件名
     */
    @RelationAggregationField(masterIdField = "importFile", relationIdField = "id", relationNameField = "fileName",
            relationClientClass = FileClient.class, relationMethod = "getFileInfos")
    private String fileName;

    /**
     * 统计表状态  0 未生成统计表   1 已生成统计表
     */
    private Integer statisticsState;

    /**
     * 公司编码
     */
    private String companyCode;

    @RelationAggregationField(
            masterIdField = "companyCode",
            relationIdField = "companyCode",
            relationNameField = "companyName",
            relationClientClass = CompanyClient.class,
            relationMethod = "getByCodes"
    )
    private String companyName;
}
