From 66c2b31255f83b9d5a514457b3b88950b330bea4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E9=B9=8F=E9=A3=9E?= Date: Tue, 24 Mar 2026 14:08:36 +0800 Subject: [PATCH] =?UTF-8?q?feat(dependency):=20=E6=B7=BB=E5=8A=A0Redisson?= =?UTF-8?q?=E4=BE=9D=E8=B5=96=E5=B9=B6=E4=BC=98=E5=8C=96=E5=85=A8=E5=B1=80?= =?UTF-8?q?=E5=BC=82=E5=B8=B8=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在nflg-wms-srm-receive模块中添加Redisson分布式锁依赖 - 在GlobalRestControllerAdvice中重构异常日志记录方式,统一使用printLog方法 - 引入ExceptionUtil工具类增强异常堆栈信息输出 - 在TestController中添加业务异常测试接口用于验证异常处理逻辑 - 修复DeploySitTest中字符串截取方法的参数间距问题 --- .../wms/admin/controller/TestController.java | 8 +++++++ nflg-wms-srm-receive/pom.xml | 5 +++++ .../nflg/wms/srm/receive/DeploySitTest.java | 2 +- .../advice/GlobalRestControllerAdvice.java | 21 ++++++++++++------- 4 files changed, 27 insertions(+), 9 deletions(-) diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/TestController.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/TestController.java index 94feb6ce..bbd1cc0a 100644 --- a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/TestController.java +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/TestController.java @@ -5,10 +5,12 @@ import com.nflg.wms.admin.service.SapService; import com.nflg.wms.common.pojo.ApiResult; import com.nflg.wms.common.pojo.dto.LdapDepartmentDTO; import com.nflg.wms.common.pojo.dto.LdapUserDTO; +import com.nflg.wms.common.util.VUtil; import com.nflg.wms.repository.service.ILanguageService; import com.nflg.wms.starter.BaseController; import com.sap.conn.jco.JCoException; import jakarta.annotation.Resource; +import jakarta.validation.metadata.ValidateUnwrappedValue; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @@ -76,4 +78,10 @@ public class TestController extends BaseController { String ids=basdeSerialNumberControllerService.generateSerialNumber(0); return ApiResult.success(ids); } + + @GetMapping("/businessError") + public void testThrowBusinessError() throws Exception { + int a=0; + Integer b =100/a; + } } \ No newline at end of file diff --git a/nflg-wms-srm-receive/pom.xml b/nflg-wms-srm-receive/pom.xml index 8da2076c..a4eb0f4e 100644 --- a/nflg-wms-srm-receive/pom.xml +++ b/nflg-wms-srm-receive/pom.xml @@ -38,6 +38,11 @@ org.springframework.boot spring-boot-starter-actuator + + org.redisson + redisson-spring-boot-starter + 3.52.0 + com.sap.conn.jco sapjco3 diff --git a/nflg-wms-srm-receive/src/test/java/com/nflg/wms/srm/receive/DeploySitTest.java b/nflg-wms-srm-receive/src/test/java/com/nflg/wms/srm/receive/DeploySitTest.java index 195f99e7..0adc7bdc 100644 --- a/nflg-wms-srm-receive/src/test/java/com/nflg/wms/srm/receive/DeploySitTest.java +++ b/nflg-wms-srm-receive/src/test/java/com/nflg/wms/srm/receive/DeploySitTest.java @@ -79,7 +79,7 @@ public class DeploySitTest { } private String getRemoteFileMD5(SSHUtil sshUtil, String remotePath) throws Exception { - String md5 = StrUtil.subPre(sshUtil.execWithReturn("md5sum " + remotePath),32); + String md5 = StrUtil.subPre(sshUtil.execWithReturn("md5sum " + remotePath), 32); printInfo("远程文件MD5为" + md5); return md5; } 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 1238f63a..e58bf4b0 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 @@ -1,6 +1,7 @@ package com.nflg.wms.starter.advice; import cn.dev33.satoken.exception.NotLoginException; +import cn.hutool.core.exceptions.ExceptionUtil; import cn.hutool.core.util.StrUtil; import com.nflg.wms.common.constant.Constant; import com.nflg.wms.common.constant.STATE; @@ -31,30 +32,30 @@ public class GlobalRestControllerAdvice { @ExceptionHandler(Exception.class) public ApiResult handleAllExceptions(Exception ex) { - log.error("服务器内部错误: ", ex); + printLog("服务器内部错误", ex); return ApiResult.error(STATE.BusinessError, "服务器内部错误,错误号:" + MDC.get(Constant.TRACE_ID)); } @ExceptionHandler(NflgException.class) public ResponseEntity handleNflgException(NflgException ex) { if (ex.getState() == STATE.LoginError) { - log.error("登录失效: ", ex); + printLog("登录失效", ex); return ResponseEntity.status(HttpStatus.UNAUTHORIZED).body(ex.getMsg()); } else { - log.error("业务错误: ", ex); + printLog("业务错误", ex); return ResponseEntity.ok().body(ApiResult.error(ex.getState(), ex.getMsg())); } } @ExceptionHandler(ConstraintViolationException.class) public ApiResult handleConstraintViolationException(ConstraintViolationException ex) { - log.error("数据校验失败: ", ex); + printLog("数据校验失败", ex); return ApiResult.error(STATE.ParamErr, "数据校验失败: " + StrUtil.join(",", ex.getConstraintViolations().stream().map(ConstraintViolation::getMessage).collect(Collectors.toList()))); } @ExceptionHandler(MethodArgumentNotValidException.class) public ApiResult handleMethodArgumentNotValidException(MethodArgumentNotValidException ex) { - log.error("数据校验失败: ", ex); + printLog("数据校验失败", ex); List errors = new ArrayList<>(); ex.getBindingResult().getAllErrors().forEach(error -> { String fieldName = ((FieldError) error).getField(); @@ -73,19 +74,23 @@ public class GlobalRestControllerAdvice { @ExceptionHandler(NoResourceFoundException.class) @ResponseStatus(HttpStatus.NOT_FOUND) public ApiResult handleNoResourceFoundException(NoResourceFoundException ex) { - log.error("请求的地址无效: ", ex); + printLog("请求的地址无效", ex); return ApiResult.error(STATE.BusinessError, "请求的地址无效:" + ex.getResourcePath()); } @ExceptionHandler(SAPException.class) public ApiResult handleSAPException(SAPException ex) { - log.error("SAP错误: ", ex); + printLog("SAP错误", ex); return ApiResult.error(ex.getState(), "SAP错误:" + ex.getMessage()); } @ExceptionHandler(DataAlertException.class) public ApiResult handleDataAlertException(DataAlertException ex) { - log.error("返回数据的错误: ", ex); + printLog("返回数据的错误", ex); return ApiResult.errorWithExtras(ex.getState(), ex.getObj()); } + + private void printLog(String msg, Throwable ex) { + log.error("{}:{},{}", msg, ex.getMessage(), ExceptionUtil.stacktraceToString(ex)); + } } \ No newline at end of file