From 78ed6670e2b8e44b4ab5eed4631277605227004d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E9=B9=8F=E9=A3=9E?= Date: Mon, 23 Mar 2026 22:01:35 +0800 Subject: [PATCH] =?UTF-8?q?feat(exception):=20=E6=B7=BB=E5=8A=A0=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E8=AD=A6=E5=91=8A=E5=BC=82=E5=B8=B8=E5=A4=84=E7=90=86?= =?UTF-8?q?=E6=9C=BA=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增 DataAlertException 类用于处理数据警告情况 - 在全局控制器增强中添加 DataAlertException 的异常处理器 - 将多个控制器中的直接返回错误改为抛出 DataAlertException 异常 - 统一处理库存不足等数据警告场景的异常响应格式 --- .../controller/OutAssistanceController.java | 3 ++- .../controller/OutCostCenterController.java | 3 ++- .../admin/controller/OutProduceController.java | 5 +++-- .../controller/PurchaseReturnController.java | 5 +++-- .../controller/TransferCompanyController.java | 3 ++- .../controller/TransferFactoryController.java | 3 ++- .../common/exception/DataAlertException.java | 18 ++++++++++++++++++ .../advice/GlobalRestControllerAdvice.java | 7 +++++++ 8 files changed, 39 insertions(+), 8 deletions(-) create mode 100644 nflg-wms-common/src/main/java/com/nflg/wms/common/exception/DataAlertException.java diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/OutAssistanceController.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/OutAssistanceController.java index b1e8a9df..4763e9bd 100644 --- a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/OutAssistanceController.java +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/OutAssistanceController.java @@ -16,6 +16,7 @@ import com.nflg.wms.admin.util.QRCodeUtil; import com.nflg.wms.admin.util.ThymeleafUtil; import com.nflg.wms.common.constant.BarCodeProcessStage; import com.nflg.wms.common.constant.STATE; +import com.nflg.wms.common.exception.DataAlertException; import com.nflg.wms.common.exception.NflgException; import com.nflg.wms.common.pojo.ApiResult; import com.nflg.wms.common.pojo.PageData; @@ -361,7 +362,7 @@ public class OutAssistanceController extends BaseController { } }); if (CollectionUtil.isNotEmpty(lockVOS)) { - return ApiResult.errorWithExtras(STATE.OutOfStock, lockVOS); + throw new DataAlertException(STATE.OutOfStock, lockVOS); } outAssistanceItemService.updateBatchById(datas); outAssistanceTicketItemService.saveBatch(ticketItems); diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/OutCostCenterController.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/OutCostCenterController.java index 0ce53a17..31323034 100644 --- a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/OutCostCenterController.java +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/OutCostCenterController.java @@ -16,6 +16,7 @@ import com.nflg.wms.admin.util.QRCodeUtil; import com.nflg.wms.admin.util.ThymeleafUtil; import com.nflg.wms.common.constant.BarCodeProcessStage; import com.nflg.wms.common.constant.STATE; +import com.nflg.wms.common.exception.DataAlertException; import com.nflg.wms.common.exception.NflgException; import com.nflg.wms.common.pojo.ApiResult; import com.nflg.wms.common.pojo.PageData; @@ -355,7 +356,7 @@ public class OutCostCenterController extends BaseController { } }); if (CollectionUtil.isNotEmpty(lockVOS)) { - return ApiResult.errorWithExtras(STATE.OutOfStock, lockVOS); + throw new DataAlertException(STATE.OutOfStock, lockVOS); } outCostcenterItemService.updateBatchById(datas); outCostcenterTicketItemService.saveBatch(ticketItems); diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/OutProduceController.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/OutProduceController.java index a030ce71..b1e487cf 100644 --- a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/OutProduceController.java +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/OutProduceController.java @@ -15,6 +15,7 @@ import com.nflg.wms.admin.util.QRCodeUtil; import com.nflg.wms.admin.util.ThymeleafUtil; import com.nflg.wms.common.constant.BarCodeProcessStage; import com.nflg.wms.common.constant.STATE; +import com.nflg.wms.common.exception.DataAlertException; import com.nflg.wms.common.exception.NflgException; import com.nflg.wms.common.pojo.ApiResult; import com.nflg.wms.common.pojo.PageData; @@ -192,7 +193,7 @@ public class OutProduceController extends BaseController { if (CollectionUtil.isEmpty(lockVOS)) { return ApiResult.success(); } else { - return ApiResult.errorWithExtras(STATE.OutOfStock, lockVOS); + throw new DataAlertException(STATE.OutOfStock, lockVOS); } } @@ -254,7 +255,7 @@ public class OutProduceController extends BaseController { if (CollectionUtil.isEmpty(lockVOS)) { return ApiResult.success(); } else { - return ApiResult.errorWithExtras(STATE.OutOfStock, lockVOS); + throw new DataAlertException(STATE.OutOfStock, lockVOS); } } diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/PurchaseReturnController.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/PurchaseReturnController.java index 5a915a8c..0bf52803 100644 --- a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/PurchaseReturnController.java +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/PurchaseReturnController.java @@ -16,6 +16,7 @@ import com.nflg.wms.admin.util.ThymeleafUtil; import com.nflg.wms.common.constant.BarCodeProcessStage; import com.nflg.wms.common.constant.STATE; import com.nflg.wms.common.constant.UserType; +import com.nflg.wms.common.exception.DataAlertException; import com.nflg.wms.common.pojo.ApiResult; import com.nflg.wms.common.pojo.PageData; import com.nflg.wms.common.pojo.dto.*; @@ -132,7 +133,7 @@ public class PurchaseReturnController extends BaseController { if (CollectionUtil.isEmpty(inventoryLockVOS)) { return ApiResult.success(); } else { - return ApiResult.errorWithExtras(STATE.OutOfStock, inventoryLockVOS); + throw new DataAlertException(STATE.OutOfStock, inventoryLockVOS); } } @@ -442,7 +443,7 @@ public class PurchaseReturnController extends BaseController { if (CollectionUtil.isEmpty(inventoryLockVOS)) { return ApiResult.success(); } else { - return ApiResult.errorWithExtras(STATE.OutOfStock, inventoryLockVOS); + throw new DataAlertException(STATE.OutOfStock, inventoryLockVOS); } } diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/TransferCompanyController.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/TransferCompanyController.java index 266431a0..e023f9e6 100644 --- a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/TransferCompanyController.java +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/TransferCompanyController.java @@ -18,6 +18,7 @@ import com.nflg.wms.admin.service.SapService; import com.nflg.wms.admin.util.*; import com.nflg.wms.common.constant.BarCodeProcessStage; import com.nflg.wms.common.constant.STATE; +import com.nflg.wms.common.exception.DataAlertException; import com.nflg.wms.common.exception.NflgException; import com.nflg.wms.common.pojo.ApiResult; import com.nflg.wms.common.pojo.PageData; @@ -169,7 +170,7 @@ public class TransferCompanyController extends BaseController { if (CollectionUtil.isEmpty(lockVOS)) { return ApiResult.success(); } else { - return ApiResult.errorWithExtras(STATE.OutOfStock, lockVOS); + throw new DataAlertException(STATE.OutOfStock, lockVOS); } } diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/TransferFactoryController.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/TransferFactoryController.java index 04b94928..1cdfd02a 100644 --- a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/TransferFactoryController.java +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/TransferFactoryController.java @@ -16,6 +16,7 @@ import com.nflg.wms.admin.util.QRCodeUtil; import com.nflg.wms.admin.util.ThymeleafUtil; import com.nflg.wms.common.constant.BarCodeProcessStage; import com.nflg.wms.common.constant.STATE; +import com.nflg.wms.common.exception.DataAlertException; import com.nflg.wms.common.exception.NflgException; import com.nflg.wms.common.pojo.ApiResult; import com.nflg.wms.common.pojo.PageData; @@ -167,7 +168,7 @@ public class TransferFactoryController extends BaseController { if (CollectionUtil.isEmpty(lockVOS)) { return ApiResult.success(); } else { - return ApiResult.errorWithExtras(STATE.OutOfStock, lockVOS); + throw new DataAlertException(STATE.OutOfStock, lockVOS); } } diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/exception/DataAlertException.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/exception/DataAlertException.java new file mode 100644 index 00000000..d58bc964 --- /dev/null +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/exception/DataAlertException.java @@ -0,0 +1,18 @@ +package com.nflg.wms.common.exception; + +import com.nflg.wms.common.constant.STATE; +import lombok.Data; + +@Data +public class DataAlertException extends RuntimeException { + + private final STATE state; + + private final Object obj; + + public DataAlertException(STATE state, Object obj) { + super(state.getType()); + this.state = state; + this.obj = obj; + } +} diff --git a/nflg-wms-starter/src/main/java/com/nflg/wms/starter/advice/GlobalRestControllerAdvice.java b/nflg-wms-starter/src/main/java/com/nflg/wms/starter/advice/GlobalRestControllerAdvice.java index dc970d73..1238f63a 100644 --- a/nflg-wms-starter/src/main/java/com/nflg/wms/starter/advice/GlobalRestControllerAdvice.java +++ b/nflg-wms-starter/src/main/java/com/nflg/wms/starter/advice/GlobalRestControllerAdvice.java @@ -4,6 +4,7 @@ import cn.dev33.satoken.exception.NotLoginException; import cn.hutool.core.util.StrUtil; import com.nflg.wms.common.constant.Constant; import com.nflg.wms.common.constant.STATE; +import com.nflg.wms.common.exception.DataAlertException; import com.nflg.wms.common.exception.NflgException; import com.nflg.wms.common.exception.SAPException; import com.nflg.wms.common.pojo.ApiResult; @@ -81,4 +82,10 @@ public class GlobalRestControllerAdvice { log.error("SAP错误: ", ex); return ApiResult.error(ex.getState(), "SAP错误:" + ex.getMessage()); } + + @ExceptionHandler(DataAlertException.class) + public ApiResult handleDataAlertException(DataAlertException ex) { + log.error("返回数据的错误: ", ex); + return ApiResult.errorWithExtras(ex.getState(), ex.getObj()); + } } \ No newline at end of file