修改获取统计数据接口的返回数据

This commit is contained in:
haotian 2025-10-11 10:20:55 +08:00
parent 3ee34e8a5b
commit 9f3b77bc9e
2 changed files with 56 additions and 20 deletions

View File

@ -1,4 +1,4 @@
from sqlalchemy import delete, select, update, and_, desc, insert
from sqlalchemy import delete, select, update, and_, desc, insert, func
from sqlalchemy.ext.asyncio import AsyncSession
from module_admin.entity.do.sys_statistics_do import SysStatistics
from module_admin.entity.vo.sys_statistics_vo import Sys_statisticsModel, Sys_statisticsPageQueryModel
@ -11,6 +11,26 @@ class Sys_statisticsDao:
系统统计数据模块数据库操作层
"""
@classmethod
async def get_total_statistics_data(cls, db: AsyncSession):
"""
添加系统统计数据
:param query_db:
:param page_object:
:return:
"""
stmt = (
select(
func.sum(SysStatistics.llm_call).label('llm_call'),
func.sum(SysStatistics.access_control_count).label('access_control_count'),
func.sum(SysStatistics.visitor_guide).label('visitor_guide'),
func.sum(SysStatistics.exhibition_explanation).label('exhibition_explanation'),
)
)
result = await db.execute(stmt)
return result.mappings().first()
@classmethod
async def add_count(cls, db: AsyncSession, field: str, user_name:str , count: int = 1):
stmt = (
@ -125,11 +145,18 @@ class Sys_statisticsDao:
@classmethod
async def get_statistics_data(cls, db: AsyncSession, dd: date):
# 使用 func.date() 确保日期格式正确比较
stmt = (
select(SysStatistics.llm_call,SysStatistics.access_control_count, SysStatistics.visitor_guide, SysStatistics.exhibition_explanation)
.where(SysStatistics.stat_date == dd)
select(
SysStatistics.llm_call,
SysStatistics.access_control_count,
SysStatistics.visitor_guide,
SysStatistics.exhibition_explanation
)
.where(func.date(SysStatistics.stat_date) == dd)
)
return (await db.execute(stmt)).mappings().first()
result = (await db.execute(stmt)).mappings().first()
return result
@classmethod

View File

@ -88,18 +88,23 @@ class Sys_statisticsService:
# 当前日期
today = datetime.now().date()
yesterday = today - timedelta(days=1)
data_1 = await Sys_statisticsDao.get_statistics_data(query_db, yesterday)
# yesterday = today - timedelta(days=1)
# data_1 = await Sys_statisticsDao.get_statistics_data(query_db, yesterday)
data_2 = await Sys_statisticsDao.get_statistics_data(query_db, today)
if data_1 is None:
data_1 = {
"llm_call": 0,
"access_control_count": 0,
"visitor_guide": 0,
"exhibition_explanation": 0
}
else:
data_1 =dict(data_1)
total = await Sys_statisticsDao.get_total_statistics_data(query_db)
total = dict(total)
# if data_1 is None:
# data_1 = {
# "llm_call": 0,
# "access_control_count": 0,
# "visitor_guide": 0,
# "exhibition_explanation": 0
# }
# else:
# data_1 =dict(data_1)
if data_2 is None:
data_2 = {
"llm_call": 0,
@ -109,13 +114,17 @@ class Sys_statisticsService:
}
else:
data_2 =dict(data_2)
#
for k, v in data_1.items():
data_1[k] = data_2[k] - v
# 计算今日数据占总数据的百分比
for k, v in data_2.items():
if total.get(k) and total[k] > 0:
# 计算百分比,保留2位小数
data_2[k] = round((v / total[k]) * 100, 2)
else:
data_2[k] = 0.0
return {
'change': data_1,
'today': data_2
'change': data_2,
'total': total
}
@classmethod