package org.dromara.inspection.domain.vo;

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

import org.dromara.inspection.domain.OpsInspectionOrder;
import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
import cn.idev.excel.annotation.ExcelProperty;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import org.dromara.personnel.domain.vo.OpsUserVo;
import org.dromara.system.api.domain.vo.RemoteUserVo;

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


/**
 * 运维-巡检-工单视图对象 ops_inspection_order
 *
 * @author LionLi
 * @date 2025-09-23
 */
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = OpsInspectionOrder.class)
public class OpsInspectionOrderVo implements Serializable {

    @Serial
    private static final long serialVersionUID = 1L;

    /**
     * 主要id
     */
    @ExcelProperty(value = "主要id")
    private Long id;

    /**
     * 项目(电站)id
     */
    @ExcelProperty(value = "项目(电站)id")
    private Long projectId;

    /**
     * 工单标题
     */
    @ExcelProperty(value = "工单标题")
    private String title;

    /**
     * 工单类型1维护保养2检查检测3安装调试4升级改造
     */
    @ExcelProperty(value = "工单类型1维护保养2检查检测3安装调试4升级改造")
    private String type;

    /**
     * 工单优先级1低2中3高
     */
    @ExcelProperty(value = "工单优先级1低2中3高")
    private String level;

    /**
     * 截止时间
     */
    @ExcelProperty(value = "截止时间")
    private Date endTime;

    /**
     * 工单描述
     */
    @ExcelProperty(value = "工单描述")
    private String info;

    /**
     * 执行地点
     */
    @ExcelProperty(value = "执行地点")
    private String position;

    /**
     * 相关设备/系统
     */
    @ExcelProperty(value = "相关设备/系统")
    private String device;

    /**
     * 文件ID
     */
    @ExcelProperty(value = "文件ID")
    private String fileId;

    /**
     * 文件路径
     */
    @ExcelProperty(value = "文件路径")
    private String fileUrl;

    /**
     * 节点ids
     */
    @ExcelProperty(value = "节点ids")
    private String nodeIds;

    /**
     * 工单进度
     */
    private BigDecimal progress;

    /**
     * 工单节点
     */
    private List<OpsInspectionNodeVo> nodes;

    /**
     * 预期成果
     */
    @ExcelProperty(value = "预期成果")
    private String results;

    /**
     * 是否需要执行人,1是2否(取消使用)
     */
    @ExcelProperty(value = "是否需要执行人,1是2否(取消使用)")
    private String executor;

    /**
     * 执行人ids(取消使用)
     */
    @ExcelProperty(value = "执行人ids(取消使用)")
    private String executorIds;

    /**
     * 工单状态1待派单2已派单3执行中4已完成
     */
    @ExcelProperty(value = "工单状态1待派单2已派单3执行中4已完成")
    private String status;

    /**
     * 派单时间
     */
    @ExcelProperty(value = "派单时间")
    private Date sendOrderTime;

    /**
     * 接单时间
     */
    @ExcelProperty(value = "接单时间")
    private Date getOrderTime;

    private Long getOrderPerson;

    private RemoteUserVo getOrderPersonVo;

    /**
     * 完成时间
     */
    @ExcelProperty(value = "完成时间")
    private Date finishiOrderTime;

    /**
     * 验收结果1通过2需整改
     */
    @ExcelProperty(value = "验收结果1通过2需整改")
    private String orderResult;

    /**
     * 是否重点跟踪1是2否
     */
    @ExcelProperty(value = "是否重点跟踪1是2否")
    private String point;

    private Date createTime;

    private Long createBy;

    private RemoteUserVo sendOrderPersonVo;

}
