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

import org.dromara.payment.sys.domain.SysSydLog;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*;

import java.math.BigDecimal;
import java.util.Date;

/**
 * 服务商变动记录业务对象 sys_syd_log
 *
 * @author LionLi
 * @date 2024-03-26
 */
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = SysSydLog.class, reverseConvertGenerate = false)
public class SysSydLogBo extends BaseEntity {

    /**
     * 主键
     */
    @NotNull(message = "主键不能为空", groups = { EditGroup.class })
    private Long id;

    /**
     * 结算中心id
     */
    @NotNull(message = "结算中心id不能为空", groups = { AddGroup.class, EditGroup.class })
    private Long sydId;

    /**
     * 结算中心编号
     */
    @NotBlank(message = "结算中心编号不能为空", groups = { AddGroup.class, EditGroup.class })
    private String no;

    /**
     * 结算中心名称
     */
    @NotBlank(message = "结算中心名称不能为空", groups = { AddGroup.class, EditGroup.class })
    private String gsmc;

    /**
     * 开户地
     */
    @NotBlank(message = "开户地不能为空", groups = { AddGroup.class, EditGroup.class })
    private String kfd;

    /**
     * 开户行
     */
    @NotBlank(message = "开户行不能为空", groups = { AddGroup.class, EditGroup.class })
    private String kfh;

    /**
     * 银行类型（字典）
     */
    @NotNull(message = "银行类型（字典）不能为空", groups = { AddGroup.class, EditGroup.class })
    private String bankType;

    /**
     * 银行账号
     */
    @NotBlank(message = "银行账号不能为空", groups = { AddGroup.class, EditGroup.class })
    private String bankCard;

    /**
     * 基本税率(%)
     */
    @NotNull(message = "基本税率(%)不能为空", groups = { AddGroup.class, EditGroup.class })
    private BigDecimal jbsl;

    /**
     * 引用数量
     */
    @NotNull(message = "引用数量不能为空", groups = { AddGroup.class, EditGroup.class })
    private Long quoteNum;

    /**
     * 添加时间
     */
    @NotNull(message = "添加时间不能为空", groups = { AddGroup.class, EditGroup.class })
    private Date addTime;

    /**
     * 添加人
     */
    @NotBlank(message = "添加人不能为空", groups = { AddGroup.class, EditGroup.class })
    private String addBy;

    /**
     * 编辑人
     */
    @NotBlank(message = "编辑人不能为空", groups = { AddGroup.class, EditGroup.class })
    private String editer;

    /**
     * 编辑时间
     */
    @NotNull(message = "编辑时间不能为空", groups = { AddGroup.class, EditGroup.class })
    private Date editTime;

    /**
     * 省id
     */
    @NotNull(message = "省id不能为空", groups = { AddGroup.class, EditGroup.class })
    private Long provinceId;

    /**
     * 省名称
     */
    @NotBlank(message = "省名称不能为空", groups = { AddGroup.class, EditGroup.class })
    private String provinceName;

    /**
     * 市id
     */
    @NotNull(message = "市id不能为空", groups = { AddGroup.class, EditGroup.class })
    private Long cityId;

    /**
     * 市名称
     */
    @NotBlank(message = "市名称不能为空", groups = { AddGroup.class, EditGroup.class })
    private String cityName;

    /**
     * 县区id
     */
    @NotNull(message = "县区id不能为空", groups = { AddGroup.class, EditGroup.class })
    private Long countyId;

    /**
     * 县区名称
     */
    @NotBlank(message = "县区名称不能为空", groups = { AddGroup.class, EditGroup.class })
    private String countyName;

    /**
     * 纳税人识别号
     */
    @NotBlank(message = "纳税人识别号不能为空", groups = { AddGroup.class, EditGroup.class })
    private String nsrSbh;

    /**
     * 法人
     */
    @NotBlank(message = "法人不能为空", groups = { AddGroup.class, EditGroup.class })
    private String fr;

    /**
     * 法人身份证
     */
    @NotBlank(message = "法人身份证不能为空", groups = { AddGroup.class, EditGroup.class })
    private String frCardid;

    /**
     * 法人手机号
     */
    @NotBlank(message = "法人手机号不能为空", groups = { AddGroup.class, EditGroup.class })
    private String frPhone;

    /**
     * 联系人姓名
     */
    @NotBlank(message = "联系人姓名不能为空", groups = { AddGroup.class, EditGroup.class })
    private String conName;

    /**
     * 联系人手机号
     */
    @NotBlank(message = "联系人手机号不能为空", groups = { AddGroup.class, EditGroup.class })
    private String conPhone;

    /**
     * 联系人身份证
     */
    @NotBlank(message = "联系人身份证不能为空", groups = { AddGroup.class, EditGroup.class })
    private String conCardid;

    /**
     * 联系人邮箱
     */
    @NotBlank(message = "联系人邮箱不能为空", groups = { AddGroup.class, EditGroup.class })
    private String conEmail;

    /**
     * 实际经营地址
     */
    @NotBlank(message = "实际经营地址不能为空", groups = { AddGroup.class, EditGroup.class })
    private String address;

    /**
     * 经营范围
     */
    @NotBlank(message = "经营范围不能为空", groups = { AddGroup.class, EditGroup.class })
    private String business;

    /**
     * 税源地简称
     */
    @NotBlank(message = "税源地简称不能为空", groups = { AddGroup.class, EditGroup.class })
    private String abridge;

    /**
     * 限制金额（0:不限 其它:同结算中心下单自雇者单月实际到手金额）
     */
    @NotNull(message = "限制金额（0:不限 其它:同结算中心下单自雇者单月实际到手金额）不能为空", groups = { AddGroup.class, EditGroup.class })
    private Long limitAmount;

    /**
     * 自雇者签约模式（0:不用签约 1:需要签约 2:共享签约）
     */
    @NotNull(message = "自雇者签约模式（0:不用签约 1:需要签约 2:共享签约）不能为空", groups = { AddGroup.class, EditGroup.class })
    private Integer signMode;

    /**
     * 自雇者签约有效期（年）
     */
    @NotNull(message = "自雇者签约有效期（年）不能为空", groups = { AddGroup.class, EditGroup.class })
    private Long signValidTime;

    /**
     * 记录时间
     */
    @NotNull(message = "记录时间不能为空", groups = { AddGroup.class, EditGroup.class })
    private Date logTime;


}
