package com.huimv.employment.service.order.dto;

import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.v3.oas.annotations.media.Schema;

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

@Schema(description = "用工订单列表项")
public class EmploymentOrderItemResponse {

    @JsonProperty("draft_id")
    @Schema(description = "关联草稿 ID")
    private Long draftId;

    @JsonProperty("order_id")
    @Schema(description = "订单主键 ID")
    private Long orderId;

    @JsonProperty("order_no")
    @Schema(description = "订单编号", example = "ord_123")
    private String orderNo;

    @Schema(description = "订单标题")
    private String title;

    @JsonProperty("worker_count")
    @Schema(description = "用工人数")
    private Integer workerCount;

    @JsonProperty("work_days")
    @Schema(description = "工作天数（支持小数，如 0.5）")
    private BigDecimal workDays;

    @JsonProperty("work_type")
    @Schema(description = "岗位类型")
    private String workType;

    @JsonProperty("work_location")
    @Schema(description = "工作地点")
    private String workLocation;

    @JsonProperty("work_start_date")
    private LocalDate workStartDate;

    @JsonProperty("work_end_date")
    private LocalDate workEndDate;

    @JsonProperty("order_status")
    @Schema(description = "订单状态", example = "confirmed")
    private String orderStatus;

    @JsonProperty("current_step_code")
    @Schema(description = "当前流程步骤")
    private String currentStepCode;

    @JsonProperty("registered_count")
    private Integer registeredCount;

    @JsonProperty("pending_count")
    private Integer pendingCount;

    @JsonProperty("abnormal_count")
    private Integer abnormalCount;

    @JsonProperty("total_outflow")
    @Schema(description = "企业总支出")
    private BigDecimal totalOutflow;

    @JsonProperty("selected_plan_id")
    private Long selectedPlanId;

    @JsonProperty("create_time")
    private LocalDateTime createTime;

    @JsonProperty("update_time")
    private LocalDateTime updateTime;

    public Long getDraftId() {
        return draftId;
    }

    public void setDraftId(Long draftId) {
        this.draftId = draftId;
    }

    public Long getOrderId() {
        return orderId;
    }

    public void setOrderId(Long orderId) {
        this.orderId = orderId;
    }

    public String getOrderNo() {
        return orderNo;
    }

    public void setOrderNo(String orderNo) {
        this.orderNo = orderNo;
    }

    public String getTitle() {
        return title;
    }

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

    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 getWorkLocation() {
        return workLocation;
    }

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

    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 getOrderStatus() {
        return orderStatus;
    }

    public void setOrderStatus(String orderStatus) {
        this.orderStatus = orderStatus;
    }

    public String getCurrentStepCode() {
        return currentStepCode;
    }

    public void setCurrentStepCode(String currentStepCode) {
        this.currentStepCode = currentStepCode;
    }

    public Integer getRegisteredCount() {
        return registeredCount;
    }

    public void setRegisteredCount(Integer registeredCount) {
        this.registeredCount = registeredCount;
    }

    public Integer getPendingCount() {
        return pendingCount;
    }

    public void setPendingCount(Integer pendingCount) {
        this.pendingCount = pendingCount;
    }

    public Integer getAbnormalCount() {
        return abnormalCount;
    }

    public void setAbnormalCount(Integer abnormalCount) {
        this.abnormalCount = abnormalCount;
    }

    public BigDecimal getTotalOutflow() {
        return totalOutflow;
    }

    public void setTotalOutflow(BigDecimal totalOutflow) {
        this.totalOutflow = totalOutflow;
    }

    public Long getSelectedPlanId() {
        return selectedPlanId;
    }

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

    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;
    }
}
