package org.xyzh.common.vo;

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

/**
 * @description 数据采集项VO (平铺结构,包含关联的任务和日志信息)
 * @filename DataCollectionItemVO.java
 * @author yslg
 * @copyright xyzh
 * @since 2025-11-08
 */
public class DataCollectionItemVO implements Serializable {

    private static final long serialVersionUID = 1L;

    // ==================== 采集项基本信息 ====================

    /**
     * 采集项ID
     */
    private String id;

    /**
     * 任务ID
     */
    private String taskId;

    /**
     * 日志ID
     */
    private String logId;

    /**
     * 文章标题
     */
    private String title;

    /**
     * 文章内容(HTML)
     */
    private String content;

    /**
     * 文章摘要
     */
    private String summary;

    /**
     * 来源
     */
    private String source;

    /**
     * 来源URL
     */
    private String sourceUrl;

    /**
     * 分类
     */
    private String category;

    /**
     * 作者
     */
    private String author;

    /**
     * 发布时间
     */
    private Date publishTime;

    /**
     * 封面图片URL
     */
    private String coverImage;

    /**
     * 图片列表(JSON)
     */
    private String images;

    /**
     * 标签
     */
    private String tags;

    /**
     * 状态(0:未处理 1:已转换为资源 2:已忽略)
     */
    private Integer status;

    /**
     * 转换后的资源ID
     */
    private String resourceId;

    /**
     * 爬取时间
     */
    private Date crawlTime;

    /**
     * 处理时间
     */
    private Date processTime;

    /**
     * 处理人
     */
    private String processor;

    /**
     * 单条新闻执行状态(0:失败 1:成功)
     */
    private Integer itemExecuteStatus;

    /**
     * 单条新闻执行消息
     */
    private String itemExecuteMessage;

    /**
     * 创建时间
     */
    private Date createTime;

    /**
     * 更新时间
     */
    private Date updateTime;

    // ==================== 关联的任务信息 ====================

    /**
     * 任务名称
     */
    private String taskName;

    /**
     * 任务分组
     */
    private String taskGroup;

    /**
     * Bean名称
     */
    private String beanName;

    /**
     * 方法名称
     */
    private String methodName;

    /**
     * 方法参数
     */
    private String methodParams;

    // ==================== 关联的日志信息 ====================

    /**
     * 执行状态(0:失败 1:成功)
     */
    private Integer executeStatus;

    /**
     * 执行时长(ms)
     */
    private Long executeDuration;

    /**
     * 开始时间
     */
    private Date startTime;

    /**
     * 结束时间
     */
    private Date endTime;

    // ==================== 扩展字段 ====================

    /**
     * 是否可以编辑(未处理和已忽略的可以编辑)
     */
    private Boolean canEdit;

    /**
     * 是否可以转换为资源(未处理的可以转换)
     */
    private Boolean canConvert;

    // ==================== Getter/Setter ====================

    public String getId() {
        return id;
    }

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

    public String getTaskId() {
        return taskId;
    }

    public void setTaskId(String taskId) {
        this.taskId = taskId;
    }

    public String getLogId() {
        return logId;
    }

    public void setLogId(String logId) {
        this.logId = logId;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public String getContent() {
        return content;
    }

    public void setContent(String content) {
        this.content = content;
    }

    public String getSummary() {
        return summary;
    }

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

    public String getSource() {
        return source;
    }

    public void setSource(String source) {
        this.source = source;
    }

    public String getSourceUrl() {
        return sourceUrl;
    }

    public void setSourceUrl(String sourceUrl) {
        this.sourceUrl = sourceUrl;
    }

    public String getCategory() {
        return category;
    }

    public void setCategory(String category) {
        this.category = category;
    }

    public String getAuthor() {
        return author;
    }

    public void setAuthor(String author) {
        this.author = author;
    }

    public Date getPublishTime() {
        return publishTime;
    }

    public void setPublishTime(Date publishTime) {
        this.publishTime = publishTime;
    }

    public String getCoverImage() {
        return coverImage;
    }

    public void setCoverImage(String coverImage) {
        this.coverImage = coverImage;
    }

    public String getImages() {
        return images;
    }

    public void setImages(String images) {
        this.images = images;
    }

    public String getTags() {
        return tags;
    }

    public void setTags(String tags) {
        this.tags = tags;
    }

    public Integer getStatus() {
        return status;
    }

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

    public String getResourceId() {
        return resourceId;
    }

    public void setResourceId(String resourceId) {
        this.resourceId = resourceId;
    }

    public Date getCrawlTime() {
        return crawlTime;
    }

    public void setCrawlTime(Date crawlTime) {
        this.crawlTime = crawlTime;
    }

    public Date getProcessTime() {
        return processTime;
    }

    public void setProcessTime(Date processTime) {
        this.processTime = processTime;
    }

    public String getProcessor() {
        return processor;
    }

    public void setProcessor(String processor) {
        this.processor = processor;
    }

    public Integer getItemExecuteStatus() {
        return itemExecuteStatus;
    }

    public void setItemExecuteStatus(Integer itemExecuteStatus) {
        this.itemExecuteStatus = itemExecuteStatus;
    }

    public String getItemExecuteMessage() {
        return itemExecuteMessage;
    }

    public void setItemExecuteMessage(String itemExecuteMessage) {
        this.itemExecuteMessage = itemExecuteMessage;
    }

    public Date getCreateTime() {
        return createTime;
    }

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

    public Date getUpdateTime() {
        return updateTime;
    }

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

    public String getTaskName() {
        return taskName;
    }

    public void setTaskName(String taskName) {
        this.taskName = taskName;
    }

    public String getTaskGroup() {
        return taskGroup;
    }

    public void setTaskGroup(String taskGroup) {
        this.taskGroup = taskGroup;
    }

    public String getBeanName() {
        return beanName;
    }

    public void setBeanName(String beanName) {
        this.beanName = beanName;
    }

    public String getMethodName() {
        return methodName;
    }

    public void setMethodName(String methodName) {
        this.methodName = methodName;
    }

    public String getMethodParams() {
        return methodParams;
    }

    public void setMethodParams(String methodParams) {
        this.methodParams = methodParams;
    }

    public Integer getExecuteStatus() {
        return executeStatus;
    }

    public void setExecuteStatus(Integer executeStatus) {
        this.executeStatus = executeStatus;
    }

    public Long getExecuteDuration() {
        return executeDuration;
    }

    public void setExecuteDuration(Long executeDuration) {
        this.executeDuration = executeDuration;
    }

    public Date getStartTime() {
        return startTime;
    }

    public void setStartTime(Date startTime) {
        this.startTime = startTime;
    }

    public Date getEndTime() {
        return endTime;
    }

    public void setEndTime(Date endTime) {
        this.endTime = endTime;
    }

    public Boolean getCanEdit() {
        return canEdit;
    }

    public void setCanEdit(Boolean canEdit) {
        this.canEdit = canEdit;
    }

    public Boolean getCanConvert() {
        return canConvert;
    }

    public void setCanConvert(Boolean canConvert) {
        this.canConvert = canConvert;
    }
}

