package org.dromara.elevator.domain.vo;

import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.Date;

import org.dromara.elevator.domain.EWorkData;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import org.dromara.elevator.domain.bo.RecordUploadBo;

import java.io.Serial;
import java.io.Serializable;
import java.util.List;


/**
 * 工作数据信息;视图对象 e_work_data
 *
 * @author zy
 * @date 2024-07-29
 */
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = EWorkData.class)
public class EWorkDataVo implements Serializable {

    @Serial
    private static final long serialVersionUID = 1L;

    /**
     * 主键id
     */
    private Long id;

    /**
     * 部门id
     */
    private Long deptId;

    /**
     * 工作类型
     */
    @ExcelProperty(value = "工作类型")
    private Integer workType;

    /**
     * 电梯编号
     */
    @ExcelProperty(value = "电梯编号")
    private String elevatorNum;

    /**
     * 二维码编号
     */
    @ExcelProperty(value = "二维码编号")
    private String qrCode;

    /**
     * 电梯名称
     */
    @ExcelProperty(value = "电梯名称")
    private String elevatorName;

    /**
     * 电梯地址
     */
    @ExcelProperty(value = "电梯地址")
    private String elevatorAddress;

    /**
     * 注册代码
     */
    @ExcelProperty(value = "注册代码")
    private String registerCode;

    /**
     * 维保单位
     */
    @ExcelProperty(value = "维保单位")
    private String maintenance;

    /**
     * 发布人
     */
    @ExcelProperty(value = "发布人")
    private String publisher;

    /**
     * 创建时间
     */
    @ExcelProperty(value = "创建时间")
    private Date createdTime;

    /**
     * 期望时间
     */
    @ExcelProperty(value = "期望时间")
    private LocalDate expectTime;

    /**
     * 上次维保日期
     */
    @ExcelProperty(value = "上次维保日期")
    private LocalDate lastTime;

    /**
     * 截止时间
     */
    @ExcelProperty(value = "截止时间")
    private String deadline;

    /**
     * 被困人数
     */
    @ExcelProperty(value = "被困人数")
    private Integer trapNum;

    /**
     * 受伤人数
     */
    @ExcelProperty(value = "受伤人数")
    private Integer injuredNum;

    /**
     * 死亡人数
     */
    @ExcelProperty(value = "死亡人数")
    private Integer dieNum;

    /**
     * 故障原因
     */
    @ExcelProperty(value = "故障原因")
    private String faultCause;

    /**
     * 原因分析
     */
    @ExcelProperty(value = "原因分析")
    private String reason;

    /**
     * 事件等级
     */
    @ExcelProperty(value = "事件等级")
    private Integer level;

    /**
     * 其它
     */
    @ExcelProperty(value = "其它")
    private String other;

    /**
     * 状态
     */
    @ExcelProperty(value = "状态")
    private Integer state;

    /**
     * 协同工作人员
     */
    @ExcelProperty(value = "协同工作人员")
    private String collaborator;

    /**
     * 签名状态
     */
    @ExcelProperty(value = "签名状态")
    private String signatureState;

    /**
     * 描述
     */
    @ExcelProperty(value = "描述")
    private String description;

    /**
     * 附件
     */
    @ExcelProperty(value = "附件")
    private String attachment;

    /**
     * 操作记录
     */
    @ExcelProperty(value = "操作记录")
    private String operatingRecord;

    /**
     * 计划类型
     */
    private Integer planType;

    /**
     * 完成时间
     */
    private Date finishTime;

    /**
     * 接收人员
     */
    private String receiveStaff;

    /**
     * 物业是否评价
     */
    private Integer isEvaluation;

    /**
     * 恢复时间
     */
    private Date restoreTime;

    /**
     * 发生时间
     */
    private Date happenTime;

    /**
     * 故障类型
     */
    private String faultType;

    /**
     * 维保次数
     */
    private Integer maintenanceNum;

    /**
     * 是否修改过期望时间(0:否, 1:是)
     */
    private Integer isModifyExpect;

    /**
     * 修改期望时间备注
     */
    private String modifyExpectRemark;

    /**
     * 原期望时间
     */
    private LocalDate originalExpectTime;

    /**
     * 创建时间
     */
    private Date createTime;

    /**
     * 超出天数
     */
    private long exceedDay;

    /**
     * 工作记录上传数据json
     */
    private String recordUploadData;

    /**
     * 签名记录
     */
    private String signRecord;

    /**
     * 签名时间
     */
    private Date signDate;

    /**
     * 轿顶附件
     */
    private String carRoofAttachment;

    /**
     * 轿厢附件
     */
    private String cabinAttachment;

    /**
     * 机房附件
     */
    private String machineRoomAttachment;

    /**
     * 底坑附件
     */
    private String pitAttachment;

    /**
     * 轿门附件
     */
    private String doorAttachment;

    /**
     * 井道附件
     */
    private String channelAttachment;

    /**
     * 维修材料数据(名称,型号,数量)json
     */
    private String repairMaterialData;

    /**
     * 维修材料报价
     */
    private BigDecimal materialQuote;

    /**
     * 人工及杂费等
     */
    private BigDecimal otherExpenses;

    /**
     * 总预算
     */
    private BigDecimal totalBudget;

    /**
     * 维修是否审核(0.否,1:是)
     */
    private Integer repairAudit;

    /**
     * 维修前记录
     */
    private String repairBeforeRecord;

    /**
     * 维修后记录
     */
    private String repairAfterRecord;

    /**
     * 维修换件记录
     */
    private String repairReplaceRecord;

    /**
     * 接收时间
     */
    private Date receiveTime;

    /**
     * 到场时间
     */
    private Date arriveTime;

    /**
     * 是否上传过工作表
     */
    private Boolean uploadWorkTable;

    /**
     * 维保审核:0:不合格 1:合格
     */
    private Integer maintenanceAudit;

    /**
     * 操作轨迹信息列表
     */
    private List<EWorkOperationRecordVo> operationRecords;

    /**
     * 图片数据
     */
    private List<RecordUploadBo> pictureList;

    /**
     * 维保用时
     */
    private String maintenanceTime;

    /**
     * 工作记录机房信息
     */
    private EWorkMachineRoomVo machineRoom;

    /**
     * 工作记录轿顶信息
     */
    private EWorkCarRoofVo carRoof;

    /**
     * 工作记录底坑信息
     */
    private EWorkPitVo workPit;

    /**
     * 工作记录轿厢信息
     */
    private EWorkElevatorCabinVo elevatorCabin;
}
