package com.sckw.contract.model.vo.res;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.sckw.core.utils.LongToStringUtils;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;

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

/**
 * @author czh
 * @desc 合同查询返参
 * @date 2023/7/13
 */
@Data
public class QueryListResVo implements Serializable {

    @Serial
    private static final long serialVersionUID = -8699172452542787584L;
    /**
     * 主键id
     */
    @JsonSerialize(using = LongToStringUtils.class)
    @Schema(description = "主键id")
    private Long id;

    /**
     * 合同状态
     */
    @Schema(description = "合同状态")
    private Integer status;

    /**
     * 合同状态中文名
     */
    @Schema(description = "合同状态中文名")
    private String statusName;

    /**
     * 采购单位id
     */
    @Schema(description = "采购单位id")
    private String purchaseEntId;
    /**
     * 采购单位名
     */
    @Schema(description = "采购单位名")
    private String purchaseEntName;
    /**
     * 供应单位id
     */
    @Schema(description = "供应单位id")
    private String provideEntId;

    /**
     * 供应单位名
     */
    @Schema(description = "供应单位名")
    private String provideEntName;

    /**
     * 托运单位名
     */
    @Schema(description = "托运单位名")
    private String checkedEntName;

    /**
     * 合同编号
     */
    @Schema(description = "合同编号")
    private String contractNo;

    /**
     * 合同名称
     */
    @Schema(description = "合同名称")
    private String contractName;

    /**
     * 签约方式
     */
    @Schema(description = "签约方式")
    private String signingWay;

    /**
     * 签约方式中文名
     */
    @Schema(description = "签约方式中文名")
    private String signingWayName;
    /**
     * 卸货方式
     */
    @Schema(description = "卸货方式")
    private String unloadWay;
    /**
     * 卸货方式中文名
     */
    @Schema(description = "卸货方式中文名")
    private String unloadWayName;

    /**
     * 合同总量
     */
    @Schema(description = "合同总量")
    private BigDecimal amount;

    /**
     * 已履约量
     */
    @Schema(description = "已履约量")
    private BigDecimal performedAmount;

    /**
     * 已履约金额
     */
    @Schema(description = "已履约金额")
    private BigDecimal performedAmountMoney;

    /**
     * 主合同id
     */
    @Schema(description = "主合同id")
    private Long contractPid;
    /**
     * 父合同名
     */
    @Schema(description = "父合同名")
    private String contractPname;
    /**
     * 主合同编号
     */
    @Schema(description = "主合同编号")
    private String contractPidNo;

    /**
     * 计费方式中文名
     */
    @Schema(description = "计费方式中文名")
    private String chargingName;

    /**
     * 付款方式中文名
     */
    @Schema(description = "付款方式中文名")
    private String tradingName;

    /**
     * 承运单位名
     */
    @Schema(description = "承运单位名")
    private String carrierEntName;

    /**
     * 发起人id
     */
    @Schema(description = "发起人id")
    private Long initiatorId;

    /**
     * 发起人
     */
    @Schema(description = "发起人")
    private String initiateName;

    /**
     * 发起单位
     */
    @Schema(description = "发起单位")
    private String initiateEntName;

    /**
     * 创建时间
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @Schema(description = "创建时间")
    private Date createTime;
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @Schema(description = "更新时间")
    private Date updateTime;
    /**
     * 起始日期
     */
    @Schema(description = "起始日期")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @JsonFormat(pattern="yyyy-MM-dd", timezone = "GMT+8")
    private Date startTime;

    /**
     * 终止日期
     */
    @Schema(description = "终止日期")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @JsonFormat(pattern="yyyy-MM-dd", timezone = "GMT+8")
    private Date endTime;


    /**
     * 发起时间
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @Schema(description = "发起时间")
    private Date initiateTime;


    /**
     * 备注
     */
    @Schema(description = "备注")
    private String remark;


    /**
     * 签约时间
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @Schema(description = "签约时间")
    private Date signTime;


    /**
     * 派车方式（1-手动派车、2-自动派车）
     */
    @Schema(description = "派车方式（1-手动派车、2-自动派车）")
    private Integer dispatchWay;

    /**
     * 派车方式描述
     */
    @Schema(description = "派车方式秒速")
    private String dispatchWayDesc;




}