package com.brilliance.isc.transfer.model;

import com.brilliance.isc.bo.Gcd;
import com.brilliance.isc.bo.Gct;
import com.brilliance.isc.bo.model.Gcacbs;
import com.brilliance.isc.bo.model.Gcdgrp;
import com.brilliance.isc.bo.model.Gctp;
import com.brilliance.isc.vo.model.GcdVo;
import com.brilliance.isc.vo.model.GctVo;
import org.mapstruct.BeanMapping;
import org.mapstruct.Mapper;
import org.mapstruct.MappingTarget;
import org.mapstruct.NullValuePropertyMappingStrategy;

/**
 * 索赔业务模型拷贝、转换函数声明
 */
@Mapper(componentModel = "spring",uses = {ICbbMapper.class})
public interface IGctMapper {
    GcdVo convertGcdToVo(Gcd gcd);
    Gcd convertGcdVoToVo(GcdVo gcdVo);

    void updateGcdFromVo(GcdVo gcdVo, @MappingTarget Gcd Gcd);
    void updateGcdVoFromBo(Gcd Gcd, @MappingTarget GcdVo gcdVo);

    GctVo convertGctToVo(Gct gct);
    Gct convertGctVoToVo(GctVo gctVo);

    void updateGctFromVo(GctVo gctVo, @MappingTarget Gct gct);
    void updateGctVoFromBo(Gct gct, @MappingTarget GctVo gctVo);

    com.brilliance.isc.vo.model.Gcdgrp convertGcdgrpToVo(Gcdgrp gctgrp);
    Gcdgrp convertGcdgrpVoToVo(com.brilliance.isc.vo.model.Gcdgrp gctgrpVo);

    void updateGcdgrpFromVo(com.brilliance.isc.vo.model.Gcdgrp gctgrpVo, @MappingTarget Gcdgrp gctgrp);
    void updateGcdgrpVoFromBo(Gcdgrp gctgrp, @MappingTarget com.brilliance.isc.vo.model.Gcdgrp gctgrpVo);

    com.brilliance.isc.vo.model.Gcacbs convertGcdgrpToVo(Gcacbs gcacbs);
    Gcacbs convertGcdgrpVoToVo(com.brilliance.isc.vo.model.Gcacbs gcacbsVo);

    @BeanMapping(nullValuePropertyMappingStrategy = NullValuePropertyMappingStrategy.IGNORE)
    void updateGcacbsFromVo(com.brilliance.isc.vo.model.Gcacbs gcacbsVo, @MappingTarget Gcacbs gcacbs);
    void updateGcacbsVoFromBo(Gcacbs gcacbs, @MappingTarget com.brilliance.isc.vo.model.Gcdgrp gcacbsVo);


    com.brilliance.isc.vo.model.Gctp convertGcdgrpToVo(Gctp gctp);
    Gcacbs convertGcdgrpVoToVo(com.brilliance.isc.vo.model.Gctp gcacbsVo);

    void updateGctpFromVo(com.brilliance.isc.vo.model.Gctp gctpVo, @MappingTarget Gctp gctp);
    void updateGctpVoFromBo(Gctp gctp, @MappingTarget com.brilliance.isc.vo.model.Gctp gctpVo);


    
}
