diff --git a/ruoyi-fastapi-backend/module_admin/controller/haikang_controller.py b/ruoyi-fastapi-backend/module_admin/controller/haikang_controller.py index 3979ae8..dec22b9 100644 --- a/ruoyi-fastapi-backend/module_admin/controller/haikang_controller.py +++ b/ruoyi-fastapi-backend/module_admin/controller/haikang_controller.py @@ -11,6 +11,7 @@ from module_admin.service.haikang_service import HaiKangService from utils.log_util import logger from utils.page_util import PageResponseModel from utils.response_util import ResponseUtil +from module_admin.entity.vo.haikang_vo import VisitorReservationQueryModel from typing import List @@ -18,48 +19,60 @@ from typing import List haikang_controller = APIRouter(prefix="/system/haikang", dependencies=[Depends(LoginService.get_current_user)]) -# 查询门禁点列表 -@haikang_controller.get("/door_list" - # , response_model=PageResponseModel - # , dependencies=[Depends(CheckUserInterfaceAuth("system:haikang:list"))] - ) -async def get_system_haikang_list( - request: Request, - pageNo:int, - pageSize:int, -): - """ - 查询门禁点列表 - """ - result = await HaiKangService.get_door_list_service(pageNo, pageSize) - return parse_result(result) +# # 查询门禁点列表 +# @haikang_controller.get("/door_list" +# # , response_model=PageResponseModel +# # , dependencies=[Depends(CheckUserInterfaceAuth("system:haikang:list"))] +# ) +# async def get_system_haikang_list( +# request: Request, +# pageNo:int, +# pageSize:int, +# ): +# """ +# 查询门禁点列表 +# """ +# result = await HaiKangService.get_door_list_service(pageNo, pageSize) +# return parse_result(result) -# 查询门禁点状态 -@haikang_controller.post( - "/door_status", - # dependencies=[Depends(CheckUserInterfaceAuth("system:haikang:list"))] -) -async def get_door_status( - request: Request, - door_index_codes: List[str], -): - """ - 查询门禁点列表 - """ - result = await HaiKangService.get_door_status_service(door_index_codes) - return parse_result(result) +# # 查询门禁点状态 +# @haikang_controller.post( +# "/door_status", +# # dependencies=[Depends(CheckUserInterfaceAuth("system:haikang:list"))] +# ) +# async def get_door_status( +# request: Request, +# door_index_codes: List[str], +# ): +# """ +# 查询门禁点列表 +# """ +# result = await HaiKangService.get_door_status_service(door_index_codes) +# return parse_result(result) -# 门禁点反控 +# # 门禁点反控 +# @haikang_controller.post( +# "/door_do_control", +# # dependencies=[Depends(CheckUserInterfaceAuth("system:haikang:list"))] +# ) +# async def door_do_control( +# request: Request, +# door_index_codes: List[str], +# control_type: int, +# ): +# pass + +# 查询访客预约记录 @haikang_controller.post( - "/door_do_control", + "/get_visitor_list", # dependencies=[Depends(CheckUserInterfaceAuth("system:haikang:list"))] ) -async def door_do_control( +async def get_visitor( request: Request, - door_index_codes: List[str], - control_type: int, + visitor_query: VisitorReservationQueryModel ): - pass + result = await HaiKangService.get_visitor_list_service(visitor_query) + return parse_result(result) def parse_result(result): diff --git a/ruoyi-fastapi-backend/module_admin/entity/vo/haikang_vo.py b/ruoyi-fastapi-backend/module_admin/entity/vo/haikang_vo.py new file mode 100644 index 0000000..d8c5158 --- /dev/null +++ b/ruoyi-fastapi-backend/module_admin/entity/vo/haikang_vo.py @@ -0,0 +1,24 @@ +from datetime import datetime +from pydantic import BaseModel, ConfigDict, Field +from pydantic.alias_generators import to_camel +from typing import Optional +from module_admin.annotation.pydantic_annotation import as_query + + +class VisitorReservationQueryModel(BaseModel): + + + receptionistId: Optional[str] = Field(default=None, description='接待ID') + visitorName: Optional[str] = Field(default=None, description='访客姓名,支持模糊搜索') + phoneNo: Optional[str] = Field(default=None, description='访客手机号') + visitStartTimeBegin: Optional[str] = Field(default=None, description='开始时间, 满足ISO8601格式') + visitStartTimeEnd: Optional[str] = Field(default=None, description='结束时间, 满足ISO8601格式') + visitEndTimeBegin: Optional[str] = Field(default=None, description='开始时间, 满足ISO8601格式') + visitEndTimeEnd: Optional[str] = Field(default=None, description='结束时间, 满足ISO8601格式') + + pageNo: int = Field(default=1, description='页码') + pageSize: int = Field(default=20, description='每页数量') + + visitorStatus: Optional[int] = Field(default=None, description='访客状态') + orderId: Optional[str] = Field(default=None, description='订单ID') + \ No newline at end of file diff --git a/ruoyi-fastapi-backend/module_admin/service/haikang_service.py b/ruoyi-fastapi-backend/module_admin/service/haikang_service.py index ebb699c..58f008e 100644 --- a/ruoyi-fastapi-backend/module_admin/service/haikang_service.py +++ b/ruoyi-fastapi-backend/module_admin/service/haikang_service.py @@ -1,10 +1,22 @@ from utils.haikang_util import HaikangUtil +from module_admin.entity.vo.haikang_vo import VisitorReservationQueryModel class HaiKangService: """ 康达服务 """ + # 查询访客列表 + @classmethod + async def get_visitor_list_service(cls, visitor_query: VisitorReservationQueryModel): + """查询访客列表 + """ + + result = await HaikangUtil.query_visitor_record(**cls.parse_dict(visitor_query.model_dump())) + + return result + + # 查询门禁点列表v2 @classmethod async def get_door_list_service(cls, pageNo: int = 1, pageSize: int = 10): @@ -35,6 +47,14 @@ class HaiKangService: else: return result + @classmethod + def parse_dict(cls, d): + t_d = dict() + for k, v in d.items(): + if v: + t_d[k] = v + return t_d + # 门禁点反控 # @classmethod # async def door_do_control_service(cls, door_index_code: list, control_type: int): diff --git a/ruoyi-fastapi-backend/server.py b/ruoyi-fastapi-backend/server.py index 74801e6..95d3ff0 100644 --- a/ruoyi-fastapi-backend/server.py +++ b/ruoyi-fastapi-backend/server.py @@ -37,6 +37,7 @@ from module_admin.controller.ragflow_controller import ragflowController from module_admin.controller.robot_action_controller import robot_actionController from module_admin.controller.identification_record_controller import identification_recordController from module_admin.controller.door_controller import doorController +from module_admin.controller.haikang_controller import haikang_controller from sub_applications.handle import handle_sub_applications from utils.common_util import worship @@ -111,7 +112,8 @@ controller_list = [ {'router': robot_actionController, 'tags': ['机器人动作管理']}, {'router': identification_recordController, 'tags': ['识别记录管理']}, {'router': doorController, 'tags': ['门禁设备管理']}, - {'router': identification_statisticsController, 'tags': ['识别统计管理']} + {'router': identification_statisticsController, 'tags': ['识别统计管理']}, + {'router': haikang_controller, 'tags': ['海康']} ] diff --git a/ruoyi-fastapi-backend/utils/haikang_util.py b/ruoyi-fastapi-backend/utils/haikang_util.py index 257673d..2424d3a 100644 --- a/ruoyi-fastapi-backend/utils/haikang_util.py +++ b/ruoyi-fastapi-backend/utils/haikang_util.py @@ -422,7 +422,7 @@ class HaikangUtil: # 查询访客预约记录, visitorStatus: 0 待审核, 1 正常, 2 迟到, 3 失效, 4 审核退回, 9 审核失效, 10 邀约中, 11 邀约失效 @classmethod async def query_visitor_record( - cls, pageNo: int = 1, pageSize: int = 10, visitorStatus: int = 1 + cls, **args ): """查询访客预约记录 @@ -435,11 +435,7 @@ class HaikangUtil: _type_: _description_ """ url = f"{HaiKangConfig.HAIKANG_URL}:{HaiKangConfig.HAIKANG_PORT}{HaiKangConfig.HAIKANG_VISITOR_RECORD_SEARCH}" - body_dict = { - "pageNo": pageNo, - "pageSize": pageSize, - "visitorStatus": visitorStatus, - } + body_dict = args body_json = json.dumps(body_dict, separators=(",", ":"))