package com.aegis.emergency.dispatch.domain;

import com.aegis.common.core.domain.BaseEntity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;

/**
 * 调度任务与资源 usage 记录关联实体类 dispatch_resource_usage_link
 * 
 * 用于建立任务与资源模块 usage 记录的关联，方便在任务详情中聚合展示各类资源的调拨情况
 * 
 * @author aegis
 */
@Getter
@Setter
@ToString(callSuper = true)
@TableName("dispatch_resource_usage_link")
public class DispatchResourceUsageLink extends BaseEntity {

    private static final long serialVersionUID = 1L;

    /** 关联ID */
    @JsonSerialize(using = ToStringSerializer.class)
    private Long id;

    /** 任务ID */
    @JsonSerialize(using = ToStringSerializer.class)
    private Long taskId;

    /** 关联的行动项ID（可选，null表示任务级资源，非null表示行动项级资源） */
    @JsonSerialize(using = ToStringSerializer.class)
    private Long stepId;

    /** 资源类型（枚举：{@link com.aegis.emergency.dispatch.constant.ResourceType}）：equipment-装备，material-物资，vehicle-车辆 */
    private String resourceType;

    /** 资源ID（引用资源/资产主数据） */
    @JsonSerialize(using = ToStringSerializer.class)
    private Long resourceId;

    /** 资源模块 usage 记录ID（如 material_usage.id、equipment_usage.id 等） */
    @JsonSerialize(using = ToStringSerializer.class)
    private Long usageRecordId;

    /** 调拨状态冗余（来自 usage 记录，方便筛选） */
    private String status;

    /** 备注（快照/上下文信息） */
    private String note;

    /** 删除标志（0代表存在 2代表删除） */
    private String delFlag;
}