cuilei
2025-06-12 ba65a8ba87c236d97dec1da5fd59c0f16fdee320
工具管理-修复使用MapStruct做属性复制存在的问题
已修改4个文件
29 ■■■■ 文件已修改
lxzn-module-tms/src/main/java/org/jeecg/modules/tms/convert/OutboundOrderConvert.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-tms/src/main/java/org/jeecg/modules/tms/convert/PreparationOrderConvert.java 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/OutboundOrderServiceImpl.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/PreparationOrderServiceImpl.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-tms/src/main/java/org/jeecg/modules/tms/convert/OutboundOrderConvert.java
@@ -2,17 +2,25 @@
import org.jeecg.modules.tms.entity.OutboundOrder;
import org.jeecg.modules.tms.entity.dto.OutboundOrderAndDetailDto;
import org.mapstruct.BeanMapping;
import org.mapstruct.Mapper;
import org.mapstruct.NullValuePropertyMappingStrategy;
import org.mapstruct.ReportingPolicy;
import org.mapstruct.factory.Mappers;
/**
 * 使用 MapStruct 方式进行属性复制
 * 注意不能放在 mybatis扫描的mapper包下面,否则会报错
 */
@Mapper
@Mapper(
        unmappedTargetPolicy = ReportingPolicy.IGNORE, // 忽略目标中未被映射的字段
        componentModel = "spring" // 如果使用 Spring,可生成 Spring 管理的 Bean
)
public interface OutboundOrderConvert {
    OutboundOrderConvert INSTANCE = Mappers.getMapper(OutboundOrderConvert.class);
    @BeanMapping(nullValuePropertyMappingStrategy = NullValuePropertyMappingStrategy.IGNORE)// 忽略 null 字段
    OutboundOrder convert(OutboundOrderAndDetailDto dto);
}
lxzn-module-tms/src/main/java/org/jeecg/modules/tms/convert/PreparationOrderConvert.java
@@ -2,17 +2,24 @@
import org.jeecg.modules.tms.entity.PreparationOrder;
import org.jeecg.modules.tms.entity.dto.PreparationOrderAndDetailDto;
import org.mapstruct.BeanMapping;
import org.mapstruct.Mapper;
import org.mapstruct.NullValuePropertyMappingStrategy;
import org.mapstruct.ReportingPolicy;
import org.mapstruct.factory.Mappers;
/**
 * 使用 MapStruct 方式进行属性复制
 * 注意不能放在 mybatis扫描的mapper包下面,否则会报错
 */
@Mapper
@Mapper(
        unmappedTargetPolicy = ReportingPolicy.IGNORE, // 忽略目标中未被映射的字段
        componentModel = "spring" // 如果使用 Spring,可生成 Spring 管理的 Bean
)
public interface PreparationOrderConvert {
    PreparationOrderConvert INSTANCE = Mappers.getMapper(PreparationOrderConvert.class);
    @BeanMapping(nullValuePropertyMappingStrategy = NullValuePropertyMappingStrategy.IGNORE)// 忽略 null 字段
    PreparationOrder convert(PreparationOrderAndDetailDto dto);
}
lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/OutboundOrderServiceImpl.java
@@ -83,6 +83,8 @@
    private OutboundOrderMapper outboundOrderMapper;
    @Autowired
    private OutboundDetailMapper outboundDetailMapper;
    @Autowired
    private OutboundOrderConvert outboundOrderConvert;
    
    @Override
    @Transactional(rollbackFor = Exception.class)
@@ -103,7 +105,7 @@
    @Override
    @Transactional(rollbackFor = Exception.class)
    public void addTotal(OutboundOrderAndDetailDto outboundOrder) {
        OutboundOrder order = OutboundOrderConvert.INSTANCE.convert(outboundOrder);
        OutboundOrder order = outboundOrderConvert.convert(outboundOrder);
        order.setHandler(Objects.requireNonNull(getCurrentUser()).getId());
        order.setOutNum(businessCodeRuleService.generateBusinessCodeSeq("outBoundOrder"));
        order.setOrderStatus(OutBillStatus.DRAFT.getValue());
@@ -155,7 +157,7 @@
        //删除所有明细
        outboundDetailService.remove(new LambdaQueryWrapper<OutboundDetail>()
                .eq(OutboundDetail::getOutStorehouseId, outboundOrder.getId()));
        OutboundOrder outboundOrderUpdate = OutboundOrderConvert.INSTANCE.convert(outboundOrder);
        OutboundOrder outboundOrderUpdate = outboundOrderConvert.convert(outboundOrder);
        outboundOrderMapper.updateById(outboundOrderUpdate);
        List<OutboundDetail> detailList = CollectionUtil.newArrayList();
        outboundOrder.getOutboundDetailList().forEach(item->{
lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/PreparationOrderServiceImpl.java
@@ -54,6 +54,8 @@
    private ISysBusinessCodeRuleService businessCodeRuleService;
    @Autowired
    private IBaseToolsService baseToolsService;
    @Autowired
    private PreparationOrderConvert preparationOrderConvert;
    
    @Override
    @Transactional(rollbackFor = Exception.class)
@@ -77,7 +79,7 @@
        //先删除所有明细
        preparationOrderDetailMapper.delete(new LambdaQueryWrapper<PreparationOrderDetail>()
                .eq(PreparationOrderDetail::getPreparationOrderId, preparationOrderAndDetailDto.getId()));
        PreparationOrder preparationOrder = PreparationOrderConvert.INSTANCE.convert(preparationOrderAndDetailDto);
        PreparationOrder preparationOrder = preparationOrderConvert.convert(preparationOrderAndDetailDto);
        updateById(preparationOrder);
        List<PreparationOrderDetail> detailUpdateList = CollectionUtil.newArrayList();
        preparationOrderAndDetailDto.getPreparationOrderDetailList().forEach(item->{