package org.dromara.payment.sys.domain.vo;

import java.math.BigDecimal;

import com.alibaba.excel.annotation.ExcelIgnore;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.payment.sys.domain.SysSydProduct;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;

import java.io.Serial;
import java.io.Serializable;


/**
 * 服务商产品视图对象 sys_syd_product
 *
 * @author LionLi
 * @date 2024-03-26
 */
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = SysSydProduct.class)
public class SysSydProductVo implements Serializable {

    @Serial
    private static final long serialVersionUID = 1L;

    /**
     * 主键
     */
    @ExcelProperty(value = "主键")
    private Long id;

    /**
     * 服务商id
     */
    @ExcelProperty(value = "服务商id")
    private Long sydId;

    /**
     * 服务商编号
     */
    @ExcelProperty(value = "服务商编号")
    private String sydNo;

    @ExcelProperty(value = "服务商名称")
    private String sydName;

    /**
     * 业务类型(1:委托代征，2:自然人代开，3:个体户注册 4:临时税务登记 5：资金代发 6：派遣&外包
     */
    @ExcelProperty(value = "业务类型(1:委托代征，2:自然人代开，3:个体户注册 4:临时税务登记 5：资金代发 6：派遣&外包")
    private Long busType;

    /**
     * 产品编号
     */
    @ExcelProperty(value = "产品编号")
    private String no;

    /**
     * 配置服务费率(%)
     */
    @ExcelProperty(value = "配置服务费率(%)")
    private BigDecimal serviceCharge;

    /**
     * 运营商配置服务费率(%)
     */
    private BigDecimal setingServiceCharge;

    /**
     * 计费模式(1:个人应得计费、2:开票金额计费)
     */
    @ExcelProperty(value = "计费模式(1:个人应得计费、2:开票金额计费)")
    private Long chargeMode;

    /**
     * 结算方式（1：到卡 2：余额）
     */
    @ExcelProperty(value = "结算方式", converter = ExcelDictConvert.class)
    @ExcelDictFormat(readConverterExp = "1=：到卡,2=：余额")
    private Integer settlementStyle;

    /**
     * 单月发放上限（分）
     */
    @ExcelProperty(value = "单月发放上限", converter = ExcelDictConvert.class)
    @ExcelDictFormat(readConverterExp = "分=")
    private Long maxMonth;

    /**
     * 开票类型（1：增值税专用发票 2：增值税普通发票 3：差额票）
     */
    @ExcelProperty(value = "开票类型", converter = ExcelDictConvert.class)
    @ExcelDictFormat(readConverterExp = "1=：增值税专用发票,2=：增值税普通发票,3=：差额票")
    private Integer invoiceType;

    /**
     * 开票类目名称
     */
    @ExcelProperty(value = "开票类目名称")
    private String invoiceItems;


    @ExcelIgnore
    private Integer proStatus;

    @ExcelIgnore
    private Long proId;

    @ExcelIgnore
    private String proNo;

    @ExcelIgnore
    private String maxMonthStr;


    private String invoiceIds;


    public String getInvoiceIds() {
        return invoiceIds;
    }

    public void setInvoiceIds(String invoiceIds) {
        this.invoiceIds = invoiceIds;
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public Long getSydId() {
        return sydId;
    }

    public void setSydId(Long sydId) {
        this.sydId = sydId;
    }

    public String getSydNo() {
        return sydNo;
    }

    public void setSydNo(String sydNo) {
        this.sydNo = sydNo;
    }

    public String getSydName() {
        return sydName;
    }

    public void setSydName(String sydName) {
        this.sydName = sydName;
    }

    public Long getBusType() {
        return busType;
    }

    public void setBusType(Long busType) {
        this.busType = busType;
    }

    public String getNo() {
        return no;
    }

    public void setNo(String no) {
        this.no = no;
    }

    public BigDecimal getServiceCharge() {
        return serviceCharge;
    }

    public void setServiceCharge(BigDecimal serviceCharge) {
        this.serviceCharge = serviceCharge;
    }

    public BigDecimal getSetingServiceCharge() {
        return setingServiceCharge;
    }

    public void setSetingServiceCharge(BigDecimal setingServiceCharge) {
        this.setingServiceCharge = setingServiceCharge;
    }

    public Long getChargeMode() {
        return chargeMode;
    }

    public void setChargeMode(Long chargeMode) {
        this.chargeMode = chargeMode;
    }

    public Integer getSettlementStyle() {
        return settlementStyle;
    }

    public void setSettlementStyle(Integer settlementStyle) {
        this.settlementStyle = settlementStyle;
    }

    public Long getMaxMonth() {
        return maxMonth;
    }

    public void setMaxMonth(Long maxMonth) {
        this.maxMonth = maxMonth;
    }

    public Integer getInvoiceType() {
        return invoiceType;
    }

    public void setInvoiceType(Integer invoiceType) {
        this.invoiceType = invoiceType;
    }

    public String getInvoiceItems() {
        return invoiceItems;
    }

    public void setInvoiceItems(String invoiceItems) {
        this.invoiceItems = invoiceItems;
    }

    public Integer getProStatus() {
        return proStatus;
    }

    public void setProStatus(Integer proStatus) {
        this.proStatus = proStatus;
    }

    public Long getProId() {
        return proId;
    }

    public void setProId(Long proId) {
        this.proId = proId;
    }

    public String getProNo() {
        return proNo;
    }

    public void setProNo(String proNo) {
        this.proNo = proNo;
    }

    public String getMaxMonthStr() {
        return StringUtils.fenToYuanFormatter(this.maxMonth);
    }

    public void setMaxMonthStr(String maxMonthStr) {
        this.maxMonthStr = maxMonthStr;
    }
}
