package com.ruoyi.credit.domain;

import java.math.BigDecimal;
import java.util.Date;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import com.ruoyi.credit.annotation.EncryptedField;

/**
 * 服务周期员工分配对象 dc_service_period_employee
 * 
 * @author ruoyi
 * @date 2025-12-23
 */
public class ServicePeriodEmployee extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 分配ID */
    private Long assignmentId;

    /** 服务周期ID */
    @Excel(name = "服务周期ID")
    private Long servicePeriodId;

    /** 员工ID */
    @Excel(name = "员工ID")
    private Long employeeId;

    /** 分配岗位 */
    @Excel(name = "分配岗位")
    private String assignedPosition;

    /** 工作天数 */
    @Excel(name = "工作天数")
    private Integer workDays;

    /** 分配薪资(加密) */
    @Excel(name = "分配薪资")
    @EncryptedField(algorithm = "AES-256-GCM")
    private BigDecimal assignedSalary;

    /** 总成本(加密) */
    @Excel(name = "总成本")
    @EncryptedField(algorithm = "AES-256-GCM")
    private BigDecimal totalCost;

    /** 分配状态 */
    @Excel(name = "分配状态")
    private String assignmentStatus;

    /** 分配日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "分配日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date assignmentDate;

    /** 分配人 */
    @Excel(name = "分配人")
    private String assignedBy;

    // 分配状态常量
    public static final String STATUS_ASSIGNED = "ASSIGNED";
    public static final String STATUS_ACTIVE = "ACTIVE";
    public static final String STATUS_COMPLETED = "COMPLETED";
    public static final String STATUS_CANCELLED = "CANCELLED";

    public void setAssignmentId(Long assignmentId) 
    {
        this.assignmentId = assignmentId;
    }

    public Long getAssignmentId() 
    {
        return assignmentId;
    }

    public void setServicePeriodId(Long servicePeriodId) 
    {
        this.servicePeriodId = servicePeriodId;
    }

    public Long getServicePeriodId() 
    {
        return servicePeriodId;
    }

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

    public Long getEmployeeId() 
    {
        return employeeId;
    }

    public void setAssignedPosition(String assignedPosition) 
    {
        this.assignedPosition = assignedPosition;
    }

    public String getAssignedPosition() 
    {
        return assignedPosition;
    }

    public void setWorkDays(Integer workDays) 
    {
        this.workDays = workDays;
    }

    public Integer getWorkDays() 
    {
        return workDays;
    }

    public void setAssignedSalary(BigDecimal assignedSalary) 
    {
        this.assignedSalary = assignedSalary;
    }

    public BigDecimal getAssignedSalary() 
    {
        return assignedSalary;
    }

    public void setTotalCost(BigDecimal totalCost) 
    {
        this.totalCost = totalCost;
    }

    public BigDecimal getTotalCost() 
    {
        return totalCost;
    }

    public void setAssignmentStatus(String assignmentStatus) 
    {
        this.assignmentStatus = assignmentStatus;
    }

    public String getAssignmentStatus() 
    {
        return assignmentStatus;
    }

    public void setAssignmentDate(Date assignmentDate) 
    {
        this.assignmentDate = assignmentDate;
    }

    public Date getAssignmentDate() 
    {
        return assignmentDate;
    }

    public void setAssignedBy(String assignedBy) 
    {
        this.assignedBy = assignedBy;
    }

    public String getAssignedBy() 
    {
        return assignedBy;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("assignmentId", getAssignmentId())
            .append("servicePeriodId", getServicePeriodId())
            .append("employeeId", getEmployeeId())
            .append("assignedPosition", getAssignedPosition())
            .append("workDays", getWorkDays())
            .append("assignedSalary", getAssignedSalary())
            .append("totalCost", getTotalCost())
            .append("assignmentStatus", getAssignmentStatus())
            .append("assignmentDate", getAssignmentDate())
            .append("assignedBy", getAssignedBy())
            .append("createTime", getCreateTime())
            .append("updateTime", getUpdateTime())
            .toString();
    }
}