package com.ruoyi.info.collection.domain.excel;

import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
import com.ruoyi.common.annotation.Required;
import com.ruoyi.common.annotation.TextFormat;
import lombok.Data;

import java.io.Serial;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;

/**
 * 招投标主信息Excel导入导出对象
 *
 * @author ruoyi
 * @date 2026-02-06
 */
@Data
public class CcdiPurchaseTransactionExcel implements Serializable {

    @Serial
    private static final long serialVersionUID = 1L;

    /** 采购事项ID */
    @ExcelProperty(value = "采购事项ID", index = 0)
    @ColumnWidth(20)
    @Required
    @TextFormat
    private String purchaseId;

    /** 采购类别 */
    @ExcelProperty(value = "采购类别", index = 1)
    @ColumnWidth(15)
    @Required
    private String purchaseCategory;

    /** 项目名称 */
    @ExcelProperty(value = "项目名称", index = 2)
    @ColumnWidth(25)
    private String projectName;

    /** 标的物名称 */
    @ExcelProperty(value = "标的物名称", index = 3)
    @ColumnWidth(25)
    @Required
    private String subjectName;

    /** 标的物描述 */
    @ExcelProperty(value = "标的物描述", index = 4)
    @ColumnWidth(30)
    private String subjectDesc;

    /** 采购数量 */
    @ExcelProperty(value = "采购数量", index = 5)
    @ColumnWidth(15)
    @Required
    private BigDecimal purchaseQty;

    /** 预算金额 */
    @ExcelProperty(value = "预算金额", index = 6)
    @ColumnWidth(18)
    @Required
    private BigDecimal budgetAmount;

    /** 中标金额 */
    @ExcelProperty(value = "中标金额", index = 7)
    @ColumnWidth(18)
    private BigDecimal bidAmount;

    /** 实际采购金额 */
    @ExcelProperty(value = "实际采购金额", index = 8)
    @ColumnWidth(18)
    private BigDecimal actualAmount;

    /** 合同金额 */
    @ExcelProperty(value = "合同金额", index = 9)
    @ColumnWidth(18)
    private BigDecimal contractAmount;

    /** 结算金额 */
    @ExcelProperty(value = "结算金额", index = 10)
    @ColumnWidth(18)
    private BigDecimal settlementAmount;

    /** 采购方式 */
    @ExcelProperty(value = "采购方式", index = 11)
    @ColumnWidth(15)
    @Required
    private String purchaseMethod;

    /** 采购申请日期（或立项日期） */
    @ExcelProperty(value = "采购申请日期", index = 12)
    @ColumnWidth(18)
    @Required
    private Date applyDate;

    /** 采购计划批准日期 */
    @ExcelProperty(value = "采购计划批准日期", index = 13)
    @ColumnWidth(18)
    private Date planApproveDate;

    /** 采购公告发布日期 */
    @ExcelProperty(value = "采购公告发布日期", index = 14)
    @ColumnWidth(18)
    private Date announceDate;

    /** 开标日期 */
    @ExcelProperty(value = "开标日期", index = 15)
    @ColumnWidth(18)
    private Date bidOpenDate;

    /** 合同签订日期 */
    @ExcelProperty(value = "合同签订日期", index = 16)
    @ColumnWidth(18)
    private Date contractSignDate;

    /** 预计交货日期 */
    @ExcelProperty(value = "预计交货日期", index = 17)
    @ColumnWidth(18)
    private Date expectedDeliveryDate;

    /** 实际交货日期 */
    @ExcelProperty(value = "实际交货日期", index = 18)
    @ColumnWidth(18)
    private Date actualDeliveryDate;

    /** 验收日期 */
    @ExcelProperty(value = "验收日期", index = 19)
    @ColumnWidth(18)
    private Date acceptanceDate;

    /** 结算日期 */
    @ExcelProperty(value = "结算日期", index = 20)
    @ColumnWidth(18)
    private Date settlementDate;

    /** 申请人工号 */
    @ExcelProperty(value = "申请人工号", index = 21)
    @ColumnWidth(15)
    @Required
    @TextFormat
    private String applicantId;

    /** 申请人姓名 */
    @ExcelProperty(value = "申请人姓名", index = 22)
    @ColumnWidth(15)
    @Required
    private String applicantName;

    /** 申请部门 */
    @ExcelProperty(value = "申请部门", index = 23)
    @ColumnWidth(18)
    @Required
    private String applyDepartment;

    /** 采购负责人工号 */
    @ExcelProperty(value = "采购负责人工号", index = 24)
    @ColumnWidth(15)
    @TextFormat
    private String purchaseLeaderId;

    /** 采购负责人姓名 */
    @ExcelProperty(value = "采购负责人姓名", index = 25)
    @ColumnWidth(15)
    private String purchaseLeaderName;

    /** 采购部门 */
    @ExcelProperty(value = "采购部门", index = 26)
    @ColumnWidth(18)
    private String purchaseDepartment;
}
