package org.dromara.biz.domain;

import com.alibaba.fastjson2.JSONArray;
import com.alibaba.fastjson2.JSONObject;
import lombok.Builder;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.io.Serial;
import java.util.Date;
import java.util.List;

/**
 * 流程数据对象 biz_task
 *
 * @author Blue
 * @date 2025-05-13
 */
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("biz_task")
public class BizTask extends BaseEntity {

    @Serial
    private static final long serialVersionUID = 1L;

    /**
     * ID
     */
    @TableId(value = "id")
    private Long id;

    /**
     * 任务标题
     */
    private String title;

    /**
     * 任务类型 1案件 2警情 3专项 4其他
     */
    private String type;

    /**
     * 关联事件ID 根据任务类型获取对应事件ID（警情编号、案件编号）
     */
    private String relationId;

    /**
     * 任务级别
     */
    private String level;

    /**
     * 任务编号（instance_id,例如act_hi_varinst的proc_inst_id）
     */
    private String taskNo;

    /**
     * 任务内容
     */
    private String content;

    /**
     * 申请用户ID
     */
    private Long applyUserId;

    /**
     * 申请用户名称
     */
    private String applyUserName;

    /**
     * 申请单位ID
     */
    private String applyDeptId;

    /**
     * 申请单位名称
     */
    private String applyDeptName;

    /**
     * 状态(待本部门领导审批10、待分局领导审批20，待中心下发30，待民警办理40,待中心审批50，办结60)
     */
    private String status;

    /**
     * 流程相关状态(审批中3、已完成4)，ACT_HI_PROCINST的business_status
     */
    private String instanceStatus;

    /**
     * 图片json地址json字段，例如：[{"id":"04011394f13c0746.jpeg","size":196213,"isImage":true,"name":"af58febe04011394f13c0746f1dcbc83.jpeg","url":"http://192.168.0.49:9000/box-im/image/20250512/1747017108573.jpeg","thumbUrl":"http://192.168.0.49:9000/box-im/image/20250512/1747017110055.jpeg"}]
     */
    private String image;
    /**
     * 文件json字段，例如：[{"id":"c51994581b1e8507.zip","size":16080,"isImage":false,"name":"代码生成_im_sensitive_word_1746521087649.zip","url":"http://192.168.0.49:9000/box-im/file/20250512/1747017113581.zip"}]
     */
    private String file;

    private Date createTime;

    private Date updateTime;

    private Date finishTime;

    @TableField(exist = false)
    private List<BizTaskWork> bizTaskWorkList;
    @TableField(exist = false)
    private String taskId;


    @TableField(exist = false)
    private List<BizTaskLog> bizTaskLogList;

    @TableField(exist = false)
    private JSONArray jsonImage;

    @TableField(exist = false)
    private JSONArray jsonFile;

    private String redoReason;
    //是否是重做的单子，1：是，0：否
    private Integer redo;

    private Date redoTime;

}
