package com.huimv.employment.dao.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;

import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;

/**
 * 用工草稿主表 {@code fe_employment_draft} 实体。
 */
@TableName("fe_employment_draft")
public class FeEmploymentDraft {

    @TableId(type = IdType.AUTO)
    private Long id;

    private String draftNo;

    private Long enterpriseId;

    /** 发起/归属用户，与 fe_conversation.user_id 一致 */
    private Long userId;

    private Long conversationId;

    /** existing_worker_regularization / new_demand */
    private String scenario;

    private String title;

    /** pending / confirmed / cancelled / expired */
    private String status;

    private Integer workerCount;

    /** 计划工作天数，支持小数（如 0.5） */
    private BigDecimal workDays;

    private String workType;

    private String workContent;

    private String workLocation;

    private String workLocationSource;

    /** daily / piece / monthly */
    private String settlementMode;

    private BigDecimal dailyWage;

    private Boolean insuranceRequired;

    /** basic / standard / premium */
    private String insuranceLevel;

    private Boolean checkInRequired;

    private Integer qrValidDays;

    private LocalDate workStartDate;

    private LocalDate workEndDate;

    private String jobRequirements;

    /** JSON 数组字符串 */
    private String missingFields;

    /** JSON 数组字符串 */
    private String riskPrompts;

    private BigDecimal estimatedTotal;

    private BigDecimal estimatedPerCapita;

    private Long selectedPlanId;

    private LocalDateTime confirmedAt;

    private Long confirmedBy;

    private LocalDateTime createTime;

    private LocalDateTime updateTime;

    @TableLogic
    private Integer delFlag;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getDraftNo() {
        return draftNo;
    }

    public void setDraftNo(String draftNo) {
        this.draftNo = draftNo;
    }

    public Long getEnterpriseId() {
        return enterpriseId;
    }

    public void setEnterpriseId(Long enterpriseId) {
        this.enterpriseId = enterpriseId;
    }

    public Long getUserId() {
        return userId;
    }

    public void setUserId(Long userId) {
        this.userId = userId;
    }

    public Long getConversationId() {
        return conversationId;
    }

    public void setConversationId(Long conversationId) {
        this.conversationId = conversationId;
    }

    public String getScenario() {
        return scenario;
    }

    public void setScenario(String scenario) {
        this.scenario = scenario;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public String getStatus() {
        return status;
    }

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

    public Integer getWorkerCount() {
        return workerCount;
    }

    public void setWorkerCount(Integer workerCount) {
        this.workerCount = workerCount;
    }

    public BigDecimal getWorkDays() {
        return workDays;
    }

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

    public String getWorkType() {
        return workType;
    }

    public void setWorkType(String workType) {
        this.workType = workType;
    }

    public String getWorkContent() {
        return workContent;
    }

    public void setWorkContent(String workContent) {
        this.workContent = workContent;
    }

    public String getWorkLocation() {
        return workLocation;
    }

    public void setWorkLocation(String workLocation) {
        this.workLocation = workLocation;
    }

    public String getWorkLocationSource() {
        return workLocationSource;
    }

    public void setWorkLocationSource(String workLocationSource) {
        this.workLocationSource = workLocationSource;
    }

    public String getSettlementMode() {
        return settlementMode;
    }

    public void setSettlementMode(String settlementMode) {
        this.settlementMode = settlementMode;
    }

    public BigDecimal getDailyWage() {
        return dailyWage;
    }

    public void setDailyWage(BigDecimal dailyWage) {
        this.dailyWage = dailyWage;
    }

    public Boolean getInsuranceRequired() {
        return insuranceRequired;
    }

    public void setInsuranceRequired(Boolean insuranceRequired) {
        this.insuranceRequired = insuranceRequired;
    }

    public String getInsuranceLevel() {
        return insuranceLevel;
    }

    public void setInsuranceLevel(String insuranceLevel) {
        this.insuranceLevel = insuranceLevel;
    }

    public Boolean getCheckInRequired() {
        return checkInRequired;
    }

    public void setCheckInRequired(Boolean checkInRequired) {
        this.checkInRequired = checkInRequired;
    }

    public Integer getQrValidDays() {
        return qrValidDays;
    }

    public void setQrValidDays(Integer qrValidDays) {
        this.qrValidDays = qrValidDays;
    }

    public LocalDate getWorkStartDate() {
        return workStartDate;
    }

    public void setWorkStartDate(LocalDate workStartDate) {
        this.workStartDate = workStartDate;
    }

    public LocalDate getWorkEndDate() {
        return workEndDate;
    }

    public void setWorkEndDate(LocalDate workEndDate) {
        this.workEndDate = workEndDate;
    }

    public String getJobRequirements() {
        return jobRequirements;
    }

    public void setJobRequirements(String jobRequirements) {
        this.jobRequirements = jobRequirements;
    }

    public String getMissingFields() {
        return missingFields;
    }

    public void setMissingFields(String missingFields) {
        this.missingFields = missingFields;
    }

    public String getRiskPrompts() {
        return riskPrompts;
    }

    public void setRiskPrompts(String riskPrompts) {
        this.riskPrompts = riskPrompts;
    }

    public BigDecimal getEstimatedTotal() {
        return estimatedTotal;
    }

    public void setEstimatedTotal(BigDecimal estimatedTotal) {
        this.estimatedTotal = estimatedTotal;
    }

    public BigDecimal getEstimatedPerCapita() {
        return estimatedPerCapita;
    }

    public void setEstimatedPerCapita(BigDecimal estimatedPerCapita) {
        this.estimatedPerCapita = estimatedPerCapita;
    }

    public Long getSelectedPlanId() {
        return selectedPlanId;
    }

    public void setSelectedPlanId(Long selectedPlanId) {
        this.selectedPlanId = selectedPlanId;
    }

    public LocalDateTime getConfirmedAt() {
        return confirmedAt;
    }

    public void setConfirmedAt(LocalDateTime confirmedAt) {
        this.confirmedAt = confirmedAt;
    }

    public Long getConfirmedBy() {
        return confirmedBy;
    }

    public void setConfirmedBy(Long confirmedBy) {
        this.confirmedBy = confirmedBy;
    }

    public LocalDateTime getCreateTime() {
        return createTime;
    }

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

    public LocalDateTime getUpdateTime() {
        return updateTime;
    }

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

    public Integer getDelFlag() {
        return delFlag;
    }

    public void setDelFlag(Integer delFlag) {
        this.delFlag = delFlag;
    }
}
