package com.nbport.zgwl.contractlaunch.dto;

import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;

import java.io.Serial;
import java.io.Serializable;
import java.time.LocalDateTime;

/**
 * 履行计划
 *
 * 对应结算平台推送合同接口的 contractKxPlans 字段。
 * 与法务接口文档中的款项计划一一映射。
 */
@Data
public class ContractLaunchPlanDto implements Serializable {

    @Serial
    private static final long serialVersionUID = 1L;

    /** 主键ID */
    private Long id;

    /** 关联合同主表 ID */
    private Long contractId;

    /** 履行事项（如：第一笔付款） */
    private String planMatter;

    /** 履约条件（如：达到xx条件） */
    private String planWhere;

    /** 节点日期 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private LocalDateTime planTime;

    /** 提前提醒天数 */
    private Integer planDay;

    /** 款项金额 */
    private Double planMoney;

    /**
     * 所属主体编码，推送法务字段 planSubjectCode。
     */
    private String planSubjectCode;

    /** 所属主体名称，推送法务字段 planSubjectName。 */
    private String planSubjectName;

    /**
     * 执行人公司ID，推送法务字段 executorUnitId。
     * 对应履行计划中执行人所属的公司/组织ID。
     */
    private Long executorUnitId;

    /** 备注 */
    private String planDetail;

    /** 履行状态（0:待履行, 1:已履行, 2:逾期） */
    private String planStatus;

    /** 备注 */
    private String remark;
}
