package org.springblade.dataextraction.enity;

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

import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.web.multipart.MultipartFile;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.NullSerializer;

import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.Getter;

/**
 * @Desc 订购数据提取任务表
 * @Author William
 * @DateTime 2022 下午3:41:35
 */
@Data
@TableName(value = "FIN_ORDER_FETCH_TASK")
public class FinOrderFetchTask implements Serializable {
	private static final long serialVersionUID = 1L;

	@ApiModelProperty(value = "任务ID", required = false)
	@TableId(value = "TASKID")
	private Integer taskId; // 任务ID

	@ApiModelProperty(value = "用户圈定方式（1-输入单个手机号码；2-导入批量手机号码；3-条件筛选）", required = true)
	@TableField(value = "UTYPE")
	private Integer utype; // 用户圈定方式.。1：输入单个手机号码；2：导入批量手机号码；3：条件筛选；

	@ApiModelProperty(value = "圈定_用户类型。1：订购；2：退订；3：有效", required = false)
	@TableField(value = "C_USERTYPE")
	private Integer cUsertype; // 圈定_用户类型。1：订购；2：退订；3：有效

	@ApiModelProperty(value = "圈定筛选条件-有效月份。yyyymm格式", required = false)
	@TableField(value = "C_VMONTH")
	private Integer cVmonth; // 圈定筛选条件-有效月份。yyyymm格式

	@ApiModelProperty(value = "创建人", required = false)
	@TableField(value = "CREATOR")
	private String creator; // 任务创建人

	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	@ApiModelProperty(value = "创建时间", required = false)
	@TableField(value = "CREATETIME")
	private Date createTime; // 创建时间

	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	@ApiModelProperty(value = "更新时间", required = false)
	@TableField(value = "UPDATETIME")
	private Date updateTime; // 更新时间

	@ApiModelProperty(value = "任务状态（0：待圈定用户；1：正在圈定用户；2：圈定用户完成；3：圈定用户失败；4：开始提取数据；5：提取数据完成；6：提取数据失败；7：开始生成导出文件；8：生成导出文件失败；9：生成导出文件完成。）", required = false)
	@TableField(value = "TASKSTATUS1")
	private Integer taskStatus1; // 任务状态。0：待圈定用户；1：正在圈定用户；2：圈定用户完成；3：圈定用户失败；4：开始提取数据；5：提取数据完成；6：提取数据失败；7：开始生成导出文件；8：生成导出文件失败；9：生成导出文件完成。

	@ApiModelProperty(value = "订购用户提取状态（0：未提取；1：正在提取；2：提取完成；3：提取失败；）", required = false)
	@TableField(value = "TASKSTATUS2")
	private Integer taskStatus2; // 订购用户提取状态。0：未提取；1：正在提取；2：提取完成；3：提取失败；

	@ApiModelProperty(value = "会员领取提取状态。0：未提取；1：正在提取；2：提取完成；3：提取失败；", required = false)
	@TableField(value = "TASKSTATUS3")
	private Integer taskStatus3; // 会员领取提取状态。0：未提取；1：正在提取；2：提取完成；3：提取失败；

	@ApiModelProperty(value = "流量消耗提取状态。0：未提取；1：正在提取；2：提取完成；3：提取失败；", required = false)
	@TableField(value = "TASKSTATUS4")
	private Integer taskStatus4; // 流量消耗提取状态。0：未提取；1：正在提取；2：提取完成；3：提取失败；

	@ApiModelProperty(value = "投诉数据提取状态。0：未提取；1：正在提取；2：提取完成；3：提取失败；", required = false)
	@TableField(value = "TASKSTATUS5")
	private Integer taskStatus5; // 投诉数据提取状态。0：未提取；1：正在提取；2：提取完成；3：提取失败；

	@ApiModelProperty(value = "手机号码：utype=1时为必填项，其他不用传值", required = false)
	@TableField(value = "USERID")
	private String userId; // 手机号码。utype=1情形使用

	@JsonSerialize(nullsUsing = NullSerializer.class)
	@ApiModelProperty(value = "圈定筛选条件-订购起始日期，6位数字，条件筛选时必传", required = false)
	@TableField(value = "C_ORDERDAY_S")
	private Integer orderDayStart; // 圈定筛选条件-订购起始日期

	@JsonSerialize(nullsUsing = NullSerializer.class)
	@ApiModelProperty(value = "圈定筛选条件-订购截止日期，6位数字，条件筛选时必传", required = false)
	@TableField(value = "C_ORDERDAY_E")
	private Integer orderDayEnd; // 圈定筛选条件-订购截止日期

	@JsonSerialize(nullsUsing = NullSerializer.class)
	@ApiModelProperty(value = "圈定筛选条件-退订起始日期，6位数字，条件筛选时必传", required = false)
	@TableField(value = "C_CANCELDAY_S")
	private Integer cancelDayStart; // 圈定筛选条件-退订起始日期

	@JsonSerialize(nullsUsing = NullSerializer.class)
	@ApiModelProperty(value = "圈定筛选条件-退订截止日期，6位数字，条件筛选时必传", required = false)
	@TableField(value = "C_CANCELDAY_E")
	private Integer cancelDayEnd; // 圈定筛选条件-退订截止日期

	@JsonSerialize(nullsUsing = NullSerializer.class)
	@ApiModelProperty(value = "提取筛选条件-起始月份，6位数字", required = true)
	@TableField(value = "F_MONTH_S")
	private Integer monthStart; // 提取筛选条件-起始月份

	@JsonSerialize(nullsUsing = NullSerializer.class)
	@ApiModelProperty(value = "提取筛选条件-截止月份，6位数字", required = true)
	@TableField(value = "F_MONTH_E")
	private Integer monthEnd; // 提取筛选条件-截止月份

	@ApiModelProperty(value = "圈定筛选条件-产品大类ID，多个ID以逗号分隔", required = false)
	@TableField(value = "C_CPTYPE")
	private String cpType; // 圈定筛选条件-产品大类ID。多个ID以逗号分隔

	@ApiModelProperty(value = "圈定筛选条件-唯一产品类别ID，逗号分割，最大限10个ID", required = false)
	@TableField(value = "C_FULL_CPTYPE")
	private String fullCptype; // 圈定筛选条件-唯一产品类别ID。逗号分割，最大限10个ID

	@ApiModelProperty(value = "圈定筛选条件-产品ID，逗号分割，最大限10个ID", required = false)
	@TableField(value = "C_SPID")
	private String spid; // 圈定筛选条件-产品ID。逗号分割，最大限10个ID

	@ApiModelProperty(value = "圈定筛选条件-省份，逗号分割，最大限10个省份", required = false)
	@TableField(value = "C_PROVINCE")
	private String province; // 圈定筛选条件-省份。逗号分割，最大限10个省份

	@ApiModelProperty(value = "圈定筛选条件-地市，逗号分割，最大限10个地市", required = false)
	@TableField(value = "C_AREA")
	private String area; // 圈定筛选条件-地市。逗号分割，最大限10个地市

	@ApiModelProperty(value = "圈定筛选条件-订购渠道类别", required = false)
	@TableField(value = "C_BELONGTO")
	private String belongto; // 圈定筛选条件-订购渠道类别

	@ApiModelProperty(value = "圈定筛选条件-退订渠道类别", required = false)
	@TableField(value = "C_BELONGTO_CANCEL")
	private String belongtoCancel; // 圈定筛选条件-退订渠道类别

	@ApiModelProperty(value = "圈定筛选条件-订购渠道ID", required = false)
	@TableField(value = "C_ORDERCHANNEL")
	private String orderChannel; // 圈定筛选条件-订购渠道ID

	@ApiModelProperty(value = "圈定筛选条件-退订渠道ID", required = false)
	@TableField(value = "C_CANCELCHANNEL")
	private String cancelChannel; // 圈定筛选条件-退订渠道ID

	@ApiModelProperty(value = "提取订购数据类型。1：订购记录（月份范围）；2：退订记录（月份范围）；3：有效用户（某个月）", required = false)
	@TableField(value = "FETCHTYPE")
	private Integer fetchType; // 提取订购数据类型。1：订购记录（月份范围）；2：退订记录（月份范围）；3：有效用户（某个月）。

	@ApiModelProperty(value = "提取筛选条件-产品ID。逗号分割，最大限10个ID", required = false)
	@TableField(value = "F_SPID2")
	private String spid2; // 提取筛选条件-产品ID。逗号分割，最大限10个ID

	@ApiModelProperty(value = "提取结果-需要提取会员领取。0：不需要；1：需要；", required = false)
	@TableField(value = "FETCHFLAG1")
	private Integer fetchflag1; // 提取结果-需要提取会员领取。0：不需要；1：需要；

	@ApiModelProperty(value = "提取结果-需要提取流量消耗。0：不需要；1：需要；", required = false)
	@TableField(value = "FETCHFLAG2")
	private Integer fetchflag2; // 提取结果-需要提取流量消耗。0：不需要；1：需要；

	@ApiModelProperty(value = "提取结果-需要提取投诉量。0：不需要；1：需要", required = false)
	@TableField(value = "FETCHFLAG3")
	private Integer fetchflag3; // 提取结果-需要提取投诉量。0：不需要；1：需要

	@Getter(onMethod = @__(@JsonIgnore))
	@ApiModelProperty(value = "提取数据导出文件", required = false)
	@TableField(value = "EXP_FILE")
	private Object expFile; // 提取数据导出文件

	@ApiModelProperty(value = "任务备注说明", required = false)
	@TableField(value = "MCOMMENT")
	private String mcomment; // 备注说明

	@ApiModelProperty(value = "订购类型（1：订购；2：退订；3：有效）", required = false)
	@TableField(exist = false)
	private Integer orderType;// 1：订购；2：退订；3：有效

	@ApiModelProperty(value = "手机号文件，utype=2时必填", required = false)
	@TableField(exist = false)
	private MultipartFile file;

	@ApiModelProperty(value = "是否勾选自订购以来（0：否；1：是；）", required = false)
	@TableField(value = "F_UNLIMITED")
	private Integer unlimited;
	
	@ApiModelProperty(value = "当前任务数据的总行数（后端返回）", required = false)
	@TableField(value = "FETCHED_NUMS")
	private Integer fetchedNums;
	
	@ApiModelProperty(value = "扩展数据", required = false)
	@TableField(value = "CONDITION_JSON")
	private String conditionJson;

	@ApiModelProperty(value = "是否是cb侧(0：否；1：是)", required = false)
	@TableField(value = "OUTPUT_ISCB")
	private Integer outPutIsCB;
	
	@ApiModelProperty(value = "是否导出（1-输出；0-不输出，默认为1）", required = false)
	private Integer outputProvince;
	
	@ApiModelProperty(value = "是否导出（1-输出；0-不输出，默认为1）", required = false)
	private Integer outputArea;

	@ApiModelProperty(value = "是否导出（1-输出；0-不输出，默认为1）", required = false)
	private Integer outputSpid;

	@ApiModelProperty(value = "是否导出（1-输出；0-不输出，默认为1）", required = false)
	private Integer outputPrmid;

	@ApiModelProperty(value = "是否导出（1-输出；0-不输出，默认为1）", required = false)
	private Integer outputSpname;

	@ApiModelProperty(value = "是否导出（1-输出；0-不输出，默认为1）", required = false)
	private Integer outputOrdertime;

	@ApiModelProperty(value = "是否导出（1-输出；0-不输出，默认为1）", required = false)
	private Integer outputOrderchannelid;

	@ApiModelProperty(value = "是否导出（1-输出；0-不输出，默认为1）", required = false)
	private Integer outputOrderchannelname;

	@ApiModelProperty(value = "是否导出（1-输出；0-不输出，默认为1）", required = false)
	private Integer outputOrderbelongto;

	@ApiModelProperty(value = "是否导出（1-输出；0-不输出，默认为1）", required = false)
	private Integer outputCanceltime;

	@ApiModelProperty(value = "是否导出（1-输出；0-不输出，默认为1）", required = false)
	private Integer outputCancelchannelid;

	@ApiModelProperty(value = "是否导出（1-输出；0-不输出，默认为1）", required = false)
	private Integer outputCancelchannelname;

	@ApiModelProperty(value = "是否导出（1-输出；0-不输出，默认为1）", required = false)
	private Integer outputCancelbelongto;

	
}
