feat(syslog): 增加对不同数据库的日志汇总查询支持

This commit is contained in:
PIGCLOUD committed 2026-08-01 11:59:35 +08:00
1 parent ce07c9dcb9
commit ea6940378c
3 files changed
+67 -1

No files matched your search

@@ -172,7 +172,10 @@ public class MybatisPlusConfiguration implements WebMvcConfigurer {
public DatabaseIdProvider databaseIdProvider() {
VendorDatabaseIdProvider databaseIdProvider = new VendorDatabaseIdProvider();
Properties properties = new Properties();
properties.setProperty("Oracle", "oracle");
properties.setProperty("SQL Server", "mssql");
properties.setProperty("DM DBMS", "dm");
properties.setProperty("KingbaseES", "kingbase");
databaseIdProvider.setProperties(properties);
return databaseIdProvider;
}
@@ -19,6 +19,9 @@
package com.pig4cloud.pigx.admin.service.impl;
import cn.hutool.core.date.DatePattern;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.date.TemporalAccessorUtil;
import cn.hutool.core.util.ArrayUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@@ -38,7 +41,9 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.time.LocalDateTime;
import java.time.temporal.TemporalAccessor;
import java.util.ArrayList;
import java.util.Date;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
@@ -127,7 +132,7 @@ public class SysLogServiceImpl extends ServiceImpl<SysLogMapper, SysLog> impleme
Map<String, Map<String, Object>> resultMap = new TreeMap<>();
for (Map<String, Object> row : logSumList) {
String createTime = row.get(SysLog.Fields.createTime).toString();
String createTime = formatCreateTime(row.get(SysLog.Fields.createTime));
Map<String, Object> logSum = resultMap.computeIfAbsent(createTime, key -> {
Map<String, Object> item = new LinkedHashMap<>();
item.put(SysLog.Fields.createTime, key);
@@ -139,4 +144,17 @@ public class SysLogServiceImpl extends ServiceImpl<SysLogMapper, SysLog> impleme
return new ArrayList<>(resultMap.values());
}
private String formatCreateTime(Object createTime) {
if (createTime == null) {
return StrUtil.EMPTY;
}
if (createTime instanceof Date date) {
return DateUtil.format(date, DatePattern.NORM_DATE_PATTERN);
}
if (createTime instanceof TemporalAccessor temporalAccessor) {
return TemporalAccessorUtil.format(temporalAccessor, DatePattern.NORM_DATE_PATTERN);
}
return createTime.toString();
}
}
@@ -27,8 +27,53 @@
COUNT(*) AS "logCount"
FROM sys_log
WHERE create_time >= #{startTime}
AND del_flag = '0'
GROUP BY DATE(create_time), log_type
ORDER BY DATE(create_time), log_type
</select>
<select id="selectLogSum" databaseId="oracle" resultType="java.util.Map">
SELECT TRUNC(create_time) AS "createTime",
log_type AS "logType",
COUNT(*) AS "logCount"
FROM sys_log
WHERE create_time >= #{startTime}
AND del_flag = '0'
GROUP BY TRUNC(create_time), log_type
ORDER BY TRUNC(create_time), log_type
</select>
<select id="selectLogSum" databaseId="mssql" resultType="java.util.Map">
SELECT CAST(create_time AS date) AS "createTime",
log_type AS "logType",
COUNT(*) AS "logCount"
FROM sys_log
WHERE create_time >= #{startTime}
AND del_flag = '0'
GROUP BY CAST(create_time AS date), log_type
ORDER BY CAST(create_time AS date), log_type
</select>
<select id="selectLogSum" databaseId="dm" resultType="java.util.Map">
SELECT TO_CHAR(create_time, 'YYYY-MM-DD') AS "createTime",
log_type AS "logType",
COUNT(*) AS "logCount"
FROM sys_log
WHERE create_time >= #{startTime}
AND del_flag = '0'
GROUP BY TO_CHAR(create_time, 'YYYY-MM-DD'), log_type
ORDER BY TO_CHAR(create_time, 'YYYY-MM-DD'), log_type
</select>
<select id="selectLogSum" databaseId="kingbase" resultType="java.util.Map">
SELECT TO_CHAR(create_time, 'YYYY-MM-DD') AS "createTime",
log_type AS "logType",
COUNT(*) AS "logCount"
FROM sys_log
WHERE create_time >= #{startTime}
AND del_flag = '0'
GROUP BY TO_CHAR(create_time, 'YYYY-MM-DD'), log_type
ORDER BY TO_CHAR(create_time, 'YYYY-MM-DD'), log_type
</select>
</mapper>