package com.qmth.teachcloud.common.bean.dto;

import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.FieldStrategy;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.qmth.teachcloud.common.enums.PushTypeEnum;
import com.qmth.teachcloud.common.enums.TaskResultEnum;
import com.qmth.teachcloud.common.enums.TaskStatusEnum;
import io.swagger.annotations.ApiModelProperty;

import java.io.Serializable;

/**
 * @Description: 推送任务临时对象
 * @Author: CaoZixuan
 * @Date: 2022-05-06
 */
public class TBSyncTaskDto implements Serializable {
    private static final long serialVersionUID = 1L;
    @JsonSerialize(using = ToStringSerializer.class)
    @ApiModelProperty(value = "主键")
    @TableId(value = "id")
    private Long id;

    @JsonSerialize(using = ToStringSerializer.class)
    @TableField("create_id")
    @ApiModelProperty(value = "创建人")
    private Long createId;

    @TableField(value = "create_time", fill = FieldFill.INSERT)//新增执行
    @ApiModelProperty(value = "创建时间")
    private Long createTime;

    @JsonSerialize(using = ToStringSerializer.class)
    @TableField("update_id")
    @ApiModelProperty(value = "修改人")
    private Long updateId;

    @TableField(value = "update_Time", fill = FieldFill.INSERT_UPDATE) // 新增和更新执行
    @ApiModelProperty(value = "修改时间")
    private Long updateTime;

    @ApiModelProperty(value = "学校id")
    @JsonSerialize(using = ToStringSerializer.class)
    @TableField("school_id")
    private Long schoolId;

    @ApiModelProperty(value = "机构id")
    @JsonSerialize(using = ToStringSerializer.class)
    @TableField(value = "org_id", updateStrategy = FieldStrategy.IGNORED)
    private Long orgId;

    @ApiModelProperty(value = "推送类型，USER_PUSH：用户推送")
    @TableField(value = "type")
    private PushTypeEnum type;

    @ApiModelProperty(value = "第三方关联id")
    @JsonSerialize(using = ToStringSerializer.class)
    @TableField("third_relate_id")
    private Long thirdRelateId;

    @JsonSerialize(using = ToStringSerializer.class)
    @ApiModelProperty(value = "对象id")
    @TableField(value = "object_id")
    private Long objectId;

    @ApiModelProperty(value = "任务状态，INIT：未开始，RUNNING：进行中，FINISH：已完成")
    @TableField(value = "status")
    private TaskStatusEnum status;

    @ApiModelProperty(value = "实时摘要信息")
    @TableField(value = "summary")
    private String summary;

    @ApiModelProperty(value = "数据结果，SUCCESS：成功，ERROR：失败")
    @TableField(value = "result")
    private TaskResultEnum result;

    @ApiModelProperty(value = "备注")
    @TableField(value = "remark")
    private String remark;

    @ApiModelProperty(value = "重试次数")
    @TableField(value = "reset_count")
    private int resetCount;

    @ApiModelProperty(value = "错误原因")
    @TableField(value = "error_message", updateStrategy = FieldStrategy.IGNORED)
    private String errorMessage;

    @ApiModelProperty(value = "报告路径")
    @TableField(value = "report_file_path")
    private String reportFilePath;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public Long getCreateId() {
        return createId;
    }

    public void setCreateId(Long createId) {
        this.createId = createId;
    }

    public Long getCreateTime() {
        return createTime;
    }

    public void setCreateTime(Long createTime) {
        this.createTime = createTime;
    }

    public Long getUpdateId() {
        return updateId;
    }

    public void setUpdateId(Long updateId) {
        this.updateId = updateId;
    }

    public Long getUpdateTime() {
        return updateTime;
    }

    public void setUpdateTime(Long updateTime) {
        this.updateTime = updateTime;
    }

    public Long getSchoolId() {
        return schoolId;
    }

    public void setSchoolId(Long schoolId) {
        this.schoolId = schoolId;
    }

    public Long getOrgId() {
        return orgId;
    }

    public void setOrgId(Long orgId) {
        this.orgId = orgId;
    }

    public PushTypeEnum getType() {
        return type;
    }

    public void setType(PushTypeEnum type) {
        this.type = type;
    }

    public Long getThirdRelateId() {
        return thirdRelateId;
    }

    public void setThirdRelateId(Long thirdRelateId) {
        this.thirdRelateId = thirdRelateId;
    }

    public Long getObjectId() {
        return objectId;
    }

    public void setObjectId(Long objectId) {
        this.objectId = objectId;
    }

    public TaskStatusEnum getStatus() {
        return status;
    }

    public void setStatus(TaskStatusEnum status) {
        this.status = status;
    }

    public String getSummary() {
        return summary;
    }

    public void setSummary(String summary) {
        this.summary = summary;
    }

    public TaskResultEnum getResult() {
        return result;
    }

    public void setResult(TaskResultEnum result) {
        this.result = result;
    }

    public String getRemark() {
        return remark;
    }

    public void setRemark(String remark) {
        this.remark = remark;
    }

    public int getResetCount() {
        return resetCount;
    }

    public void setResetCount(int resetCount) {
        this.resetCount = resetCount;
    }

    public String getErrorMessage() {
        return errorMessage;
    }

    public void setErrorMessage(String errorMessage) {
        this.errorMessage = errorMessage;
    }

    public String getReportFilePath() {
        return reportFilePath;
    }

    public void setReportFilePath(String reportFilePath) {
        this.reportFilePath = reportFilePath;
    }
}
