package com.ruoyi.project.business.domain.vo.project;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.framework.aspectj.lang.annotation.Excel;
import java.math.BigDecimal;
import java.util.Date;
import lombok.Data;
import org.apache.poi.ss.usermodel.HorizontalAlignment;
import org.springframework.data.annotation.Transient;

@Data
public class ProjectExportVO {

    /**
     * 项目编号(自动采番）
     */
    @Excel(name = "项目编号", i18nCode = "project.no", headNeedMerge = false, sort = 10)
    private String projectNo;

    /**
     * 区域
     */
    @Transient
    @Excel(name = "区域", i18nCode = "lead.area", headNeedMerge = false, sort = 20)
    private String areaName;

    /**
     * 代理商名称
     */
    @Transient
    @Excel(name = "所属代理商", i18nCode = "business.ownerAgent", headNeedMerge = false, sort = 30)
    private String ownerAgentName;

    @Transient
    @Excel(name = "关联客户", i18nCode = "project.relatedCustomer", headNeedMerge = false, sort = 40)
    private String accountName;

    /**
     * 项目名称
     */
    @Excel(name = "项目名称", i18nCode = "project.name", headNeedMerge = false, sort = 50)
    private String projectName;

    /**
     * 国家
     */
    @Excel(name = "国家", i18nCode = "project.countryName", headNeedMerge = false, sort = 60)
    private String countryName;

    /**
     * 城市
     */
    @Excel(name = "城市", i18nCode = "project.city", headNeedMerge = false, sort = 70)
    private String city;

    /**
     * 设备规格信息 子列表：ruoyi 默认的值列表只支持一个，且是必须是最后一个。TODO 尝试优化 因为 TcProjectEquipment中也有remark，会导致列合并失败=
     */
    @Excel(name = "规格", i18nCode = "project.stand", sort = 71)
    private String standard;

    @Excel(name = "梯形", i18nCode = "quotation.elevatorMode", sort = 72)
    private String elevatorModel;

    /**
     * 设备类型
     */
    @Excel(name = "设备类型", i18nCode = "project.equipmentType", dictType = "intentional_product", sort = 73)
    private String equipmentType;

    /**
     * 设备数量
     */
    @Excel(name = "设备数量", i18nCode = "project.equipmentQuantity", sort = 74)
    private Long equipmentQuantity;

    /**
     * 币种
     */
    @Excel(name = "币种", i18nCode = "project.currency", headNeedMerge = true, sort = 75, dictType = "currency_type")
    private String currencyId;

    /**
     * 金额
     */
    @Excel(name = "单价", i18nCode = "project.unit.price", align = HorizontalAlignment.RIGHT, sort = 76)
    private String amountStr;

    /**
     * 金额
     */
    @Excel(name = "总价", i18nCode = "project.priceTotal", align = HorizontalAlignment.RIGHT, sort = 77)
    private String unitPriceTotalStr;

    /**
     * 计划成交月份 新增
     */
    @Excel(name = "客户决定日期", i18nCode = "project.planDealMonth", headNeedMerge = false, dateFormat = "yyyy-MM-dd", sort = 90)
    private Date planDealMonth;

    @Excel(name = "项目状态", i18nCode = "project.status", headNeedMerge = false, sort = 110)
    private String progressName;

    @Excel(name = "项目进度", i18nCode = "project.progress", headNeedMerge = false, sort = 100)
    private String progress;

    @Excel(name = "预期安装开始日期", i18nCode = "project.expectedInstallStartDate", dateFormat = "yyyy-MM-dd", sort = 105)
    private Date expectedInstallStartDate;


    @Excel(name = "审批状态", i18nCode = "project.audit.status", headNeedMerge = false, sort = 120)
    private String statusName;

    /**
     * 负责人名称
     */
    @Transient
    @Excel(name = "负责人", i18nCode = "business.owner", headNeedMerge = false, sort = 130)
    private String ownerName;

    @Transient
    @Excel(name = "设备总数", i18nCode = "project.deviceTotal", headNeedMerge = false, sort = 140)
    private Integer deviceTotal;

    @Transient
    private BigDecimal priceTotal;

    @Transient
    @Excel(name = "总价", i18nCode = "project.priceTotal", headNeedMerge = false, sort = 150, align = HorizontalAlignment.RIGHT)
    private String priceTotalStr;

    @Transient
    @Excel(name = "项目类型", i18nCode = "project.type", headNeedMerge = false, sort = 160)
    private String typeName;

    @Transient
    @Excel(name = "标杆项目", i18nCode = "project.flag", headNeedMerge = false, sort = 170)
    private String modelFlagName;

    @Excel(name = "产品系列", i18nCode = "project.productSeries", headNeedMerge = false, sort = 180)
    private String segmentedMarketName;

    /**
     * 项目交期 新增
     */
    // @Excel(name = "项目交期", i18nCode = "project.completionYear", headNeedMerge = false, dateFormat = "yyyy-MM-dd", sort = 130)
    private Date completionYear;


    /**
     * 最新跟进结果
     */
    @Transient
    @Excel(name = "最新跟进结果", i18nCode = "account.followDesc", headNeedMerge = false, sort = 190)
    private String followDesc;

    /**
     * 最新跟进时间
     */
    @Transient
    @Excel(name = "最新跟进时间", i18nCode = "account.followTime", headNeedMerge = false, dateFormat = "yyyy-MM-dd", sort = 200)
    private Date followTime;

    /**
     * 跟进人
     */
    @Transient
    @Excel(name = "跟进人", i18nCode = "account.followPerson", headNeedMerge = false, sort = 210)
    private String followPerson;

    @Transient
    @Excel(name = "关联线索", i18nCode = "project.leads", headNeedMerge = false, sort = 220)
    private String leads;

    /**
     * 项目地址
     */
    @Excel(name = "项目地址", i18nCode = "project.address", headNeedMerge = false, sort = 230)
    private String address;

    /**
     * 关键决策人
     */
    @Excel(name = "关键决策人", i18nCode = "project.keyContactPerson", headNeedMerge = false, sort = 240)
    private String keyContactPerson;

    /**
     * 关键决策人职位
     */
    @Excel(name = "关键决策人职位", i18nCode = "project.keyJobTitle", headNeedMerge = false, sort = 250)
    private String keyJobTitle;

    /**
     * 关键决策人电话
     */
    @Excel(name = "关键决策人电话", i18nCode = "project.keyContact", headNeedMerge = false, sort = 260)
    private String keyContact;

    /**
     * 关键决策人邮箱
     */
    @Excel(name = "关键决策人邮箱", i18nCode = "project.keyEmail", headNeedMerge = false, sort = 270)
    private String keyEmail;

    /**
     * 联系人
     */
    @Excel(name = "联系人", i18nCode = "project.contactPerson", headNeedMerge = false, sort = 280)
    private String contactPerson;

    /**
     * 职位
     */
    @Excel(name = "职位", i18nCode = "project.jobTitle", headNeedMerge = false, sort = 290)
    private String jobTitle;

    /**
     * 联系方式
     */
    @Excel(name = "联系方式", i18nCode = "project.contact", headNeedMerge = false, sort = 300)
    private String contact;

    /**
     * 邮箱
     */
    @Excel(name = "邮箱", i18nCode = "project.email", headNeedMerge = false, sort = 310)
    private String email;

    /**
     * 解决方案 新增
     */
    @Excel(name = "解决方案", i18nCode = "project.solution", headNeedMerge = false, sort = 320)
    private String solution;

    /**
     * 特殊需求
     */
    @Excel(name = "特殊需求", i18nCode = "project.specialRemark", headNeedMerge = false, sort = 330)
    private String specialRemark;

    /**
     * 原因分类
     */
    @Excel(name = "原因分类", i18nCode = "project.reasonType", headNeedMerge = false, sort = 330)
    private String reasonTypeName;

    /**
     * 竞争对手
     */
    @Excel(name = "竞争对手", i18nCode = "project.competitor", headNeedMerge = false, sort = 330)
    private String competitor;
    /**
     * 丢单备注
     */
    @Excel(name = "丢单备注", i18nCode = "project.loseRemark", headNeedMerge = false, sort = 330)
    private String delayLoseRemark;

    @Excel(name = "备注", i18nCode = "common.remark", headNeedMerge = false, sort = 340)
    private String remark;
}
