package com.centreproject.system.domain.sync.kpi;

import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import lombok.experimental.Accessors;
import org.springframework.format.annotation.DateTimeFormat;

import java.io.Serializable;
import java.util.Date;

/**
 * 数据同步日志实体
 * 对应表：sys_data_sync_log
 * @author zhonglei.xu
 */
@Data
@Accessors(chain = true)
@TableName("sys_data_sync_log")
public class DataSyncLog implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 日志ID（主键）
     */
    @TableId(value = "log_id", type = IdType.AUTO)
    private Long logId;

    /**
     * XXL-Job任务ID
     */
    @TableField("job_id")
    private Long jobId;

    /**
     * 全链路追踪ID
     */
    @TableField("trace_id")
    private String traceId;

    /**
     * 原系统
     */
    @TableField("source_system")
    private String sourceSystem;

    /**
     * 原表名
     */
    @TableField("source_table")
    private String sourceTable;

    /**
     * 目标表名
     */
    @TableField("target_table")
    private String targetTable;

    /**
     * 同步数据量
     */
    @TableField("data_count")
    private Integer dataCount;

    /**
     * 状态（0执行中 1成功 2失败 3重试中）
     */
    @TableField("status")
    private String status;

    /**
     * 错误信息
     */
    @TableField("error_msg")
    private String errorMsg;

    /**
     * 开始时间
     */
    @TableField("start_time")
//    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Riyadh")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date startTime;

    /**
     * 结束时间
     */
    @TableField("end_time")
//    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Riyadh")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date endTime;

    /**
     * 耗时(ms)
     */
    @TableField("duration")
    private Long duration;

    /**
     * 创建者
     */
    @TableField(value = "create_by", fill = FieldFill.INSERT)
    private String createBy;

    /**
     * 创建时间
     */
    @TableField(value = "create_time", fill = FieldFill.INSERT)
//    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Riyadh")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date createTime;


}