package com.sptg.estate.api.dto;

import com.baomidou.mybatisplus.annotations.TableField;
import com.baomidou.mybatisplus.plugins.Page;
import com.sptg.estate.api.entity.ThirdUser;
import com.sptg.estate.api.entity.User;
import com.sptg.estate.api.vo.DevicesAccessPushVO;
import lombok.Getter;
import lombok.Setter;
import org.springframework.format.annotation.DateTimeFormat;

import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * title: UserDto
 * package: com.sptg.estate.api.dto
 * description: 住户 业务传输对象
 *
 *
 *
 */

@Getter
@Setter
public class ThirdUserDto extends ThirdUser {

    /**
     * 分页条件
     */
    @TableField(exist = false)
    private Page<User> page;

    /**
     * 排序条件
     */
    @TableField(exist = false)
    private String sortField;

    /**
     * 排序顺序
     */
    @TableField(exist = false)
    private String sortOrder;

    /**
     * 所选树节点Id
     */
    @TableField(exist = false)
    private Long selectTreeId;

    /**
     * 所选树节点类型 1 机构 2 小区 3社区机构  4 单元 5 房间
     */
    @TableField(value = "i_type")
    private Integer selectTreeType;

    /**
     * 批量删除所选id集合
     */
    @TableField(exist = false)
    private List<String> ids;

    /**
     * 房间ids
     */
    @TableField(exist = false)
    private List<Long> roomIds;

    /**
     * 统计时间条件
     */
    @TableField(exist = false)
    private Date statisticsDate;

    /**
     * 首页数据加载状态
     * 1 ：全部
     * 2 ：当月
     */
    @TableField(exist = false)
    private Integer isAllType;

    /**
     * 会员id
     */
    @TableField(exist = false)
    private Long memberId;

    /**
     * 导入对象集合
     */
    @TableField(exist = false)
    private List<User> list;

    /**
     * 导入对象集合中（新增）
     */
    @TableField(exist = false)
    private List<User> addList;

    /**
     * 对应小区导入的对应住户数量
     */
    @TableField(exist = false)
    private Map<Long,Integer> residentialMap;

    /**
     * 对应单元导入的对应住户数量
     */
    @TableField(exist = false)
    private Map<Long,Integer> unitMap;

    /**
     * 对应房间导入的对应住户数量
     */
    @TableField(exist = false)
    private Map<Long,Integer> roomMap;

    /**
     * 查询条件 --根据用户查询公告接口用到
     */
    @TableField(exist = false)
    private String pushTarget;

    /**
     * 是否设置人脸 --实施接口用到
     * 0 未设置
     * 1 已设置
     */
    @TableField(exist = false)
    private Integer isSetFace;

    @TableField(exist = false)
    private Integer cardEnable;

    @TableField(exist = false)
    private DevicesAccessPushVO devicesAccessPushVO;

    /**
     * 在下发用户人脸的时候用到
     * 下发设备授权类型
     * 10：通用设备
     * 11：特殊设备
     */
    @TableField(exist = false)
    private Integer deviceAccessType;

    /**
     * 查询条件：开始时间
     */
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    @TableField(exist = false)
    private Date beginDate;

    /**
     * 查询条件：截止时间
     */
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    @TableField(exist = false)
    private Date endDate;
    /**
     * 查询条件：卡号开始时间
     */
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    @TableField(exist = false)
    private Date cardBeginDate;

    /**
     * 查询条件：卡号截止时间
     */
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    @TableField(exist = false)
    private Date cardEndDate;

    /**
     * 导入住户时导致错误的错误信息
     */
    @TableField(exist = false)
    private String importErrorMsg;

    /**
     * 小区编号
     */
    @TableField(exist = false)
    private String residentialNumber;

    /**
     * 单元编号
     */
    @TableField(exist = false)
    private String unitNumber;

    /**
     * 房间编号
     */
    @TableField(exist = false)
    private String houseNumber;
}
