From 6315e94b8a23d5f67fdd70743e7cd1fbd4fbd0a0 Mon Sep 17 00:00:00 2001 From: "USER-20220102CG\\noblelift" <546428999@qq.com> Date: Mon, 6 Feb 2023 15:05:27 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../SiemensConveyorDeviceDriver.java | 4 + .../acs/ext/wms/rest/AcsToLiKuController.java | 37 +++--- .../acs/ext/wms/rest/AcsToWmsController.java | 25 ++-- .../acs/ext/wms/rest/LiKuToACSController.java | 17 +-- .../acs/ext/wms/rest/WmsToAcsController.java | 25 ++-- .../main/java/org/nl/common/utils/IdUtil.java | 11 ++ .../nl/modules/logging/InterfaceLogType.java | 24 ++++ .../nl/modules/logging/annotation/Log.java | 31 +++++ .../nl/modules/logging/aspect/LogAspect.java | 67 ++++++++-- .../logging/rest/InterfaceLogController.java | 51 ++++++++ .../logging/service/InterfaceLogService.java | 44 +++++++ .../service/impl/InterfaceLogServiceImpl.java | 70 ++++++++++ .../service/wql/QSCH_INTERFACE_LOGS.wql | 68 ++++++++++ .../java/org/nl/modules/system/wql/sys.xls | Bin 223744 -> 228864 bytes .../src/main/resources/logback-spring.xml | 18 +-- .../src/views/monitor/interfaceLog/index.vue | 120 ++++++++++++++++++ .../monitor/interfaceLog/interfaceLog.js | 22 ++++ .../src/views/monitor/interfaceLog/search.vue | 49 +++++++ 18 files changed, 612 insertions(+), 71 deletions(-) create mode 100644 acs/nladmin-system/src/main/java/org/nl/common/utils/IdUtil.java create mode 100644 acs/nladmin-system/src/main/java/org/nl/modules/logging/InterfaceLogType.java create mode 100644 acs/nladmin-system/src/main/java/org/nl/modules/logging/rest/InterfaceLogController.java create mode 100644 acs/nladmin-system/src/main/java/org/nl/modules/logging/service/InterfaceLogService.java create mode 100644 acs/nladmin-system/src/main/java/org/nl/modules/logging/service/impl/InterfaceLogServiceImpl.java create mode 100644 acs/nladmin-system/src/main/java/org/nl/modules/logging/service/wql/QSCH_INTERFACE_LOGS.wql create mode 100644 acs/nladmin-ui/src/views/monitor/interfaceLog/index.vue create mode 100644 acs/nladmin-ui/src/views/monitor/interfaceLog/interfaceLog.js create mode 100644 acs/nladmin-ui/src/views/monitor/interfaceLog/search.vue diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/siemens_conveyor/SiemensConveyorDeviceDriver.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/siemens_conveyor/SiemensConveyorDeviceDriver.java index 1e8bae273..aeefd94c8 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/siemens_conveyor/SiemensConveyorDeviceDriver.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/siemens_conveyor/SiemensConveyorDeviceDriver.java @@ -901,6 +901,10 @@ public class SiemensConveyorDeviceDriver extends AbstractOpcDeviceDriver impleme message = "指令号"+task+"未找到对应指令"; return; } + if(StrUtil.isEmpty(instruction.getVehicle_code())){ + message = "指令号"+task+"未找到对应木箱号"; + return; + } message = "申请AGV搬运任务中..."; JSONObject apply = new JSONObject(); apply.put("device_code", device_code); diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/rest/AcsToLiKuController.java b/acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/rest/AcsToLiKuController.java index 012674495..494393c02 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/rest/AcsToLiKuController.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/rest/AcsToLiKuController.java @@ -11,6 +11,7 @@ import lombok.extern.slf4j.Slf4j; import org.nl.acs.ext.wms.liKuData.*; import org.nl.acs.ext.wms.service.AcsToLiKuService; import org.nl.acs.ext.wms.service.AcsToWmsService; +import org.nl.modules.logging.InterfaceLogType; import org.nl.modules.logging.annotation.Log; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; @@ -34,77 +35,77 @@ public class AcsToLiKuController { private final AcsToLiKuService acsToLiKuService; @PostMapping("/inStore") - @Log("向立库wcs下发入库任务") - @ApiOperation("向立库wcs下发入库任务") + @Log(value = "下发立库入库任务",isInterfaceLog = true,interfaceLogType= InterfaceLogType.ACS_TO_LK) + @ApiOperation("下发立库物料入库任务") public ResponseEntity inStore(@RequestBody InStoreRequest requestParam) { return new ResponseEntity<>(acsToLiKuService.inStore(requestParam), HttpStatus.OK); } @PostMapping("/outStore") - @Log("向立库wcs下发出库任务") - @ApiOperation("向立库wcs下发出库任务") + @Log(value = "下发立库出库任务",isInterfaceLog = true,interfaceLogType= InterfaceLogType.ACS_TO_LK) + @ApiOperation("下发立库出库任务") public ResponseEntity outStore(@RequestBody OutStoreRequest requestParam) { return new ResponseEntity<>(acsToLiKuService.outStore(requestParam), HttpStatus.OK); } @PostMapping("/emptyVehicleOutStore") - @Log("向立库wcs下发空托盘出库任务") - @ApiOperation("向立库wcs下发空托盘出库任务") + @Log(value = "下发立库空盘出库任务",isInterfaceLog = true,interfaceLogType= InterfaceLogType.ACS_TO_LK) + @ApiOperation("下发立库空盘出库任务") public ResponseEntity emptyVehicleOutStore(@RequestBody EmptyVehicleOutStoreRequest requestParam) { return new ResponseEntity<>(acsToLiKuService.emptyVehicleOutStore(requestParam), HttpStatus.OK); } @PostMapping("/moveStore") - @Log("向立库wcs下发移库任务") - @ApiOperation("向立库wcs下发移库任务") + @Log(value = "下发立库移库任务",isInterfaceLog = true,interfaceLogType= InterfaceLogType.ACS_TO_LK) + @ApiOperation("下发立库移库任务") public ResponseEntity moveStore(@RequestBody MoveStoreRequest requestParam) { return new ResponseEntity<>(acsToLiKuService.moveStore(requestParam), HttpStatus.OK); } @PostMapping("/inStoreReset") - @Log("向立库wcs下发入库任务调整") - @ApiOperation("向立库wcs下发入库任务调整") + @Log(value = "下发立库入库任务调整",isInterfaceLog = true,interfaceLogType= InterfaceLogType.ACS_TO_LK) + @ApiOperation("下发立库入库任务调整") public ResponseEntity inStoreReset(@RequestBody InStoreResetRequest requestParam) { return new ResponseEntity<>(acsToLiKuService.inStoreReset(requestParam), HttpStatus.OK); } @PostMapping("/moveStoreReset") - @Log("向立库wcs下发移库任务调整") - @ApiOperation("向立库wcs下发移库任务调整") + @Log(value = "下发立库移库任务调整",isInterfaceLog = true,interfaceLogType= InterfaceLogType.ACS_TO_LK) + @ApiOperation("下发立库移库任务调整") public ResponseEntity moveStoreReset(@RequestBody MoveStoreResetRequest requestParam) { return new ResponseEntity<>(acsToLiKuService.moveStoreReset(requestParam), HttpStatus.OK); } @PostMapping("/roadWayIsLock") - @Log("向立库下发巷道锁定或解锁") + @Log(value = "下发立库巷道锁定或解锁",isInterfaceLog = true,interfaceLogType= InterfaceLogType.ACS_TO_LK) @ApiOperation("向立库下发巷道锁定或解锁") public ResponseEntity roadWayIsLock(@RequestBody RoadWayIsLockRequest requestParam) { return new ResponseEntity<>(acsToLiKuService.roadWayIsLock(requestParam), HttpStatus.OK); } @PostMapping("/cancelTask") - @Log("向立库下发任务取消") - @ApiOperation("向立库下发任务取消") + @Log(value = "取消立库任务",isInterfaceLog = true,interfaceLogType= InterfaceLogType.ACS_TO_LK) + @ApiOperation("取消立库任务") public ResponseEntity cancelTask(@RequestBody CancelTaskRequest requestParam) { return new ResponseEntity<>(acsToLiKuService.cancelTask(requestParam), HttpStatus.OK); } @PostMapping("/queryCarStatus") - @Log("查询四向车状态") + @Log(value = "查询四向车状态",isInterfaceLog = true,interfaceLogType= InterfaceLogType.ACS_TO_LK) @ApiOperation("查询四向车状态") public ResponseEntity queryCarStatus(@RequestBody DeviceStatusRequest requestParam) { return new ResponseEntity<>(acsToLiKuService.queryCarDeviceStatus(requestParam), HttpStatus.OK); } @PostMapping("/queryTsjStatus") - @Log("查询提升机状态") + @Log(value = "查询提升机状态",isInterfaceLog = true,interfaceLogType= InterfaceLogType.ACS_TO_LK) @ApiOperation("查询提升机状态") public ResponseEntity queryTsjStatus(@RequestBody DeviceStatusRequest requestParam) { return new ResponseEntity<>(acsToLiKuService.queryTsjDeviceStatus(requestParam), HttpStatus.OK); } @PostMapping("/querySsxStatus") - @Log("查询输送线状态") + @Log(value = "查询提升机状态",isInterfaceLog = true,interfaceLogType= InterfaceLogType.ACS_TO_LK) @ApiOperation("查询提升机状态") public ResponseEntity querySsxStatus(@RequestBody DeviceStatusRequest requestParam) { return new ResponseEntity<>(acsToLiKuService.queryTsjDeviceStatus(requestParam), HttpStatus.OK); diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/rest/AcsToWmsController.java b/acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/rest/AcsToWmsController.java index 9d5d6c5ea..35965e4a6 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/rest/AcsToWmsController.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/rest/AcsToWmsController.java @@ -11,6 +11,7 @@ import lombok.extern.slf4j.Slf4j; import org.nl.acs.ext.wms.data.ApplyLabelingAndBindingRequest; import org.nl.acs.ext.wms.data.LiKuApplyTaskRequest; import org.nl.acs.ext.wms.service.AcsToWmsService; +import org.nl.modules.logging.InterfaceLogType; import org.nl.modules.logging.annotation.Log; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; @@ -34,43 +35,43 @@ public class AcsToWmsController { private final AcsToWmsService acstowmsService; @PostMapping("/applyTask") - @Log("向WMS申请任务") - @ApiOperation("向WMS申请任务") + @Log(value = "ACS向WMS申请任务",isInterfaceLog = true,interfaceLogType= InterfaceLogType.ACS_TO_LMS) + @ApiOperation("ACS向WMS申请任务") public ResponseEntity applyTaskToWms(@RequestBody JSONObject jo) { return new ResponseEntity<>(acstowmsService.applyTaskToWms(jo), HttpStatus.OK); } @PostMapping("/taskStatusFeedback") - @Log("向WMS反馈任务状态") - @ApiOperation("向WMS反馈任务状态") + @Log(value = "ACS向WMS反馈任务状态",isInterfaceLog = true,interfaceLogType= InterfaceLogType.ACS_TO_LMS) + @ApiOperation("ACS向WMS反馈任务状态") public ResponseEntity feedbackTaskStatusToWms(@RequestBody Map whereJson) { JSONArray data = JSONArray.parseArray(String.valueOf(whereJson)); return new ResponseEntity<>(acstowmsService.feedbackTaskStatusToWms(data), HttpStatus.OK); } @PostMapping("/feedbackAgvStatus") - @Log("反馈AGV设备状态") + @Log(value = "反馈AGV设备状态",isInterfaceLog = true,interfaceLogType= InterfaceLogType.ACS_TO_LMS) @ApiOperation("反馈AGV设备状态") public ResponseEntity feedbackAgvStatus(@RequestBody String device_code, String error, String error_message) { return new ResponseEntity<>(acstowmsService.feedbackAgvStatus(device_code, error, error_message), HttpStatus.OK); } @PostMapping("/feedbackAgv") - @Log("反馈AGV设备信息") + @Log(value = "反馈AGV设备信息",isInterfaceLog = true,interfaceLogType= InterfaceLogType.ACS_TO_LMS) @ApiOperation("反馈AGV设备信息") public ResponseEntity feedbackAgv(@RequestBody JSONArray from) { return new ResponseEntity<>(acstowmsService.feedbackAgv(from), HttpStatus.OK); } @PostMapping("/feedbackDeviceStatus") - @Log("反馈设备状态") + @Log(value = "反馈设备状态",isInterfaceLog = true,interfaceLogType= InterfaceLogType.ACS_TO_LMS) @ApiOperation("反馈设备状态") public ResponseEntity feedbackDeviceStatus(@RequestBody String device_code, String code, String value) { return new ResponseEntity<>(acstowmsService.feedbackDeviceStatus(device_code, code, value), HttpStatus.OK); } @PostMapping("/feedbackOrderStatus") - @Log("acs强制完成向wms反馈") + @Log(value = "ACS强制完成向WMS反馈",isInterfaceLog = true,interfaceLogType= InterfaceLogType.ACS_TO_LMS) @ApiOperation("acs强制完成向wms反馈") public ResponseEntity feedbackOrderStatus(@RequestBody JSONObject param) { return new ResponseEntity<>(acstowmsService.feedbackOrderStatus(param), HttpStatus.OK); @@ -78,28 +79,28 @@ public class AcsToWmsController { @PostMapping("/applyInCacheLineTask") - @Log("ACS申请缓存线入库任务") + @Log(value = "ACS申请缓存线入库任务",isInterfaceLog = true,interfaceLogType= InterfaceLogType.ACS_TO_LMS) @ApiOperation("ACS申请缓存线入库任务") public ResponseEntity applyInCacheLineTask(@RequestBody JSONObject param) { return new ResponseEntity<>(acstowmsService.applyInCacheLineTask(param), HttpStatus.OK); } @PostMapping("/applyOutCacheLineTask") - @Log("ACS系统申请出库任务") + @Log(value = "ACS系统申请出库任务",isInterfaceLog = true,interfaceLogType= InterfaceLogType.ACS_TO_LMS) @ApiOperation("ACS系统申请出库任务") public ResponseEntity applyOutCacheLineTask(@RequestBody JSONObject param) { return new ResponseEntity<>(acstowmsService.applyOutCacheLineTask(param), HttpStatus.OK); } @PostMapping("/applyLabelingAndBindingRequest") - @Log("ACS系统申请贴标、捆扎") + @Log(value = "ACS系统申请贴标、捆扎",isInterfaceLog = true,interfaceLogType= InterfaceLogType.ACS_TO_LMS) @ApiOperation("ACS系统申请贴标、捆扎") public ResponseEntity applyLabelingAndBindingRequest(@RequestBody ApplyLabelingAndBindingRequest param) { return new ResponseEntity<>(acstowmsService.applyLabelingAndBindingRequest(param), HttpStatus.OK); } @PostMapping("/liKuApplyTaskRequest") - @Log("立库申请任务") + @Log(value = "立库申请任务",isInterfaceLog = true,interfaceLogType= InterfaceLogType.ACS_TO_LMS) @ApiOperation("立库申请任务") public ResponseEntity liKuApplyTaskRequest(@RequestBody LiKuApplyTaskRequest param) { return new ResponseEntity<>(acstowmsService.liKuApplyTaskRequest(param), HttpStatus.OK); diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/rest/LiKuToACSController.java b/acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/rest/LiKuToACSController.java index acf3a41b0..e140f01ba 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/rest/LiKuToACSController.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/rest/LiKuToACSController.java @@ -11,6 +11,7 @@ import lombok.extern.slf4j.Slf4j; import org.nl.acs.ext.wms.liKuData.*; import org.nl.acs.ext.wms.service.AcsToLiKuService; import org.nl.acs.ext.wms.service.LiKuToAcsService; +import org.nl.modules.logging.InterfaceLogType; import org.nl.modules.logging.annotation.Log; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; @@ -33,32 +34,32 @@ public class LiKuToACSController { @SaIgnore @PostMapping("/inStoreReport") - @Log("入库任务上报") - @ApiOperation("向立库下发入库任务上报") + @Log(value = "立库反馈入库任务状态",isInterfaceLog = true,interfaceLogType= InterfaceLogType.LK_TO_ACS) + @ApiOperation("立库反馈入库任务状态") public ResponseEntity inStoreReport(@RequestBody InStoreReportRequest requestParam) throws Exception { return new ResponseEntity<>(liKuToAcsService.inStoreReport(requestParam), HttpStatus.OK); } @SaIgnore @PostMapping("/outStoreReport") - @Log("出库任务上报") - @ApiOperation("向立库下发出库任务上报") + @Log(value = "立库反馈出库任务状态",isInterfaceLog = true,interfaceLogType= InterfaceLogType.LK_TO_ACS) + @ApiOperation("立库反馈出库任务状态") public ResponseEntity outStoreReport(@RequestBody OutStoreReportRequest requestParam) throws Exception { return new ResponseEntity<>(liKuToAcsService.outStoreReport(requestParam), HttpStatus.OK); } @SaIgnore @PostMapping("/moveStoreReport") - @Log("移库任务上报") - @ApiOperation("向立库下发移库任务上报") + @Log(value = "立库反馈移库任务状态",isInterfaceLog = true,interfaceLogType= InterfaceLogType.LK_TO_ACS) + @ApiOperation("立库反馈移库任务状态") public ResponseEntity moveStoreReport(@RequestBody MoveStoreReportRequest requestParam) throws Exception { return new ResponseEntity<>(liKuToAcsService.moveStoreReport(requestParam), HttpStatus.OK); } @SaIgnore @PostMapping("/putEmptyPallet") - @Log("请求放空盘") - @ApiOperation("请求放空盘") + @Log(value = "立库请求放空盘",isInterfaceLog = true,interfaceLogType= InterfaceLogType.LK_TO_ACS) + @ApiOperation("立库请求放空盘") public ResponseEntity putEmptyPallet(@RequestBody putEmptyPalletRequest requestParam) throws Exception { return new ResponseEntity<>(liKuToAcsService.putEmptyPallet(requestParam), HttpStatus.OK); } diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/rest/WmsToAcsController.java b/acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/rest/WmsToAcsController.java index 4ae5fec1a..47c5a8807 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/rest/WmsToAcsController.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/rest/WmsToAcsController.java @@ -10,6 +10,7 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.nl.acs.ext.wms.data.CreateTaskResponse; import org.nl.acs.ext.wms.service.WmsToAcsService; +import org.nl.modules.logging.InterfaceLogType; import org.nl.modules.logging.annotation.Log; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; @@ -31,7 +32,7 @@ public class WmsToAcsController { private final WmsToAcsService wmstoacsService; @PostMapping("/task") - @Log("接收WMS任务") + @Log(value = "ACS接收WMS任务",isInterfaceLog = true,interfaceLogType= InterfaceLogType.LMS_TO_ACS) @ApiOperation("接收WMS任务") @SaIgnore public ResponseEntity createFromWms(@RequestBody String whereJson) { @@ -39,7 +40,7 @@ public class WmsToAcsController { } @PostMapping("/cancelTask") - @Log("WMS取消任务") + @Log(value = "WMS取消任务",isInterfaceLog = true,interfaceLogType= InterfaceLogType.LMS_TO_ACS) @ApiOperation("WMS取消任务") @SaIgnore public ResponseEntity cancelFromWms(@RequestBody String whereJson) throws Exception { @@ -47,38 +48,38 @@ public class WmsToAcsController { } @PostMapping("/updateDeviceGoodsFromWms") - @Log("WMS修改点位状态") + @Log(value = "WMS修改点位状态",isInterfaceLog = true,interfaceLogType= InterfaceLogType.LMS_TO_ACS) @ApiOperation("WMS修改点位状态") public ResponseEntity updateDeviceGoodsFromWms(@RequestBody String whereJson) { return new ResponseEntity<>(wmstoacsService.updateDeviceGoodsFromWms(whereJson), HttpStatus.OK); } @PostMapping("/areaControl") - @Log("区域控制") + @Log(value = "区域控制",isInterfaceLog = true,interfaceLogType= InterfaceLogType.LMS_TO_ACS) @ApiOperation("区域控制") public ResponseEntity areaControl(@RequestBody JSONObject whereJson) { return new ResponseEntity<>(wmstoacsService.areaControl(whereJson), HttpStatus.OK); } @PostMapping("/action") - @Log("下发动作") - @ApiOperation("WMS修改点位状态") + @Log(value = "WMS下发点位信号",isInterfaceLog = true,interfaceLogType= InterfaceLogType.LMS_TO_ACS) + @ApiOperation("WMS下发点位信号") @SaIgnore public ResponseEntity putAction(@RequestBody String whereJson) throws Exception { return new ResponseEntity<>(wmstoacsService.putAction(whereJson), HttpStatus.OK); } @PostMapping("/querydevice") - @Log("查询设备状态") - @ApiOperation("查询设备状态") + @Log(value = "WMS查询设备状态",isInterfaceLog = true,interfaceLogType= InterfaceLogType.LMS_TO_ACS) + @ApiOperation("WMS查询设备状态") @SaIgnore public ResponseEntity queryDevice(@RequestBody String whereJson) throws Exception { return new ResponseEntity<>(wmstoacsService.queryDevice(whereJson), HttpStatus.OK); } @PostMapping("/queryDeviceDBValue") - @Log("查询设备DB值") - @ApiOperation("查询设备DB值") + @Log(value = "WMS查询设备DB值",isInterfaceLog = true,interfaceLogType= InterfaceLogType.LMS_TO_ACS) + @ApiOperation("WMS查询设备DB值") @SaIgnore public ResponseEntity queryDeviceDBValue(@RequestBody String whereJson){ return new ResponseEntity<>(wmstoacsService.queryDeviceDBValue(whereJson), HttpStatus.OK); @@ -86,8 +87,8 @@ public class WmsToAcsController { @PostMapping("/putPlusPullAction") - @Log("下发插拔轴动作") - @ApiOperation("下发插拔轴动作") + @Log(value = "WMS下发插拔轴动作",isInterfaceLog = true,interfaceLogType= InterfaceLogType.LMS_TO_ACS) + @ApiOperation("WMS下发插拔轴动作") @SaIgnore public ResponseEntity putPlusPullAction(@RequestBody String whereJson){ return new ResponseEntity<>(wmstoacsService.putPlusPullAction(whereJson), HttpStatus.OK); diff --git a/acs/nladmin-system/src/main/java/org/nl/common/utils/IdUtil.java b/acs/nladmin-system/src/main/java/org/nl/common/utils/IdUtil.java new file mode 100644 index 000000000..41f47c0b4 --- /dev/null +++ b/acs/nladmin-system/src/main/java/org/nl/common/utils/IdUtil.java @@ -0,0 +1,11 @@ +package org.nl.common.utils; + +public class IdUtil { + public static Long getLongId() { + return cn.hutool.core.util.IdUtil.getSnowflake(1, 1).nextId(); + } + + public static String getStringId() { + return String.valueOf(IdUtil.getLongId()); + } +} diff --git a/acs/nladmin-system/src/main/java/org/nl/modules/logging/InterfaceLogType.java b/acs/nladmin-system/src/main/java/org/nl/modules/logging/InterfaceLogType.java new file mode 100644 index 000000000..35ad0d397 --- /dev/null +++ b/acs/nladmin-system/src/main/java/org/nl/modules/logging/InterfaceLogType.java @@ -0,0 +1,24 @@ +package org.nl.modules.logging; + +/** + * @author: lyd + * @description: + * @Date: 2022/10/11 + */ +public enum InterfaceLogType { + DEFAULT("默认"), + LMS_TO_ACS("LMS请求ACS"), + ACS_TO_LMS("ACS请求LMS"), + ACS_TO_LK("ACS请求LMS"), + LK_TO_ACS("ACS请求LMS"); + + private String desc; + + InterfaceLogType(String desc) { + this.desc=desc; + } + + public String getDesc() { + return desc; + } +} diff --git a/acs/nladmin-system/src/main/java/org/nl/modules/logging/annotation/Log.java b/acs/nladmin-system/src/main/java/org/nl/modules/logging/annotation/Log.java index e14ae508e..98984194a 100644 --- a/acs/nladmin-system/src/main/java/org/nl/modules/logging/annotation/Log.java +++ b/acs/nladmin-system/src/main/java/org/nl/modules/logging/annotation/Log.java @@ -15,6 +15,8 @@ */ package org.nl.modules.logging.annotation; +import org.nl.modules.logging.InterfaceLogType; + import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; @@ -28,4 +30,33 @@ import java.lang.annotation.Target; @Retention(RetentionPolicy.RUNTIME) public @interface Log { String value() default ""; + + /** + * 是否打印到日志文件 + * + * @return + */ + boolean isPrintToLogFile() default false; + + + /** + * 是否插入操作日志表 + * + * @return + */ + boolean isAddLogTable() default true; + + /** + * 是否接口日志 + * + * @return + */ + boolean isInterfaceLog() default false; + + /** + * 接口日志类型 + * + * @return + */ + InterfaceLogType interfaceLogType() default InterfaceLogType.DEFAULT; } diff --git a/acs/nladmin-system/src/main/java/org/nl/modules/logging/aspect/LogAspect.java b/acs/nladmin-system/src/main/java/org/nl/modules/logging/aspect/LogAspect.java index 24e8e05f4..6805932bf 100644 --- a/acs/nladmin-system/src/main/java/org/nl/modules/logging/aspect/LogAspect.java +++ b/acs/nladmin-system/src/main/java/org/nl/modules/logging/aspect/LogAspect.java @@ -15,8 +15,11 @@ */ package org.nl.modules.logging.aspect; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.json.JSONUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; import lombok.extern.slf4j.Slf4j; import org.aspectj.lang.JoinPoint; import org.aspectj.lang.ProceedingJoinPoint; @@ -25,12 +28,14 @@ import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Pointcut; import org.aspectj.lang.reflect.MethodSignature; +import org.nl.common.utils.IdUtil; import org.nl.modules.common.utils.RequestHolder; import org.nl.modules.common.utils.SecurityUtils; import org.nl.modules.common.utils.StringUtils; import org.nl.modules.common.utils.ThrowableUtil; import org.nl.modules.logging.domain.Log; import org.nl.modules.logging.service.LogService; +import org.nl.modules.wql.core.bean.WQLObject; import org.springframework.stereotype.Component; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestParam; @@ -38,10 +43,7 @@ import org.springframework.web.bind.annotation.RequestParam; import javax.servlet.http.HttpServletRequest; import java.lang.reflect.Method; import java.lang.reflect.Parameter; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; /** * @author Zheng Jie @@ -75,21 +77,62 @@ public class LogAspect { */ @Around("logPointcut()") public Object logAround(ProceedingJoinPoint joinPoint) throws Throwable { + String trackId = UUID.randomUUID().toString(); MethodSignature signature = (MethodSignature) joinPoint.getSignature(); Method method = signature.getMethod(); // 方法路径 String methodName = joinPoint.getTarget().getClass().getName() + "." + signature.getName() + "()"; - String params=getParameter(method, joinPoint.getArgs()); - log.info("请求方法:{}",methodName); - log.info("请求方法参数:{}",params); + String params = getParameter(method, joinPoint.getArgs()); + org.nl.modules.logging.annotation.Log logInfo = method.getAnnotation(org.nl.modules.logging.annotation.Log.class); + + //是否输出到日志文件 + if (logInfo.isPrintToLogFile()) { + log.info("track_id:{},请求方法:{},请求方法参数:{}",trackId,methodName,params); + } + HttpServletRequest request = RequestHolder.getHttpServletRequest(); + String requestIp = StringUtils.getIp(request); Object result; currentTime.set(System.currentTimeMillis()); - result = joinPoint.proceed(); - Log log = new Log("INFO",System.currentTimeMillis() - currentTime.get()); - currentTime.remove(); - HttpServletRequest request = RequestHolder.getHttpServletRequest(); - logService.save(getUsername(), StringUtils.getBrowser(request), StringUtils.getIp(request),joinPoint, log); + try { + result = joinPoint.proceed(); + //是否把日志存到日志表 + if (logInfo.isAddLogTable()) { + Log log = new Log("INFO", System.currentTimeMillis() - currentTime.get()); + currentTime.remove(); + logService.save(getUsername(), StringUtils.getBrowser(request), requestIp, joinPoint, log); + } + if (logInfo.isInterfaceLog()) { + try { + WQLObject interfaceLog = WQLObject.getWQLObject("sys_interface_log"); + JSONObject json = new JSONObject(); + json.put("log_id", IdUtil.getStringId()); + json.put("description", logInfo.value()); + json.put("log_type", logInfo.interfaceLogType().getDesc()); + json.put("log_level", "1"); + json.put("method", methodName); + json.put("params", getParameter(method, joinPoint.getArgs())); + json.put("request_ip", StringUtils.getIp(request)); +// json.put("time", System.currentTimeMillis() - currentTime.get()); + json.put("username", getUsername()); + json.put("address", StringUtils.getCityInfo(requestIp)); + json.put("browser", StringUtils.getBrowser(request)); + json.put("exception_detail", IdUtil.getStringId()); + json.put("create_time", DateUtil.now()); + json.put("return_result", result.toString()); + interfaceLog.insert(json); + } catch (Exception e) { + + } + } + }catch (Exception ex){ + log.error("track_id:{},error:{}",trackId,ex.getMessage()); + Log log = new Log("ERROR", System.currentTimeMillis() - currentTime.get()); + currentTime.remove(); + log.setExceptionDetail(ThrowableUtil.getStackTrace(ex).getBytes()); + logService.save(getUsername(), StringUtils.getBrowser(request), StringUtils.getIp(request), (ProceedingJoinPoint) joinPoint, log); + throw ex; + } return result; } diff --git a/acs/nladmin-system/src/main/java/org/nl/modules/logging/rest/InterfaceLogController.java b/acs/nladmin-system/src/main/java/org/nl/modules/logging/rest/InterfaceLogController.java new file mode 100644 index 000000000..847d8f5f5 --- /dev/null +++ b/acs/nladmin-system/src/main/java/org/nl/modules/logging/rest/InterfaceLogController.java @@ -0,0 +1,51 @@ +package org.nl.modules.logging.rest; + +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.nl.modules.logging.annotation.Log; +import org.nl.modules.logging.service.InterfaceLogService; +import org.springframework.data.domain.Pageable; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; + +import java.util.Map; + +/** + * @author ldjun + * @version 1.0 + * @date 2023年01月29日 18:55 + * @desc desc + */ + +@RestController +@RequiredArgsConstructor +@RequestMapping("/api/interfaceLog") +@Api(tags = "系统:接口日志管理") +public class InterfaceLogController { + private final InterfaceLogService interfaceLogService; + + @GetMapping + @Log("查询接口日志") + @ApiOperation("查询接口日志") + //@SaCheckPermission("point:list") + public ResponseEntity query(@RequestParam Map whereJson, Pageable page) { + return new ResponseEntity<>(interfaceLogService.queryAll(whereJson, page), HttpStatus.OK); + } + + @DeleteMapping(value = "/delLogs") + @Log("删除所有接口日志") + @ApiOperation("删除所有接口日志") + public ResponseEntity delLogs(){ + interfaceLogService.delLogs(); + return new ResponseEntity<>(HttpStatus.OK); + } + + @GetMapping("/logTypeList") + @Log("查询接口日志类型下拉框") + @ApiOperation("查询接口日志类型下拉框") + public ResponseEntity logTypeList() { + return new ResponseEntity<>(interfaceLogService.logTypeList(), HttpStatus.OK); + } +} diff --git a/acs/nladmin-system/src/main/java/org/nl/modules/logging/service/InterfaceLogService.java b/acs/nladmin-system/src/main/java/org/nl/modules/logging/service/InterfaceLogService.java new file mode 100644 index 000000000..b40b2d6b6 --- /dev/null +++ b/acs/nladmin-system/src/main/java/org/nl/modules/logging/service/InterfaceLogService.java @@ -0,0 +1,44 @@ +/* + * Copyright 2019-2020 Zheng Jie + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.nl.modules.logging.service; + +import com.alibaba.fastjson.JSONArray; +import org.springframework.data.domain.Pageable; + +import java.util.Map; + +/** + * @author Zheng Jie + * @date 2018-11-24 + */ +public interface InterfaceLogService { + + /** + * 查询数据分页 + * @param whereJson 条件 + * @param page 分页参数 + * @return Map + */ + Map queryAll(Map whereJson, Pageable page); + + + /** + * 删除所有日志 + */ + void delLogs(); + + JSONArray logTypeList(); +} diff --git a/acs/nladmin-system/src/main/java/org/nl/modules/logging/service/impl/InterfaceLogServiceImpl.java b/acs/nladmin-system/src/main/java/org/nl/modules/logging/service/impl/InterfaceLogServiceImpl.java new file mode 100644 index 000000000..6b9d5a5d1 --- /dev/null +++ b/acs/nladmin-system/src/main/java/org/nl/modules/logging/service/impl/InterfaceLogServiceImpl.java @@ -0,0 +1,70 @@ +/* + * Copyright 2019-2020 Zheng Jie + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.nl.modules.logging.service.impl; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.nl.modules.logging.InterfaceLogType; +import org.nl.modules.logging.service.InterfaceLogService; +import org.nl.modules.wql.WQL; +import org.nl.modules.wql.core.bean.WQLObject; +import org.nl.modules.wql.util.WqlUtil; +import org.springframework.data.domain.Pageable; +import org.springframework.stereotype.Service; + +import java.util.HashMap; +import java.util.Map; + +/** + * @author Zheng Jie + * @date 2018-11-24 + */ +@Service +@RequiredArgsConstructor +@Slf4j +public class InterfaceLogServiceImpl implements InterfaceLogService { + + + @Override + public Map queryAll(Map whereJson, Pageable pageable) { + HashMap map = new HashMap(); + map.put("flag", "1"); + map.put("blurry", whereJson.get("blurry")); + map.put("logType", whereJson.get("logType")); + map.put("begin_time", whereJson.get("begin_time")); + map.put("end_time", whereJson.get("end_time")); + JSONObject json = WQL.getWO("QSCH_INTERFACE_LOGS").addParamMap(map).pageQuery(WqlUtil.getHttpContext(pageable), "create_time desc"); + return json; + } + + @Override + public void delLogs() { + WQLObject logTab = WQLObject.getWQLObject("sys_interface_log"); + logTab.delete("log_id is not null"); + } + + @Override + public JSONArray logTypeList() { + JSONArray jsonArray = new JSONArray(); + InterfaceLogType[] values = InterfaceLogType.values(); + for (InterfaceLogType value : values) { + jsonArray.add(value.getDesc()); + } + return jsonArray; + } +} diff --git a/acs/nladmin-system/src/main/java/org/nl/modules/logging/service/wql/QSCH_INTERFACE_LOGS.wql b/acs/nladmin-system/src/main/java/org/nl/modules/logging/service/wql/QSCH_INTERFACE_LOGS.wql new file mode 100644 index 000000000..afd14ee44 --- /dev/null +++ b/acs/nladmin-system/src/main/java/org/nl/modules/logging/service/wql/QSCH_INTERFACE_LOGS.wql @@ -0,0 +1,68 @@ +[交易说明] + 交易名: 接口日志分页查询 + 所属模块: + 功能简述: + 版权所有: + 表引用: + 版本经历: + +[数据库] + --指定数据库,为空采用默认值,默认为db.properties中列出的第一个库 + +[IO定义] + ################################################# + ## 表字段对应输入参数 + ################################################# + 输入.flag TYPEAS s_string + 输入.blurry TYPEAS s_string + 输入.logType TYPEAS s_string + 输入.begin_time TYPEAS s_string + 输入.end_time TYPEAS s_string + + +[临时表] + --这边列出来的临时表就会在运行期动态创建 + +[临时变量] + --所有中间过程变量均可在此处定义 + +[业务过程] + + ########################################## + # 1、输入输出检查 # + ########################################## + + + ########################################## + # 2、主过程前处理 # + ########################################## + + + ########################################## + # 3、业务主过程 # + ########################################## + + IF 输入.flag = "1" + PAGEQUERY + SELECT + * + FROM + sys_interface_log + WHERE + 1=1 + OPTION 输入.blurry <> "" + description like "%" 输入.blurry "%" + ENDOPTION + OPTION 输入.logType <> "" + log_type = 输入.logType + ENDOPTION + OPTION 输入.begin_time <> "" + create_time >= 输入.begin_time + ENDOPTION + OPTION 输入.end_time <> "" + create_time <= 输入.end_time + ENDOPTION + ENDSELECT + ENDPAGEQUERY + ENDIF + diff --git a/acs/nladmin-system/src/main/java/org/nl/modules/system/wql/sys.xls b/acs/nladmin-system/src/main/java/org/nl/modules/system/wql/sys.xls index a73514e742fd336ef67fc966b2897443e62d08c3..82566ab6461a4d0e92adeacbb1883cf1ca00f877 100644 GIT binary patch delta 15029 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 bp|eLWau3XGD5EC!u7#{0V^1hzo9KT5x*cU@ delta 11141 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 diff --git a/acs/nladmin-system/src/main/resources/logback-spring.xml b/acs/nladmin-system/src/main/resources/logback-spring.xml index 86bdaa02c..89c60a213 100644 --- a/acs/nladmin-system/src/main/resources/logback-spring.xml +++ b/acs/nladmin-system/src/main/resources/logback-spring.xml @@ -97,21 +97,21 @@ https://juejin.cn/post/6844903775631572999 - + - + - + - + @@ -143,27 +143,27 @@ https://juejin.cn/post/6844903775631572999 - + - + - + - + - + diff --git a/acs/nladmin-ui/src/views/monitor/interfaceLog/index.vue b/acs/nladmin-ui/src/views/monitor/interfaceLog/index.vue new file mode 100644 index 000000000..3999c89e2 --- /dev/null +++ b/acs/nladmin-ui/src/views/monitor/interfaceLog/index.vue @@ -0,0 +1,120 @@ + + + + + diff --git a/acs/nladmin-ui/src/views/monitor/interfaceLog/interfaceLog.js b/acs/nladmin-ui/src/views/monitor/interfaceLog/interfaceLog.js new file mode 100644 index 000000000..fed5509dc --- /dev/null +++ b/acs/nladmin-ui/src/views/monitor/interfaceLog/interfaceLog.js @@ -0,0 +1,22 @@ +import request from '@/utils/request' + +export function add(data) { + return request({ + url: 'api/interfaceLog', + method: 'post', + data + }) +} +export function delLogs() { + return request({ + url: 'api/interfaceLog/delLogs', + method: 'delete' + }) +} +export function getLogTypeList() { + return request({ + url: 'api/interfaceLog/logTypeList', + method: 'get' + }) +} +export default { add, delLogs, getLogTypeList } diff --git a/acs/nladmin-ui/src/views/monitor/interfaceLog/search.vue b/acs/nladmin-ui/src/views/monitor/interfaceLog/search.vue new file mode 100644 index 000000000..e1eb1fadf --- /dev/null +++ b/acs/nladmin-ui/src/views/monitor/interfaceLog/search.vue @@ -0,0 +1,49 @@ + + +