package com.qqchen.deploy.backend.workflow.dto;

import com.qqchen.deploy.backend.framework.dto.BaseDTO;
import com.qqchen.deploy.backend.workflow.enums.WorkflowInstanceStatusEnums;
import com.qqchen.deploy.backend.workflow.enums.WorkflowNodeInstanceStatusEnums;
import lombok.Data;
import java.util.Date;
import java.util.List;
import java.util.Map;

@Data
public class WorkflowExecutionDTO extends BaseDTO {
    /**
     * 流程实例ID
     */
    private String processInstanceId;

    /**
     * 流程定义ID
     */
    private String processDefinitionId;

    /**
     * 流程定义名称
     */
    private String processDefinitionName;

    /**
     * 业务标识
     */
    private String businessKey;

    /**
     * 流程状态
     */
    private WorkflowNodeInstanceStatusEnums status;

    /**
     * 当前活动节点ID
     */
    private String currentActivityId;

    /**
     * 当前活动节点名称
     */
    private String currentActivityName;

    /**
     * 当前活动节点类型
     */
    private String currentActivityType;

    /**
     * 开始时间
     */
    private Date startTime;

    /**
     * 结束时间
     */
    private Date endTime;

    /**
     * 持续时间（毫秒）
     */
    private Long durationInMillis;

    /**
     * 流程变量
     */
    private Map<String, Object> variables;

    /**
     * 流程阶段列表
     */
    private List<StageDTO> stages;

    @Data
    public static class StageDTO {
        /**
         * 节点ID
         */
        private String id;

        /**
         * 节点名称
         */
        private String name;

        /**
         * 节点类型：START_EVENT, USER_TASK, SERVICE_TASK, SHELL_TASK 等
         */
        private String type;

        /**
         * 节点状态
         */
        private WorkflowNodeInstanceStatusEnums status;

        /**
         * 开始时间
         */
        private Date startTime;

        /**
         * 结束时间
         */
        private Date endTime;
    }
}
