package com.brilliance.isc.common.jshmod.vo;

import com.brilliance.isc.bo.Cbb;
import com.brilliance.isc.common.setfeg.vo.SetfegVo;
import com.brilliance.isc.common.setfeg.vo.SetfelVo;
import com.brilliance.isc.common.setglg.vo.SetglgVo;
import com.brilliance.isc.common.vo.AbstractCommonVo;
import com.brilliance.isc.common.vo.BizInfoVo;
import com.brilliance.isc.common.vo.PtsptaVo;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.util.List;
import java.util.Map;

@Data
@EqualsAndHashCode(callSuper = true)
@JsonIgnoreProperties(ignoreUnknown = true)
@ApiModel(value = "申报请求信息", description = "申报请求信息")
public class JshmodRequest<T extends BizInfoVo> extends AbstractCommonVo {
    //交易码
    private String transName;

    //经办id
    private String userId;

    @ApiModelProperty(value = "交易角色参与方列表", name = "ptsList", required = true)
    private List<PtsptaVo> ptsList;

    @ApiModelProperty(value = "CBB列表", name = "cbsMap", required = true)
    private Map<String, Cbb> cbsMap;

    @ApiModelProperty(value = "我行收费信息", name = "setfeg", required = true)
    private SetfegVo setfeg;


    @ApiModelProperty(value = "结算分录信息", name = "setglg", required = true)
    private SetglgVo setglg;

    @ApiModelProperty(value = "我行收费信息列表", name = "setfel", required = true)
    private List<SetfelVo> setfel;

    //是否开启结售汇申报标记
    @JsonIgnore
    private boolean wgflag;

    //业务摘要信息类
    private T rec;

    @ApiModelProperty(value = "报送主信息", name = "jshmod", required = true)
    private Jshmod jshmod;

    @Override
    public void reset() {
        super.reset();
        if (jshmod == null) {
            jshmod = new Jshmod();
        }
        jshmod.reset();
    }
}
