delivery_dealer_validation_update.md
4.69 KB
出库单经销商验证功能更新
修改概述
在 DeliveryMainServiceImpl 中的 addDelivery 和 updateDelivery 方法中添加了经销商一致性验证逻辑,确保出库单中的经销商与关联订单中的经销商保持一致。
修改内容
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());
验证逻辑说明
验证流程
- 订单存在性验证:首先验证关联的订单编号是否在订单管理中存在
- 经销商一致性验证:验证出库单中的经销商编码与关联订单中的经销商编码是否一致
-
异常处理:如果经销商不一致,抛出
DealerMismatchException异常
验证时机
-
新增出库单时:在
addDelivery方法中,在订单存在性验证之后立即进行经销商验证 -
修改出库单时:在
updateDelivery方法中,在订单存在性验证之后立即进行经销商验证
异常信息
当经销商不一致时,会抛出包含详细信息的异常:
出库单中的经销商编码[DEALER002]与关联订单[ORDER001]中的经销商编码[DEALER001]不一致
测试
单元测试
创建了 DeliveryMainServiceImplDealerValidationTest 测试类,包含以下测试用例:
-
成功场景测试:
- 经销商一致时的正常流程
- 验证方法调用正确性
-
异常场景测试:
- 经销商不一致时抛出
DealerMismatchException - 订单不存在时抛出
IllegalArgumentException
- 经销商不一致时抛出
-
异常消息测试:
- 验证异常消息格式的正确性
测试覆盖
- ✅ 新增出库单时的经销商验证
- ✅ 修改出库单时的经销商验证
- ✅ 经销商不一致的异常处理
- ✅ 订单不存在的异常处理
- ✅ 异常消息格式验证
影响范围
修改的文件
-
backend/src/main/java/com/apple/erp/exception/DealerMismatchException.java- 新增异常类 -
backend/src/main/java/com/apple/erp/service/impl/DeliveryMainServiceImpl.java- 修改服务实现 -
backend/src/test/java/com/apple/erp/service/impl/DeliveryMainServiceImplDealerValidationTest.java- 新增测试类
影响的方法
-
DeliveryMainServiceImpl.addDelivery()- 新增经销商验证 -
DeliveryMainServiceImpl.updateDelivery()- 新增经销商验证 - 新增
validateDealerConsistency()私有方法
业务价值
数据一致性保障
- 确保出库单与关联订单的经销商信息保持一致
- 防止因经销商信息不匹配导致的数据错误
- 提高系统的数据完整性和可靠性
错误预防
- 在数据录入阶段就发现并阻止经销商不匹配的问题
- 提供清晰的错误信息,便于用户快速定位和修正问题
- 减少后续业务流程中的数据异常
系统健壮性
- 增强系统的数据验证能力
- 提供更好的错误处理和用户反馈
- 提高系统的整体稳定性和可维护性
向后兼容性
- 新增的验证逻辑不会影响现有的正常业务流程
- 只有在经销商不匹配时才会抛出异常
- 保持了原有的方法签名和返回值类型
- 不影响现有的API接口