package com.aucma.dms.domain;

import com.aucma.common.annotation.Excel;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

/**
 * 维修记录对象 dms_repair_record
 *
 * @author Cascade AI
 * @date 2025-01-10
 */
@EqualsAndHashCode(callSuper = true)
@Data
public class DmsRepairRecord extends DmsBaseEntity {
    
    private static final long serialVersionUID = 1L;

    /** 维修记录ID */
    private Long recordId;

    /** 维修工单ID */
    @Excel(name = "维修工单ID")
    private Long workOrderId;

    /** 工单编号 */
    @Excel(name = "工单编号")
    private String workOrderCode;

    /** 设备ID */
    @Excel(name = "设备ID")
    private Long deviceId;

    /** 设备编码 */
    @Excel(name = "设备编码")
    private String deviceCode;

    /** 设备名称 */
    @Excel(name = "设备名称")
    private String deviceName;

    /** 故障现象 */
    @Excel(name = "故障现象")
    private String faultPhenomenon;

    /** 故障原因 */
    @Excel(name = "故障原因")
    private String faultCause;

    /** 维修方法 */
    @Excel(name = "维修方法")
    private String repairMethod;

    /** 维修过程 */
    @Excel(name = "维修过程")
    private String repairProcess;

    /** 更换部件 */
    @Excel(name = "更换部件")
    private String replacedParts;

    /** 维修结果：1-成功 2-失败 3-部分完成 */
    @Excel(name = "维修结果", dictType = "dms_repair_result")
    private String repairResult;

    /** 维修人员ID */
    @Excel(name = "维修人员ID")
    private Long repairerId;

    /** 维修人员姓名 */
    @Excel(name = "维修人员")
    private String repairerName;

    /** 维修开始时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "维修开始时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date startTime;

    /** 维修结束时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "维修结束时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date endTime;

    /** 维修工时（小时） */
    @Excel(name = "维修工时")
    private BigDecimal repairHours;

    /** 维修费用 */
    @Excel(name = "维修费用")
    private BigDecimal repairCost;

    /** 停机时长（分钟） */
    @Excel(name = "停机时长")
    private Integer shutdownDuration;

    /** 验收人 */
    @Excel(name = "验收人")
    private String acceptor;

    /** 验收时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "验收时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date acceptTime;

    /** 验收结果：1-合格 2-不合格 */
    @Excel(name = "验收结果", dictType = "dms_accept_result")
    private String acceptResult;

    /** 验收意见 */
    @Excel(name = "验收意见")
    private String acceptOpinion;

    /** 后续建议 */
    @Excel(name = "后续建议")
    private String followupSuggestion;

    /** 是否存档：0-否 1-是 */
    @Excel(name = "是否存档", readConverterExp = "0=否,1=是")
    private String isArchived;

    /** 是否标识：1-是 0-否 */
    @Excel(name = "是否标识", readConverterExp = "1=是,0=否")
    private String isFlag;

    // ========== 关联数据 ==========

    /** 附件列表 */
    private List<DmsInstanceFile> attachments;

    /** 使用的材料列表 */
    private List<DmsRepairMaterial> materials;
}
