package com.openhis.web.datadictionary.dto;

import java.math.BigDecimal;

import com.core.common.annotation.Excel;

import lombok.Data;
import lombok.experimental.Accessors;

/**
 * 器材目录导入Dto
 *
 * @author Thanking
 * @date 2025-09-24
 */
@Data
@Accessors(chain = true)
public class DeviceImportDto {

    /** 行号 */
    private Integer lineNumber;

    // ---------------------- 器材定义 adm_device_definition -------------------------------------

    /** 器材名称 */
    @Excel(name = "器材名称", prompt = "必填")
    private String name;

    /** 器材分类 */
    @Excel(name = "器材分类", prompt = "必填", dictType = "device_category_code", comboReadDict = true)
    private String categoryCode;

    /** 包装单位 */
    @Excel(name = "包装单位", prompt = "必填", dictType = "unit_code", comboReadDict = true)
    private String unitCode;

    /** 包装规格 */
    @Excel(name = "包装规格", prompt = "必填")
    private String size;

    /** 最小库存警戒数量(常规单位) */
    @Excel(name = "最小库存警戒数量(常规单位)", width = 25, prompt = "必填，数值类型")
    private String itemMinQuantityStr;
    private BigDecimal itemMinQuantity;

    /** 最大库存警戒数量(常规单位) */
    @Excel(name = "最大库存警戒数量(常规单位)", width = 25, prompt = "必填，数值类型")
    private String itemMaxQuantityStr;
    private BigDecimal itemMaxQuantity;

    /** 拆零比 */
    @Excel(name = "拆零比", prompt = "必填，数值类型")
    private String partPercentStr;
    private BigDecimal partPercent;

    /** 最小使用单位 */
    @Excel(name = "最小使用单位", prompt = "必填", dictType = "unit_code", comboReadDict = true)
    private String minUnitCode;

    /** 所在位置名称（locationId） */
    @Excel(name = "所在位置名称", prompt = "必填")
    private String locationName;

    /** 高值器材标志 */
    @Excel(name = "高值器材标志", prompt = "必填", readConverterExp = "0=否,1=是", combo = "否,是")
    private String hvcmFlag;

    /** 销售单位 */
    @Excel(name = "销售单位", prompt = "必填", dictType = "unit_code", comboReadDict = true)
    private String salesUnitCode;

    /** 批准文号 */
    @Excel(name = "批准文号")
    private String approvalNumber;

    /** 医保标记 */
    @Excel(name = "医保标记", prompt = "必填", readConverterExp = "0=否,1=是", combo = "否,是")
    private String ybFlag;

    /** 医保对码标记 */
    @Excel(name = "医保对码标记", prompt = "必填", readConverterExp = "0=否,1=是", combo = "否,是")
    private String ybMatchFlag;

    /** 医保编码 */
    @Excel(name = "医保编码", prompt = "医保对码时必填")
    private String ybNo;

    /** 医药机构目录编码 */
    @Excel(name = "医药机构目录编码")
    private String ybOrgNo;

    /** 医保等级 */
    @Excel(name = "医保等级", prompt = "必填", dictType = "chrgitm_lv", comboReadDict = true)
    private String chrgitmLv;

    /** 生产厂家 */
    @Excel(name = "生产厂家文本", prompt = "必填")
    private String manufacturerText;

    /** 过敏标记 */
    @Excel(name = "过敏标记", prompt = "必填", readConverterExp = "0=否,1=是", combo = "否,是")
    private String allergenFlag;

    /** 处方标志 */
    @Excel(name = "处方标志", prompt = "必填", readConverterExp = "0=否,1=是", combo = "否,是")
    private String rxFlag;

    // ---------------------- 费用定价 adm_charge_item_definition ----------------------------------------------

    /** 财务类别 */
    @Excel(name = "财务类别", prompt = "必填", dictType = "fin_type_code", comboReadDict = true)
    private String typeCode;

    /** 医保费用类别 */
    @Excel(name = "医保费用类别", prompt = "必填", dictType = "med_chrgitm_type", comboReadDict = true)
    private String ybType;

    // ---------------------- 费用定价子表 adm_charge_item_def_detail ----------------------------------------------

    /** 购入价 */
    @Excel(name = "购入价", prompt = "必填，数值类型")
    private String purchasePriceStr;
    private BigDecimal purchasePrice;

    /** 零售价 */
    @Excel(name = "零售价", prompt = "必填，数值类型")
    private String retailPriceStr;
    private BigDecimal retailPrice;

    /** 最高零售价 */
    @Excel(name = "最高零售价", prompt = "必填，数值类型")
    private String maximumRetailPriceStr;
    private BigDecimal maximumRetailPrice;
}
