package com.cf.imes.module.executor.controller.admin.processStep.vo;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import javax.validation.constraints.*;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;

@Schema(description = "管理后台 - 生产单工序步骤新增/修改 Request VO")
@Data
public class ProcessStepSaveReqVO {

    @Schema(description = "步骤 ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "16284")
    private Long id;

    @Schema(description = "生产单号", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "生产单号不能为空")
    private Long orderId;

    @Schema(description = "完成时间", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "完成时间不能为空")
    private LocalDateTime finishTime;

    @Schema(description = "工序状态，0未加工，1已加工", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
    @NotNull(message = "工序状态，0未加工，1已加工不能为空")
    private Boolean status;

    @Schema(description = "加工类型，0全部加工，1开料，2部件加工，3异形封边，4分堆，5打包，6出库，7组件加工，8板材", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
    @NotNull(message = "加工类型，0全部加工，1开料，2部件加工，3异形封边，4分堆，5打包，6出库，7组件加工，8板材不能为空")
    private Integer type;

    @Schema(description = "计件工资", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "计件工资不能为空")
    private Double pieceRate;

    @Schema(description = "计件工资类型，1数量，2长度，3平方，4宽，5高，6体积，7生产单金额百分比", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
    @NotNull(message = "计件工资类型，1数量，2长度，3平方，4宽，5高，6体积，7生产单金额百分比不能为空")
    private Integer pieceType;

    @Schema(description = "排序优先级", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "排序优先级不能为空")
    private Integer sort;

    @Schema(description = "工序名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "李四")
    @NotEmpty(message = "工序名称不能为空")
    private String name;

    @Schema(description = "工序 ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "20663")
    @NotNull(message = "工序 ID不能为空")
    private Long processinfoId;

    @Schema(description = "生产单工序 ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "9384")
    @NotNull(message = "生产单工序 ID不能为空")
    private Long orderProcessId;

    @Schema(description = "计划日期", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "计划日期不能为空")
    private LocalDateTime scheduleDate;

    @Schema(description = "工序处理时长", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "工序处理时长不能为空")
    private Double duration;

    @Schema(description = "工序负责人", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotEmpty(message = "工序负责人不能为空")
    private String manager;

    @Schema(description = "工序处理日期", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "工序处理日期不能为空")
    private LocalDateTime processDate;

}