package com.usky.system.domain;

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.usky.common.core.bean.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.extern.slf4j.Slf4j;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.util.List;

/**
 *
 * @author fyc
 * @email yuchuan.fu@chinausky.com
 * @date 2025/3/13
 */
@EqualsAndHashCode(callSuper = true)
@Slf4j
@Data
public class MceRequestVO extends BaseEntity {

    /** 字典标签  */
    private String infoTypeName;

    /** 消息类型  */
    @NotBlank(message = "消息类型 infoType 不能为空！")
    private String infoType;

    /** 消息标题  */
    @NotBlank(message = "消息标题 infoTitle 不能为空！")
    private String infoTitle;

    /** 消息内容  */
    @NotBlank(message = "消息内容 infoContent 不能为空！")
    private String infoContent;

    /** 用户名称
     * 登录账号 loginAccount
     * */
    @NotBlank(message = "消息发布人 userName 不能为空！")
    private String userName;

    /** 消息详情id  */
    @NotNull(message = "消息详情 id 不能为空！")
    private Integer id;

    /** 消息接收人userId集合  */
    @NotNull(message = "消息接收人 userIds 不能为空！")
    private List<Long> userIds;

    /**
     * ip地址
     */
    private String ipAddress;

    /**
     * 登录地址
     */
    private String loginAddress;

    /**
     * 登录方式
     */
    private String loginType;

    /**
     * 审批结果
     */
    private String approvalResult;

    /**
     * 流程名称
     */
    private String processName;

    /**
     * 审批节点
     */
    private String approvalNode;

    /**
     * 真实姓名
     */
    private String realName;

    /**
     * oa跳转类型 (todo我的待办、me我发起的、copy抄送我的)
     */
    private String oaType;

    /**
     * 设备id
     */
    private String deviceId;

    /**
     * 报警时间
     */
    private String alarmTime;

    /**
     * 备注
     */
    private String remark;

    /**
     * 报警发送方式(站内消息通知是默认的，1：APP，2：微信)
     */
    private String alarmSendType;

    /**
     * 租户Id
     */
    private Integer tenantId;

    @Override
    public String toString() {
        ObjectMapper objectMapper = new ObjectMapper();
        try {
            return objectMapper.writeValueAsString(this);
        } catch (JsonProcessingException e) {
            log.error("MceRequestVO toString error: {}", e.getMessage());
            return "{}";
        }
    }
}
