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

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

@Getter
@Setter
public class AddPlcReq {

    /**
     * plc 编号 ---- 唯一
     */
    @NotNull(message = "plcId 不能为空")
    @JsonProperty("plcId")
    private Integer plcId;

    /**
     * PLC 名称
     */
    @NotBlank(message = "PLC名称不能为空")
    @JsonProperty("plcName")
    private String plcName;

    /**
     * PLC 类型
     */
    @NotNull(message = "plc类型 不能为空")
    @JsonProperty("plcType")
    private Integer plcType;

    /**
     * PLC 版本
     */
    @JsonProperty("plcVersion")
    private String plcVersion;

    /**
     * 状态
     */
    @NotNull(message = "plc状态 不能为空")
    @JsonProperty("plcStatus")
    private Integer plcStatus;

    /**
     * IP 地址
     */
    @NotBlank(message = "ip 不能为空")
    @JsonProperty("ip")
    private String ip;

    /**
     * 端口
     */
    @NotNull(message = "端口号 不能为空")
    @Max(value = 65535, message = "端口号 不能大于 65535")
    @Min(value = 1, message = "端口号 不能小于 1")
    @JsonProperty("port")
    private Integer port;

    /**
     * 槽位
     */
    @NotNull(message = "插槽 不能为空")
    @Min(value = 0, message = "插槽 不能小于 0")
    @JsonProperty("slot")
    private Integer slot;

    /**
     * 架位
     */
    @NotNull(message = "机架 不能为空")
    @Min(value = 0, message = "机架 不能小于 0")
    @JsonProperty("rack")
    private Integer rack;

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



}
