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

import com.brilliance.isc.bo.Spt;
import com.brilliance.isc.bo.model.*;
import com.brilliance.isc.common.forexmod.ForexmodVo;
import com.brilliance.isc.common.jshmod.vo.Jshmod;
import com.brilliance.isc.common.liaallg.vo.LiaallgVo;
import com.brilliance.isc.common.liaccv.vo.LiaccvgVo;
import com.brilliance.isc.common.limmod.vo.LimSimpleVo;
import com.brilliance.isc.common.limmod.vo.YpnSimpleVo;
import com.brilliance.isc.common.rmbbop.vo.Rmbbop;
import com.brilliance.isc.common.rmbbop.vo.RmbbopRequest;
import com.brilliance.isc.common.setfeg.vo.SetfegVo;
import com.brilliance.isc.common.setfog.vo.SetfogVo;
import com.brilliance.isc.common.setglg.vo.SetglgVo;
import com.brilliance.isc.common.trndia.vo.DiaVo;
import com.brilliance.isc.common.trndoc.vo.DoceotVo;
import com.brilliance.isc.common.umdmod.vo.SimpleUmdmodVo;
import com.brilliance.isc.common.vo.AbstractCommonVo;
import com.brilliance.isc.common.vo.GleVo;
import com.brilliance.isc.common.vo.PtsptaVo;
import com.brilliance.isc.vo.WarnVo;
import lombok.Data;

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

import static com.brilliance.mda.runtime.mda.Constants.NULLSTR;

@Data
public class BaseTransactionVo extends AbstractCommonVo {

    //交易名称
    private String transName = NULLSTR;

    //用户id
    private String userId = NULLSTR;

    //交易流水
    private String trninr = NULLSTR;

    //操作模式，一般为空，复核模式为view 和
    private String operation = NULLSTR;

    //保证金条目
    private List<LiaccvgVo> liaccvg;

    //表外条目
    private List<LiaallgVo> liaallg;

    //他行收费
    private SetfogVo setfog;

    //我行收费
    private SetfegVo setfeg;

    //结算条目
    private SetglgVo setglg;

    //分录条目
    private List<GleVo> gles;

    //面函条目
    private List<DoceotVo> doceot;

    //业务类型 SPT为暂存，TRN为复核
    private String businessType;

    //业务主键
    private String businessInr;

    //待处理数据
    private Spt spt;

    private List<WarnVo> warnList;

    private List<PtsptaVo> ptsptaList;
    /**
     * 额度前段字段
     */
    private LimSimpleVo limmod;
    /**
     * 押品
     */
    private YpnSimpleVo ypnmod;
    /**
     * 统一名单前端字段
     */
    private SimpleUmdmodVo umdmod;

    private Rmbbop rmbbop;

    private Jshmod jshmod;
    //    资本项目保送
    private Cfagit cfagit;

    //二期资本项目报送
    private Cfabop cfabop;

    // 收支申报境内外收入报送
    private Bopgat bopgat;

    // 收支申报境内外汇款报送
    private Boprem boprem;

    // 收支申报境内外承兑
    private Boppay boppay;

    private SimpleSetmodVo setmod;

    private SimpleLiaallVo liaall;

    private SimpleLiaccvVo liaccv;

    /**
     * 后端检核返回值
     */
    private Map<String, Object> errorMap;

    /**
     * 备忘录列表
     */
    private List<DiaVo> dias;

    private SimpleTrndiaVo trndia;

    private Map<String, Object> textTempData;

    private Map<String, Object> textTempDatac;

    private TrnInfo trnInfo;

    private ForexmodVo forexmod;

    /**
     * 自动化标识 适用于批量收费
     */
    private String autoFlag = "N";

    @Override
    public void reset() {
        if (liaccvg == null) {
            liaccvg = new ArrayList<>();
        }
        liaccvg.forEach(liaccvgVo -> liaccvgVo.reset());
        if (liaallg == null) {
            liaallg = new ArrayList<>();
        }
        liaallg.forEach(liaallgVo -> liaallgVo.reset());
        if (setfog == null) {
            setfog = new SetfogVo();
        }
        setfog.reset();
        if (setfeg == null) {
            setfeg = new SetfegVo();
        }
        setfeg.reset();
        if (setglg == null) {
            setglg = new SetglgVo();
        }
        setglg.reset();
        if (gles == null) {
            gles = new ArrayList<>();
        }
        if (doceot == null) {
            doceot = new ArrayList<>();
        }
        doceot.forEach(doceotVo -> doceotVo.reset());
        if (spt == null) {
            spt = new Spt();
        }
        if (cfagit == null) {
            cfagit = new Cfagit();
        }
        if (setmod == null) {
            setmod = new SimpleSetmodVo();
        }
        if (liaccv == null) {
            liaccv = new SimpleLiaccvVo();
        }
        if (liaall == null) {
            liaall = new SimpleLiaallVo();
        }
        if (dias == null) {
            dias = new ArrayList<>();
        }
        if (trndia == null) {
            trndia = new SimpleTrndiaVo();
        }
        if(bopgat == null){
            bopgat = new Bopgat();
            bopgat.reset();
        }
        if (cfabop == null) {
            cfabop = new Cfabop();
            cfabop.reset();
        }
        if(limmod == null){
            limmod = new LimSimpleVo();
            limmod.reset();
        }
    }
}
