package org.eco.als.domain.bo;

import com.fasterxml.jackson.annotation.JsonFormat;
import io.github.linpeilie.annotations.AutoMapper;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.eco.als.domain.MaintenanceRecord;
import org.eco.common.orm.core.domain.BaseEntity;

import java.util.Date;

/**
 * 维修记录业务对象 als_maintenance_record_t
 *
 * @author wgk
 * @date 2024-07-19
 */
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = MaintenanceRecord.class, reverseConvertGenerate = false)
public class MaintenanceRecordBo extends BaseEntity {
    /**
     * 编号
     */
    private Long id;

    /**
     * 机型
     */
    @NotBlank(message = "机型不能为空")
    private String aircraftType;

    /**
     * 机号Id
     */
    @NotNull(message = "机号不能为空")
    private String aircraftId;

    /**
     * 出厂号码
     */
    @NotBlank(message = "出厂号码不能为空")
    private String serialNumber;

    /**
     * 专业
     */
    private String specialty;

    /**
     * 系统
     */
    private String systemName;

    /**
     * 发动机型别
     */
    private String engineType;

    /**
     * 发动机号码
     */
    private String engineSerialNumber;

    /**
     * 单位
     */
    private String unitName;

    /**
     * 故障现象
     */
    private String faultPhenomenon;

    /**
     * 故障发生地点
     */
    private String locationFault;

    /**
     * 发现时机
     */
    private String discoveryTime;

    /**
     * 故障件名称
     */
    private String itemName;

    /**
     * 故障件型别
     */
    private String itemType;

    /**
     * 故换件号码
     */
    private String partNumber;

    /**
     * 故换件型别
     */
    @NotBlank(message = "故换件型别不能为空")
    private String partType;

    /**
     * 故障失常码
     */
    @NotBlank(message = "故障失常码不能为空")
    private String faultCode;

    /**
     * 故障件装机日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date installationDate;

    /**
     * 故障原因
     */
    private String causeFault;

    /**
     * 故障性质
     */
    private String natureFault;

    /**
     * 故障责任
     */
    private String liabilityFault;

    /**
     * 故障后果
     */
    private String consequencesFault;

    /**
     * 发生日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date occurDate;

    /**
     * 判明方法
     */
    private String methodDetermination;

    /**
     * 排除方法
     */
    private String methodRectification;

    /**
     * 发现人
     */
    private String discoveredBy;

    /**
     * 排故人
     */
    private String rectificationBy;

    /**
     * 审核人
     */
    private String reviewerBy;

    /**
     * 排故人数
     */
    private String rectificationNumber;

    /**
     * 备注
     */
    private String remarks;
}
