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.DictDropdown;
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-03-12
 */
@Data
public class CcdiAssetInfoExcel implements Serializable {

    @Serial
    private static final long serialVersionUID = 1L;

    /** 亲属证件号 */
    @ExcelProperty(value = "亲属证件号*", index = 0)
    @ColumnWidth(22)
    @Required
    @TextFormat
    private String personId;

    /** 资产大类 */
    @ExcelProperty(value = "资产大类*", index = 1)
    @ColumnWidth(16)
    @Required
    private String assetMainType;

    /** 资产小类 */
    @ExcelProperty(value = "资产小类*", index = 2)
    @ColumnWidth(18)
    @Required
    private String assetSubType;

    /** 资产名称 */
    @ExcelProperty(value = "资产名称*", index = 3)
    @ColumnWidth(24)
    @Required
    private String assetName;

    /** 产权占比 */
    @ExcelProperty(value = "产权占比", index = 4)
    @ColumnWidth(12)
    private BigDecimal ownershipRatio;

    /** 购买/评估日期 */
    @ExcelProperty(value = "购买/评估日期", index = 5)
    @ColumnWidth(16)
    private Date purchaseEvalDate;

    /** 资产原值 */
    @ExcelProperty(value = "资产原值", index = 6)
    @ColumnWidth(16)
    private BigDecimal originalValue;

    /** 当前估值 */
    @ExcelProperty(value = "当前估值*", index = 7)
    @ColumnWidth(16)
    @Required
    private BigDecimal currentValue;

    /** 估值截止日期 */
    @ExcelProperty(value = "估值截止日期", index = 8)
    @ColumnWidth(16)
    private Date valuationDate;

    /** 资产状态 */
    @ExcelProperty(value = "资产状态*", index = 9)
    @ColumnWidth(14)
    @DictDropdown(dictType = "ccdi_asset_status")
    @Required
    private String assetStatus;

    /** 备注 */
    @ExcelProperty(value = "备注", index = 10)
    @ColumnWidth(28)
    private String remarks;
}
