package com.hotwj.platform.securityManagement.training.domain.vo;

import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
import cn.idev.excel.annotation.ExcelProperty;
import com.hotwj.platform.securityManagement.training.domain.HotTraining;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert;

import java.io.Serial;
import java.io.Serializable;
import java.util.Date;


/**
 * 安全教育培训-培训主视图对象 hot_training
 *
 * @author shihongwei
 * @date 2025-12-17
 */
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = HotTraining.class)
public class HotTrainingVo implements Serializable {

    @Serial
    private static final long serialVersionUID = 1L;

    /**
     * 主键
     */
    @ExcelProperty(value = "主键")
    private Long id;

    /**
     * 公司ID
     */
    @ExcelProperty(value = "公司ID")
    private Long companyId;

    /**
     * 计划名称
     */
    @ExcelProperty(value = "计划名称")
    private String planName;

    /**
     * 人员类型（字典）
     */
    @ExcelProperty(value = "人员类型", converter = ExcelDictConvert.class)
    @ExcelDictFormat(readConverterExp = "字=典")
    private String personType;

    /**
     * 起始时间
     */
    @ExcelProperty(value = "起始时间")
    private Date startTime;

    /**
     * 结束时间
     */
    @ExcelProperty(value = "结束时间")
    private Date endTime;

    /**
     * 课时（小时）
     */
    @ExcelProperty(value = "课时", converter = ExcelDictConvert.class)
    @ExcelDictFormat(readConverterExp = "小=时")
    private Long classHours;

    /**
     * 绑定试卷ID列表（逗号分隔）
     */
    @ExcelProperty(value = "绑定试卷ID列表", converter = ExcelDictConvert.class)
    @ExcelDictFormat(readConverterExp = "逗=号分隔")
    private String paperIds;

    /**
     * 培训地点
     */
    @ExcelProperty(value = "培训地点")
    private String trainingLocation;

    /**
     * 培训老师
     */
    @ExcelProperty(value = "培训老师")
    private String teacherName;

    /**
     * 计划所属
     */
    @ExcelProperty(value = "计划所属")
    private String planOwner;

    /**
     * 备注
     */
    @ExcelProperty(value = "备注")
    private String remark;

    /**
     * 总人数
     */
    @ExcelProperty(value = "总人数")
    private Long totalCount;

    /**
     * 已通过
     */
    @ExcelProperty(value = "已通过")
    private Long passedCount;

    /**
     * 已完成人数
     */
    private Long completeCount;

    /**
     * 未完成
     */
    @ExcelProperty(value = "未完成")
    private Long incompleteCount;

    /**
     * 待审核
     */
    @ExcelProperty(value = "待审核")
    private Long pendingReviewCount;

    /**
     * 是否启用：1是 0否
     */
    @ExcelProperty(value = "是否启用：1是 0否")
    private Long isEnabled;

    /**
     * 是否下发：1是 0否
     */
    @ExcelProperty(value = "是否下发：1是 0否")
    private Long isIssued;
    /**
     * 是否补学：1是 0否
     */
    @ExcelProperty(value = "是否补学：1是 0否")
    private Long isMakeUp;

    /**
     * 课程配置ID列表（逗号分隔）
     */
    @ExcelProperty(value = "课程配置ID列表", converter = ExcelDictConvert.class)
    @ExcelDictFormat(readConverterExp = "逗=号分隔")
    private String courseIds;

    /**
     * 下发公司ID
     */
    @ExcelProperty(value = "下发公司ID")
    private String issuedCompanyId;

    /**
     * 培训类型（岗前培训/日常培训等，字典）
     */
    @ExcelProperty(value = "培训类型", converter = ExcelDictConvert.class)
    @ExcelDictFormat(readConverterExp = "岗=前培训/日常培训等，字典")
    private String trainingType;

    /**
     * 指定参与人员ID列表（逗号分隔）
     */
    @ExcelProperty(value = "指定参与人员ID列表", converter = ExcelDictConvert.class)
    @ExcelDictFormat(readConverterExp = "逗=号分隔")
    private String participantIds;

    /**
     * 对应的考核明细配置(JSON)
     */
    @ExcelProperty(value = "对应的考核明细配置(JSON)")
    private String assessmentDetail;

    /**
     * 对应的审核子表/流程配置(JSON)
     */
    @ExcelProperty(value = "对应的审核子表/流程配置(JSON)")
    private String reviewFlow;

    /**
     * 会议类型
     */
    @ExcelProperty(value = "会议类型")
    private String meetingType;

    /**
     * 会议种类
     */
    @ExcelProperty(value = "会议种类")
    private String meetingCategory;

    /**
     * 记录人ID
     */
    @ExcelProperty(value = "记录人ID")
    private Long recorderId;

    /**
     * 记录人姓名
     */
    @ExcelProperty(value = "记录人姓名")
    private String recorderName;

    /**
     * 附件
     */
    @ExcelProperty(value = "附件")
    private String files;

    /**
     * 照片
     */
    @ExcelProperty(value = "照片")
    private String photos;

    /**
     * 0=正常, 1=已删除
     */
    @ExcelProperty(value = "0=正常, 1=已删除")
    private Long isDeleted;

    /**
     * 行业类型
     */
    private String industryType;
}
