package com.brilliance.isc.transfer.model;

import com.brilliance.isc.bo.Gid;
import com.brilliance.isc.bo.Git;
import com.brilliance.isc.bo.model.Giacbs;
import com.brilliance.isc.bo.model.Gidgrp;
import com.brilliance.isc.bo.model.Gitp;
import com.brilliance.isc.vo.model.GidVo;
import com.brilliance.isc.vo.model.GitVo;
import org.mapstruct.BeanMapping;
import org.mapstruct.Mapper;
import org.mapstruct.MappingTarget;
import org.mapstruct.NullValuePropertyMappingStrategy;
import org.mapstruct.factory.Mappers;

/**
 * 保函业务模型拷贝、转换函数声明
 */
@Mapper(componentModel = "spring",uses = {ICbbMapper.class})
public interface IGitMapper{

    GidVo convertGidToVo(Gid gcd);
    Gid convertGidVoToVo(GidVo gcdVo);

    void updateGidFromVo(GidVo gcdVo, @MappingTarget Gid Gid);
    void updateGidVoFromBo(Gid Gid, @MappingTarget GidVo gcdVo);

    GitVo convertGitToVo(Git gct);
    Git convertGitVoToVo(GitVo gctVo);

    void updateGitFromVo(GitVo gctVo, @MappingTarget Git gct);
    void updateGitVoFromBo(Git gct, @MappingTarget GitVo gctVo);

    com.brilliance.isc.vo.model.Gidgrp convertGidgrpToVo(Gidgrp gctgrp);
    Gidgrp convertGidgrpVoToVo(com.brilliance.isc.vo.model.Gidgrp gctgrpVo);

    void updateGidgrpFromVo(com.brilliance.isc.vo.model.Gidgrp gctgrpVo, @MappingTarget Gidgrp gctgrp);
    void updateGidgrpVoFromBo(Gidgrp gctgrp, @MappingTarget com.brilliance.isc.vo.model.Gidgrp gctgrpVo);

    com.brilliance.isc.vo.model.Giacbs convertGidgrpToVo(Giacbs gcacbs);
    Giacbs convertGidgrpVoToVo(com.brilliance.isc.vo.model.Giacbs gcacbsVo);

    @BeanMapping(nullValuePropertyMappingStrategy = NullValuePropertyMappingStrategy.IGNORE)
    void updateGiacbsFromVo(com.brilliance.isc.vo.model.Giacbs gcacbsVo, @MappingTarget Giacbs gcacbs);
    void updateGiacbsVoFromBo(Giacbs gcacbs, @MappingTarget com.brilliance.isc.vo.model.Gidgrp gcacbsVo);


    com.brilliance.isc.vo.model.Gitp convertGidgrpToVo(Gitp gctp);
    Giacbs convertGidgrpVoToVo(com.brilliance.isc.vo.model.Gitp gcacbsVo);

    void updateGitpFromVo(com.brilliance.isc.vo.model.Gitp gctpVo, @MappingTarget Gitp gctp);
    void updateGitpVoFromBo(Gitp gctp, @MappingTarget com.brilliance.isc.vo.model.Gitp gctpVo);

}
