From 3b7a66652a77a3b5e10cc85087d0bf9defa813ec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=86=B7=E5=86=B7?= <2270033969@qq.com> Date: Wed, 23 Oct 2024 21:23:01 +0800 Subject: [PATCH] =?UTF-8?q?fix(log):=20=E6=93=8D=E4=BD=9C=E6=97=A5?= =?UTF-8?q?=E5=BF=97=E4=B8=8A=E9=9D=A2=E7=9A=84=E7=BB=9F=E8=AE=A1=E5=9B=BE?= =?UTF-8?q?=E6=97=B6=E9=97=B4=E8=BD=B4=E4=B9=B1=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Closes #6004 --- .../admin/service/impl/SysLogServiceImpl.java | 153 +++++++++--------- 1 file changed, 79 insertions(+), 74 deletions(-) diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysLogServiceImpl.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysLogServiceImpl.java index 5a2273ce0..ab03d8ac6 100644 --- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysLogServiceImpl.java +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysLogServiceImpl.java @@ -40,6 +40,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.time.LocalDateTime; +import java.util.Comparator; import java.util.List; import java.util.Map; import java.util.stream.Collectors; @@ -55,85 +56,89 @@ import java.util.stream.Collectors; @Service public class SysLogServiceImpl extends ServiceImpl implements SysLogService { - /** - * 批量插入前端错误日志 - * @param preLogVoList 日志信息 - * @return true/false - */ - @Override - public Boolean saveBatchLogs(List preLogVoList) { - List sysLogs = preLogVoList.stream().map(pre -> { - SysLog log = new SysLog(); - log.setLogType(LogTypeEnum.ERROR.getType()); - log.setTitle(pre.getInfo()); - log.setException(pre.getStack()); - log.setParams(pre.getMessage()); - log.setCreateTime(LocalDateTime.now()); - log.setRequestUri(pre.getUrl()); - log.setCreateBy(pre.getUser()); - return log; - }).collect(Collectors.toList()); - return this.saveBatch(sysLogs); - } + /** + * 批量插入前端错误日志 + * + * @param preLogVoList 日志信息 + * @return true/false + */ + @Override + public Boolean saveBatchLogs(List preLogVoList) { + List sysLogs = preLogVoList.stream().map(pre -> { + SysLog log = new SysLog(); + log.setLogType(LogTypeEnum.ERROR.getType()); + log.setTitle(pre.getInfo()); + log.setException(pre.getStack()); + log.setParams(pre.getMessage()); + log.setCreateTime(LocalDateTime.now()); + log.setRequestUri(pre.getUrl()); + log.setCreateBy(pre.getUser()); + return log; + }).collect(Collectors.toList()); + return this.saveBatch(sysLogs); + } - @Override - public Page getLogByPage(Page page, SysLogDTO sysLog) { + @Override + public Page getLogByPage(Page page, SysLogDTO sysLog) { - LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(); - if (StrUtil.isNotBlank(sysLog.getLogType())) { - wrapper.eq(SysLog::getLogType, sysLog.getLogType()); - } + LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(); + if (StrUtil.isNotBlank(sysLog.getLogType())) { + wrapper.eq(SysLog::getLogType, sysLog.getLogType()); + } - if (ArrayUtil.isNotEmpty(sysLog.getCreateTime())) { - wrapper.ge(SysLog::getCreateTime, sysLog.getCreateTime()[0]) - .le(SysLog::getCreateTime, sysLog.getCreateTime()[1]); - } + if (ArrayUtil.isNotEmpty(sysLog.getCreateTime())) { + wrapper.ge(SysLog::getCreateTime, sysLog.getCreateTime()[0]) + .le(SysLog::getCreateTime, sysLog.getCreateTime()[1]); + } - wrapper.eq(StrUtil.isNotBlank(sysLog.getServiceId()), SysLog::getServiceId, sysLog.getServiceId()); - return baseMapper.selectPage(page, wrapper); - } + wrapper.eq(StrUtil.isNotBlank(sysLog.getServiceId()), SysLog::getServiceId, sysLog.getServiceId()); + return baseMapper.selectPage(page, wrapper); + } - /** - * 插入日志 - * @param sysLog 日志对象 - * @return true/false - */ - @Override - @Transactional(rollbackFor = Exception.class) - public Boolean saveLog(SysLogDTO sysLog) { - TenantBroker.applyAs(sysLog::getTenantId, tenantId -> { - TenantContextHolder.setTenantId(tenantId); - SysLog log = new SysLog(); - BeanUtils.copyProperties(sysLog, log, "createTime"); - return baseMapper.insert(log); - }); - return Boolean.TRUE; - } + /** + * 插入日志 + * + * @param sysLog 日志对象 + * @return true/false + */ + @Override + @Transactional(rollbackFor = Exception.class) + public Boolean saveLog(SysLogDTO sysLog) { + TenantBroker.applyAs(sysLog::getTenantId, tenantId -> { + TenantContextHolder.setTenantId(tenantId); + SysLog log = new SysLog(); + BeanUtils.copyProperties(sysLog, log, "createTime"); + return baseMapper.insert(log); + }); + return Boolean.TRUE; + } - /** - * sum 函数计算三十天内的数据 - * @return list map - */ - @Override - public List> getLogSum() { - // 查询createTime 最近 30天的数据 - List sysLogList = baseMapper - .selectList(Wrappers.lambdaQuery().ge(SysLog::getCreateTime, LocalDateTime.now().minusDays(30))); - return sysLogList.stream() - .collect(Collectors.groupingBy(log -> DateUtil.format(log.getCreateTime(), DatePattern.NORM_DATE_PATTERN))) - .entrySet() - .stream() - .map(entry -> { - Map map = entry.getValue() - .stream() - .collect(Collectors.groupingBy(SysLog::getLogType)) - .entrySet() - .stream() - .collect(Collectors.toMap(Map.Entry::getKey, value -> value.getValue().size())); - map.put(SysLog.Fields.createTime, entry.getKey()); - return map; - }) - .collect(Collectors.toList()); - } + /** + * sum 函数计算三十天内的数据 + * + * @return list map + */ + @Override + public List> getLogSum() { + // 查询createTime最近30天的数据 + List sysLogList = baseMapper + .selectList(Wrappers.lambdaQuery().ge(SysLog::getCreateTime, LocalDateTime.now().minusDays(30))); + + return sysLogList.stream() + // 按照日期进行分组 + .collect(Collectors.groupingBy(log -> DateUtil.format(log.getCreateTime(), DatePattern.NORM_DATE_PATTERN))) + .entrySet().stream() + // 将每个日期对应的日志按日志类型分组,并计算每种类型的日志数量 + .map(entry -> { + Map map = entry.getValue().stream() + .collect(Collectors.groupingBy(SysLog::getLogType, + Collectors.collectingAndThen(Collectors.counting(), Long::intValue))); + map.put(SysLog.Fields.createTime, entry.getKey()); + return map; + }) + // 按createTime升序排序 + .sorted(Comparator.comparing(map -> map.get(SysLog.Fields.createTime).toString())) + .collect(Collectors.toList()); + } }