package org.dromara.elevator.domain.bo;

import org.dromara.elevator.domain.EWorkMachineRoom;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*;

/**
 * 工作记录机房信息业务对象 e_work_machine_room
 *
 * @author ym
 * @date 2024-10-08
 */
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = EWorkMachineRoom.class, reverseConvertGenerate = false)
public class EWorkMachineRoomBo extends BaseEntity {

    /**
     * 主键id
     */
    @NotNull(message = "主键id不能为空", groups = { EditGroup.class })
    private Long id;

    /**
     * 电梯编号
     */
    @NotBlank(message = "电梯编号不能为空", groups = { AddGroup.class, EditGroup.class })
    private String elevatorNum;

    /**
     * 工作id
     */
    @NotNull(message = "工作id不能为空", groups = { AddGroup.class, EditGroup.class })
    private Long workId;

    /**
     * 维保计划id
     */
    @NotNull(message = "维保计划id不能为空", groups = { AddGroup.class, EditGroup.class })
    private Long maintenancePlanId;

    /**
     * 机房、滑轮间环境状态
     */
    @NotNull(message = "机房、滑轮间环境状态不能为空", groups = { AddGroup.class, EditGroup.class })
    private Integer environmentState;

    /**
     * 机房、滑轮间环境备注
     */
    @NotBlank(message = "机房、滑轮间环境备注不能为空", groups = { AddGroup.class, EditGroup.class })
    private String environmentRemark;

    /**
     * 手动紧急操作装置状态
     */
    @NotNull(message = "手动紧急操作装置状态不能为空", groups = { AddGroup.class, EditGroup.class })
    private Integer emergencyOperationState;

    /**
     * 手动紧急操作装置备注
     */
    @NotBlank(message = "手动紧急操作装置备注不能为空", groups = { AddGroup.class, EditGroup.class })
    private String emergencyOperationRemark;

    /**
     * 驱动主机状态
     */
    @NotNull(message = "驱动主机状态不能为空", groups = { AddGroup.class, EditGroup.class })
    private Integer driveHostState;

    /**
     * 驱动主机备注
     */
    @NotBlank(message = "驱动主机备注不能为空", groups = { AddGroup.class, EditGroup.class })
    private String driveHostRemark;

    /**
     * 制动器各销轴部位状态
     */
    @NotNull(message = "制动器各销轴部位状态不能为空", groups = { AddGroup.class, EditGroup.class })
    private Integer brakeShaftState;

    /**
     * 制动器各销轴部位备注
     */
    @NotBlank(message = "制动器各销轴部位备注不能为空", groups = { AddGroup.class, EditGroup.class })
    private String brakeShaftRemark;

    /**
     * 制动器间隙状态
     */
    @NotNull(message = "制动器间隙状态不能为空", groups = { AddGroup.class, EditGroup.class })
    private Integer brakeClearanceState;

    /**
     * 制动器间隙备注
     */
    @NotBlank(message = "制动器间隙备注不能为空", groups = { AddGroup.class, EditGroup.class })
    private String brakeClearanceRemark;

    /**
     * 制动器作为轿厢意外移动保护装置制停子系统时的自监测正常状态
     */
    @NotNull(message = "制动器作为轿厢意外移动保护装置制停子系统时的自监测正常状态不能为空", groups = { AddGroup.class, EditGroup.class })
    private Integer shutdownSubsystemState;

    /**
     * 制动器作为轿厢意外移动保护装置制停子系统时的自监测正常备注
     */
    @NotBlank(message = "制动器作为轿厢意外移动保护装置制停子系统时的自监测正常备注不能为空", groups = { AddGroup.class, EditGroup.class })
    private String shutdownSubsystemRemark;

    /**
     * 编码器状态
     */
    @NotNull(message = "编码器状态不能为空", groups = { AddGroup.class, EditGroup.class })
    private Integer encoderState;

    /**
     * 编码器备注
     */
    @NotBlank(message = "编码器备注不能为空", groups = { AddGroup.class, EditGroup.class })
    private String encoderRemark;

    /**
     * 限速器各销轴部位状态
     */
    @NotNull(message = "限速器各销轴部位状态不能为空", groups = { AddGroup.class, EditGroup.class })
    private Integer speedLimiterState;

    /**
     * 限速器各销轴部位备注
     */
    @NotBlank(message = "限速器各销轴部位备注不能为空", groups = { AddGroup.class, EditGroup.class })
    private String speedLimiterRemark;

    /**
     * 层门和轿门旁路装置状态
     */
    @NotNull(message = "层门和轿门旁路装置状态不能为空", groups = { AddGroup.class, EditGroup.class })
    private Integer bypassDeviceState;

    /**
     * 层门和轿门旁路装置备注
     */
    @NotBlank(message = "层门和轿门旁路装置备注不能为空", groups = { AddGroup.class, EditGroup.class })
    private String bypassDeviceRemark;

    /**
     * 紧急电动运行状态
     */
    @NotNull(message = "紧急电动运行状态不能为空", groups = { AddGroup.class, EditGroup.class })
    private Integer emergencyElectricalOperationState;

    /**
     * 紧急电动运行备注
     */
    @NotBlank(message = "紧急电动运行备注不能为空", groups = { AddGroup.class, EditGroup.class })
    private String emergencyElectricalOperationRemark;

    /**
     * 消防开关状态
     */
    @NotNull(message = "消防开关状态不能为空", groups = { AddGroup.class, EditGroup.class })
    private Integer fireSwitchState;

    /**
     * 消防开关备注
     */
    @NotBlank(message = "消防开关备注不能为空", groups = { AddGroup.class, EditGroup.class })
    private String fireSwitchRemark;

    /**
     * 耗能缓冲器状态
     */
    @NotNull(message = "耗能缓冲器状态不能为空", groups = { AddGroup.class, EditGroup.class })
    private Integer energyBufferState;

    /**
     * 耗能缓冲器备注
     */
    @NotBlank(message = "耗能缓冲器备注不能为空", groups = { AddGroup.class, EditGroup.class })
    private String energyBufferRemark;

    /**
     * 对重缓冲距离状态
     */
    @NotNull(message = "对重缓冲距离状态不能为空", groups = { AddGroup.class, EditGroup.class })
    private Integer bufferDistanceState;

    /**
     * 对重缓冲距离备注
     */
    @NotBlank(message = "对重缓冲距离备注不能为空", groups = { AddGroup.class, EditGroup.class })
    private String bufferDistanceRemark;

    /**
     * 补偿链（绳）与轿厢、对重接合处状态
     */
    @NotNull(message = "补偿链（绳）与轿厢、对重接合处状态不能为空", groups = { AddGroup.class, EditGroup.class })
    private Integer compensationChainState;

    /**
     * 补偿链（绳）与轿厢、对重接合处备注
     */
    @NotBlank(message = "补偿链（绳）与轿厢、对重接合处备注不能为空", groups = { AddGroup.class, EditGroup.class })
    private String compensationChainRemark;

    /**
     * 上、下极限开关状态
     */
    @NotNull(message = "上、下极限开关状态不能为空", groups = { AddGroup.class, EditGroup.class })
    private Integer limitSwitchState;

    /**
     * 上、下极限开关备注
     */
    @NotBlank(message = "上、下极限开关备注不能为空", groups = { AddGroup.class, EditGroup.class })
    private String limitSwitchRemark;

    /**
     * 随行电缆状态
     */
    @NotNull(message = "随行电缆状态不能为空", groups = { AddGroup.class, EditGroup.class })
    private Integer cableState;

    /**
     * 随行电缆备注
     */
    @NotBlank(message = "随行电缆备注不能为空", groups = { AddGroup.class, EditGroup.class })
    private String cableRemark;

    /**
     * 层门装置和地坎状态
     */
    @NotNull(message = "层门装置和地坎状态不能为空", groups = { AddGroup.class, EditGroup.class })
    private Integer landingSillsState;

    /**
     * 层门装置和地坎备注
     */
    @NotBlank(message = "层门装置和地坎备注不能为空", groups = { AddGroup.class, EditGroup.class })
    private String landingSillsRemark;

    /**
     * 轿厢称重装置状态
     */
    @NotNull(message = "轿厢称重装置状态不能为空", groups = { AddGroup.class, EditGroup.class })
    private Integer weighDeviceState;

    /**
     * 轿厢称重装置备注
     */
    @NotBlank(message = "轿厢称重装置备注不能为空", groups = { AddGroup.class, EditGroup.class })
    private String weighDeviceRemark;

    /**
     * 部门id
     */
    @NotNull(message = "部门id不能为空", groups = { AddGroup.class, EditGroup.class })
    private Long deptId;


}
