package com.ruoyi.credit.dto;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
import com.fasterxml.jackson.annotation.JsonFormat;

/**
 * 员工信息请求DTO
 * 用于处理前端请求数据与后端实体类字段映射
 * 
 * @author ruoyi
 * @date 2025-12-22
 */
public class EmployeeRequestDTO {
    
    /** 员工ID */
    private Long employeeId;

    /** 员工工号 */
    private String employeeNumber;

    /** 员工姓名 - 前端字段名为name */
    private String name;

    /** 身份证号 - 前端字段名为idCard */
    private String idCard;

    /** 手机号 - 前端字段名为phoneNumber */
    private String phoneNumber;

    /** 岗位/职位 */
    private String position;

    /** 部门 */
    private String department;

    /** 工资单位列表 - 前端发送数组 */
    private List<String> salaryUnits;

    /** 月薪标准 */
    private BigDecimal monthlySalary;

    /** 日薪标准 */
    private BigDecimal dailySalary;

    /** 小时薪资 */
    private BigDecimal hourlySalary;

    /** 员工状态 */
    private String status;

    /** 入职日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date hireDate;

    /** 所属员工库ID */
    private Long libraryId;

    /** 员工库名称 - 用于详情显示 */
    private String libraryName;

    /** 是否临时员工 */
    private Boolean isTemporary;

    /** 创建时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date createTime;

    /** 更新时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date updateTime;

    // Getters and Setters
    public Long getEmployeeId() {
        return employeeId;
    }

    public void setEmployeeId(Long employeeId) {
        this.employeeId = employeeId;
    }

    public String getEmployeeNumber() {
        return employeeNumber;
    }

    public void setEmployeeNumber(String employeeNumber) {
        this.employeeNumber = employeeNumber;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getIdCard() {
        return idCard;
    }

    public void setIdCard(String idCard) {
        this.idCard = idCard;
    }

    public String getPhoneNumber() {
        return phoneNumber;
    }

    public void setPhoneNumber(String phoneNumber) {
        this.phoneNumber = phoneNumber;
    }

    public String getPosition() {
        return position;
    }

    public void setPosition(String position) {
        this.position = position;
    }

    public String getDepartment() {
        return department;
    }

    public void setDepartment(String department) {
        this.department = department;
    }

    public List<String> getSalaryUnits() {
        return salaryUnits;
    }

    public void setSalaryUnits(List<String> salaryUnits) {
        this.salaryUnits = salaryUnits;
    }

    public BigDecimal getMonthlySalary() {
        return monthlySalary;
    }

    public void setMonthlySalary(BigDecimal monthlySalary) {
        this.monthlySalary = monthlySalary;
    }

    public BigDecimal getDailySalary() {
        return dailySalary;
    }

    public void setDailySalary(BigDecimal dailySalary) {
        this.dailySalary = dailySalary;
    }

    public BigDecimal getHourlySalary() {
        return hourlySalary;
    }

    public void setHourlySalary(BigDecimal hourlySalary) {
        this.hourlySalary = hourlySalary;
    }

    public String getStatus() {
        return status;
    }

    public void setStatus(String status) {
        this.status = status;
    }

    public Date getHireDate() {
        return hireDate;
    }

    public void setHireDate(Date hireDate) {
        this.hireDate = hireDate;
    }

    public Long getLibraryId() {
        return libraryId;
    }

    public void setLibraryId(Long libraryId) {
        this.libraryId = libraryId;
    }

    public String getLibraryName() {
        return libraryName;
    }

    public void setLibraryName(String libraryName) {
        this.libraryName = libraryName;
    }

    public Boolean getIsTemporary() {
        return isTemporary;
    }

    public void setIsTemporary(Boolean isTemporary) {
        this.isTemporary = isTemporary;
    }

    public Date getCreateTime() {
        return createTime;
    }

    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }

    public Date getUpdateTime() {
        return updateTime;
    }

    public void setUpdateTime(Date updateTime) {
        this.updateTime = updateTime;
    }

    @Override
    public String toString() {
        return "EmployeeRequestDTO{" +
                "employeeId=" + employeeId +
                ", employeeNumber='" + employeeNumber + '\'' +
                ", name='" + name + '\'' +
                ", idCard='" + idCard + '\'' +
                ", phoneNumber='" + phoneNumber + '\'' +
                ", position='" + position + '\'' +
                ", department='" + department + '\'' +
                ", salaryUnits=" + salaryUnits +
                ", monthlySalary=" + monthlySalary +
                ", dailySalary=" + dailySalary +
                ", hourlySalary=" + hourlySalary +
                ", status='" + status + '\'' +
                ", hireDate=" + hireDate +
                ", libraryId=" + libraryId +
                ", libraryName='" + libraryName + '\'' +
                ", isTemporary=" + isTemporary +
                ", createTime=" + createTime +
                ", updateTime=" + updateTime +
                '}';
    }
}