package com.brilliance.isc.common.register.liaall.common;

import com.brilliance.isc.common.liaall.service.LiaallService;
import com.brilliance.isc.common.liaall.vo.LiaallVo;
import com.brilliance.isc.common.register.liaall.ILiaallRegister;
import com.brilliance.isc.common.util.StringUtils;
import com.brilliance.isc.common.vo.SimpleModuleVo;
import com.brilliance.isc.vo.component.bptbck.BptbckVo;
import com.brilliance.mda.runtime.mda.util.Decimals;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import java.math.BigDecimal;

@Component
public class BptbckLiaallRegister implements ILiaallRegister {

    @Autowired
    private LiaallService liaallService;

    @Override
    public void liaallSetTransaction(LiaallVo liaallVo) {
        BptbckVo bptbckVo = liaallVo.getRec().getBptbckVo();
        if (bptbckVo != null
                && bptbckVo.getBptbckg() != null
                && bptbckVo.getBptbckg().size() > 0) {
            if(StringUtils.isNotEmpty(bptbckVo.getWrkbpdgrp().getRec().getInr())) {
                //          LiaallSetCbeAmount( "FIA", 3, BPTBCKG( $i )\\opncur, -BPTBCKG( $i )\\bckamt, "FIN", BPTBCKG( $i )\\WRKBPDGRP )
                // 必须全额还融资
                String rol = "";
                switch(bptbckVo.getWrkbpdgrp().getRec().getFintyp()) {
                    case "F":
                    case "G":
                        rol = "INV";
                        break;
                    case "U":
                    case "V":
                        rol = "BU1";
                        break;
                    default:
                        rol = "FIA";
                }
                SimpleModuleVo linkModule = new SimpleModuleVo(bptbckVo.getWrkbpdgrp().getRec().getInr(), "BPD");
                BigDecimal liaAmt = Decimals.sub(Decimals.add(bptbckVo.getWrkbpdgrp().getCbs().getOpn1().getAmt(), bptbckVo.getWrkfinmod().getCbs().getCbe().getAmt()), bptbckVo.getWrkfinmod().getCbs().getCbb().getAmt());
                liaallService.liaallSetCbeAmount(rol, 3, bptbckVo.getBptbckg().get(0).getOpncur(), liaAmt.negate(), "FIN", linkModule);
            }
        }
    }
}
