diff --git a/ruoyi-fastapi-backend/module_admin/dao/identification_statistics_dao.py b/ruoyi-fastapi-backend/module_admin/dao/identification_statistics_dao.py index a487f12..77583ba 100644 --- a/ruoyi-fastapi-backend/module_admin/dao/identification_statistics_dao.py +++ b/ruoyi-fastapi-backend/module_admin/dao/identification_statistics_dao.py @@ -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) + ) + diff --git a/ruoyi-fastapi-backend/module_admin/service/identification_record_service.py b/ruoyi-fastapi-backend/module_admin/service/identification_record_service.py index 40c7dea..53e592a 100644 --- a/ruoyi-fastapi-backend/module_admin/service/identification_record_service.py +++ b/ruoyi-fastapi-backend/module_admin/service/identification_record_service.py @@ -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: diff --git a/ruoyi-fastapi-backend/server.py b/ruoyi-fastapi-backend/server.py index 01f672e..ac85ec6 100644 --- a/ruoyi-fastapi-backend/server.py +++ b/ruoyi-fastapi-backend/server.py @@ -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)