package com.zksy.api.domain;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.io.Serializable;
import java.util.Date;

/**
 * 运维工单表
 * @TableName work_order
 */
@TableName(value = "work_order", schema = "app_user")
@Data
@ApiModel(value = "运维工单入参", description = "运维工单入参")
public class WorkOrder implements Serializable {

    @TableField(exist = false)
    private static final long serialVersionUID = 1L;

    /**
     * 工单ID
     */
    @ApiModelProperty(value = "工单ID")
    @TableId(type = IdType.AUTO)
    private Long orderId;

    /**
     * 工单编号
     */
    @ApiModelProperty(value = "工单编号")
    private String orderNo;

    /**
     * 关联报警ID
     */
    @ApiModelProperty(value = "报警ID")
    private String alarmId;

    /**
     * 关联案件ID
     */
    @ApiModelProperty(value = "案件ID")
    private Long caseId;

    /**
     * 案件编号
     */
    @ApiModelProperty(value = "案件编号")
    private String caseNo;

    /**
     * 关联设备ID
     */
    @ApiModelProperty(value = "设备ID")
    private String deviceId;

    /**
     * 设备编码
     */
    @ApiModelProperty(value = "设备编码")
    private String deviceCode;

    /**
     * 工单类型：1-故障维修 2-日常巡检 3-设备保养
     */
    @ApiModelProperty(value = "工单类型：1-故障维修 2-日常巡检 3-设备保养")
    private Integer orderType;

    /**
     * 工单优先级：1-紧急 2-一般 3-低
     */
    @ApiModelProperty(value = "工单优先级：1-紧急 2-一般 3-低")
    private Integer orderLevel;

    /**
     * 工单问题描述
     */
    @ApiModelProperty(value = "工单问题描述")
    private String orderDesc;

    /**
     * 负责部门ID
     */
    @ApiModelProperty(value = "负责部门ID")
    private Long deptId;

    /**
     * 派单人ID
     */
    @ApiModelProperty(value = "派单人ID")
    private Long dispatchUser;

    /**
     * 派单时间
     */
    @ApiModelProperty(value = "派单时间")
    @JsonFormat(locale = "zh",pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    private Date dispatchTime;

    /**
     * 接单运维人员ID（多个用逗号分隔）
     */
    @ApiModelProperty(value = "接单运维人员ID，多个用逗号分隔")
    private String receiveUser;

    /**
     * 工单状态：1-待派单 2-待接单 3-已接单 4-处理中 5-待验收 6-已结案 7-已驳回 8-延期审核 9-已延期
     */
    @ApiModelProperty(value = "工单状态：1-待派单 2-待接单 3-已接单 4-处理中 5-待验收 6-已结案 7-已驳回 8-延期审核 9-已延期")
    private Integer orderStatus;

    /**
     * 延期原因
     */
    @ApiModelProperty(value = "延期原因")
    private String delayedReason;

    /**
     * 延期截止时间
     */
    @ApiModelProperty(value = "延期截止时间")
    @JsonFormat(locale = "zh",pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    private Date delayedDeadline;

    /**
     * 计划完成时间
     */
    @ApiModelProperty(value = "计划完成时间")
    @JsonFormat(locale = "zh",pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    private Date planFinishTime;

    /**
     * 实际完成时间
     */
    @ApiModelProperty(value = "实际完成时间")
    @JsonFormat(locale = "zh",pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    private Date realFinishTime;

    /**
     * 维修处置结果
     */
    @ApiModelProperty(value = "维修处置结果")
    private String repairResult;

    /**
     * 工单图片（多个图片用逗号分隔）
     */
    @ApiModelProperty(value = "工单图片，多个用逗号分隔")
    private String workImage;

    /**
     * 验收人ID
     */
    @ApiModelProperty(value = "验收人ID")
    private Long verifyUser;

    /**
     * 验收时间
     */
    @ApiModelProperty(value = "验收时间")
    @JsonFormat(locale = "zh",pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    private Date verifyTime;

    /**
     * 创建时间
     */
    @ApiModelProperty(value = "创建时间")
    @JsonFormat(locale = "zh",pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    private Date createTime;

    /**
     * 更新时间
     */
    @ApiModelProperty(value = "更新时间")
    @JsonFormat(locale = "zh",pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    private Date updateTime;
}