package com.brilliance.isc.common.transaction.newcheck.bopset;


import com.brilliance.isc.bo.Bopcty;
import com.brilliance.isc.bo.Ebb;
import com.brilliance.isc.bo.model.Cfagit;
import com.brilliance.isc.common.bopset.service.CfagitService;
import com.brilliance.isc.common.transaction.newcheck.AbstractModuleValidator;
import com.brilliance.isc.common.transaction.newcheck.ValidResult;
import com.brilliance.isc.common.transaction.newcheck.Validate;
import com.brilliance.isc.common.util.StringUtils;
import com.brilliance.isc.mda.dao.BopctyMapper;
import com.brilliance.mda.runtime.mda.util.Dates;
import com.brilliance.mda.runtime.mda.util.Decimals;
import com.brilliance.mda.runtime.mda.util.MdaUtils;
import com.brilliance.mda.runtime.mda.util.Strings;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import javax.annotation.PostConstruct;
import java.math.BigDecimal;
import java.util.Date;
import java.util.Map;

import static com.brilliance.mda.runtime.mda.Constants.NULLSTR;

/**
 * @author yangxd
 * @version 1.0
 * @description: CFA报送检核
 * @data 2023/7/13 15:46
 */
@Component
public class CfabopValidator extends AbstractModuleValidator<Cfagit> {

    @Autowired(required = false)
    CfagitService cfagitService;
    @Autowired
    BopctyMapper bopctyMapper;

    @Override
    @PostConstruct
    public void register() {
        super.register();
    }

    @Override
    public Map<String, String> validate(Cfagit cfagitVo) {
        return super.validate(cfagitVo);
    }

    /**
     *   source:ebap.0011.script
     */
    @Validate(path="cfagit.recgrp.bas.bentype")
    public ValidResult checkRecgrpBasBentypeN1000(Cfagit cfagitVo){
        if( cfagitService.isCheckField(cfagitVo.getRecgrp().getBas().getAcp(),cfagitVo.getRecgrp().getBas().getActiontype()) )
        {
            if( MdaUtils.isEmpty(cfagitVo.getRecgrp().getBas().getBentype()) )
            {
                // Platform.errorMandatory();
//                return ValidResult.build(false, I18nUtil.getMessage("0022"));
                return ValidResult.build(false, "此字段为必输项！");
            }
        }
        return null;
    }

    /**
     *   source:ebap.0063.script
     */
    @Validate(path="cfagit.recgrp.bas.guarantype")
    public ValidResult ruleRecgrpBasGuarantypeN1000(Cfagit cfagitVo){

//        如果是修改交易的话 不做校验
//        Map<String,Object> datasByTrans = cfagitService.cfaGetGIDataByTrans(cfagitVo.getTransName());
//        if (!MdaUtils.isEmpty(datasByTrans))
//        {
//           if ((boolean)datasByTrans.get("isAmeTrans"))
//               return null;
//        }
        if( MdaUtils.compareTo(cfagitVo.getRecgrp().getBas().getGuarantype(),"1105") == 0 && MdaUtils.compareTo(cfagitVo.getRecgrp().getBas().getMaindebtmanner(),"1") == 0 )
        {
            cfagitVo.getRecgrp().getBas().setBencode( "20001800");
            cfagitVo.getRecgrp().getBas().setBentype( "20001800");
//            cfagitVo.getPubp().setBename( "资本市场");
            cfagitVo.getRecgrp().getBas().setBename( "资本市场");
        }
//        else
//        {
//
//            if (!cfagitVo.getRecgrp().getBas().isModified("bencode"))
//                cfagitVo.getRecgrp().getBas().setBencode(NULLSTR);
//            if (!cfagitVo.getRecgrp().getBas().isModified("bentype"))
//                cfagitVo.getRecgrp().getBas().setBentype(NULLSTR);
////            this.getPubp().setBename(NULLSTR);
//            if (!cfagitVo.getRecgrp().getBas().isModified("bename"))
//                cfagitVo.getRecgrp().getBas().setBename(NULLSTR);
//        }
        return null;
    }


    /**
     *   source:ebap.0004.script
     */
    @Validate(path="cfagit.recgrp.bas.guarancurr")
    public ValidResult checkRecgrpBasGuarancurrN1000(Cfagit cfagitVo){

        if( cfagitService.isCheckField(cfagitVo.getRecgrp().getBas().getAcp(),cfagitVo.getRecgrp().getBas().getActiontype()) )
        {
            if( MdaUtils.isEmpty(cfagitVo.getRecgrp().getBas().getGuarancurr()) )
            {
//                Platform.errorMandatory();
//                return ValidResult.build(false, I18nUtil.getMessage("0022"));
                return ValidResult.build(false, "此字段为必输项！");
            }
        }
        return null;
    }

    /**
     *   source:ebap.0005.script
     */
    @Validate(path="cfagit.recgrp.bas.guaranamount")
    public ValidResult checkRecgrpBasGuaranamountN1000(Cfagit cfagitVo){

        if( cfagitService.isCheckField(cfagitVo.getRecgrp().getBas().getAcp(),cfagitVo.getRecgrp().getBas().getActiontype()) )
        {
            if( MdaUtils.isEmpty(cfagitVo.getRecgrp().getBas().getGuaranamount()) )
            {
//                return ValidResult.build(false, I18nUtil.getMessage("0022"));
                return ValidResult.build(false, "此字段为必输项！");
            }
            else
            {
                if( MdaUtils.compareTo(cfagitVo.getRecgrp().getBas().getGuaranamount(),0)<0 )
                {
//                    ctx.setFieldError(this,"recgrp.bas.guaranamount",MdaUtils.getI18NString("ebap","CT000000"));
                    return ValidResult.build(false, "保证金额不能小于0");
                }
            }
        }


        return null;
    }

    /**
     *   source:ebap.0006.script
     */
    @Validate(path="cfagit.recgrp.bas.guarantorcode")
    public ValidResult checkRecgrpBasGuarantorcodeN1000(Cfagit cfagitVo){

        if( cfagitService.isCheckField(cfagitVo.getRecgrp().getBas().getAcp(),cfagitVo.getRecgrp().getBas().getActiontype()) )
        {
            if( MdaUtils.isEmpty(cfagitVo.getRecgrp().getBas().getGuarantorcode()) )
            {
//                Platform.errorMandatory();
//                return ValidResult.build(false, I18nUtil.getMessage("0022"));
                return ValidResult.build(false, "此字段为必输项！");
            }
        }

        return null;
    }

    /**
     *   source:ebap.0007.script
     */
    @Validate(path="cfagit.recgrp.bas.contractdate")
    public ValidResult checkRecgrpBasContractdateN1000(Cfagit cfagitVo){

        if( cfagitService.isCheckField(cfagitVo.getRecgrp().getBas().getAcp(),cfagitVo.getRecgrp().getBas().getActiontype()) )
        {
            if( MdaUtils.isEmpty(cfagitVo.getRecgrp().getBas().getContractdate()) )
            {
                //Platform.errorMandatory();
//                return ValidResult.build(false, I18nUtil.getMessage("0022"));
                return ValidResult.build(false, "此字段为必输项！");
            }
        }
        return null;
    }


    /**
     *   source:cfagit.0028.script
     */
    @Validate(path="cfagit.recgrp.bas.contractdate")
    public ValidResult checkRecgrpBasContractdateN1100(Cfagit cfagitVo){

        if( MdaUtils.compareTo(cfagitVo.getTransName(),"GITOPN") == 0 || MdaUtils.compareTo(cfagitVo.getTransName(),"GITODZ") == 0 )
        {
            if( cfagitService.isCheckField(cfagitVo.getRecgrp().getBas().getAcp(),cfagitVo.getRecgrp().getBas().getActiontype()) )
            {
                if( ! MdaUtils.isEmpty(cfagitVo.getRecgrp().getBas().getContractdate()) )
                {
                    if( Dates.diff(cfagitVo.getRecgrp().getBas().getContractdate(),Dates.today()) < 0 )
                    {
                        //ctx.setFieldError(this,"recgrp.bas.contractdate",MdaUtils.getI18NString("cfagit","CT000000"));
                        return ValidResult.build(false,"签约日期不能早于当天");
                    }
                }
            }
        }
        return null;
    }

    /**
     *   source:ebap.0008.script
     */
    @Validate(path="cfagit.recgrp.bas.maturity")
    public ValidResult checkRecgrpBasMaturityN1000(Cfagit cfagitVo){

        if( cfagitService.isCheckField(cfagitVo.getRecgrp().getBas().getAcp(),cfagitVo.getRecgrp().getBas().getActiontype()) )
        {
            if( MdaUtils.isEmpty(cfagitVo.getRecgrp().getBas().getMaturity()) )
            {
                //Platform.errorMandatory();
//                return ValidResult.build(false, I18nUtil.getMessage("0022"));
                return ValidResult.build(false, "此字段为必输项！");
            }
        }
        return null;
    }

    /**
     *   source:cfagit.0029.script
     */
    @Validate(path="cfagit.recgrp.bas.maturity")
    public ValidResult checkRecgrpBasMaturityN1100(Cfagit cfagitVo){

        if( MdaUtils.compareTo(cfagitVo.getTransName(),"GITOPN") == 0 || MdaUtils.compareTo(cfagitVo.getTransName(),"GITODZ") == 0 )
        {
            if( cfagitService.isCheckField(cfagitVo.getRecgrp().getBas().getAcp(),cfagitVo.getRecgrp().getBas().getActiontype()) )
            {
                if( ! MdaUtils.isEmpty(cfagitVo.getRecgrp().getBas().getMaturity()) )
                {
                    if( Dates.diff(cfagitVo.getRecgrp().getBas().getMaturity(),Dates.today()) < 0 )
                    {
                        //ctx.setFieldError(this,"recgrp.bas.maturity",MdaUtils.getI18NString("cfagit","CT000002"));
                        return ValidResult.build(false,"到期日不能早于当天");
                    }
                }
            }
        }
        return null;
    }



    /**
     *   source:ebap.0009.script
     */
    @Validate(path="cfagit.recgrp.bas.guarantype")
    public ValidResult checkRecgrpBasGuarantypeN1000(Cfagit cfagitVo){

        if( cfagitService.isCheckField(cfagitVo.getRecgrp().getBas().getAcp(),cfagitVo.getRecgrp().getBas().getActiontype()) )
        {
            if( MdaUtils.isEmpty(cfagitVo.getRecgrp().getBas().getGuarantype()) )
            {
                //Platform.errorMandatory();
//                return ValidResult.build(false, I18nUtil.getMessage("0022"));
                return ValidResult.build(false, "此字段为必输项！");
            }
        }
        return null;
    }


    /**
     *   source:cfagit.0032.script
     */
    @Validate(path="cfagit.recgrp.bas.guedcouncode")
    public ValidResult checkRecpPubpGuedcouncodeN1200(Cfagit cfagitVo){

        //对外担保："被担保人国别/地区代码"由选填项调整为必填项
        if( cfagitService.isCheckField(cfagitVo.getRecgrp().getBas().getAcp(),cfagitVo.getRecgrp().getBas().getActiontype()) )
        {
            if( MdaUtils.isEmpty(cfagitVo.getRecgrp().getBas().getGuedcouncode()) )
            {
                return ValidResult.build(false, "必输项");
            }
            Bopcty bopcty =bopctyMapper.queryBopCod(cfagitVo.getRecgrp().getBas().getGuedcouncode());
            if(MdaUtils.isEmpty(bopcty)){
                return ValidResult.build(false, "请输入正确的被担保人国别");
            }
        }

        return null;
    }


    /**
     *   source:ebap.0010.script
     */
//    @Check(value={"pubp.bename","pubp.benamen"},order=1000)
    @Validate(path = "cfagit.recgrp.bas.bename")
    public ValidResult checkBennamN1000(Cfagit cfagitVo){

        if( cfagitService.isCheckField(cfagitVo.getRecgrp().getBas().getAcp(),cfagitVo.getRecgrp().getBas().getActiontype()) )
        {
            if( MdaUtils.isEmpty(cfagitVo.getRecgrp().getBas().getBename()) && MdaUtils.isEmpty(cfagitVo.getRecgrp().getBas().getBenamen()) )
            {
                //ctx.setFieldError(this,"pubp.bename",MdaUtils.getI18NString("ebap","CT000001"));
                return ValidResult.build(false, "受益人中文名称和英文名称至少填写一个！");
            }
        }
        return null;
    }

    @Validate(path="cfagit.recgrp.bas.bencountrycode")
    public ValidResult checkPubpBencountrycodeN1000(Cfagit cfagitVo){

        //刘文青2017-10要求资本项目-对外担保-签约信息，“受益人国别/地区”和“被担保人国别/地区”允许为CHN，取消各种控制条件。
        if( cfagitService.isCheckField(cfagitVo.getRecgrp().getBas().getAcp(),cfagitVo.getRecgrp().getBas().getActiontype()) )
        {
            if( MdaUtils.isEmpty(cfagitVo.getRecgrp().getBas().getBencountrycode()) )
            {
                //Platform.errorMandatory();
                return ValidResult.build(false, "必输项");
            }
            Bopcty bopcty =bopctyMapper.queryBopCod(cfagitVo.getRecgrp().getBas().getBencountrycode());
            if(MdaUtils.isEmpty(bopcty)){
                return ValidResult.build(false, "请输入正确的受益人国别");
            }
        }

        /**
         else
         if PUBP\\BENCOUNTRYCODE == "CHN" then
         if RECGRP\\BAS\\GUEDTYPE == "20001403" then
         else
         ErrorOnField( PUBP\\BENCOUNTRYCODE, 'L0000006' )
         endif
         endif
         endif
         endi**/

        return null;
    }

    /**
     *   source:ebap.0013.script
     */
//    @Check(value={"pubp.guedname","pubp.guednamen"},order=1000)
    @Validate(path = "cfagit.recgrp.bas.guedname")
    public ValidResult checkGuednamN1000(Cfagit cfagitVo){

        if( cfagitService.isCheckField(cfagitVo.getRecgrp().getBas().getAcp(),cfagitVo.getRecgrp().getBas().getActiontype()) )
        {
            if( MdaUtils.isEmpty(cfagitVo.getRecgrp().getBas().getGuedname()) && MdaUtils.isEmpty(cfagitVo.getRecgrp().getBas().getGuednamen()) )
            {
                //ctx.setFieldError(this,"pubp.guedname",MdaUtils.getI18NString("ebap","CT000002"));
                return ValidResult.build(false,"被担保人中文名称和英文名称至少填写一个！");
            }
        }
        return null;
    }

    /**
     *   source:ebap.0014.script
     */
    @Validate(path="cfagit.recgrp.bas.guedtype")
    public ValidResult checkRecgrpBasGuedtypeN1000(Cfagit cfagitVo){

        if( cfagitService.isCheckField(cfagitVo.getRecgrp().getBas().getAcp(),cfagitVo.getRecgrp().getBas().getActiontype()) )
        {
            if( MdaUtils.isEmpty(cfagitVo.getRecgrp().getBas().getGuedtype()) )
            {
                //Platform.errorMandatory();
//                return ValidResult.build(false, I18nUtil.getMessage("0022"));
                return ValidResult.build(false, "此字段为必输项！");
            }
        }
        return null;
    }

    /**
     *   source:ebap.0019.script
     */
    @Validate(path="recgrp.bas.actiondesc")
    public ValidResult checkRecgrpBasActiondescN1000(Cfagit cfagitVo){

        if( MdaUtils.compareTo(cfagitVo.getRecgrp().getBas().getActiontype(),"D") == 0 )
        {
            if( MdaUtils.isEmpty(cfagitVo.getRecgrp().getBas().getActiondesc()) )
            {
                //Platform.errorMandatory();
//                return ValidResult.build(false, I18nUtil.getMessage("0022"));
                return ValidResult.build(false, "此字段为必输项！");
            }
        }
        return null;
    }

    /**
     *   source:ebap.0020.script
     */
//    @Check(value={"pubp.guappname","pubp.guappnamen"},order=1000)
    @Validate(path = "cfagit.recgrp.bas.guappname")
    public ValidResult checkGuappnamN1000(Cfagit cfagitVo){

        if( cfagitService.isCheckField(cfagitVo.getRecgrp().getBas().getAcp(),cfagitVo.getRecgrp().getBas().getActiontype()) )
        {
            if( MdaUtils.isEmpty(cfagitVo.getRecgrp().getBas().getGuappname()) && MdaUtils.isEmpty(cfagitVo.getRecgrp().getBas().getGuappnamen()) )
            {
                //ctx.setFieldError(this,"pubp.guappname",MdaUtils.getI18NString("ebap","CT000003"));
                return ValidResult.build(false,"担保申请人中文名称和英文名称至少填写一个！");
            }
        }
        return null;
    }

    /**
     *   source:ebap.0021.script
     */
//    @Check(value={"pubp.bencountrycode","pubp.guedcouncode"},order=1100)
    @Validate(path = "cfagit.recgrp.bas.bencountrycode")
    public ValidResult checkCountrycodeN1100(Cfagit cfagitVo){

        //刘文青2017-10要求资本项目-对外担保-签约信息，“受益人国别/地区”和“被担保人国别/地区”允许为CHN，取消各种控制条件。
        /**
         if isCheckField( PUBP\\ACP, RECGRP\\BAS\\ACTIONTYPE ) then
         if PUBP\\BENCOUNTRYCODE == "CHN" then
         if PUBP\\GUEDCOUNCODE == "CHN" then
         $guedtype = RECGRP\\BAS\\GUEDTYPE
         $error = ErrorCode
         // 被担保人类型为“境内银行离岸部”时，“担保受益人”与“被担保人”可以同时为CHN
         if $guedtype == "20001403" then
         else
         ErrorOnField( PUBP\\BENCOUNTRYCODE, 'L0000005' )
         endif
         endif
         endif
         endi**/


        return null;
    }

    /**
     *   source:ebap.0024.script
     */
    @Validate(path="cfagit.recgrp.bas.maindebtamount")
    public ValidResult checkRecgrpBasMaindebtamountN1000(Cfagit cfagitVo){

        if( cfagitService.isCheckField(cfagitVo.getRecgrp().getBas().getAcp(),cfagitVo.getRecgrp().getBas().getActiontype()) )
        {
            if( MdaUtils.compareTo(cfagitVo.getRecgrp().getBas().getGuarantype(),MdaUtils.getI18NString("ebap","CT000056")) == 0 )
            {
                /**
                 if not IsEmpty then
                 **/
                if( MdaUtils.compareTo(cfagitVo.getRecgrp().getBas().getMaindebtamount(),0)<0 )
                {
                    //ctx.setFieldError(this,"recgrp.bas.maindebtamount",MdaUtils.getI18NString("ebap","CT000007"));
                    return ValidResult.build(false,"主债务金额不能小于0！");
                }
            }
        }
        return null;
    }

    /**
     *   source:ebap.0025.script
     */
    @Validate(path="cfagit.recgrp.bas.bencode")
    public ValidResult checkRecgrpBasBencodeN1000(Cfagit cfagitVo){
        //外管1.2版本升级
        //刘文青要求增加提示信息
        if( cfagitService.isCheckField(cfagitVo.getRecgrp().getBas().getAcp(),cfagitVo.getRecgrp().getBas().getActiontype()) )
        {
            if( MdaUtils.compareTo(cfagitVo.getRecgrp().getBas().getGuarantype(),"1105") != 0 || MdaUtils.compareTo(cfagitVo.getRecgrp().getBas().getMaindebtmanner(),"1") != 0 )
            {
                if( MdaUtils.compareTo(cfagitVo.getRecgrp().getBas().getBentype(),"20001403") == 0 )
                {
                    if( Strings.len(Strings.trim(cfagitVo.getRecgrp().getBas().getBencode())) != 12 )
                    {
                        //ctx.setErrorMessage(MdaUtils.getI18NString("ebap","CT000058"));
                        return ValidResult.build(false,"受益人代码栏位应填写12位金融机构标识码");
                    }
                }
            }
        }
        return null;
    }

    /**
     *   source:ebap.0026.script
     */
    @Validate(path="cfagit.recgrp.bas.guedcode")
    public ValidResult checkRecgrpBasGuedcodeN1000(Cfagit cfagitVo){
        return null;
    }

    /**
     *   source:ebap.0031.script
     */
//    @Check(target="pubp.guedcouncode",order=1000)
    @Validate(path = "cfagit.recgrp.bas.guedcouncode")
    public ValidResult checkPubpGuedcouncodeN1000(Cfagit cfagitVo){

        //刘文青2017-10要求资本项目-对外担保-签约信息，“受益人国别/地区”和“被担保人国别/地区”允许为CHN，取消各种控制条件。
        /**
         if isCheckField( PUBP\\ACP, RECGRP\\BAS\\ACTIONTYPE ) then
         if IsEmpty then
         else
         if PUBP\\GUEDCOUNCODE == "CHN" then
         if RECGRP\\BAS\\GUEDTYPE == "20001403" or Mid( RECGRP\\BAS\\GUEDTYPE, 1, 1 ) == "1" then
         else
         ErrorOnField( PUBP\\GUEDCOUNCODE, 'L0000016' )
         endif
         endif
         endif
         endi**/


        return null;
    }

    /**
     *   source:ebap.0032.script
     */
    @Validate(path="cfagit.recgrp.bas.maindebtmanner")
    public ValidResult checkRecgrpBasMaindebtmannerN1000(Cfagit cfagitVo){

        String guarantype = cfagitVo.getRecgrp().getBas().getGuarantype();
        if( cfagitService.isCheckField(cfagitVo.getRecgrp().getBas().getAcp(),cfagitVo.getRecgrp().getBas().getActiontype()) )
        {
            if( MdaUtils.compareTo(guarantype,"1105") == 0 && MdaUtils.isEmpty(cfagitVo.getRecgrp().getBas().getMaindebtmanner()) )
            {
                //Platform.errorMandatory();
//                return ValidResult.build(false, I18nUtil.getMessage("0022"));
                return ValidResult.build(false, "此字段为必输项！");
            }
        }
        return null;
    }

    /**
     *   source:ebap.0034.script
     */
    @Validate(path="cfagit.recgrp.bas.maindebtcondate")
    public ValidResult checkRecgrpBasMaindebtcondateN1000(Cfagit cfagitVo){

        if( cfagitService.isCheckField(cfagitVo.getRecgrp().getBas().getAcp(),cfagitVo.getRecgrp().getBas().getActiontype()) )
        {
            if( MdaUtils.compareTo(cfagitVo.getRecgrp().getBas().getGuarantype(),MdaUtils.getI18NString("ebap","CT000034")) == 0 )
            {
                if( MdaUtils.isEmpty(cfagitVo.getRecgrp().getBas().getMaindebtcondate()) )
                {
                    //Platform.errorMandatory();
//                    return ValidResult.build(false, I18nUtil.getMessage("0022"));
                    return ValidResult.build(false, "此字段为必输项！");
                }
            }
        }
        return null;
    }

    /**
     *   source:ebap.0035.script
     */
    @Validate(path="cfagit.recgrp.bas.maindebtmaturity")
    public ValidResult checkRecgrpBasMaindebtmaturityN1000(Cfagit cfagitVo){
        if( cfagitService.isCheckField(cfagitVo.getRecgrp().getBas().getAcp(),cfagitVo.getRecgrp().getBas().getActiontype()) )
        {
            if( MdaUtils.compareTo(cfagitVo.getRecgrp().getBas().getGuarantype(),MdaUtils.getI18NString("ebap","CT000035")) == 0 )
            {
                if( MdaUtils.isEmpty(cfagitVo.getRecgrp().getBas().getMaindebtmaturity()) )
                {
                    //Platform.errorMandatory();
//                    return ValidResult.build(false, I18nUtil.getMessage("0022"));
                    return ValidResult.build(false, "此字段为必输项！");
                }
            }
        }
        return null;
    }

    /**
     *   source:ebap.0036.script
     */
    @Validate(path="cfagit.recgrp.bas.maindebtdate")
    public ValidResult checkRecgrpBasMaindebtdateN1000(Cfagit cfagitVo){
        if( cfagitService.isCheckField(cfagitVo.getRecgrp().getBas().getAcp(),cfagitVo.getRecgrp().getBas().getActiontype()) )
        {
            if( MdaUtils.compareTo(cfagitVo.getRecgrp().getBas().getGuarantype(),MdaUtils.getI18NString("ebap","CT000036")) == 0 )
            {
                if( MdaUtils.isEmpty(cfagitVo.getRecgrp().getBas().getMaindebtdate()) )
                {
                    //Platform.errorMandatory();
//                    return ValidResult.build(false, I18nUtil.getMessage("0022"));
                    return ValidResult.build(false, "此字段为必输项！");
                }
            }
        }
        return null;
    }

    /**
     *   source:ebap.0037.script
     */
    @Validate(path="cfagit.recgrp.bas.intrat")
    public ValidResult checkRecgrpBasIntratN1000(Cfagit cfagitVo){
        if( cfagitService.isCheckField(cfagitVo.getRecgrp().getBas().getAcp(),cfagitVo.getRecgrp().getBas().getActiontype()) )
        {
            if( MdaUtils.compareTo(cfagitVo.getRecgrp().getBas().getGuarantype(),MdaUtils.getI18NString("ebap","CT000037")) == 0 )
            {
                if( MdaUtils.isEmpty(cfagitVo.getRecgrp().getBas().getIntrat()) )
                {
                    //Platform.errorMandatory();
//                    return ValidResult.build(false, I18nUtil.getMessage("0022"));
                    return ValidResult.build(false, "此字段为必输项！");
                }
            }
        }
        return null;
    }

    /**
     *   source:ebap.0038.script
     */
    @Validate(path="cfagit.recgrp.bas.guedindustrycode")
    public ValidResult checkRecgrpBasGuedindustrycodeN1000(Cfagit cfagitVo){
        if( cfagitService.isCheckField(cfagitVo.getRecgrp().getBas().getAcp(),cfagitVo.getRecgrp().getBas().getActiontype()) )
        {
            if( MdaUtils.isEmpty(cfagitVo.getRecgrp().getBas().getGuedindustrycode()) )
            {
                //Platform.errorMandatory();
//                return ValidResult.build(false, I18nUtil.getMessage("0022"));
                return ValidResult.build(false, "此字段为必输项！");
            }
        }
        return null;
    }

    /**
     *   source:ebap.0039.script
     */
//    @Check(value={"pubp.guenam","pubp.guenamen"},order=1000)
    @Validate(path = "cfagit.recgrp.bas.guedparecompname")
    public ValidResult checkGuednam1N1000(Cfagit cfagitVo){

        if( MdaUtils.compareTo(cfagitVo.getRecgrp().getBas().getGuarantype(),MdaUtils.getI18NString("ebap","CT000039")) == 0 )
        {
            if( cfagitService.isCheckField(cfagitVo.getRecgrp().getBas().getAcp(),cfagitVo.getRecgrp().getBas().getActiontype()) )
            {
                if( MdaUtils.isEmpty(cfagitVo.getRecgrp().getBas().getGuedparecompname()) && MdaUtils.isEmpty(cfagitVo.getRecgrp().getBas().getGuedparecompnamen()) )
                {
                    //ctx.setFieldError(this,"pubp.guenam",MdaUtils.getI18NString("ebap","CT000038"));
                    return ValidResult.build(false, "被担保人境内母公司中文名称和英文名称至少填写1个！");
                }
            }
        }
        return null;
    }

    /**
     *   source:ebap.0040.script
     */
    @Validate(path="cfagit.recgrp.bas.cgyn")
    public ValidResult checkRecgrpBasCgynN1000(Cfagit cfagitVo){
        if( cfagitService.isCheckField(cfagitVo.getRecgrp().getBas().getAcp(),cfagitVo.getRecgrp().getBas().getActiontype()) )
        {
            if( MdaUtils.isEmpty(cfagitVo.getRecgrp().getBas().getCgyn()) )
            {
                //Platform.errorMandatory();
//                return ValidResult.build(false, I18nUtil.getMessage("0022"));
                return ValidResult.build(false, "此字段为必输项！");
            }
        }
        return null;
    }

    /**
     *   source:ebap.0041.script
     */
    @Validate(path="cfagit.recgrp.bas.cgcode")
    public ValidResult checkRecgrpBasCgcodeN1000(Cfagit cfagitVo){

        if( cfagitService.isCheckField(cfagitVo.getRecgrp().getBas().getAcp(),cfagitVo.getRecgrp().getBas().getActiontype()) )
        {
            if( MdaUtils.compareTo(cfagitVo.getRecgrp().getBas().getCgyn(),MdaUtils.getI18NString("ebap","CT000041")) == 0 )
            {
                if( MdaUtils.isEmpty(cfagitVo.getRecgrp().getBas().getCgcode()) )
                {
                    //Platform.errorMandatory();
//                    return ValidResult.build(false, I18nUtil.getMessage("0022"));
                    return ValidResult.build(false, "此字段为必输项！");
                }
            }
        }
        return null;
    }

    /**
     *   source:ebap.0042.script
     */
//    @Check(value={"pubp.cgname","pubp.cgnamen"},order=1000)
    @Validate(path = "cfagit.recgrp.bas.cgname")
    public ValidResult checkCgname1N1000(Cfagit cfagitVo){

        if( cfagitService.isCheckField(cfagitVo.getRecgrp().getBas().getAcp(),cfagitVo.getRecgrp().getBas().getActiontype()) )
        {
            if( MdaUtils.compareTo(cfagitVo.getRecgrp().getBas().getCgyn(),MdaUtils.getI18NString("ebap","CT000043")) == 0 )
            {
                if( MdaUtils.isEmpty(cfagitVo.getRecgrp().getBas().getCgname()) && MdaUtils.isEmpty(cfagitVo.getRecgrp().getBas().getCgnamen()) )
                {
                    //ctx.setFieldError(this,"pubp.cgname",MdaUtils.getI18NString("ebap","CT000042"));
                    return ValidResult.build(false, "当\"是否有反担保人\"为\"是\"时，反担保人中文名称和英文名称至少填写1个！");
                }
            }
        }
        return null;
    }

    /**
     *   source:ebap.0043.script
     */
    @Validate(path="cfagit.recgrp.bas.thyn")
    public ValidResult checkRecgrpBasThynN1000(Cfagit cfagitVo){
        if( cfagitService.isCheckField(cfagitVo.getRecgrp().getBas().getAcp(),cfagitVo.getRecgrp().getBas().getActiontype()) )
        {
            if( MdaUtils.isEmpty(cfagitVo.getRecgrp().getBas().getThyn()) )
            {
               // Platform.errorMandatory();
//                return ValidResult.build(false, I18nUtil.getMessage("0022"));
                return ValidResult.build(false, "此字段为必输项！");
            }
        }
        return null;
    }

    /**
     *   source:ebap.0044.script
     */
    @Validate(path="cfagit.recgrp.bas.thje")
    public ValidResult checkRecgrpBasThjeN1000(Cfagit cfagitVo){

        if( cfagitService.isCheckField(cfagitVo.getRecgrp().getBas().getAcp(),cfagitVo.getRecgrp().getBas().getActiontype()) )
        {
            if( MdaUtils.compareTo(cfagitVo.getRecgrp().getBas().getThyn(),MdaUtils.getI18NString("ebap","CT000044")) == 0 && MdaUtils.compareTo(cfagitVo.getRecgrp().getBas().getThje(),0)<0 )
            {
                //ctx.setErrorMessage(MdaUtils.getI18NString("ebap","CT000045"));
                return ValidResult.build(false, "当是否调回境内选择\"是\"时，必填项，金额大于等于0");
            }
        }
        return null;
    }

    /**
     *   source:ebap.0045.script
     */
    @Validate(path="cfagit.recgrp.bas.jwyn")
    public ValidResult checkRecgrpBasJwynN1000(Cfagit cfagitVo){

        if( cfagitService.isCheckField(cfagitVo.getRecgrp().getBas().getAcp(),cfagitVo.getRecgrp().getBas().getActiontype()) )
        {
            if( MdaUtils.isEmpty(cfagitVo.getRecgrp().getBas().getJwyn()) )
            {
                //Platform.errorMandatory();
//                return ValidResult.build(false, I18nUtil.getMessage("0022"));
                return ValidResult.build(false, "此字段为必输项！");
            }
        }
        return null;
    }

    /**
     *   source:ebap.0048.script
     */
    @Validate(path="cfagit.recgrp.bas.issuecountrycode")
    public ValidResult checkRecgrpBasIssuecountrycodeN1000(Cfagit cfagitVo){
        if( MdaUtils.compareTo(cfagitVo.getRecgrp().getBas().getGuarantype(),MdaUtils.getI18NString("ebap","CT000048")) == 0 )
        {
            if( MdaUtils.isEmpty(cfagitVo.getRecgrp().getBas().getIssuecountrycode()) )
            {
                //Platform.errorMandatory();
//                return ValidResult.build(false, I18nUtil.getMessage("0022"));
                return ValidResult.build(false, "此字段为必输项！");
            }
        }
        if(StringUtils.isNotEmpty(cfagitVo.getRecgrp().getBas().getIssuecountrycode())){
            Bopcty bopcty =bopctyMapper.queryBopCod(cfagitVo.getRecgrp().getBas().getIssuecountrycode());
            if(MdaUtils.isEmpty(bopcty)){
                return ValidResult.build(false, "请输入正确的发行/上市国家与地区");
            }
        }
        return null;
    }

//    /**
//     *   source:ebap.0049.script
//     */
//    @Check(value={"pubp.founds1","pubp.founds2","pubp.founds3","pubp.founds4","pubp.founds5","pubp.founds6","pubp.founds7","pubp.founds8"},order=1000)
//    public boolean checkZjytN1000(){
//        IContext ctx = MdaEnv.getContext();
//
//        String fou1 = this.getPubp().getFounds1();
//        String fou2 = this.getPubp().getFounds2();
//        String fou3 = this.getPubp().getFounds3();
//        String fou4 = this.getPubp().getFounds4();
//        String fou5 = this.getPubp().getFounds5();
//        String fou6 = this.getPubp().getFounds6();
//        String fou7 = this.getPubp().getFounds7();
//        String fou8 = this.getPubp().getFounds8();
//        if( Platform.isCheckField(this.getPubp().getAcp(),this.getRecgrp().getBas().getActiontype()) )
//        {
//            if( MdaUtils.compareTo(this.getRecgrp().getBas().getGuarantype(),MdaUtils.getI18NString("ebap","CT000050")) == 0 && MdaUtils.isEmpty(fou1) && MdaUtils.isEmpty(fou2) && MdaUtils.isEmpty(fou3) && MdaUtils.isEmpty(fou4) && MdaUtils.isEmpty(fou5) && MdaUtils.isEmpty(fou6) && MdaUtils.isEmpty(fou7) && MdaUtils.isEmpty(fou8) )
//            {
//                ctx.setErrorMessage(MdaUtils.getI18NString("ebap","CT000051"));
//            }
//        }
//
//
//        return true;
//    }
//

        /**
     *   source:ebap.0049.script
     */
//    @Check(value={"pubp.founds1","pubp.founds2","pubp.founds3","pubp.founds4","pubp.founds5","pubp.founds6","pubp.founds7","pubp.founds8"},order=1000)
    @Validate(path = "cfagit.recgrp.bas.founds1")
    public ValidResult checkZjytN1000founds1(Cfagit cfagitVo){

        String fou1 = cfagitVo.getRecgrp().getBas().getFounds1();
        String fou2 = cfagitVo.getRecgrp().getBas().getFounds2();
        String fou3 = cfagitVo.getRecgrp().getBas().getFounds3();
        String fou4 = cfagitVo.getRecgrp().getBas().getFounds4();
        String fou5 = cfagitVo.getRecgrp().getBas().getFounds5();
        String fou6 = cfagitVo.getRecgrp().getBas().getFounds6();
        String fou7 = cfagitVo.getRecgrp().getBas().getFounds7();
        String fou8 = cfagitVo.getRecgrp().getBas().getFounds8();
        if( cfagitService.isCheckField(cfagitVo.getRecgrp().getBas().getAcp(),cfagitVo.getRecgrp().getBas().getActiontype()) )
        {
           if( MdaUtils.compareTo(cfagitVo.getRecgrp().getBas().getGuarantype(),MdaUtils.getI18NString("ebap","CT000050")) == 0 && MdaUtils.isEmpty(fou1) && MdaUtils.isEmpty(fou2) && MdaUtils.isEmpty(fou3) && MdaUtils.isEmpty(fou4) && MdaUtils.isEmpty(fou5) && MdaUtils.isEmpty(fou6) && MdaUtils.isEmpty(fou7) && MdaUtils.isEmpty(fou8) )
            {
                //ctx.setErrorMessage(MdaUtils.getI18NString("ebap","CT000051"));
                return ValidResult.build(false, "当担保类型选择为\"为境外发债担保\"时，必选项，可多选");
            }
        }
        return null;
    }

    /**
     *   source:ebap.0049.script
     */
//    @Check(value={"pubp.founds1","pubp.founds2","pubp.founds3","pubp.founds4","pubp.founds5","pubp.founds6","pubp.founds7","pubp.founds8"},order=1000)
    @Validate(path = "cfagit.recgrp.bas.founds2")
    public ValidResult checkZjytN1000founds2(Cfagit cfagitVo){

        String fou1 = cfagitVo.getRecgrp().getBas().getFounds1();
        String fou2 = cfagitVo.getRecgrp().getBas().getFounds2();
        String fou3 = cfagitVo.getRecgrp().getBas().getFounds3();
        String fou4 = cfagitVo.getRecgrp().getBas().getFounds4();
        String fou5 = cfagitVo.getRecgrp().getBas().getFounds5();
        String fou6 = cfagitVo.getRecgrp().getBas().getFounds6();
        String fou7 = cfagitVo.getRecgrp().getBas().getFounds7();
        String fou8 = cfagitVo.getRecgrp().getBas().getFounds8();
        if( cfagitService.isCheckField(cfagitVo.getRecgrp().getBas().getAcp(),cfagitVo.getRecgrp().getBas().getActiontype()) )
        {
            if( MdaUtils.compareTo(cfagitVo.getRecgrp().getBas().getGuarantype(),MdaUtils.getI18NString("ebap","CT000050")) == 0 && MdaUtils.isEmpty(fou1) && MdaUtils.isEmpty(fou2) && MdaUtils.isEmpty(fou3) && MdaUtils.isEmpty(fou4) && MdaUtils.isEmpty(fou5) && MdaUtils.isEmpty(fou6) && MdaUtils.isEmpty(fou7) && MdaUtils.isEmpty(fou8) )
            {
                //ctx.setErrorMessage(MdaUtils.getI18NString("ebap","CT000051"));
                return ValidResult.build(false, "当担保类型选择为\"为境外发债担保\"时，必选项，可多选");
            }
        }
        return null;
    }

    /**
     *   source:ebap.0049.script
     */
//    @Check(value={"pubp.founds1","pubp.founds2","pubp.founds3","pubp.founds4","pubp.founds5","pubp.founds6","pubp.founds7","pubp.founds8"},order=1000)
    @Validate(path = "cfagit.recgrp.bas.founds3")
    public ValidResult checkZjytN1000founds3(Cfagit cfagitVo){

        String fou1 = cfagitVo.getRecgrp().getBas().getFounds1();
        String fou2 = cfagitVo.getRecgrp().getBas().getFounds2();
        String fou3 = cfagitVo.getRecgrp().getBas().getFounds3();
        String fou4 = cfagitVo.getRecgrp().getBas().getFounds4();
        String fou5 = cfagitVo.getRecgrp().getBas().getFounds5();
        String fou6 = cfagitVo.getRecgrp().getBas().getFounds6();
        String fou7 = cfagitVo.getRecgrp().getBas().getFounds7();
        String fou8 = cfagitVo.getRecgrp().getBas().getFounds8();
        if( cfagitService.isCheckField(cfagitVo.getRecgrp().getBas().getAcp(),cfagitVo.getRecgrp().getBas().getActiontype()) )
        {
            if( MdaUtils.compareTo(cfagitVo.getRecgrp().getBas().getGuarantype(),MdaUtils.getI18NString("ebap","CT000050")) == 0 && MdaUtils.isEmpty(fou1) && MdaUtils.isEmpty(fou2) && MdaUtils.isEmpty(fou3) && MdaUtils.isEmpty(fou4) && MdaUtils.isEmpty(fou5) && MdaUtils.isEmpty(fou6) && MdaUtils.isEmpty(fou7) && MdaUtils.isEmpty(fou8) )
            {
                //ctx.setErrorMessage(MdaUtils.getI18NString("ebap","CT000051"));
                return ValidResult.build(false, "当担保类型选择为\"为境外发债担保\"时，必选项，可多选");
            }
        }
        return null;
    }

    /**
     *   source:ebap.0049.script
     */
//    @Check(value={"pubp.founds1","pubp.founds2","pubp.founds3","pubp.founds4","pubp.founds5","pubp.founds6","pubp.founds7","pubp.founds8"},order=1000)
    @Validate(path = "cfagit.recgrp.bas.founds4")
    public ValidResult checkZjytN1000founds4(Cfagit cfagitVo){

        String fou1 = cfagitVo.getRecgrp().getBas().getFounds1();
        String fou2 = cfagitVo.getRecgrp().getBas().getFounds2();
        String fou3 = cfagitVo.getRecgrp().getBas().getFounds3();
        String fou4 = cfagitVo.getRecgrp().getBas().getFounds4();
        String fou5 = cfagitVo.getRecgrp().getBas().getFounds5();
        String fou6 = cfagitVo.getRecgrp().getBas().getFounds6();
        String fou7 = cfagitVo.getRecgrp().getBas().getFounds7();
        String fou8 = cfagitVo.getRecgrp().getBas().getFounds8();
        if( cfagitService.isCheckField(cfagitVo.getRecgrp().getBas().getAcp(),cfagitVo.getRecgrp().getBas().getActiontype()) )
        {
            if( MdaUtils.compareTo(cfagitVo.getRecgrp().getBas().getGuarantype(),MdaUtils.getI18NString("ebap","CT000050")) == 0 && MdaUtils.isEmpty(fou1) && MdaUtils.isEmpty(fou2) && MdaUtils.isEmpty(fou3) && MdaUtils.isEmpty(fou4) && MdaUtils.isEmpty(fou5) && MdaUtils.isEmpty(fou6) && MdaUtils.isEmpty(fou7) && MdaUtils.isEmpty(fou8) )
            {
                //ctx.setErrorMessage(MdaUtils.getI18NString("ebap","CT000051"));
                return ValidResult.build(false, "当担保类型选择为\"为境外发债担保\"时，必选项，可多选");
            }
        }
        return null;
    }

    /**
     *   source:ebap.0049.script
     */
//    @Check(value={"pubp.founds1","pubp.founds2","pubp.founds3","pubp.founds4","pubp.founds5","pubp.founds6","pubp.founds7","pubp.founds8"},order=1000)
    @Validate(path = "cfagit.recgrp.bas.founds5")
    public ValidResult checkZjytN1000founds5(Cfagit cfagitVo){

        String fou1 = cfagitVo.getRecgrp().getBas().getFounds1();
        String fou2 = cfagitVo.getRecgrp().getBas().getFounds2();
        String fou3 = cfagitVo.getRecgrp().getBas().getFounds3();
        String fou4 = cfagitVo.getRecgrp().getBas().getFounds4();
        String fou5 = cfagitVo.getRecgrp().getBas().getFounds5();
        String fou6 = cfagitVo.getRecgrp().getBas().getFounds6();
        String fou7 = cfagitVo.getRecgrp().getBas().getFounds7();
        String fou8 = cfagitVo.getRecgrp().getBas().getFounds8();
        if( cfagitService.isCheckField(cfagitVo.getRecgrp().getBas().getAcp(),cfagitVo.getRecgrp().getBas().getActiontype()) )
        {
            if( MdaUtils.compareTo(cfagitVo.getRecgrp().getBas().getGuarantype(),MdaUtils.getI18NString("ebap","CT000050")) == 0 && MdaUtils.isEmpty(fou1) && MdaUtils.isEmpty(fou2) && MdaUtils.isEmpty(fou3) && MdaUtils.isEmpty(fou4) && MdaUtils.isEmpty(fou5) && MdaUtils.isEmpty(fou6) && MdaUtils.isEmpty(fou7) && MdaUtils.isEmpty(fou8) )
            {
                //ctx.setErrorMessage(MdaUtils.getI18NString("ebap","CT000051"));
                return ValidResult.build(false, "当担保类型选择为\"为境外发债担保\"时，必选项，可多选");
            }
        }
        return null;
    }

    /**
     *   source:ebap.0049.script
     */
//    @Check(value={"pubp.founds1","pubp.founds2","pubp.founds3","pubp.founds4","pubp.founds5","pubp.founds6","pubp.founds7","pubp.founds8"},order=1000)
    @Validate(path = "cfagit.recgrp.bas.founds6")
    public ValidResult checkZjytN1000founds6(Cfagit cfagitVo){

        String fou1 = cfagitVo.getRecgrp().getBas().getFounds1();
        String fou2 = cfagitVo.getRecgrp().getBas().getFounds2();
        String fou3 = cfagitVo.getRecgrp().getBas().getFounds3();
        String fou4 = cfagitVo.getRecgrp().getBas().getFounds4();
        String fou5 = cfagitVo.getRecgrp().getBas().getFounds5();
        String fou6 = cfagitVo.getRecgrp().getBas().getFounds6();
        String fou7 = cfagitVo.getRecgrp().getBas().getFounds7();
        String fou8 = cfagitVo.getRecgrp().getBas().getFounds8();
        if( cfagitService.isCheckField(cfagitVo.getRecgrp().getBas().getAcp(),cfagitVo.getRecgrp().getBas().getActiontype()) )
        {
            if( MdaUtils.compareTo(cfagitVo.getRecgrp().getBas().getGuarantype(),MdaUtils.getI18NString("ebap","CT000050")) == 0 && MdaUtils.isEmpty(fou1) && MdaUtils.isEmpty(fou2) && MdaUtils.isEmpty(fou3) && MdaUtils.isEmpty(fou4) && MdaUtils.isEmpty(fou5) && MdaUtils.isEmpty(fou6) && MdaUtils.isEmpty(fou7) && MdaUtils.isEmpty(fou8) )
            {
                //ctx.setErrorMessage(MdaUtils.getI18NString("ebap","CT000051"));
                return ValidResult.build(false, "当担保类型选择为\"为境外发债担保\"时，必选项，可多选");
            }
        }
        return null;
    }

    /**
     *   source:ebap.0049.script
     */
//    @Check(value={"pubp.founds1","pubp.founds2","pubp.founds3","pubp.founds4","pubp.founds5","pubp.founds6","pubp.founds7","pubp.founds8"},order=1000)
    @Validate(path = "cfagit.recgrp.bas.founds7")
    public ValidResult checkZjytN1000founds7(Cfagit cfagitVo){

        String fou1 = cfagitVo.getRecgrp().getBas().getFounds1();
        String fou2 = cfagitVo.getRecgrp().getBas().getFounds2();
        String fou3 = cfagitVo.getRecgrp().getBas().getFounds3();
        String fou4 = cfagitVo.getRecgrp().getBas().getFounds4();
        String fou5 = cfagitVo.getRecgrp().getBas().getFounds5();
        String fou6 = cfagitVo.getRecgrp().getBas().getFounds6();
        String fou7 = cfagitVo.getRecgrp().getBas().getFounds7();
        String fou8 = cfagitVo.getRecgrp().getBas().getFounds8();
        if( cfagitService.isCheckField(cfagitVo.getRecgrp().getBas().getAcp(),cfagitVo.getRecgrp().getBas().getActiontype()) )
        {
            if( MdaUtils.compareTo(cfagitVo.getRecgrp().getBas().getGuarantype(),MdaUtils.getI18NString("ebap","CT000050")) == 0 && MdaUtils.isEmpty(fou1) && MdaUtils.isEmpty(fou2) && MdaUtils.isEmpty(fou3) && MdaUtils.isEmpty(fou4) && MdaUtils.isEmpty(fou5) && MdaUtils.isEmpty(fou6) && MdaUtils.isEmpty(fou7) && MdaUtils.isEmpty(fou8) )
            {
                //ctx.setErrorMessage(MdaUtils.getI18NString("ebap","CT000051"));
                return ValidResult.build(false, "当担保类型选择为\"为境外发债担保\"时，必选项，可多选");
            }
        }
        return null;
    }

    /**
     *   source:ebap.0049.script
     */
//    @Check(value={"pubp.founds1","pubp.founds2","pubp.founds3","pubp.founds4","pubp.founds5","pubp.founds6","pubp.founds7","pubp.founds8"},order=1000)
    @Validate(path = "cfagit.recgrp.bas.founds8")
    public ValidResult checkZjytN1000founds8(Cfagit cfagitVo){

        String fou1 = cfagitVo.getRecgrp().getBas().getFounds1();
        String fou2 = cfagitVo.getRecgrp().getBas().getFounds2();
        String fou3 = cfagitVo.getRecgrp().getBas().getFounds3();
        String fou4 = cfagitVo.getRecgrp().getBas().getFounds4();
        String fou5 = cfagitVo.getRecgrp().getBas().getFounds5();
        String fou6 = cfagitVo.getRecgrp().getBas().getFounds6();
        String fou7 = cfagitVo.getRecgrp().getBas().getFounds7();
        String fou8 = cfagitVo.getRecgrp().getBas().getFounds8();
        if( cfagitService.isCheckField(cfagitVo.getRecgrp().getBas().getAcp(),cfagitVo.getRecgrp().getBas().getActiontype()) )
        {
            if( MdaUtils.compareTo(cfagitVo.getRecgrp().getBas().getGuarantype(),MdaUtils.getI18NString("ebap","CT000050")) == 0 && MdaUtils.isEmpty(fou1) && MdaUtils.isEmpty(fou2) && MdaUtils.isEmpty(fou3) && MdaUtils.isEmpty(fou4) && MdaUtils.isEmpty(fou5) && MdaUtils.isEmpty(fou6) && MdaUtils.isEmpty(fou7) && MdaUtils.isEmpty(fou8) )
            {
                //ctx.setErrorMessage(MdaUtils.getI18NString("ebap","CT000051"));
                return ValidResult.build(false, "当担保类型选择为\"为境外发债担保\"时，必选项，可多选");
            }
        }
        return null;
    }


    /**
     *   source:ebap.0052.script
     */
    @Validate(path="cfagit.recgrp.bas.maindebtcurr")
    public ValidResult checkRecgrpBasMaindebtcurrN1000(Cfagit cfagitVo){
        if( cfagitService.isCheckField(cfagitVo.getRecgrp().getBas().getAcp(),cfagitVo.getRecgrp().getBas().getActiontype()) )
        {
            if( MdaUtils.compareTo(cfagitVo.getRecgrp().getBas().getGuarantype(),MdaUtils.getI18NString("ebap","CT000053")) == 0 )
            {
                if( MdaUtils.isEmpty(cfagitVo.getRecgrp().getBas().getMaindebtcurr()) )
                {
                    //Platform.errorMandatory();
//                    return ValidResult.build(false, I18nUtil.getMessage("0022"));
                    return ValidResult.build(false, "此字段为必输项！");
                }
            }
        }
        return null;
    }

//    /**
//     *   source:ebap.0055.script
//     */
//    @Check(target="pubp.cousel1.guedparecompcode",order=1000)
    @Validate(path = "cfagit.recgrp.bas.guedparecompcode")
    public ValidResult checkPubpCousel1GuedparecompcodeN1000(Cfagit cfagitVo){

        if( cfagitService.isCheckField(cfagitVo.getRecgrp().getBas().getAcp(),cfagitVo.getRecgrp().getBas().getActiontype()) )
        {
            if( MdaUtils.compareTo(cfagitVo.getRecgrp().getBas().getGuarantype(),MdaUtils.getI18NString("ebap","CT000057")) == 0 )
            {
                if( MdaUtils.isEmpty(cfagitVo.getRecgrp().getBas().getGuedparecompcode()) )
                {
                    //Platform.errorMandatory();
//                    return ValidResult.build(false, I18nUtil.getMessage("0022"));
                    return ValidResult.build(false, "此字段为必输项！");
                }
            }
        }


        return null;
    }

    /**
     *   source:ebap.0057.script
     */
//    @Check(target="pubp.cousel1.cgcouncod",order=1000)
    @Validate(path = "cfagit.recgrp.bas.cgcouncode")
    public ValidResult checkPubpCousel1CgcouncodN1000(Cfagit cfagitVo){

        if( cfagitService.isCheckField(cfagitVo.getRecgrp().getBas().getAcp(),cfagitVo.getRecgrp().getBas().getActiontype()) )
        {
            if( MdaUtils.compareTo(cfagitVo.getRecgrp().getBas().getCgyn(),"1") == 0 )
            {
                if( MdaUtils.isEmpty(cfagitVo.getRecgrp().getBas().getCgcouncode()) )
                {
                    //Platform.errorMandatory();
                    return ValidResult.build(false, "必输项");
                }
                Bopcty bopcty =bopctyMapper.queryBopCod(cfagitVo.getRecgrp().getBas().getCgcouncode());
                if(MdaUtils.isEmpty(bopcty)){
                    return ValidResult.build(false, "请输入正确的反担保人国别cod");
                }
            }

        }

        return null;
    }

    /**
     *   增加dcl责任余额的校验
     */
//    @Check(target="pubp.cousel1.cgcouncod",order=1000)
    @Validate(path = "cfagit.recgrp.dcl.basere")
    public ValidResult checkBasereN1000(Cfagit cfagitVo){
        //!担保责任余额校验规则如下：
        //!1.0<=担保责任余额<=保函金额
        //!2.使用modify功能，修改保函金额时，要考虑担保责任余额的变化（文青姐提的需求）
        //!==================================================================
        String path = NULLSTR;
        int pos = 0;
        String basinr = NULLSTR;
        if (MdaUtils.isEmpty(cfagitVo))
            return null;
        if(cfagitVo.getRecgrp().getDcl().size() <= 0)
            return null;
        Ebb ebbTemp = cfagitVo.getRecgrp().getDcl().get(0);
        if (MdaUtils.isEmpty(ebbTemp))
            return ValidResult.build(false, "责任余额信息信息为空");
        BigDecimal guaranamount = cfagitVo.getRecgrp().getBas().getGuaranamount();
        String trnnam = NULLSTR;
        BigDecimal oldguaranamt = cfagitVo.getRecgrp().getOldguaranamt();
        BigDecimal dguaranamt = Decimals.ZERO_SCALE2;
        BigDecimal dbasere = Decimals.ZERO_SCALE2;
        //当前业务交易都是默认acp是确认的 所以这里直接“X”
        if( cfagitService.isCheckField( ebbTemp.getAcp(), ebbTemp.getActiontype() ) )
        {
//            path = Platform.getModuleInfo( this, tdModuleInfoFullName );
//            pos = Platform.pos( path, "\\DCLP" );
            if( MdaUtils.isEmpty(ebbTemp.getBasere()) )
            {
                if( MdaUtils.compareTo( cfagitVo.getTransName() ,  "GITCAN" ) == 0 )
                {
                }
                else
                {
                    // 20240802 检核放开 basinr 为空代表为 新增第一笔余额，必须大于 0
                    if( MdaUtils.isEmpty( cfagitVo.getRecgrp().getBas().getInr() ) )
                    {
                        // 针对维护交易生效
                        trnnam = cfagitVo.getTransName();
                        if( MdaUtils.compareTo( trnnam ,  "EBAADD" ) == 0 ){
                            return ValidResult.build(false, "必填项");
                        }
                    }
                }
            }
            else
            {
                if( MdaUtils.compareTo(ebbTemp.getBasere(), 0)<0 )
                {
                    return ValidResult.build(false, "责任担保余额必须大于等于0！");
                }
                else
                {
                    if( MdaUtils.compareTo(ebbTemp.getBasere() , cfagitVo.getRecgrp().getBas().getGuaranamount())>0 )
                    {
                        return ValidResult.build(false, "责任担保余额不能大于保函金额！");
                    }
                    trnnam = cfagitVo.getTransName();
                    if( MdaUtils.compareTo( trnnam ,  "EBAAME" ) == 0 )
                    {
                        dguaranamt = Decimals.sub(guaranamount,oldguaranamt);
                        dbasere =Decimals.sub(ebbTemp.getBasere(),ebbTemp.getOldbasere());
                        if( MdaUtils.compareTo(dguaranamt, dbasere) != 0 )
                        {
                        return ValidResult.build(false, "责任余额应与保函金额做相同的增减额！");
                        }
                    }
                }
            }
        }
        else
        {
            trnnam = cfagitVo.getTransName();
            if( MdaUtils.compareTo( trnnam ,  "EBAAME" ) == 0 )
            {
                if( ! MdaUtils.isEmpty( ebbTemp.getPriflg() ) )
                {
                    if( MdaUtils.compareTo(ebbTemp.getActiontype(),  "D" ) == 0 || MdaUtils.compareTo(ebbTemp.getSta(),  "D" ) == 0 )
                    {
                    }
                    else
                    {
                        dguaranamt =Decimals.sub(guaranamount,oldguaranamt);
                        dbasere = Decimals.sub(ebbTemp.getBasere(),ebbTemp.getOldbasere());
                        if( MdaUtils.compareTo(dguaranamt, 0) != 0 )
                        {
                            if( MdaUtils.compareTo( ebbTemp.getBasere() ,  0 ) == 0 )
                            {
                            }
                            else
                            {
                                if( MdaUtils.compareTo(dguaranamt, dbasere) != 0 )
                                {
                                    return ValidResult.build(false, "责任余额应与保函金额做相同的增减额！");
                                }
                            }
                        }
                    }
                }
            }
        }

        return null;
    }

    /**
     *   增加dcl担保责任余额变动日期的校验
     */
    @Validate(path = "cfagit.recgrp.dcl.wabachandate")
    public ValidResult checkWabachandateN1000(Cfagit cfagitVo){
        if (MdaUtils.isEmpty(cfagitVo))
            return null;
        if(cfagitVo.getRecgrp().getDcl().size() <= 0)
            return null;
        Ebb ebbTemp = cfagitVo.getRecgrp().getDcl().get(0);
        if (MdaUtils.isEmpty(ebbTemp))
            return null;
        Date contractdate = cfagitVo.getRecgrp().getBas().getContractdate();
        if( cfagitService.isCheckField(ebbTemp.getAcp(),ebbTemp.getActiontype()) )
        {
            if( MdaUtils.isEmpty(ebbTemp.getWabachandate()) )
            {
                return ValidResult.build(false, "担保责任余额变动日期为空");
            }
            else
            {
                if( Dates.diff(ebbTemp.getWabachandate(),contractdate)<0 )
                {
//                    ctx.setFieldError(this,"wabachandate",MdaUtils.getI18NString("ebbp","CT000005"));
                    return ValidResult.build(false, "担保责任余额变动日期不能小于签约日期!");
                }
            }
        }

        return null;
    }


}
