package org.dromara.main.domain.vo;

import cn.idev.excel.annotation.ExcelProperty;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import org.dromara.common.translation.annotation.Translation;
import org.dromara.common.translation.constant.TransConstant;
import org.dromara.main.domain.MainPosition;

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

@Data
@AutoMapper(target = MainPosition.class)
public class MainPositionVo implements Serializable {

    @Serial
    private static final long serialVersionUID = 1L;

    @ExcelProperty(value = "岗位ID")
    private Long id;

    @ExcelProperty(value = "租户ID")
    private String tenantId;

    @ExcelProperty(value = "部门ID")
    private Long deptId;

    @ExcelProperty(value = "岗位名称")
    private String postName;

    @ExcelProperty(value = "岗位描述")
    private String postDescription;

    @ExcelProperty(value = "工作省份")
    private String workProvince;

    @ExcelProperty(value = "工作城市")
    private String workCity;

    @ExcelProperty(value = "工作区县")
    private String workDistrict;

    @ExcelProperty(value = "详细地址")
    private String workAddress;

    @ExcelProperty(value = "岗位类型")
    private String postType;

    @ExcelProperty(value = "学历要求")
    private String educationRequirement;

    @ExcelProperty(value = "薪资类型")
    private String salaryType;

    @ExcelProperty(value = "薪资范围")
    private String salaryRange;

    @ExcelProperty(value = "最小工资")
    private BigDecimal minSalary;

    @ExcelProperty(value = "最大工资")
    private BigDecimal maxSalary;

    @ExcelProperty(value = "招聘人数")
    private Integer recruitNum;

    @ExcelProperty(value = "报名开始时间")
    private Date registrationStartDate;

    @ExcelProperty(value = "报名结束时间")
    private Date registrationEndDate;

    @ExcelProperty(value = "是否急招")
    private Integer isUrgent;

    @ExcelProperty(value = "学校要求")
    private String schoolRequirement;

    @ExcelProperty(value = "性别要求")
    private String genderRequirement;

    @ExcelProperty(value = "年级要求")
    private String gradeRequirement;

    @ExcelProperty(value = "到岗时间")
    private String arrivalTime;

    @ExcelProperty(value = "实习时长")
    private String internshipDuration;

    @ExcelProperty(value = "是否愿意出差")
    private Integer willingToTravel;

    @ExcelProperty(value = "福利标签")
    private String welfareTags;

    @ExcelProperty(value = "岗位要求")
    private String jobRequirement;

    @ExcelProperty(value = "岗位等级")
    private String postLevel;

    @ExcelProperty(value = "测评时长")
    private String assessmentTime;

    @ExcelProperty(value = "能力A及格分")
    private BigDecimal gradeA;

    @ExcelProperty(value = "能力B及格分")
    private BigDecimal gradeB;

    @ExcelProperty(value = "能力C及格分")
    private BigDecimal gradeC;

    @ExcelProperty(value = "创建时间")
    private Date createTime;

    private String companyName;

    /** 岗位类型(翻译后的Label，如：全职/实习/兼职) */
    @Translation(type = TransConstant.DICT_TYPE_TO_LABEL, mapper = "postType", other = "main_position_type")
    private String postTypeLabel;

    /** 学历要求(翻译后的Label) */
    @Translation(type = TransConstant.DICT_TYPE_TO_LABEL, mapper = "educationRequirement", other = "main_education")
    private String educationRequirementLabel;

    /** 学校/学历要求(翻译后的Label) */
    @Translation(type = TransConstant.DICT_TYPE_TO_LABEL, mapper = "schoolRequirement", other = "main_education")
    private String schoolRequirementLabel;

    /** 年级/经验要求(翻译后的Label) */
    @Translation(type = TransConstant.DICT_TYPE_TO_LABEL, mapper = "gradeRequirement", other = "main_experience")
    private String gradeRequirementLabel;

}
