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

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 datetime import datetime, time
from sqlalchemy import delete, select, update from sqlalchemy import delete, select, update, func
from sqlalchemy.ext.asyncio import AsyncSession from sqlalchemy.ext.asyncio import AsyncSession
from module_admin.entity.do.identification_statistics_do import IdentificationStatistics from module_admin.entity.do.identification_statistics_do import IdentificationStatistics
from module_admin.entity.vo.identification_statistics_vo import Identification_statisticsModel, Identification_statisticsPageQueryModel 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]))) 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.entity.do.identification_record_do import IdentificationRecord
from module_admin.dao.identification_record_dao import Identification_recordDao from module_admin.dao.identification_record_dao import Identification_recordDao
from module_admin.dao.door_dao import DoorDao 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 module_admin.entity.vo.identification_record_vo import DeleteIdentification_recordModel, Identification_recordModel, Identification_recordPageQueryModel
from utils.common_util import CamelCaseUtil from utils.common_util import CamelCaseUtil
from utils.excel_util import ExcelUtil from utils.excel_util import ExcelUtil
@ -70,6 +71,12 @@ class Identification_recordService:
""" """
try: try:
await Identification_recordDao.add_identification_record_dao(query_db, page_object) 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() await query_db.commit()
return CrudResponseModel(is_success=True, message='新增成功') return CrudResponseModel(is_success=True, message='新增成功')
except Exception as e: 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 sub_applications.handle import handle_sub_applications
from utils.common_util import worship from utils.common_util import worship
from utils.log_util import logger 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_dict(app.state.redis)
await RedisUtil.init_sys_config(app.state.redis) await RedisUtil.init_sys_config(app.state.redis)
await SchedulerUtil.init_system_scheduler() await SchedulerUtil.init_system_scheduler()
# 初始化自定义定时任务
# init_scheduled_tasks()
logger.info(f'{AppConfig.app_name}启动成功') logger.info(f'{AppConfig.app_name}启动成功')
yield yield
await RedisUtil.close_redis_pool(app) await RedisUtil.close_redis_pool(app)