package org.dromara.personnel.domain.bo;

import org.dromara.personnel.domain.OpsTenderSupplierInput;
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.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;

/**
 * 供应商入库业务对象 ops_tender_supplier_input
 *
 * @author LionLi
 * @date 2025-09-24
 */
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = OpsTenderSupplierInput.class, reverseConvertGenerate = false)
public class OpsTenderSupplierInputBo extends BaseEntity {

    /**
     *
     */
    private Long id;

    /**
     * 项目id
     */
    private Long projectId;

    /**
     * 企业登记注册类型
     */
    @NotBlank(message = "企业登记注册类型不能为空", groups = { AddGroup.class, EditGroup.class })
    private String supplierType;

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

    /**
     * 企业法定代表人
     */
    @NotBlank(message = "企业法定代表人不能为空", groups = { AddGroup.class, EditGroup.class })
    private String supplierPerson;

    /**
     * 统一社会信用代码
     */
    @NotBlank(message = "统一社会信用代码不能为空", groups = { AddGroup.class, EditGroup.class })
    private String supplierCode;

    /**
     * 企业注册地址
     */
    @NotBlank(message = "企业注册地址不能为空", groups = { AddGroup.class, EditGroup.class })
    private String supplierAddres;

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

    /**
     * 负责人联系电话
     */
    @NotBlank(message = "负责人联系电话不能为空", groups = { AddGroup.class, EditGroup.class })
    private String personPhone;

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

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

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

    /**
     * 纳税规模
     */
    @NotBlank(message = "纳税规模不能为空", groups = { AddGroup.class, EditGroup.class })
    private String taxScale;

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

    /**
     * 企业资质等级
     */
    @NotBlank(message = "企业资质等级不能为空", groups = { AddGroup.class, EditGroup.class })
    private String supplierLivel;

    /**
     * 发证日期
     */
    @NotNull(message = "发证日期不能为空", groups = { AddGroup.class, EditGroup.class })
    private Date issueDate;

    /**
     * 证书有效期
     */
    @NotNull(message = "证书有效期不能为空", groups = { AddGroup.class, EditGroup.class })
    private Date certificateValidity;

    /**
     * 近三年营业额
     */
    @NotBlank(message = "近三年营业额不能为空", groups = { AddGroup.class, EditGroup.class })
    private String pastThreeYears;

    /**
     * 安全生产许可证编号
     */
    @NotBlank(message = "安全生产许可证编号不能为空", groups = { AddGroup.class, EditGroup.class })
    private String safeCode;

    /**
     * 安全生产许可证发证日期
     */
    @NotBlank(message = "安全生产许可证发证日期不能为空", groups = { AddGroup.class, EditGroup.class })
    private String safeCodeData;

    /**
     * 安全证书有效期
     */
    @NotBlank(message = "安全证书有效期不能为空", groups = { AddGroup.class, EditGroup.class })
    private String safeCertificateValidity;

    /**
     * 注册造价工程师数量
     */
    @NotNull(message = "注册造价工程师数量不能为空", groups = { AddGroup.class, EditGroup.class })
    private Long registeredEngineerNumber;

    /**
     * 一级建造工程师数量
     */
    @NotNull(message = "一级建造工程师数量不能为空", groups = { AddGroup.class, EditGroup.class })
    private Long firstBuildingNumber;

    /**
     * 二级建造工程师数量
     */
    @NotNull(message = "二级建造工程师数量不能为空", groups = { AddGroup.class, EditGroup.class })
    private Long secondBuildingNumber;

    /**
     * 其他建造师数量
     */
    @NotNull(message = "其他建造师数量不能为空", groups = { AddGroup.class, EditGroup.class })
    private Long otherBuildingNumber;

    /**
     * 高级工程师数量
     */
    @NotNull(message = "高级工程师数量不能为空", groups = { AddGroup.class, EditGroup.class })
    private Long seniorEngineerNumber;

    /**
     * 工程师数量
     */
    @NotNull(message = "工程师数量不能为空", groups = { AddGroup.class, EditGroup.class })
    private Long engineerNumber;

    /**
     * 助理工程师数量
     */
    @NotNull(message = "助理工程师数量不能为空", groups = { AddGroup.class, EditGroup.class })
    private Long assistantEngineerNumber;

    /**
     * 其他人员数量
     */
    @NotNull(message = "其他人员数量不能为空", groups = { AddGroup.class, EditGroup.class })
    private Long otherPersonnelNumber;

    /**
     * 存储文件ID
     */
    @NotNull(message = "存储文件ID不能为空", groups = { AddGroup.class, EditGroup.class })
    private Long fileId;

    /**
     * 入库资料
     */
    @NotBlank(message = "入库资料不能为空", groups = { AddGroup.class, EditGroup.class })
    private String inputFile;

    /**
     * 审核状态
     */
    @NotBlank(message = "审核状态不能为空", groups = { AddGroup.class, EditGroup.class })
    private String state;


}
