delivery_dealer_validation_update.md 4.69 KB

出库单经销商验证功能更新

修改概述

DeliveryMainServiceImpl 中的 addDeliveryupdateDelivery 方法中添加了经销商一致性验证逻辑,确保出库单中的经销商与关联订单中的经销商保持一致。

修改内容

1. 新增自定义异常类

创建了 DealerMismatchException 异常类,用于处理经销商不匹配的情况:

public class DealerMismatchException extends RuntimeException {
    public DealerMismatchException(String message) {
        super(message);
    }

    public DealerMismatchException(String message, Throwable cause) {
        super(message, cause);
    }
}

2. 新增验证方法

DeliveryMainServiceImpl 中添加了 validateDealerConsistency 私有方法:

private void validateDealerConsistency(String orderNo, String deliveryDealerCode) {
    // 根据订单编号查询订单信息
    OrderMain order = orderMainMapper.selectByOrderNo(orderNo);
    if (order == null) {
        throw new IllegalArgumentException("关联的订单不存在");
    }

    // 比较经销商编码
    if (!deliveryDealerCode.equals(order.getDealerCode())) {
        String errorMessage = String.format(
            "出库单中的经销商编码[%s]与关联订单[%s]中的经销商编码[%s]不一致",
            deliveryDealerCode, orderNo, order.getDealerCode()
        );
        throw new DealerMismatchException(errorMessage);
    }
}

3. 修改addDelivery方法

addDelivery 方法中添加了经销商验证逻辑:

// 验证出库单中的经销商与关联订单中的经销商是否一致
validateDealerConsistency(addReq.getOrderNo(), addReq.getDealerCode());

4. 修改updateDelivery方法

updateDelivery 方法中添加了经销商验证逻辑:

// 验证出库单中的经销商与关联订单中的经销商是否一致
validateDealerConsistency(updateReq.getOrderNo(), updateReq.getDealerCode());

验证逻辑说明

验证流程

  1. 订单存在性验证:首先验证关联的订单编号是否在订单管理中存在
  2. 经销商一致性验证:验证出库单中的经销商编码与关联订单中的经销商编码是否一致
  3. 异常处理:如果经销商不一致,抛出 DealerMismatchException 异常

验证时机

  • 新增出库单时:在 addDelivery 方法中,在订单存在性验证之后立即进行经销商验证
  • 修改出库单时:在 updateDelivery 方法中,在订单存在性验证之后立即进行经销商验证

异常信息

当经销商不一致时,会抛出包含详细信息的异常:

出库单中的经销商编码[DEALER002]与关联订单[ORDER001]中的经销商编码[DEALER001]不一致

测试

单元测试

创建了 DeliveryMainServiceImplDealerValidationTest 测试类,包含以下测试用例:

  1. 成功场景测试

    • 经销商一致时的正常流程
    • 验证方法调用正确性
  2. 异常场景测试

    • 经销商不一致时抛出 DealerMismatchException
    • 订单不存在时抛出 IllegalArgumentException
  3. 异常消息测试

    • 验证异常消息格式的正确性

测试覆盖

  • ✅ 新增出库单时的经销商验证
  • ✅ 修改出库单时的经销商验证
  • ✅ 经销商不一致的异常处理
  • ✅ 订单不存在的异常处理
  • ✅ 异常消息格式验证

影响范围

修改的文件

  1. backend/src/main/java/com/apple/erp/exception/DealerMismatchException.java - 新增异常类
  2. backend/src/main/java/com/apple/erp/service/impl/DeliveryMainServiceImpl.java - 修改服务实现
  3. backend/src/test/java/com/apple/erp/service/impl/DeliveryMainServiceImplDealerValidationTest.java - 新增测试类

影响的方法

  • DeliveryMainServiceImpl.addDelivery() - 新增经销商验证
  • DeliveryMainServiceImpl.updateDelivery() - 新增经销商验证
  • 新增 validateDealerConsistency() 私有方法

业务价值

数据一致性保障

  • 确保出库单与关联订单的经销商信息保持一致
  • 防止因经销商信息不匹配导致的数据错误
  • 提高系统的数据完整性和可靠性

错误预防

  • 在数据录入阶段就发现并阻止经销商不匹配的问题
  • 提供清晰的错误信息,便于用户快速定位和修正问题
  • 减少后续业务流程中的数据异常

系统健壮性

  • 增强系统的数据验证能力
  • 提供更好的错误处理和用户反馈
  • 提高系统的整体稳定性和可维护性

向后兼容性

  • 新增的验证逻辑不会影响现有的正常业务流程
  • 只有在经销商不匹配时才会抛出异常
  • 保持了原有的方法签名和返回值类型
  • 不影响现有的API接口