package com.chinaweal.aiccs.aiccs.punishment.entity;

import com.baomidou.mybatisplus.extension.activerecord.Model;
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 lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * 行政处罚统一查询DTO（本省+外省UNION）
 *
 * @author chinaweal
 * @since 2026-04-02
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@ApiModel(value = "PunishmentUnionDto对象", description = "行政处罚统一查询DTO")
public class PunishmentUnionDto extends Model<PunishmentUnionDto> {

    private static final long serialVersionUID = 1L;

    /**
     * 案件ID
     */
    @ApiModelProperty(value = "案件ID")
    private String caseId;

    /**
     * 企业名称
     */
    @ApiModelProperty(value = "企业名称")
    private String entName;

    /**
     * 统一社会信用代码
     */
    @ApiModelProperty(value = "统一社会信用代码")
    private String uniscid;

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

    /**
     * 处罚决定书文号
     */
    @ApiModelProperty(value = "处罚决定书文号")
    private String penDecNo;

    /**
     * 处罚机关
     */
    @ApiModelProperty(value = "处罚机关")
    private String penAuthCn;

    /**
     * 处罚决定日期
     */
    @JsonFormat(pattern = DateUtils.DATETIME_DEFAULT_FORMAT, timezone = "GMT+8")
    @ApiModelProperty(value = "处罚决定日期")
    private LocalDateTime penDecIssDate;

    /**
     * 处罚内容
     */
    @ApiModelProperty(value = "处罚内容")
    private String penContent;

    /**
     * 罚款金额
     */
    @ApiModelProperty(value = "罚款金额")
    private BigDecimal penam;

    /**
     * 违法类型
     */
    @ApiModelProperty(value = "违法类型")
    private String illegActType;

    /**
     * 数据来源标识（本省/外省）
     */
    @ApiModelProperty(value = "数据来源标识")
    private String dataSource;

    @Override
    protected Serializable pkVal() {
        return this.caseId;
    }
}
