package com.brilliance.isc.transfer.transaction;

import com.brilliance.isc.bo.lg.GitzsqStoreBo;
import com.brilliance.isc.bo.lg.NitzsqStoreBo;
import com.brilliance.isc.transfer.IBaseStructMapper;
import com.brilliance.isc.transfer.model.*;
import com.brilliance.isc.vo.lg.GitzsqStoreVo;
import com.brilliance.isc.vo.lg.NitzsqStoreVo;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.MappingTarget;
import org.mapstruct.Mappings;
import org.mapstruct.factory.Mappers;

@Mapper(componentModel = "spring",uses={
        IGctMapper.class, IGitMapper.class,
        INitMapper.class, INctMapper.class, IOtherModMapper.class
})
public interface NitzsqStructMapper extends IBaseStructMapper<NitzsqStoreBo, NitzsqStoreVo> {
    NitzsqStructMapper INSTANCE = Mappers.getMapper(NitzsqStructMapper.class);

    @Override
    NitzsqStoreBo voTransferToBo(NitzsqStoreVo vo);

    @Override
    @Mappings({
            @Mapping(target = "nidgrp", ignore = true),
            @Mapping(target = "limchg.oldlim", ignore = true)
    })
    void voUpdateToBo(NitzsqStoreVo vo, @MappingTarget NitzsqStoreBo bo);

    @Override
    NitzsqStoreVo boTransferToVo(NitzsqStoreBo bo);

    @Override
    void boUpdateToVo (NitzsqStoreBo bo, @MappingTarget NitzsqStoreVo vo);
}
