系统级别错误日志

This commit is contained in:
1378012178@qq.com 2026-03-10 13:28:30 +08:00
parent dc43f5d59c
commit 51ae64a074
8 changed files with 583 additions and 0 deletions

View File

@ -0,0 +1,180 @@
package com.nu.modules.errorrecordlog.controller;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.jeecg.common.api.vo.Result;
import org.jeecg.common.system.query.QueryGenerator;
import org.jeecg.common.system.query.QueryRuleEnum;
import org.jeecg.common.util.oConvertUtils;
import com.nu.modules.errorrecordlog.entity.ErrorRecordLog;
import com.nu.modules.errorrecordlog.service.IErrorRecordLogService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import lombok.extern.slf4j.Slf4j;
import org.jeecgframework.poi.excel.ExcelImportUtil;
import org.jeecgframework.poi.excel.def.NormalExcelConstants;
import org.jeecgframework.poi.excel.entity.ExportParams;
import org.jeecgframework.poi.excel.entity.ImportParams;
import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
import org.jeecg.common.system.base.controller.JeecgController;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import org.springframework.web.servlet.ModelAndView;
import com.alibaba.fastjson.JSON;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.jeecg.common.aspect.annotation.AutoLog;
import org.apache.shiro.authz.annotation.RequiresPermissions;
/**
* @Description: nu_error_record_log
* @Author: jeecg-boot
* @Date: 2026-03-10
* @Version: V1.0
*/
@Api(tags="nu_error_record_log")
@RestController
@RequestMapping("/errorrecordlog/errorRecordLog")
@Slf4j
public class ErrorRecordLogController extends JeecgController<ErrorRecordLog, IErrorRecordLogService> {
@Autowired
private IErrorRecordLogService errorRecordLogService;
/**
* 分页列表查询
*
* @param errorRecordLog
* @param pageNo
* @param pageSize
* @param req
* @return
*/
//@AutoLog(value = "nu_error_record_log-分页列表查询")
@ApiOperation(value="nu_error_record_log-分页列表查询", notes="nu_error_record_log-分页列表查询")
@GetMapping(value = "/list")
public Result<IPage<ErrorRecordLog>> queryPageList(ErrorRecordLog errorRecordLog,
@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
HttpServletRequest req) {
QueryWrapper<ErrorRecordLog> queryWrapper = QueryGenerator.initQueryWrapper(errorRecordLog, req.getParameterMap());
Page<ErrorRecordLog> page = new Page<ErrorRecordLog>(pageNo, pageSize);
IPage<ErrorRecordLog> pageList = errorRecordLogService.page(page, queryWrapper);
return Result.OK(pageList);
}
/**
* 添加
*
* @param errorRecordLog
* @return
*/
@AutoLog(value = "nu_error_record_log-添加")
@ApiOperation(value="nu_error_record_log-添加", notes="nu_error_record_log-添加")
@RequiresPermissions("errorrecordlog:nu_error_record_log:add")
@PostMapping(value = "/add")
public Result<String> add(@RequestBody ErrorRecordLog errorRecordLog) {
errorRecordLogService.save(errorRecordLog);
return Result.OK("添加成功!");
}
/**
* 编辑
*
* @param errorRecordLog
* @return
*/
@AutoLog(value = "nu_error_record_log-编辑")
@ApiOperation(value="nu_error_record_log-编辑", notes="nu_error_record_log-编辑")
@RequiresPermissions("errorrecordlog:nu_error_record_log:edit")
@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
public Result<String> edit(@RequestBody ErrorRecordLog errorRecordLog) {
errorRecordLogService.updateById(errorRecordLog);
return Result.OK("编辑成功!");
}
/**
* 通过id删除
*
* @param id
* @return
*/
@AutoLog(value = "nu_error_record_log-通过id删除")
@ApiOperation(value="nu_error_record_log-通过id删除", notes="nu_error_record_log-通过id删除")
@RequiresPermissions("errorrecordlog:nu_error_record_log:delete")
@DeleteMapping(value = "/delete")
public Result<String> delete(@RequestParam(name="id",required=true) String id) {
errorRecordLogService.removeById(id);
return Result.OK("删除成功!");
}
/**
* 批量删除
*
* @param ids
* @return
*/
@AutoLog(value = "nu_error_record_log-批量删除")
@ApiOperation(value="nu_error_record_log-批量删除", notes="nu_error_record_log-批量删除")
@RequiresPermissions("errorrecordlog:nu_error_record_log:deleteBatch")
@DeleteMapping(value = "/deleteBatch")
public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
this.errorRecordLogService.removeByIds(Arrays.asList(ids.split(",")));
return Result.OK("批量删除成功!");
}
/**
* 通过id查询
*
* @param id
* @return
*/
//@AutoLog(value = "nu_error_record_log-通过id查询")
@ApiOperation(value="nu_error_record_log-通过id查询", notes="nu_error_record_log-通过id查询")
@GetMapping(value = "/queryById")
public Result<ErrorRecordLog> queryById(@RequestParam(name="id",required=true) String id) {
ErrorRecordLog errorRecordLog = errorRecordLogService.getById(id);
if(errorRecordLog==null) {
return Result.error("未找到对应数据");
}
return Result.OK(errorRecordLog);
}
/**
* 导出excel
*
* @param request
* @param errorRecordLog
*/
@RequiresPermissions("errorrecordlog:nu_error_record_log:exportXls")
@RequestMapping(value = "/exportXls")
public ModelAndView exportXls(HttpServletRequest request, ErrorRecordLog errorRecordLog) {
return super.exportXls(request, errorRecordLog, ErrorRecordLog.class, "nu_error_record_log");
}
/**
* 通过excel导入数据
*
* @param request
* @param response
* @return
*/
@RequiresPermissions("errorrecordlog:nu_error_record_log:importExcel")
@RequestMapping(value = "/importExcel", method = RequestMethod.POST)
public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
return super.importExcel(request, response, ErrorRecordLog.class);
}
}

View File

@ -0,0 +1,164 @@
package com.nu.modules.errorrecordlog.entity;
import java.io.Serializable;
import java.io.UnsupportedEncodingException;
import java.util.Date;
import java.math.BigDecimal;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.TableLogic;
import org.jeecg.common.constant.ProvinceCityArea;
import org.jeecg.common.util.SpringContextUtils;
import lombok.Data;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.springframework.format.annotation.DateTimeFormat;
import org.jeecgframework.poi.excel.annotation.Excel;
import org.jeecg.common.aspect.annotation.Dict;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
* @Description: nu_error_record_log
* @Author: jeecg-boot
* @Date: 2026-03-10
* @Version: V1.0
*/
@Data
@TableName("nu_error_record_log")
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = false)
@ApiModel(value="nu_error_record_log对象", description="nu_error_record_log")
public class ErrorRecordLog implements Serializable {
private static final long serialVersionUID = 1L;
/**主键ID*/
@TableId(type = IdType.ASSIGN_ID)
@ApiModelProperty(value = "ID")
private String id;
/**功能模块(如:用户管理、订单导入)*/
@Excel(name = "功能模块(如:用户管理、订单导入)", width = 15)
@ApiModelProperty(value = "功能模块(如:用户管理、订单导入)")
private java.lang.String functionModule;
/**具体环节新增用户、Excel解析*/
@Excel(name = "具体环节新增用户、Excel解析", width = 15)
@ApiModelProperty(value = "具体环节新增用户、Excel解析")
private java.lang.String functionAction;
/**方法路径*/
@Excel(name = "方法路径", width = 15)
@ApiModelProperty(value = "方法路径")
private String functionPath;
/**错误简介*/
@Excel(name = "错误简介", width = 15)
@ApiModelProperty(value = "错误简介")
private java.lang.String errorBrief;
/**错误详细信息(堆栈或完整描述)*/
@Excel(name = "错误详细信息(堆栈或完整描述)", width = 15)
@ApiModelProperty(value = "错误详细信息(堆栈或完整描述)")
private java.lang.String errorDetail;
/**业务数据ID如订单ID、用户ID*/
@Excel(name = "业务数据ID如订单ID、用户ID", width = 15)
@ApiModelProperty(value = "业务数据ID如订单ID、用户ID")
private java.lang.String businessId;
/**业务数据快照(出错时的数据内容)*/
@Excel(name = "业务数据快照(出错时的数据内容)", width = 15)
@ApiModelProperty(value = "业务数据快照(出错时的数据内容)")
private java.lang.String businessData;
/**错误类型(系统异常/业务异常/参数校验)*/
@Excel(name = "错误类型(系统异常/业务异常/参数校验)", width = 15)
@ApiModelProperty(value = "错误类型(系统异常/业务异常/参数校验)")
private java.lang.String errorType;
/**错误码*/
@Excel(name = "错误码", width = 15)
@ApiModelProperty(value = "错误码")
private java.lang.String errorCode;
/**错误级别1-提示2-警告3-严重4-致命*/
@Excel(name = "错误级别1-提示2-警告3-严重4-致命", width = 15)
@ApiModelProperty(value = "错误级别1-提示2-警告3-严重4-致命")
private java.lang.Integer errorLevel;
/**已重试次数*/
@Excel(name = "已重试次数", width = 15)
@ApiModelProperty(value = "已重试次数")
private java.lang.Integer retryCount;
/**最大重试次数*/
@Excel(name = "最大重试次数", width = 15)
@ApiModelProperty(value = "最大重试次数")
private java.lang.Integer maxRetryCount;
/**处理状态0-待处理1-处理中2-已解决3-无需处理4-重试失败*/
@Excel(name = "处理状态0-待处理1-处理中2-已解决3-无需处理4-重试失败", width = 15)
@ApiModelProperty(value = "处理状态0-待处理1-处理中2-已解决3-无需处理4-重试失败")
private java.lang.Integer handleStatus;
/**处理结果/备注*/
@Excel(name = "处理结果/备注", width = 15)
@ApiModelProperty(value = "处理结果/备注")
private java.lang.String handleResult;
/**处理人*/
@Excel(name = "处理人", width = 15)
@ApiModelProperty(value = "处理人")
private java.lang.String handler;
/**处理时间*/
@Excel(name = "处理时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
@ApiModelProperty(value = "处理时间")
private java.util.Date handleTime;
/**请求URL*/
@Excel(name = "请求URL", width = 15)
@ApiModelProperty(value = "请求URL")
private java.lang.String requestUrl;
/**请求方法*/
@Excel(name = "请求方法", width = 15)
@ApiModelProperty(value = "请求方法")
private java.lang.String requestMethod;
/**请求参数*/
@Excel(name = "请求参数", width = 15)
@ApiModelProperty(value = "请求参数")
private java.lang.String requestParams;
/**客户端IP*/
@Excel(name = "客户端IP", width = 15)
@ApiModelProperty(value = "客户端IP")
private java.lang.String ipAddress;
/**用户代理*/
@Excel(name = "用户代理", width = 15)
@ApiModelProperty(value = "用户代理")
private java.lang.String userAgent;
/**环境dev/test/prod*/
@Excel(name = "环境dev/test/prod", width = 15)
@ApiModelProperty(value = "环境dev/test/prod")
private java.lang.String env;
/**应用版本*/
@Excel(name = "应用版本", width = 15)
@ApiModelProperty(value = "应用版本")
private java.lang.String version;
/**机构名称*/
@Excel(name = "机构名称", width = 15)
@ApiModelProperty(value = "机构名称")
private java.lang.String orgName;
/**机构编码*/
@Excel(name = "机构编码", width = 15)
@ApiModelProperty(value = "机构编码")
private java.lang.String orgCode;
/**创建人(操作人)*/
@ApiModelProperty(value = "创建人(操作人)")
private java.lang.String createBy;
/**创建时间(错误发生时间)*/
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
@ApiModelProperty(value = "创建时间(错误发生时间)")
private java.util.Date createTime;
/**更新人*/
@ApiModelProperty(value = "更新人")
private java.lang.String updateBy;
/**更新时间*/
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
@ApiModelProperty(value = "更新时间")
private java.util.Date updateTime;
/**删除标识(0-正常,1-已删除)*/
@Excel(name = "删除标识(0-正常,1-已删除)", width = 15)
@ApiModelProperty(value = "删除标识(0-正常,1-已删除)")
@TableLogic
private java.lang.Integer delFlag;
}

View File

@ -0,0 +1,17 @@
package com.nu.modules.errorrecordlog.mapper;
import java.util.List;
import org.apache.ibatis.annotations.Param;
import com.nu.modules.errorrecordlog.entity.ErrorRecordLog;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* @Description: nu_error_record_log
* @Author: jeecg-boot
* @Date: 2026-03-10
* @Version: V1.0
*/
public interface ErrorRecordLogMapper extends BaseMapper<ErrorRecordLog> {
}

View File

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.nu.modules.errorrecordlog.mapper.ErrorRecordLogMapper">
</mapper>

View File

@ -0,0 +1,14 @@
package com.nu.modules.errorrecordlog.service;
import com.nu.modules.errorrecordlog.entity.ErrorRecordLog;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* @Description: nu_error_record_log
* @Author: jeecg-boot
* @Date: 2026-03-10
* @Version: V1.0
*/
public interface IErrorRecordLogService extends IService<ErrorRecordLog> {
}

View File

@ -0,0 +1,19 @@
package com.nu.modules.errorrecordlog.service.impl;
import com.nu.modules.errorrecordlog.entity.ErrorRecordLog;
import com.nu.modules.errorrecordlog.mapper.ErrorRecordLogMapper;
import com.nu.modules.errorrecordlog.service.IErrorRecordLogService;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
/**
* @Description: nu_error_record_log
* @Author: jeecg-boot
* @Date: 2026-03-10
* @Version: V1.0
*/
@Service
public class ErrorRecordLogServiceImpl extends ServiceImpl<ErrorRecordLogMapper, ErrorRecordLog> implements IErrorRecordLogService {
}

View File

@ -0,0 +1,92 @@
package com.nu.dto;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.jeecgframework.poi.excel.annotation.Excel;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.util.Date;
/**
* @Description: nu_error_record_log
* @Author: jeecg-boot
* @Date: 2026-03-10
* @Version: V1.0
*/
@Data
public class ErrorRecordLogMQDto implements Serializable {
private static final long serialVersionUID = 1L;
/**主键ID*/
private String id;
/**功能模块(如:用户管理、订单导入)*/
private String functionModule;
/**具体环节新增用户、Excel解析*/
private String functionAction;
/**方法路径*/
private String functionPath;
/**错误简介*/
private String errorBrief;
/**错误详细信息(堆栈或完整描述)*/
private String errorDetail;
/**业务数据ID如订单ID、用户ID*/
private String businessId;
/**业务数据快照(出错时的数据内容)*/
private String businessData;
/**错误类型(系统异常/业务异常/参数校验)*/
private String errorType;
/**错误码*/
private String errorCode;
/**错误级别1-提示2-警告3-严重4-致命*/
private Integer errorLevel;
/**已重试次数*/
private Integer retryCount;
/**最大重试次数*/
private Integer maxRetryCount;
/**处理状态0-待处理1-处理中2-已解决3-无需处理4-重试失败*/
private Integer handleStatus;
/**处理结果/备注*/
private String handleResult;
/**处理人*/
private String handler;
/**处理时间*/
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
private Date handleTime;
/**请求URL*/
private String requestUrl;
/**请求方法*/
private String requestMethod;
/**请求参数*/
private String requestParams;
/**客户端IP*/
private String ipAddress;
/**用户代理*/
private String userAgent;
/**环境dev/test/prod*/
private String env;
/**应用版本*/
private String version;
/**机构名称*/
private String orgName;
/**机构编码*/
private String orgCode;
/**创建人(操作人)*/
private String createBy;
/**创建时间(错误发生时间)*/
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
private Date createTime;
/**更新人*/
private String updateBy;
/**更新时间*/
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
private Date updateTime;
/**删除标识(0-正常,1-已删除)*/
private Integer delFlag;
}

View File

@ -0,0 +1,92 @@
package com.nu.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.jeecgframework.poi.excel.annotation.Excel;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.util.Date;
/**
* @Description: nu_error_record_log
* @Author: jeecg-boot
* @Date: 2026-03-10
* @Version: V1.0
*/
@Data
public class ErrorRecordLogEntity implements Serializable {
private static final long serialVersionUID = 1L;
/**主键ID*/
private String id;
/**功能模块(如:用户管理、订单导入)*/
private String functionModule;
/**具体环节新增用户、Excel解析*/
private String functionAction;
/**方法路径*/
private String functionPath;
/**错误简介*/
private String errorBrief;
/**错误详细信息(堆栈或完整描述)*/
private String errorDetail;
/**业务数据ID如订单ID、用户ID*/
private String businessId;
/**业务数据快照(出错时的数据内容)*/
private String businessData;
/**错误类型(系统异常/业务异常/参数校验)*/
private String errorType;
/**错误码*/
private String errorCode;
/**错误级别1-提示2-警告3-严重4-致命*/
private Integer errorLevel;
/**已重试次数*/
private Integer retryCount;
/**最大重试次数*/
private Integer maxRetryCount;
/**处理状态0-待处理1-处理中2-已解决3-无需处理4-重试失败*/
private Integer handleStatus;
/**处理结果/备注*/
private String handleResult;
/**处理人*/
private String handler;
/**处理时间*/
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
private Date handleTime;
/**请求URL*/
private String requestUrl;
/**请求方法*/
private String requestMethod;
/**请求参数*/
private String requestParams;
/**客户端IP*/
private String ipAddress;
/**用户代理*/
private String userAgent;
/**环境dev/test/prod*/
private String env;
/**应用版本*/
private String version;
/**机构名称*/
private String orgName;
/**机构编码*/
private String orgCode;
/**创建人(操作人)*/
private String createBy;
/**创建时间(错误发生时间)*/
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
private Date createTime;
/**更新人*/
private String updateBy;
/**更新时间*/
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
private Date updateTime;
/**删除标识(0-正常,1-已删除)*/
private Integer delFlag;
}