package com.aegis.resource.equipment.dto;

import java.util.Date;
import java.util.List;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Size;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;

/**
 * 装备数据传输对象（DTO）
 * 用于 API 层的数据传输，处理 JSON 序列化/反序列化
 * 
 * @author aegis
 */
@Getter
@Setter
@ToString
public class EquipmentDTO {

    private Long id;

    /** 装备编码 */
    @NotBlank(message = "装备编码不能为空")
    @Size(min = 0, max = 50, message = "装备编码长度不能超过50个字符")
    private String equipmentCode;

    /** 装备名称 */
    @NotBlank(message = "装备名称不能为空")
    @Size(min = 0, max = 200, message = "装备名称长度不能超过200个字符")
    private String equipmentName;

    /** 装备类型 */
    @Size(min = 0, max = 64, message = "装备类型长度不能超过64个字符")
    private String equipmentType;

    /** 品牌 */
    @Size(min = 0, max = 100, message = "品牌长度不能超过100个字符")
    private String brand;

    /** 型号 */
    @Size(min = 0, max = 100, message = "型号长度不能超过100个字符")
    private String model;

    /** 所属队伍ID */
    private Long teamId;

    /** 所属仓库ID */
    private Long warehouseId;

    /** 状态：available-可用，busy-占用，repair-维修，scrap-报废 */
    private String status;

    /** 能力标签（List格式，用于JSON序列化） */
    @JsonProperty("capabilities")
    private List<String> capabilities;

    /** 采购日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date purchaseDate;

    /** 保修到期日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date warrantyDate;

    /** 备注 */
    @Size(min = 0, max = 500, message = "备注长度不能超过500个字符")
    private String remark;
}

