package com.brilliance.isc.transfer.esb;

import com.brilliance.isc.common.limmod.vo.*;
import com.brilliance.isc.common.umdmod.vo.UmdmodVo;
import com.brilliance.isc.esb.model.clm.ReqCL43;
import com.brilliance.isc.esb.model.inner.*;
import com.brilliance.isc.esb.model.tymd.ReqE200;
import com.brilliance.isc.vo.lg.LimAddVo;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.MappingTarget;
import org.mapstruct.factory.Mappers;

import java.lang.annotation.Target;
import java.util.List;

@Mapper
public interface IEsbMapper {

    IEsbMapper INSTANCE = Mappers.getMapper(IEsbMapper.class);

    /**
     * 拷贝数据到接口请求对象
     *
     * @param umdmodVo
     * @return
     */
    ReqE200 copyUmdData(UmdmodVo umdmodVo);

    /**
     * 拷贝额度数据到接口
     *
     * @param limQueryVo
     * @return
     */
    InnerReqCL81 copyLimQuery(LimQueryVo limQueryVo);


    InnerReqCL41 copyLimPreCal(LimPreCalVo limPreCalVoVo);

    /**
     * 拷贝额度占用
     *
     * @param limOccVo
     * @return
     */
    ReqCL43 copyLimOcc(LimOccVo limOccVo);

    List<LimgrdVo> copyLimgrd(List<LimgrdVo> limgrdVos);

    @Mapping(source = "lstCS06", target = "ypInfoVos")
    void copyYpn(InnerResCS06 innerResCS06, @MappingTarget YpnmodVo ypnmodVo);

    void copyVotoBo(LimAddVo limAddVo, @MappingTarget ReqCL43 reqCL43);

    void copyVoToBo(LsbDetailVo lsbDetailVo, @MappingTarget InnerReqCL45 innerReqCL45);
}
