package com.casic.missiles.model.customer;

import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
import com.alibaba.excel.annotation.write.style.ContentRowHeight;
import com.alibaba.excel.annotation.write.style.ContentStyle;
import com.alibaba.excel.annotation.write.style.HeadRowHeight;
import com.alibaba.excel.enums.poi.BorderStyleEnum;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.casic.missiles.annotation.DictCodeField;
import com.casic.missiles.constants.MeterDictCode;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.io.Serializable;

@Data
@TableName("customer_advice_info")
@ColumnWidth(30)
@HeadRowHeight(15)
@ContentRowHeight(20)
@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN)
@ExcelIgnoreUnannotated
public class CustomerAdviceInfo implements Serializable {

    private static final long serialVersionUID = 1L;

    private Long id;

    @ApiModelProperty(value = "编号", dataType = "String")
    @ExcelProperty(value = "反馈编号", order = 0)
    private String adviceNo;

    @ApiModelProperty(value = "投诉类型-字典", dataType = "String")
    @DictCodeField(message = "投诉类型描述不合法", cacheName = MeterDictCode.ADVICE_CLASS)
    private String adviceClass;

    @TableField(exist = false)
    @ApiModelProperty(value = "投诉类型名称", dataType = "String")
    private String adviceClassName;

    @ApiModelProperty(value = "投诉类别", dataType = "String")
    @DictCodeField(message = "投诉类型描述不合法", cacheName = MeterDictCode.ADVICE_TYPE)
    private String adviceType;

    @TableField(exist = false)
    @ApiModelProperty(value = "投诉类型名称", dataType = "String")
    @ExcelProperty(value = "投诉类别", order = 1)
    private String adviceTypeName;

    @ApiModelProperty(value = "投诉人", dataType = "String")
    @ExcelProperty(value = "投诉人", order = 2)
    private String advicePerson;

    @ApiModelProperty(value = "投诉人联系方式", dataType = "String")
    @ExcelProperty(value = "投诉人联系方式", order = 3)
    private String personPhone;

    @ApiModelProperty(value = "客户编号", dataType = "String")
    @ExcelProperty(value = "客户编号", order = 4)
    private String customerNo;

    @ApiModelProperty(value = "公司名称", dataType = "String")
    @ExcelProperty(value = "公司名称", order = 5)
    private String customerName;

    @ApiModelProperty(value = "客户id", dataType = "String")
    private Long customerId;

    @ApiModelProperty(value = "投诉图片", dataType = "String")
    private String adviceImages;

    @ApiModelProperty(value = "投诉内容", dataType = "String")
    @ExcelProperty(value = "投诉内容", order = 6)
    private String content;

    @ApiModelProperty(value = "处置状态-0未处置，1已处置", dataType = "String")
    private String handleStatus;

    @ApiModelProperty(value = "处置意见", dataType = "String")
    @ExcelProperty(value = "处置意见", order = 7)
    private String handleMessage;

    @ApiModelProperty(value = "创建用户id", dataType = "Long")
    private Long createUser;

    @ApiModelProperty(value = "编辑用户id", dataType = "Long")
    private Long updateUser;

    @ApiModelProperty(value = "删除标记", dataType = "Integer")
    private Integer isDel;

    @ApiModelProperty(value = "投诉时间", dataType = "String")
    @ExcelProperty(value = "投诉时间", order = 8)
    private String adviceTime;

    @ApiModelProperty(value = "创建时间", dataType = "String")
    @ExcelProperty(value = "创建时间", order = 9)
    private String createTime;

    @ApiModelProperty(value = "最后更新时间", dataType = "String")
    @ExcelProperty(value = "最后更新时间", order = 10)
    private String updateTime;

    @TableField(exist = false)
    @ApiModelProperty(value = "业务规模", dataType = "String")
    @DictCodeField(message = "整体评价描述不合法", cacheName = MeterDictCode.BUSINESS_SCALE)
    private String businessSize;

    @TableField(exist = false)
    @ApiModelProperty(value = "业务规模名称", dataType = "String")
    private String businessSizeName;

    @TableField(exist = false)
    @ApiModelProperty(value = "公司规模", dataType = "String")
    @DictCodeField(message = "整体评价描述不合法", cacheName = MeterDictCode.COMPANY_SCALE)
    private String companySize;


    @TableField(exist = false)
    @ApiModelProperty(value = "公司规模名称", dataType = "String")
    private String companySizeName;

    @TableField(exist = false)
    @ApiModelProperty(value = "履约等级", dataType = "String")
    @DictCodeField(message = "整体评价描述不合法", cacheName = MeterDictCode.GRADE)
    private String grade;

    @TableField(exist = false)
    @ApiModelProperty(value = "履约等级名称", dataType = "String")
    private String gradeName;

    @TableField(exist = false)
    @ApiModelProperty(value = "整体评价", dataType = "String")
    @DictCodeField(message = "整体评价描述不合法", cacheName = MeterDictCode.EVALUATION)
    private String evaluation;

    @TableField(exist = false)
    @ApiModelProperty(value = "整体评价名称", dataType = "String")
    @ExcelProperty(value = "整体评价名称", order = 11)
    private String evaluationName;

}
