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

import com.brilliance.isc.bo.Cbb;
import com.brilliance.isc.common.codetable.service.CodetableService;
import com.brilliance.isc.common.component.PtsptaToolComponent;
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.transaction.help.TransactionHelpService;
import com.brilliance.mda.runtime.mda.CodetableItem;
import com.brilliance.mda.runtime.mda.util.MdaUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

@Component("liaallSetTransaction")
public class LiaallRegister implements ILiaallRegister {

    @Autowired
    private LiaallService liaallService;

    @Autowired
    private TransactionHelpService transactionHelpService;

    @Autowired
    private CodetableService codetableService;

    @Autowired
    private PtsptaToolComponent ptsptaToolComponent;

    @Override
    public void liaallSetTransaction(LiaallVo liaallVo) {
        liaallService.liaallSetFeeOnePerMatdat("DPZ");
        //注册其他需要参与计算的字段
        transactionHelpService.getLiaallSet().setRec(liaallVo.getRec());
        ptsptaToolComponent.addPtspta(liaallVo.getPtsList(), liaallVo.getRec().getPntinr(), liaallVo.getRec().getPnttyp());
        transactionHelpService.getLiaallSet().setPtsptas(liaallVo.getPtsList());
        Cbb cbb = liaallVo.getCbsMap().get("MAX");
        if (cbb == null) {
            cbb = liaallVo.getCbsMap().get("NOM1");
        }
        if (cbb != null) {
            liaallVo.setDoccur(cbb.getCur());
            liaallVo.setDocamt(cbb.getAmt());
        }
        MdaUtils.clear(liaallVo.getRoldsc());
        liaallVo.getPtsList().forEach(ptspta -> {
            String rol = ptspta.getRol();
            String ptyinr = ptspta.getPtyinr();
            if(!MdaUtils.isEmpty(ptyinr)){
                liaallVo.getRoldsc().add(new CodetableItem(codetableService.getTblLabel(rol, "ROLALL"), rol));
            }
        });
    }
}
