package org.wcs.model.dto.serve.stacker;

import com.fasterxml.jackson.annotation.JsonProperty;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.Getter;
import lombok.Setter;

/**
 * 更新堆垛机信息的请求类
 */
@Getter
@Setter
public class UpdateStackerInfoReq {

    /**
     * 堆垛机ID
     */
    @JsonProperty(value = "stackerId")
    @NotNull(message = "堆垛机ID不能为空")
    private Integer stackerId;

    /**
     * PLC ID
     */
    @NotNull(message = "PLC ID不能为空")
    @JsonProperty(value = "plcId")
    private Integer plcId;

    /**
     * 堆垛机名称
     */
    @NotBlank(message = "堆垛机名称不能为空")
    @JsonProperty(value = "stackerName")
    private String stackerName;

    /**
     * 堆垛机状态
     */
    @NotNull(message = "堆垛机状态不能为空")
    @JsonProperty(value = "stackerStatus")
    private Integer stackerStatus;

    /**
     * 货叉状态
     */
    @NotBlank(message = "货叉状态不能为空")
    @JsonProperty(value = "forkStatus")
    private String forkStatus;

    /**
     * 是否允许入库
     */
    @NotNull(message = "是否允许入库不能为空")
    @JsonProperty(value = "allowIn")
    private Integer allowIn;

    /**
     * 是否允许出库
     */
    @NotNull(message = "是否允许出库不能为空")
    @JsonProperty(value = "allowOut")
    private Integer allowOut;

    /**
     * 是否允许移库
     */
    @NotNull(message = "是否允许移库不能为空")
    @JsonProperty(value = "allowMove")
    private Integer allowMove;

    /**
     * 动作节拍
     */
    @NotBlank(message = "动作节拍不能为空")
    @JsonProperty(value = "actionBeat")
    private String actionBeat;

    /**
     * 读状态地址
     */
    @NotBlank(message = "读状态地址不能为空")
    @JsonProperty(value = "readStatusAddress")
    private String readStatusAddress;

    /**
     * 写任务地址
     */
    @NotBlank(message = "写任务地址不能为空")
    private String writeTaskAddress;

    /**
     * 写任务确认地址
     */
    @JsonProperty(value = "taskConfirmAddress")
    private String taskConfirmAddress;

    /**
     * 过账地址
     */
    @NotBlank(message = "过账地址不能为空")
    private String taskStatusAddress;


    /**
     * 备注
     */
    @JsonProperty(value = "remark")
    private String remark;
}
