修改获取统计数据接口的返回数据
This commit is contained in:
parent
3ee34e8a5b
commit
9f3b77bc9e
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
Loading…
Reference in New Issue
Block a user