package com.sundot.airport.system.domain;

import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

/**
 * 考核指标分类树及关联指标对象
 *
 * @author ruoyi
 * @date 2026-04-28
 */
@Data
public class BasePerformanceIndicatorCategoryTreeDTO {

    /**
     * 主键
     */
    private Long id;
    /**
     * 编码
     */
    private String code;
    /**
     * 名称
     */
    private String name;
    /**
     * 父分类ID
     */
    private Long parentId;
    /**
     * 祖级列表
     */
    private String ancestors;
    /**
     * 排序
     */
    private Integer orderNum;
    /**
     * 层级
     */
    private Integer level;
    /**
     * 创建者
     */
    private String createBy;
    /**
     * 创建时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date createTime;
    /**
     * 更新者
     */
    private String updateBy;
    /**
     * 更新时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date updateTime;
    /**
     * 备注
     */
    private String remark;
    /**
     * 子分类列表
     */
    private List<BasePerformanceIndicatorCategoryTreeDTO> children = new ArrayList<>();
    /**
     * 当前分类下的指标列表
     */
    private List<BasePerformanceIndicator> indicatorList = new ArrayList<>();

    /**
     * 转换为DTO
     *
     * @param entity
     * @return
     */
    public static BasePerformanceIndicatorCategoryTreeDTO fromEntity(BasePerformanceIndicatorCategory entity) {
        if (entity == null) {
            return null;
        }
        BasePerformanceIndicatorCategoryTreeDTO dto = new BasePerformanceIndicatorCategoryTreeDTO();
        dto.setId(entity.getId());
        dto.setCode(entity.getCode());
        dto.setName(entity.getName());
        dto.setParentId(entity.getParentId());
        dto.setAncestors(entity.getAncestors());
        dto.setOrderNum(entity.getOrderNum());
        dto.setLevel(entity.getLevel());
        dto.setCreateBy(entity.getCreateBy());
        dto.setCreateTime(entity.getCreateTime());
        dto.setUpdateBy(entity.getUpdateBy());
        dto.setUpdateTime(entity.getUpdateTime());
        dto.setRemark(entity.getRemark());
        return dto;
    }

}
