package cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.workorder;

import cn.iocoder.yudao.framework.common.pojo.UploadUserFile;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.time.LocalDateTime;
import java.util.List;

@Schema(description = "管理后台 - BPM OA 工单 Response VO")
@Data
public class BpmOAWorkOrderRespVO {

    @Schema(description = "工单ID", example = "1")
    private Long id;

    @Schema(description = "工单标题", example = "系统登录问题")
    private String title;

    @Schema(description = "工单类型", example = "it_support")
    private String type;

    @Schema(description = "工单类型名称", example = "IT支持")
    private String typeName;

    @Schema(description = "优先级别", example = "2")
    private Integer level;

    @Schema(description = "优先级名称", example = "中")
    private String levelName;

    @Schema(description = "工单内容描述", example = "用户无法登录系统，提示密码错误")
    private String content;

    @Schema(description = "发起人ID", example = "1")
    private Long fromUserId;

    @Schema(description = "发起人姓名", example = "张三")
    private String fromUserName;

    @Schema(description = "发起部门ID", example = "100")
    private Long fromDeptId;

    @Schema(description = "发起部门名称", example = "技术部")
    private String fromDeptName;

    @Schema(description = "责任人ID", example = "2")
    private Long assigneeUserId;

    @Schema(description = "责任人姓名", example = "李四")
    private String assigneeUserName;

    @Schema(description = "责任部门ID", example = "101")
    private Long assigneeDeptId;

    @Schema(description = "责任部门名称", example = "运维部")
    private String assigneeDeptName;

    @Schema(description = "工单状态", example = "2")
    private Integer status;

    @Schema(description = "工单状态名称", example = "处理中")
    private String statusName;

    @Schema(description = "期望完成时间", example = "2024-12-20 18:00:00")
    private LocalDateTime expectedTime;

    @Schema(description = "实际完成时间", example = "2024-12-20 16:30:00")
    private LocalDateTime completedTime;

    @Schema(description = "工单处理结果说明", example = "已成功修复系统登录问题")
    private String resultDescription;

    @Schema(description = "BPM流程结果", example = "2")
    private Integer result;

    @Schema(description = "BPM流程实例ID", example = "proc_inst_123456")
    private String processInstanceId;

    @Schema(description = "附件文件列表")
    private List<UploadUserFile> fileItems;

    @Schema(description = "工单跟踪记录")
    private List<BpmOAWorkOrderTrackInfo> trackInfo;

    @Schema(description = "创建时间", example = "2024-12-19 10:00:00")
    private LocalDateTime createTime;

    @Schema(description = "更新时间", example = "2024-12-19 15:30:00")
    private LocalDateTime updateTime;

}
