package com.chinaweal.aiccs.aiccs.susnate.dto;

import com.chinaweal.aiccs.common.util.DateUtils;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.validation.constraints.NotBlank;
import java.io.Serializable;
import java.time.LocalDate;

/**
 * 冒用身份登记信息融合新增参数DTO
 * 融合涉嫌冒用和冒用处理决定的新增参数，使用同一个主键
 *
 * @author iFlow
 * @since 2026-02-06
 */
@Data
@ApiModel("冒用身份登记信息融合新增参数")
public class NateOperCombinedAddDTO implements Serializable {

    private static final long serialVersionUID = 1L;

    // ==================== 共有字段 ====================

    /**
     * 主体身份代码(CA14)
     */
    @ApiModelProperty(value = "主体身份代码(CA14)", required = true)
    @NotBlank(message = "主体身份代码不能为空")
    private String pripid;

    /**
     * 市场主体名称
     */
    @ApiModelProperty(value = "市场主体名称", required = true)
    @NotBlank(message = "市场主体名称不能为空")
    private String entname;

    /**
     * 统一社会信用代码(CA91)
     */
    @ApiModelProperty(value = "统一社会信用代码(CA91)", required = true)
    @NotBlank(message = "统一社会信用代码不能为空")
    private String uniscid;

    /**
     * 注册号
     */
    @ApiModelProperty(value = "注册号")
    private String regno;

    /**
     * 登记(CA11)
     */
    @ApiModelProperty(value = "登记机关(CA11)", required = true)
    @NotBlank(message = "登记机关不能为空")
    private String regOrg;

    /**
     * 登记（中文名称）
     */
    @ApiModelProperty(value = "登记机关（中文名称）")
    private String regOrgCn;

    /**
     * 作出决定机关
     */
    @ApiModelProperty(value = "作出决定机关", required = true)
    @NotBlank(message = "作出决定机关不能为空")
    private String judAuth;

    /**
     * 作出决定机关（中文名称）
     */
    @ApiModelProperty(value = "作出决定机关（中文名称）")
    private String judAuthCn;

    /**
     * 作出决定日期
     */
    @ApiModelProperty(value = "作出决定日期", required = true, example = "2025-01-01")
    @JsonFormat(pattern = DateUtils.DATE_DEFAULT_FORMAT, timezone = "GMT+8")
    private LocalDate judDate;

    // ==================== 涉嫌冒用专用字段 ====================
    /**
     * 冒名登记时间
     */
    @ApiModelProperty(value = "冒名登记时间", required = true, example = "2025-01-01")
    @JsonFormat(pattern = DateUtils.DATE_DEFAULT_FORMAT, timezone = "GMT+8")
    private LocalDate regTime;

    /**
     * 冒名登记事项
     */
    @ApiModelProperty(value = "冒名登记事项", required = true)
    @NotBlank(message = "冒名登记事项不能为空")
    private String regItem;

    /**
     * 联系方式
     */
    @ApiModelProperty(value = "联系方式")
    private String tel;

    /**
     * 公告期自
     */
    @ApiModelProperty(value = "公告期自", required = true, example = "2025-01-01")
    @JsonFormat(pattern = DateUtils.DATE_DEFAULT_FORMAT, timezone = "GMT+8")
    private LocalDate noticeFrom;

    /**
     * 公告期至
     */
    @ApiModelProperty(value = "公告期至", required = true, example = "2025-01-01")
    @JsonFormat(pattern = DateUtils.DATE_DEFAULT_FORMAT, timezone = "GMT+8")
    private LocalDate noticeTo;

    /**
     * 姓名
     */
    @ApiModelProperty(value = "姓名", required = true)
    @NotBlank(message = "姓名不能为空")
    private String name;

    /**
     * 处理结果
     */
    @ApiModelProperty(value = "处理结果")
    private String handlRest;

    /**
     * 处理原因(CD96)
     */
    @ApiModelProperty(value = "处理原因(CD96)")
    private String handlRea;

    /**
     * 处理原因（中文名称）
     */
    @ApiModelProperty(value = "处理原因（中文名称）")
    private String handlReaCn;

    // ==================== 冒用处理决定专用字段 ====================
    /**
     * 公告内容
     */
    @ApiModelProperty(value = "公告内容", required = true)
    @NotBlank(message = "公告内容不能为空")
    private String noticeContent;

    /**
     * 公告日期
     */
    @ApiModelProperty(value = "公告日期", required = true, example = "2025-01-01")
    @JsonFormat(pattern = DateUtils.DATE_DEFAULT_FORMAT, timezone = "GMT+8")
    private LocalDate noticeDate;
}