Files
d3i-szct/apps/api/dcm/fetch_dispose_form.py
T
2026-06-02 17:46:38 +08:00

60 lines
1.8 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
"""
接受OA请求,读取数字城管的便民表单。
"""
import logging
from apps.api import dcm
from apps.app_handler import AppHandler
from dock.dcm import dcm_scrape_conv_dispose
from models.dcm_task import DcmTask
from paste.core.logging import echo_log
from paste.web.decorators import route
@route(f'{dcm.ApiPrefix}/fetchDisposeForm')
class FetchConvenientFormHandler(AppHandler):
"""
获取便民表单接口。
对接数字城管系统的获取便民表单接口,用于判断工单有哪些便民表单。
"""
async def fetch_form(self, **kwargs) -> dict:
# 必填参数校验
required_keys = ['gdId', 'formId']
missing = [
k for k in required_keys
if k not in kwargs or kwargs[k] is None
]
if missing:
raise ValueError(f"缺少必要参数: {missing}")
dcm_task_id = kwargs.get('gdId', '')
dcm_task = await DcmTask(id=dcm_task_id).async_find_first()
assert dcm_task, f"未找到待办工单,工单ID{dcm_task_id}"
form = await dcm_scrape_conv_dispose.fetch_form(dcm_task)
return {
'msg': '获取便民批转表单成功.',
'form': form,
}
# @auth_token
async def post(self):
"""
处理 POST 请求。
---
tags:
- D3I API
summary: 获取便民表单接口
"""
try:
echo_log(self.request.body.decode())
_, params = self.get_request_params()
_result = await self.fetch_form(**params)
self.response_ok(code=0, data=_result)
except Exception as e:
self.response_error(e, status_code=200, api_status_code=500)
self.log(msg=e, level=logging.ERROR, is_log_exc=True)