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.DyncDaoService;
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("brd.trtcreRegister")
public class BrdTrtcreRegister implements ITrtcreRegister {

    @Autowired
    private PtsptaToolComponent ptsptaToolComponent;

    @Autowired
    private DyncDaoService dyncDaoService;

    @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().setAvbby(bizInfoVo.getDocflg());
        trtcreVo.getTrdgrp().getRec().setTenorday(bizInfoVo.getTenmaxday());
        trtcreVo.getTrdgrp().getRec().setMatpretyp("D");
        //中文货物描述
        String goddspcn = dyncDaoService.dyncReadFieldByInr(bizInfoVo.getPnttyp(), bizInfoVo.getPntinr(), "goddspcn");
        bizInfoVo.setGoddspcn(goddspcn);
        //货物品类
        String stagod = dyncDaoService.dyncReadFieldByInr(bizInfoVo.getPnttyp(), bizInfoVo.getPntinr(), "stagod");
        bizInfoVo.setStagod(stagod);
        //商业发票
        String invtyp = dyncDaoService.dyncReadFieldByInr(bizInfoVo.getObjtyp(), bizInfoVo.getObjinr(), "invtyp");
        bizInfoVo.setInvtyp(invtyp);
        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());
        }
        String ref = trtcreVo.getTrdgrp().getFip().getRef();
        if (ptsptaToolComponent.ptsIsRolSet(trtcreVo.getPtsptaList(), "APL")) {
            trtcreVo.getTrdgrp().setFip(MdaUtils.deepClone(ptsptaToolComponent.getPtsFromListByRol(trtcreVo.getPtsptaList(), "APL")));
        }
        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);
        }
        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);
        }
        //fiprol赋值
        trtcreVo.setFiprol("APL");
    }

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