机器人添加识别记录接口联动识别统计数据库表
This commit is contained in:
parent
8a39872da5
commit
c080f730bb
@ -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)
|
||||
)
|
||||
|
||||
|
||||
@ -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:
|
||||
|
||||
@ -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)
|
||||
|
||||
Loading…
Reference in New Issue
Block a user