mirror of
http://git.pig4cloud.com/pig/pigx.git
synced 2026-11-09 04:49:02 +08:00
1 parent
64e17420ef
commit
3b7a66652a
1 file changed
+79
-74
+79
-74
@@ -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<SysLogMapper, SysLog> implements SysLogService {
|
||||
|
||||
/**
|
||||
* 批量插入前端错误日志
|
||||
* @param preLogVoList 日志信息
|
||||
* @return true/false
|
||||
*/
|
||||
@Override
|
||||
public Boolean saveBatchLogs(List<PreLogVO> preLogVoList) {
|
||||
List<SysLog> 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<PreLogVO> preLogVoList) {
|
||||
List<SysLog> 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<SysLog> wrapper = Wrappers.lambdaQuery();
|
||||
if (StrUtil.isNotBlank(sysLog.getLogType())) {
|
||||
wrapper.eq(SysLog::getLogType, sysLog.getLogType());
|
||||
}
|
||||
LambdaQueryWrapper<SysLog> 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<Map<String, Object>> getLogSum() {
|
||||
// 查询createTime 最近 30天的数据
|
||||
List<SysLog> sysLogList = baseMapper
|
||||
.selectList(Wrappers.<SysLog>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<String, Object> 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<Map<String, Object>> getLogSum() {
|
||||
// 查询createTime最近30天的数据
|
||||
List<SysLog> sysLogList = baseMapper
|
||||
.selectList(Wrappers.<SysLog>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<String, Object> 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());
|
||||
}
|
||||
|
||||
}
|
||||
Reference in new issue
Block a user