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