package com.xunmei.core.resumption.vo.protection;

import cn.hutool.core.bean.BeanUtil;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.xunmei.core.resumption.domain.ProtectionLog;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.data.domain.Page;

import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;

/**
 *
 */
@ApiModel()
@AllArgsConstructor
@NoArgsConstructor
@Data
@Builder
public class ProtectionLogPageVo {
    @JsonSerialize(using = ToStringSerializer.class)
    @ApiModelProperty("id")
    private Long id;
//
//    private Integer order;

    @ApiModelProperty("防区的名称")
    private String name;

//    @ApiModelProperty("所属机构")
//    private String orgName;

    @ApiModelProperty("更新时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date updateTime;

    @ApiModelProperty("防区状态")
    private String status;

    /**
     * 上报人
     */
    private String statusUpdatorName;
//    /**
//     * @param
//     * @return
//     */
//
//    public ProtectionLogPageVo of(final ProtectionLog protection) {
//        return to(protection);
//    }
//
//    /**
//     * @param protection
//     * @return
//     */
//    public static ProtectionLogPageVo to(final ProtectionLog protection) {
//        final ProtectionLogPageVo vo = new ProtectionLogPageVo();
//        BeanUtil.copyProperties(protection,vo);
//        if (protection.getName() != null) {
//            vo.setName(protection.getName());
//        }
//        if (protection.getStatus() != null) {
//            vo.setStatus(protection.getStatus());
//        }
//        if (protection.getUpdateTime() != null) {
//            vo.setUpdateTime(protection.getUpdateTime());
//        } else {
//            vo.setUpdateTime(protection.getCreateTime());
//        }
//        return vo;
//    }
//
//    /**
//     * @param page
//     * @return
//     */
//    public static Page<ProtectionLogPageVo> toPage(final Page<ProtectionLog> page) {
//        return page.map(ProtectionLogPageVo::to);
//    }
//
//    /**
//     * @param list
//     * @return
//     */
//    public static List<ProtectionLogPageVo> toList(final List<ProtectionLog> list) {
//        return list.stream()
//                .map(ProtectionLogPageVo::to)
//                .collect(Collectors.toList());
//    }
}
