75 lines
2.4 KiB
Python
75 lines
2.4 KiB
Python
import asyncio
|
|
import json
|
|
|
|
import apps
|
|
import dock
|
|
from dock.dcm import dcm_api
|
|
from tornado.httpclient import HTTPResponse, HTTPRequest
|
|
|
|
from models.dcm_task import DcmTask
|
|
from paste.core.logging import echo_log
|
|
from models.dcm_dispose import DcmDispose
|
|
from paste.web import requests
|
|
|
|
|
|
async def get_conv_dispose_request(dcm_dispose: DcmDispose, dcm_task: DcmTask):
|
|
"""
|
|
创建便民批转请求对象。方法仅创建请求对象,并未实际提交请求,具体由调度方法处理。
|
|
|
|
:param dcm_dispose: 保存在数据库的批转对象
|
|
:param dcm_task: 待办工单对象
|
|
"""
|
|
api_url = '/home/form/formpreview/save'
|
|
|
|
form_param = {
|
|
'recID': dcm_task.rec_id,
|
|
'actID': dcm_dispose.act_id
|
|
}
|
|
component_list = [
|
|
{"componentID": 9, "value": dcm_dispose.undertake_user_name}, # 承办人员
|
|
{"componentID": 12, "value": dcm_dispose.undertake_phone} # 联系电话
|
|
]
|
|
body = {
|
|
"formID": 377,
|
|
"isInsert": "0",
|
|
"briefParam": True,
|
|
"formParam": json.dumps(form_param, ensure_ascii=False),
|
|
"componentList": json.dumps(component_list, ensure_ascii=False)
|
|
}
|
|
conv_request = await dcm_api.new_api_request(api_url, body)
|
|
return conv_request
|
|
|
|
|
|
async def after_conv_dispose_request(response: HTTPResponse, retry_queue: asyncio.Queue[HTTPRequest]):
|
|
"""
|
|
提交数字城管后的处理程序。
|
|
|
|
:param response: 响应对象
|
|
:param retry_queue: 重试队列
|
|
"""
|
|
echo_log(response.body.decode())
|
|
echo_log('便民批转请求成功.')
|
|
# TODO: 这里要做实际的推送成功检查
|
|
|
|
|
|
async def push_conv_dispose_request(dcm_dispose: DcmDispose, dcm_task: DcmTask):
|
|
"""
|
|
推送批转请求。
|
|
|
|
:param dcm_dispose: 保存在数据库的批转对象
|
|
:param dcm_task: 待办工单对象
|
|
"""
|
|
echo_log(f"正在准备提交便民批转请求...")
|
|
if apps.get_active_env() in ('dev', '', None):
|
|
echo_log(f"非生产环境,不实际提交.")
|
|
return
|
|
|
|
request = await get_conv_dispose_request(dcm_dispose, dcm_task)
|
|
queue = asyncio.Queue()
|
|
await queue.put(request)
|
|
# 需要让调用方获取extendInfo参数
|
|
return await requests.async_concurrency(
|
|
queue, con_count=dock.CONCURRENCY_COUNT, retry=dock.MAX_RETRY_COUNT,
|
|
after_request=after_conv_dispose_request
|
|
)
|