package com.brilliance.isc.common.register.trtcre.impl;

import com.brilliance.isc.bo.Cbb;
import com.brilliance.isc.bo.model.Trtcre;
import com.brilliance.isc.common.component.PtsptaToolComponent;
import com.brilliance.isc.common.register.trtcre.ITrtcreRegister;
import com.brilliance.isc.vo.model.TrtcreBizInfoVo;
import com.brilliance.mda.runtime.mda.util.Dates;
import com.brilliance.mda.runtime.mda.util.MdaUtils;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

@Component("bed.trtcreRegister")
public class BedTrtcreRegister implements ITrtcreRegister {

    @Autowired
    private PtsptaToolComponent ptsptaToolComponent;

    @Override
    public void setTRDfieldsfromXXX(Trtcre trtcreVo) {
        TrtcreBizInfoVo bizInfoVo = trtcreVo.getRec();
        trtcreVo.getTrdgrp().getRec().setPnttyp(bizInfoVo.getObjtyp());
        trtcreVo.getTrdgrp().getRec().setPntinr(bizInfoVo.getObjinr());
        trtcreVo.getTrdgrp().getRec().setPntref(bizInfoVo.getOwnref());
        trtcreVo.getTrdgrp().getRec().setPntnam(bizInfoVo.getNam());
        trtcreVo.getTrdgrp().getRec().setStttendat(Dates.today());
        Cbb opncbb = trtcreVo.getCbsMap().getOrDefault("OPN1", new Cbb());
        if (StringUtils.isNotEmpty(opncbb.getCur()) && !trtcreVo.getTrdgrp().getCbs().getMax().isModified("cur")) {
            trtcreVo.getTrdgrp().getCbs().getMax().setCur(opncbb.getCur());
        }
        //FIP
        String ref = trtcreVo.getTrdgrp().getFip().getRef();
        if (ptsptaToolComponent.ptsIsRolSet(trtcreVo.getPtsptaList(), "ISS")) {
            trtcreVo.getTrdgrp().setFip(MdaUtils.deepClone(ptsptaToolComponent.getPtsFromListByRol(trtcreVo.getPtsptaList(), "ISS")));
        }
        trtcreVo.getTrdgrp().getFip().setRol("FIP");
        trtcreVo.getTrdgrp().getFip().getPts().setRol("FIP");
        if (StringUtils.isNotEmpty(ref)) {
            //trtcreVo.getTrdgrp().getFip().setRef(ref);
            trtcreVo.getTrdgrp().getFip().getPts().setRef(ref);
        }
        //RMB
        String rmbRef = trtcreVo.getTrdgrp().getRmb().getRef();
        if (ptsptaToolComponent.ptsIsRolSet(trtcreVo.getPtsptaList(), "RMB")) {
            trtcreVo.getTrdgrp().setRmb(MdaUtils.deepClone(ptsptaToolComponent.getPtsFromListByRol(trtcreVo.getPtsptaList(), "RMB")));
        }
        trtcreVo.getTrdgrp().getRmb().setRol("RMB");
        trtcreVo.getTrdgrp().getRmb().getPts().setRol("RMB");
        if (StringUtils.isNotEmpty(rmbRef)) {
            //trtcreVo.getTrdgrp().getRmb().setRef(rmbRef);
            trtcreVo.getTrdgrp().getRmb().getPts().setRef(rmbRef);
        }
        //ISS
        String issRef = trtcreVo.getTrdgrp().getIss().getRef();
        if (ptsptaToolComponent.ptsIsRolSet(trtcreVo.getPtsptaList(), "ISS")) {
            trtcreVo.getTrdgrp().setIss(MdaUtils.deepClone(ptsptaToolComponent.getPtsFromListByRol(trtcreVo.getPtsptaList(), "ISS")));
        }
        trtcreVo.getTrdgrp().getIss().setRol("ISS");
        trtcreVo.getTrdgrp().getIss().getPts().setRol("ISS");
        if (StringUtils.isNotEmpty(issRef)) {
            //trtcreVo.getTrdgrp().getIss().setRef(issRef);
            trtcreVo.getTrdgrp().getIss().getPts().setRef(issRef);
        }
        //fiprol赋值
        trtcreVo.setFiprol("ISS");
    }
}
