feat(exception): 添加数据警告异常处理机制

- 新增 DataAlertException 类用于处理数据警告情况
- 在全局控制器增强中添加 DataAlertException 的异常处理器
- 将多个控制器中的直接返回错误改为抛出 DataAlertException 异常
- 统一处理库存不足等数据警告场景的异常响应格式
This commit is contained in:
曹鹏飞 2026-03-23 22:01:35 +08:00
parent 110b189be3
commit 78ed6670e2
8 changed files with 39 additions and 8 deletions

View File

@ -16,6 +16,7 @@ import com.nflg.wms.admin.util.QRCodeUtil;
import com.nflg.wms.admin.util.ThymeleafUtil; import com.nflg.wms.admin.util.ThymeleafUtil;
import com.nflg.wms.common.constant.BarCodeProcessStage; import com.nflg.wms.common.constant.BarCodeProcessStage;
import com.nflg.wms.common.constant.STATE; 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.NflgException;
import com.nflg.wms.common.pojo.ApiResult; import com.nflg.wms.common.pojo.ApiResult;
import com.nflg.wms.common.pojo.PageData; import com.nflg.wms.common.pojo.PageData;
@ -361,7 +362,7 @@ public class OutAssistanceController extends BaseController {
} }
}); });
if (CollectionUtil.isNotEmpty(lockVOS)) { if (CollectionUtil.isNotEmpty(lockVOS)) {
return ApiResult.errorWithExtras(STATE.OutOfStock, lockVOS); throw new DataAlertException(STATE.OutOfStock, lockVOS);
} }
outAssistanceItemService.updateBatchById(datas); outAssistanceItemService.updateBatchById(datas);
outAssistanceTicketItemService.saveBatch(ticketItems); outAssistanceTicketItemService.saveBatch(ticketItems);

View File

@ -16,6 +16,7 @@ import com.nflg.wms.admin.util.QRCodeUtil;
import com.nflg.wms.admin.util.ThymeleafUtil; import com.nflg.wms.admin.util.ThymeleafUtil;
import com.nflg.wms.common.constant.BarCodeProcessStage; import com.nflg.wms.common.constant.BarCodeProcessStage;
import com.nflg.wms.common.constant.STATE; 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.NflgException;
import com.nflg.wms.common.pojo.ApiResult; import com.nflg.wms.common.pojo.ApiResult;
import com.nflg.wms.common.pojo.PageData; import com.nflg.wms.common.pojo.PageData;
@ -355,7 +356,7 @@ public class OutCostCenterController extends BaseController {
} }
}); });
if (CollectionUtil.isNotEmpty(lockVOS)) { if (CollectionUtil.isNotEmpty(lockVOS)) {
return ApiResult.errorWithExtras(STATE.OutOfStock, lockVOS); throw new DataAlertException(STATE.OutOfStock, lockVOS);
} }
outCostcenterItemService.updateBatchById(datas); outCostcenterItemService.updateBatchById(datas);
outCostcenterTicketItemService.saveBatch(ticketItems); outCostcenterTicketItemService.saveBatch(ticketItems);

View File

@ -15,6 +15,7 @@ import com.nflg.wms.admin.util.QRCodeUtil;
import com.nflg.wms.admin.util.ThymeleafUtil; import com.nflg.wms.admin.util.ThymeleafUtil;
import com.nflg.wms.common.constant.BarCodeProcessStage; import com.nflg.wms.common.constant.BarCodeProcessStage;
import com.nflg.wms.common.constant.STATE; 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.NflgException;
import com.nflg.wms.common.pojo.ApiResult; import com.nflg.wms.common.pojo.ApiResult;
import com.nflg.wms.common.pojo.PageData; import com.nflg.wms.common.pojo.PageData;
@ -192,7 +193,7 @@ public class OutProduceController extends BaseController {
if (CollectionUtil.isEmpty(lockVOS)) { if (CollectionUtil.isEmpty(lockVOS)) {
return ApiResult.success(); return ApiResult.success();
} else { } 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)) { if (CollectionUtil.isEmpty(lockVOS)) {
return ApiResult.success(); return ApiResult.success();
} else { } else {
return ApiResult.errorWithExtras(STATE.OutOfStock, lockVOS); throw new DataAlertException(STATE.OutOfStock, lockVOS);
} }
} }

View File

@ -16,6 +16,7 @@ import com.nflg.wms.admin.util.ThymeleafUtil;
import com.nflg.wms.common.constant.BarCodeProcessStage; import com.nflg.wms.common.constant.BarCodeProcessStage;
import com.nflg.wms.common.constant.STATE; import com.nflg.wms.common.constant.STATE;
import com.nflg.wms.common.constant.UserType; 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.ApiResult;
import com.nflg.wms.common.pojo.PageData; import com.nflg.wms.common.pojo.PageData;
import com.nflg.wms.common.pojo.dto.*; import com.nflg.wms.common.pojo.dto.*;
@ -132,7 +133,7 @@ public class PurchaseReturnController extends BaseController {
if (CollectionUtil.isEmpty(inventoryLockVOS)) { if (CollectionUtil.isEmpty(inventoryLockVOS)) {
return ApiResult.success(); return ApiResult.success();
} else { } 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)) { if (CollectionUtil.isEmpty(inventoryLockVOS)) {
return ApiResult.success(); return ApiResult.success();
} else { } else {
return ApiResult.errorWithExtras(STATE.OutOfStock, inventoryLockVOS); throw new DataAlertException(STATE.OutOfStock, inventoryLockVOS);
} }
} }

View File

@ -18,6 +18,7 @@ import com.nflg.wms.admin.service.SapService;
import com.nflg.wms.admin.util.*; import com.nflg.wms.admin.util.*;
import com.nflg.wms.common.constant.BarCodeProcessStage; import com.nflg.wms.common.constant.BarCodeProcessStage;
import com.nflg.wms.common.constant.STATE; 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.NflgException;
import com.nflg.wms.common.pojo.ApiResult; import com.nflg.wms.common.pojo.ApiResult;
import com.nflg.wms.common.pojo.PageData; import com.nflg.wms.common.pojo.PageData;
@ -169,7 +170,7 @@ public class TransferCompanyController extends BaseController {
if (CollectionUtil.isEmpty(lockVOS)) { if (CollectionUtil.isEmpty(lockVOS)) {
return ApiResult.success(); return ApiResult.success();
} else { } else {
return ApiResult.errorWithExtras(STATE.OutOfStock, lockVOS); throw new DataAlertException(STATE.OutOfStock, lockVOS);
} }
} }

View File

@ -16,6 +16,7 @@ import com.nflg.wms.admin.util.QRCodeUtil;
import com.nflg.wms.admin.util.ThymeleafUtil; import com.nflg.wms.admin.util.ThymeleafUtil;
import com.nflg.wms.common.constant.BarCodeProcessStage; import com.nflg.wms.common.constant.BarCodeProcessStage;
import com.nflg.wms.common.constant.STATE; 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.NflgException;
import com.nflg.wms.common.pojo.ApiResult; import com.nflg.wms.common.pojo.ApiResult;
import com.nflg.wms.common.pojo.PageData; import com.nflg.wms.common.pojo.PageData;
@ -167,7 +168,7 @@ public class TransferFactoryController extends BaseController {
if (CollectionUtil.isEmpty(lockVOS)) { if (CollectionUtil.isEmpty(lockVOS)) {
return ApiResult.success(); return ApiResult.success();
} else { } else {
return ApiResult.errorWithExtras(STATE.OutOfStock, lockVOS); throw new DataAlertException(STATE.OutOfStock, lockVOS);
} }
} }

View File

@ -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;
}
}

View File

@ -4,6 +4,7 @@ import cn.dev33.satoken.exception.NotLoginException;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.nflg.wms.common.constant.Constant; import com.nflg.wms.common.constant.Constant;
import com.nflg.wms.common.constant.STATE; 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.NflgException;
import com.nflg.wms.common.exception.SAPException; import com.nflg.wms.common.exception.SAPException;
import com.nflg.wms.common.pojo.ApiResult; import com.nflg.wms.common.pojo.ApiResult;
@ -81,4 +82,10 @@ public class GlobalRestControllerAdvice {
log.error("SAP错误: ", ex); log.error("SAP错误: ", ex);
return ApiResult.error(ex.getState(), "SAP错误:" + ex.getMessage()); return ApiResult.error(ex.getState(), "SAP错误:" + ex.getMessage());
} }
@ExceptionHandler(DataAlertException.class)
public ApiResult<Void> handleDataAlertException(DataAlertException ex) {
log.error("返回数据的错误: ", ex);
return ApiResult.errorWithExtras(ex.getState(), ex.getObj());
}
} }