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

import com.brilliance.isc.bo.Cbb;
import com.brilliance.isc.bo.Trn;
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.MdaUtils;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

@Component("cpd.trtcreRegister")
public class CpdTrtcreRegister 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());
        trtcreVo.getTrdgrp().getRec().setMatpretyp("D");
        if (!trtcreVo.getTrdgrp().getRec().isModified("stzfdxzh")) {
            trtcreVo.getTrdgrp().getRec().setStzfdxzh(bizInfoVo.getPyeact());
        }
        Cbb maxcbb = trtcreVo.getCbsMap().getOrDefault("MAX", new Cbb());
        if (StringUtils.isNotEmpty(maxcbb.getCur()) && !trtcreVo.getTrdgrp().getCbs().getMax().isModified("cur")) {
            trtcreVo.getTrdgrp().getCbs().getMax().setCur(maxcbb.getCur());
        }
        //docamt等于max
        trtcreVo.getRec().setDoccur(maxcbb.getCur());
        trtcreVo.getRec().setDocamt(maxcbb.getAmt());
        String ref = trtcreVo.getTrdgrp().getFip().getRef();
        if (ptsptaToolComponent.ptsIsRolSet(trtcreVo.getPtsptaList(), "ORC")) {
            trtcreVo.getTrdgrp().setFip(MdaUtils.deepClone(ptsptaToolComponent.getPtsFromListByRol(trtcreVo.getPtsptaList(), "ORC")));
        }
        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);
        }
        //fiprol赋值
        trtcreVo.setFiprol("ORC");
    }

    @Override
    public boolean isNeedRepair(Trn trn) {
        if ("CPTOPN".equals(trn.getInifrm())) {
            return true;
        }
        return false;
    }
}
