From 4ba7fa1e0418e45b8f720307d787f20e3088c4d7 Mon Sep 17 00:00:00 2001 From: syruan <321359594@qq.com> Date: Thu, 18 Apr 2024 16:34:01 +0800 Subject: [PATCH] =?UTF-8?q?=E7=89=A9=E8=B5=84LOG=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sgzb/system/api/domain/BmNumLogs.java | 12 +- .../sgzb/common/log/aspect/LogAspect.java | 106 +++++++++++++++++- .../common/log/service/AsyncLogService.java | 9 ++ .../SecondaryWarehouseController.java | 1 + .../controller/BmNumLogsController.java | 4 +- .../sgzb/system}/mapper/BmNumLogsMapper.java | 2 +- .../service/impl/BmNumLogsService.java | 4 +- .../mapper/system}/BmNumLogsMapper.xml | 19 +++- 8 files changed, 144 insertions(+), 13 deletions(-) rename sgzb-modules/{sgzb-material/src/main/java/com/bonus/sgzb/material => sgzb-system/src/main/java/com/bonus/sgzb/system}/controller/BmNumLogsController.java (92%) rename sgzb-modules/{sgzb-material/src/main/java/com/bonus/sgzb/material => sgzb-system/src/main/java/com/bonus/sgzb/system}/mapper/BmNumLogsMapper.java (91%) rename sgzb-modules/{sgzb-material/src/main/java/com/bonus/sgzb/material => sgzb-system/src/main/java/com/bonus/sgzb/system}/service/impl/BmNumLogsService.java (91%) rename sgzb-modules/{sgzb-material/src/main/resources/mapper/material => sgzb-system/src/main/resources/mapper/system}/BmNumLogsMapper.xml (90%) diff --git a/sgzb-api/sgzb-api-system/src/main/java/com/bonus/sgzb/system/api/domain/BmNumLogs.java b/sgzb-api/sgzb-api-system/src/main/java/com/bonus/sgzb/system/api/domain/BmNumLogs.java index dd10acdd..840ffbf4 100644 --- a/sgzb-api/sgzb-api-system/src/main/java/com/bonus/sgzb/system/api/domain/BmNumLogs.java +++ b/sgzb-api/sgzb-api-system/src/main/java/com/bonus/sgzb/system/api/domain/BmNumLogs.java @@ -34,6 +34,10 @@ public class BmNumLogs extends BaseEntity { @Excel(name = "接口地址/请求方法") private String method; + /** 请求方式 */ + @Excel(name = "请求方式") + private String requestMethod; + /** * 实例 */ @@ -46,6 +50,12 @@ public class BmNumLogs extends BaseEntity { @Excel(name = "规格id") private Integer typeId; + /** + * 数量 + */ + @Excel(name = "数量") + private String num; + /** * 描述/请求参数/实体 */ @@ -80,6 +90,6 @@ public class BmNumLogs extends BaseEntity { * 状态: 默认0, 其他值则为异常 */ @Excel(name = "状态") - private Byte status; + private Integer status; } \ No newline at end of file diff --git a/sgzb-common/sgzb-common-log/src/main/java/com/bonus/sgzb/common/log/aspect/LogAspect.java b/sgzb-common/sgzb-common-log/src/main/java/com/bonus/sgzb/common/log/aspect/LogAspect.java index d8eeb2bd..0177b3d0 100644 --- a/sgzb-common/sgzb-common-log/src/main/java/com/bonus/sgzb/common/log/aspect/LogAspect.java +++ b/sgzb-common/sgzb-common-log/src/main/java/com/bonus/sgzb/common/log/aspect/LogAspect.java @@ -2,12 +2,15 @@ package com.bonus.sgzb.common.log.aspect; import java.util.Collection; import java.util.Map; +import java.util.Objects; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.bonus.sgzb.common.log.annotation.Log; +import com.bonus.sgzb.common.log.enums.BusinessType; import com.bonus.sgzb.common.log.filter.PropertyPreExcludeFilter; import com.bonus.sgzb.common.log.service.AsyncLogService; +import com.bonus.sgzb.system.api.domain.BmNumLogs; import org.apache.commons.lang3.ArrayUtils; import org.aspectj.lang.JoinPoint; import org.aspectj.lang.annotation.AfterReturning; @@ -67,7 +70,11 @@ public class LogAspect @AfterReturning(pointcut = "@annotation(controllerLog)", returning = "jsonResult") public void doAfterReturning(JoinPoint joinPoint, Log controllerLog, Object jsonResult) { - handleLog(joinPoint, controllerLog, null, jsonResult); + if (controllerLog.businessType() == BusinessType.MATERIAL) { + handleMaterialLog(joinPoint, controllerLog, null, jsonResult); + } else { + handleLog(joinPoint, controllerLog, null, jsonResult); + } } /** @@ -129,6 +136,48 @@ public class LogAspect } } + protected void handleMaterialLog(final JoinPoint joinPoint, Log controllerLog, final Exception e, Object jsonResult) { + try + { + // *========数据库物资日志=========*// + BmNumLogs bmNumLogs = new BmNumLogs(); + bmNumLogs.setStatus(BusinessStatus.SUCCESS.ordinal()); + + // 请求的地址 + bmNumLogs.setMethod(StringUtils.substring(Objects.requireNonNull(ServletUtils.getRequest()).getRequestURI(), 0, 255)); + String username = SecurityUtils.getUsername(); + if (StringUtils.isNotBlank(username)) + { + bmNumLogs.setCreator(username); + } + + if (e != null) { + bmNumLogs.setStatus(BusinessStatus.FAIL.ordinal()); + bmNumLogs.setJsonResult(StringUtils.substring(e.getMessage(), 0, 2000)); + } + // 设置方法名称 + String className = joinPoint.getTarget().getClass().getName(); + String methodName = joinPoint.getSignature().getName(); + bmNumLogs.setModelTitle(className + "." + methodName + "()"); + // 设置请求方式 + bmNumLogs.setRequestMethod(ServletUtils.getRequest().getMethod()); + // 处理设置注解上的参数 + getControllerMethodDescriptionByMaterial(joinPoint, controllerLog, bmNumLogs, jsonResult); + // 保存数据库 + asyncLogService.saveNumLog(bmNumLogs); + } + catch (Exception exp) + { + // 记录本地异常日志 + log.error("异常信息:{}", exp.getMessage()); + exp.printStackTrace(); + } + finally + { + TIME_THREADLOCAL.remove(); + } + } + /** * 获取注解中对方法的描述信息 用于Controller层注解 * @@ -157,6 +206,25 @@ public class LogAspect } } + /** + * 获取注解中对方法的描述信息 用于Controller层注解 + * + * @param log 日志 + * @param materialLog 物资日志 + * @throws Exception + */ + public void getControllerMethodDescriptionByMaterial(JoinPoint joinPoint, Log log, BmNumLogs materialLog, Object jsonResult) throws Exception + { + // 设置标题 + materialLog.setModelTitle(log.title()); + // 获取参数的信息,传入到数据库中。 + setRequestValue(joinPoint, materialLog, log.excludeParamNames()); + // 保存response,参数和值 + if (StringUtils.isNotNull(jsonResult)) { + materialLog.setJsonResult(StringUtils.substring(JSON.toJSONString(jsonResult), 0, 2000)); + } + } + /** * 获取请求的参数,放到log中 * @@ -176,6 +244,42 @@ public class LogAspect } } + /** + * 获取请求的参数,放到log中 + * + * @param numLog 物资日志 + * @throws Exception 异常 + */ + private void setRequestValue(JoinPoint joinPoint, BmNumLogs numLog, String[] excludeParamNames) throws Exception { + String requestMethod = numLog.getRequestMethod(); + Map paramsMap = ServletUtils.getParamMap(ServletUtils.getRequest()); + if (StringUtils.isEmpty(paramsMap)) { + if ((HttpMethod.PUT.name().equals(requestMethod) || HttpMethod.POST.name().equals(requestMethod))){ + String params = argsArrayToString(joinPoint.getArgs(), excludeParamNames); + numLog.setDescription(StringUtils.substring(params, 0, 2000)); + } + } else { + if (paramsMap.containsKey("num")) { + if (paramsMap.get("num") instanceof Integer) { + numLog.setNum(String.valueOf(paramsMap.get("num"))); + } else if (paramsMap.get("num") instanceof String) { + numLog.setNum((String) paramsMap.get("num")); + } + } + if (paramsMap.containsKey("taskId")) { + numLog.setTask(String.valueOf(paramsMap.get("taskId"))); + } + if (paramsMap.containsKey("typeId")) { + if (paramsMap.get("typeId") instanceof Integer) { + numLog.setTypeId((Integer) paramsMap.get("typeId")); + } else if (paramsMap.get("typeId") instanceof String) { + numLog.setTypeId(Integer.valueOf((String) paramsMap.get("typeId"))); + } + } + numLog.setDescription(StringUtils.substring(JSON.toJSONString(paramsMap, excludePropertyPreFilter(excludeParamNames)), 0, 2000)); + } + } + /** * 参数拼装 */ diff --git a/sgzb-common/sgzb-common-log/src/main/java/com/bonus/sgzb/common/log/service/AsyncLogService.java b/sgzb-common/sgzb-common-log/src/main/java/com/bonus/sgzb/common/log/service/AsyncLogService.java index 19ffda2d..ce44d28f 100644 --- a/sgzb-common/sgzb-common-log/src/main/java/com/bonus/sgzb/common/log/service/AsyncLogService.java +++ b/sgzb-common/sgzb-common-log/src/main/java/com/bonus/sgzb/common/log/service/AsyncLogService.java @@ -1,5 +1,6 @@ package com.bonus.sgzb.common.log.service; +import com.bonus.sgzb.system.api.domain.BmNumLogs; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; @@ -26,4 +27,12 @@ public class AsyncLogService { remoteLogService.saveLog(sysOperLog, SecurityConstants.INNER); } + + /** + * 保存物资日志记录 + */ + @Async + public void saveNumLog(BmNumLogs bmNumLogsLog) throws Exception { + remoteLogService.saveNumberLog(bmNumLogsLog, SecurityConstants.INNER); + } } diff --git a/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/material/controller/SecondaryWarehouseController.java b/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/material/controller/SecondaryWarehouseController.java index 665ae744..a9d78764 100644 --- a/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/material/controller/SecondaryWarehouseController.java +++ b/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/material/controller/SecondaryWarehouseController.java @@ -54,6 +54,7 @@ public class SecondaryWarehouseController extends BaseController { */ @ApiOperation(value = "出库/退库操作") @PostMapping("/operate") + @Log(title = "二级库管理--出库退库操作", businessType = BusinessType.MATERIAL) public AjaxResult operate(TeamLeaseInfo bean){ return toAjax(service.addOperate(bean)); } diff --git a/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/material/controller/BmNumLogsController.java b/sgzb-modules/sgzb-system/src/main/java/com/bonus/sgzb/system/controller/BmNumLogsController.java similarity index 92% rename from sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/material/controller/BmNumLogsController.java rename to sgzb-modules/sgzb-system/src/main/java/com/bonus/sgzb/system/controller/BmNumLogsController.java index c6dc4e47..15e4947d 100644 --- a/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/material/controller/BmNumLogsController.java +++ b/sgzb-modules/sgzb-system/src/main/java/com/bonus/sgzb/system/controller/BmNumLogsController.java @@ -1,10 +1,10 @@ -package com.bonus.sgzb.material.controller; +package com.bonus.sgzb.system.controller; import com.bonus.sgzb.common.core.web.controller.BaseController; import com.bonus.sgzb.common.core.web.domain.AjaxResult; import com.bonus.sgzb.common.core.web.page.TableDataInfo; import com.bonus.sgzb.common.security.annotation.InnerAuth; import com.bonus.sgzb.system.api.domain.BmNumLogs; -import com.bonus.sgzb.material.service.impl.BmNumLogsService; +import com.bonus.sgzb.system.service.impl.BmNumLogsService; import org.springframework.web.bind.annotation.*; import org.springframework.beans.factory.annotation.Autowired; diff --git a/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/material/mapper/BmNumLogsMapper.java b/sgzb-modules/sgzb-system/src/main/java/com/bonus/sgzb/system/mapper/BmNumLogsMapper.java similarity index 91% rename from sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/material/mapper/BmNumLogsMapper.java rename to sgzb-modules/sgzb-system/src/main/java/com/bonus/sgzb/system/mapper/BmNumLogsMapper.java index ef417e9d..62b9dfb5 100644 --- a/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/material/mapper/BmNumLogsMapper.java +++ b/sgzb-modules/sgzb-system/src/main/java/com/bonus/sgzb/system/mapper/BmNumLogsMapper.java @@ -1,4 +1,4 @@ -package com.bonus.sgzb.material.mapper; +package com.bonus.sgzb.system.mapper; import com.bonus.sgzb.system.api.domain.BmNumLogs; import org.apache.ibatis.annotations.Mapper; diff --git a/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/material/service/impl/BmNumLogsService.java b/sgzb-modules/sgzb-system/src/main/java/com/bonus/sgzb/system/service/impl/BmNumLogsService.java similarity index 91% rename from sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/material/service/impl/BmNumLogsService.java rename to sgzb-modules/sgzb-system/src/main/java/com/bonus/sgzb/system/service/impl/BmNumLogsService.java index 3b1044e8..d6fc772a 100644 --- a/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/material/service/impl/BmNumLogsService.java +++ b/sgzb-modules/sgzb-system/src/main/java/com/bonus/sgzb/system/service/impl/BmNumLogsService.java @@ -1,11 +1,11 @@ -package com.bonus.sgzb.material.service.impl; +package com.bonus.sgzb.system.service.impl; +import com.bonus.sgzb.system.mapper.BmNumLogsMapper; import org.springframework.stereotype.Service; import org.springframework.beans.factory.annotation.Autowired; import com.bonus.sgzb.system.api.domain.BmNumLogs; -import com.bonus.sgzb.material.mapper.BmNumLogsMapper; import java.util.List; diff --git a/sgzb-modules/sgzb-material/src/main/resources/mapper/material/BmNumLogsMapper.xml b/sgzb-modules/sgzb-system/src/main/resources/mapper/system/BmNumLogsMapper.xml similarity index 90% rename from sgzb-modules/sgzb-material/src/main/resources/mapper/material/BmNumLogsMapper.xml rename to sgzb-modules/sgzb-system/src/main/resources/mapper/system/BmNumLogsMapper.xml index f85c75fc..9d8460e1 100644 --- a/sgzb-modules/sgzb-material/src/main/resources/mapper/material/BmNumLogsMapper.xml +++ b/sgzb-modules/sgzb-system/src/main/resources/mapper/system/BmNumLogsMapper.xml @@ -1,6 +1,6 @@ - + @@ -9,6 +9,7 @@ + @@ -19,8 +20,8 @@ - id, model_title, `method`, task, type_id, description, json_result, `time`, creator, - remark, status + id, model_title, `method`, task, type_id, num, `description`, json_result, `time`, creator, + remark, `status`