初始化项目
This commit is contained in:
@@ -0,0 +1,88 @@
|
||||
"""
|
||||
操作数字城管的工单延期接口后,向OA推送更新后的工单时间信息
|
||||
|
||||
对应文档接口:12、更新流程延期信息
|
||||
"""
|
||||
import asyncio
|
||||
import json
|
||||
from datetime import datetime
|
||||
|
||||
from tornado.httpclient import HTTPResponse, HTTPRequest
|
||||
|
||||
import dock
|
||||
from dock.dcm import dcm_scrape
|
||||
from dock.oa import oa_api, oa_api_request
|
||||
from models.dcm_task import DcmTask
|
||||
from paste.core.logging import echo_log
|
||||
from paste.util import udict
|
||||
from paste.web import requests
|
||||
|
||||
|
||||
async def get_update_process_delay_request(data: dict):
|
||||
api_url = '/externalWorkOrder/digitalCM/updateProcessDelayInfo'
|
||||
request_body = data
|
||||
# 构造 API 请求
|
||||
return await oa_api.new_api_request(api_url, request_body)
|
||||
|
||||
|
||||
async def after_update_process_delay_request(response: HTTPResponse, retry_queue: asyncio.Queue[HTTPRequest]):
|
||||
"""
|
||||
更新流程延期请求响应后的处理程序。
|
||||
|
||||
:param response: 响应对象
|
||||
:param retry_queue: 重试队列
|
||||
"""
|
||||
body = response.body.decode()
|
||||
echo_log(body)
|
||||
body_data = json.loads(body)
|
||||
code = udict.get_by_path(body_data, 'code')
|
||||
message = udict.get_by_path(body_data, 'msg')
|
||||
if code == 200:
|
||||
echo_log(f"更新流程延期成功.")
|
||||
else:
|
||||
echo_log(f"更新流程延期失败:{message}")
|
||||
|
||||
if retry_queue:
|
||||
echo_log(f"更新流程延期重试队列中有:{retry_queue.qsize()} 个请求在等待.")
|
||||
|
||||
|
||||
async def update_process_delay(task_id: int):
|
||||
"""
|
||||
流程延期更新之后,推送最新的时间信息
|
||||
|
||||
:param task_id: 对应的工单ID
|
||||
"""
|
||||
|
||||
echo_log(f"本次更新{task_id}的最新时间信息...")
|
||||
dcm_task = await DcmTask.async_find_by_id(task_id)
|
||||
echo_log(f"开始更新流程延期...")
|
||||
await dcm_scrape.fetch_single_dcm_task(dcm_task)
|
||||
# 重新获取更新后的任务对象
|
||||
dcm_task: DcmTask = await DcmTask.async_find_by_id(task_id)
|
||||
if dcm_task is not None:
|
||||
bundle_deadline_time_str = datetime.fromtimestamp(
|
||||
dcm_task.bundle_deadline_time // 1000
|
||||
).strftime("%Y-%m-%d %H:%M:%S") if dcm_task.bundle_deadline_time else ''
|
||||
|
||||
rollback_deadline_str = datetime.fromtimestamp(
|
||||
dcm_task.rollback_deadline // 1000
|
||||
).strftime("%Y-%m-%d %H:%M:%S") if dcm_task.rollback_deadline else ''
|
||||
|
||||
request = await oa_api_request.get_update_process_delay_request(
|
||||
str(task_id), bundle_deadline_time_str, rollback_deadline_str
|
||||
)
|
||||
queue = asyncio.Queue()
|
||||
await queue.put(request)
|
||||
await requests.async_concurrency(
|
||||
queue, con_count=dock.CONCURRENCY_COUNT, retry=dock.MAX_RETRY_COUNT,
|
||||
after_request=after_update_process_delay_request
|
||||
)
|
||||
|
||||
echo_log(f"更新流程延期完成...")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
from paste.core import aio_pool
|
||||
|
||||
_runner = aio_pool.get_aio_runner()
|
||||
_runner(update_process_delay(task_id=2054174091228876801))
|
||||
Reference in New Issue
Block a user