package com.ruoyi.info.collection.domain.dto;

import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.Pattern;
import jakarta.validation.constraints.Size;
import lombok.Data;

import java.io.Serial;
import java.io.Serializable;
import java.util.Date;

/**
 * 实体库管理编辑 DTO
 *
 * @author ruoyi
 * @date 2026-04-17
 */
@Data
@Schema(description = "实体库管理编辑DTO")
public class CcdiEnterpriseBaseInfoEditDTO implements Serializable {

    @Serial
    private static final long serialVersionUID = 1L;

    @Schema(description = "统一社会信用代码")
    @NotBlank(message = "统一社会信用代码不能为空")
    @Pattern(regexp = "^[0-9A-HJ-NPQRTUWXY]{2}\\d{6}[0-9A-HJ-NPQRTUWXY]{10}$", message = "统一社会信用代码格式不正确")
    private String socialCreditCode;

    @Schema(description = "企业名称")
    @NotBlank(message = "企业名称不能为空")
    @Size(max = 200, message = "企业名称长度不能超过200个字符")
    private String enterpriseName;

    @Schema(description = "企业类型")
    @Size(max = 50, message = "企业类型长度不能超过50个字符")
    private String enterpriseType;

    @Schema(description = "企业性质")
    @Size(max = 50, message = "企业性质长度不能超过50个字符")
    private String enterpriseNature;

    @Schema(description = "行业分类")
    @Size(max = 100, message = "行业分类长度不能超过100个字符")
    private String industryClass;

    @Schema(description = "所属行业")
    @Size(max = 100, message = "所属行业长度不能超过100个字符")
    private String industryName;

    @Schema(description = "成立日期")
    private Date establishDate;

    @Schema(description = "注册地址")
    @Size(max = 500, message = "注册地址长度不能超过500个字符")
    private String registerAddress;

    @Schema(description = "法定代表人")
    @Size(max = 100, message = "法定代表人长度不能超过100个字符")
    private String legalRepresentative;

    @Schema(description = "法定代表人证件类型")
    @Size(max = 50, message = "法定代表人证件类型长度不能超过50个字符")
    private String legalCertType;

    @Schema(description = "法定代表人证件号码")
    @Size(max = 50, message = "法定代表人证件号码长度不能超过50个字符")
    private String legalCertNo;

    @Schema(description = "股东1")
    @Size(max = 100, message = "股东1长度不能超过100个字符")
    private String shareholder1;

    @Schema(description = "股东2")
    @Size(max = 100, message = "股东2长度不能超过100个字符")
    private String shareholder2;

    @Schema(description = "股东3")
    @Size(max = 100, message = "股东3长度不能超过100个字符")
    private String shareholder3;

    @Schema(description = "股东4")
    @Size(max = 100, message = "股东4长度不能超过100个字符")
    private String shareholder4;

    @Schema(description = "股东5")
    @Size(max = 100, message = "股东5长度不能超过100个字符")
    private String shareholder5;

    @Schema(description = "经营状态")
    @Size(max = 50, message = "经营状态长度不能超过50个字符")
    private String status;

    @Schema(description = "风险等级")
    @NotBlank(message = "风险等级不能为空")
    private String riskLevel;

    @Schema(description = "企业来源")
    @NotBlank(message = "企业来源不能为空")
    private String entSource;

    @Schema(description = "数据来源")
    @NotBlank(message = "数据来源不能为空")
    private String dataSource;
}
