机器人添加识别记录接口联动识别统计数据库表

This commit is contained in:
haotian 2025-10-11 09:41:31 +08:00
parent 8a39872da5
commit c080f730bb
3 changed files with 61 additions and 1 deletions

View File

@ -1,5 +1,5 @@
from datetime import datetime, time
from sqlalchemy import delete, select, update
from sqlalchemy import delete, select, update, func
from sqlalchemy.ext.asyncio import AsyncSession
from module_admin.entity.do.identification_statistics_do import IdentificationStatistics
from module_admin.entity.vo.identification_statistics_vo import Identification_statisticsModel, Identification_statisticsPageQueryModel
@ -131,3 +131,53 @@ class Identification_statisticsDao:
"""
await db.execute(delete(IdentificationStatistics).where(IdentificationStatistics.id.in_([identification_statistics.id])))
@classmethod
async def update_identification_statistics_dao(cls, db: AsyncSession, person_status: str):
"""
更新今日识别统计数据库操作 - 根据person_status增加相应字段的计数
:param db: orm对象
:param person_status: 人员状态 (0 陌生人, 1 员工, 2 访客)
:return:
"""
today = datetime.now().date()
# 查询今日是否已有统计记录
stmt = select(IdentificationStatistics).where(
func.date(IdentificationStatistics.create_time) == today
)
result = await db.execute(stmt)
today_statistics = result.scalars().first()
# 如果没有今日记录,创建新记录
if not today_statistics:
new_statistics = IdentificationStatistics(
employ=1 if person_status == "1" else 0,
visitor=1 if person_status == "2" else 0,
stranger=1 if person_status == "0" else 0,
create_time=datetime.now(),
create_by="system"
)
db.add(new_statistics)
await db.flush()
else:
# 根据person_status更新相应字段
if person_status == "0": # 陌生人
await db.execute(
update(IdentificationStatistics)
.where(IdentificationStatistics.id == today_statistics.id)
.values(stranger=IdentificationStatistics.stranger + 1)
)
elif person_status == "1": # 员工
await db.execute(
update(IdentificationStatistics)
.where(IdentificationStatistics.id == today_statistics.id)
.values(employ=IdentificationStatistics.employ + 1)
)
elif person_status == "2": # 访客
await db.execute(
update(IdentificationStatistics)
.where(IdentificationStatistics.id == today_statistics.id)
.values(visitor=IdentificationStatistics.visitor + 1)
)

View File

@ -6,6 +6,7 @@ from module_admin.entity.vo.common_vo import CrudResponseModel
from module_admin.entity.do.identification_record_do import IdentificationRecord
from module_admin.dao.identification_record_dao import Identification_recordDao
from module_admin.dao.door_dao import DoorDao
from module_admin.dao.identification_statistics_dao import Identification_statisticsDao
from module_admin.entity.vo.identification_record_vo import DeleteIdentification_recordModel, Identification_recordModel, Identification_recordPageQueryModel
from utils.common_util import CamelCaseUtil
from utils.excel_util import ExcelUtil
@ -70,6 +71,12 @@ class Identification_recordService:
"""
try:
await Identification_recordDao.add_identification_record_dao(query_db, page_object)
# 更新识别统计数据
# 更新识别统计数据 - 根据person_status更新相应字段
if page_object.person_status:
await Identification_statisticsDao.update_identification_statistics_dao(query_db, page_object.person_status)
await query_db.commit()
return CrudResponseModel(is_success=True, message='新增成功')
except Exception as e:

View File

@ -44,6 +44,7 @@ from module_admin.controller.compreface_controller import comprefaceController
from sub_applications.handle import handle_sub_applications
from utils.common_util import worship
from utils.log_util import logger
from module_admin.controller.scheduler_controller import init_scheduled_tasks
# 生命周期事件
@ -56,6 +57,8 @@ async def lifespan(app: FastAPI):
await RedisUtil.init_sys_dict(app.state.redis)
await RedisUtil.init_sys_config(app.state.redis)
await SchedulerUtil.init_system_scheduler()
# 初始化自定义定时任务
# init_scheduled_tasks()
logger.info(f'{AppConfig.app_name}启动成功')
yield
await RedisUtil.close_redis_pool(app)