95 lines
2.7 KiB
Python
95 lines
2.7 KiB
Python
"""
|
|
通用后台任务模块
|
|
包含简道云表单更新和工作流审批等通用功能
|
|
"""
|
|
import logging
|
|
import time
|
|
from typing import Dict, Any
|
|
from app.api import API
|
|
|
|
api_instance = API()
|
|
logger = logging.getLogger('app')
|
|
|
|
|
|
def update_jiandaoyun(data: Dict[str, Any], results: str):
|
|
"""
|
|
更新简道云表单
|
|
:param data: 包含表单id、应用id、数据id的字典
|
|
:param results: 执行结果信息
|
|
:return: 更新结果字典
|
|
"""
|
|
# 定义简道云数据配置
|
|
jiandaoyun_data = {
|
|
'api_key': data['api_key'],
|
|
'entry_id': data['entry_id'],
|
|
'data_id': data['data_id'],
|
|
"data": {
|
|
'_widget_1731379774828': {"value": "已执行"}, # f6系统批量操作测试 是否执行成功
|
|
'_widget_1731381334870': {"value": results} # f6系统批量操作测试 执行明细
|
|
}
|
|
}
|
|
|
|
time.sleep(1)
|
|
print(jiandaoyun_data)
|
|
|
|
try:
|
|
response = api_instance.entry_data_update(jiandaoyun_data)
|
|
logger.info(f"简道云表单更新成功: {response}")
|
|
return {'msg': True}
|
|
except Exception as e:
|
|
logger.error(f"简道云表单更新失败: {e}")
|
|
return {'msg': False}
|
|
|
|
|
|
def approve_workflow(data: Dict[str, Any]):
|
|
"""
|
|
获取简道云当前流程节点并直接提交
|
|
:param data: 包含表单id、应用id、数据id的字典
|
|
:return: None
|
|
"""
|
|
# 获取简道云当前流程列表
|
|
json = api_instance.workflow_instance_get(data)
|
|
|
|
# 检查返回数据是否有效
|
|
if not json:
|
|
logger.error("未获取到工作流实例信息")
|
|
return
|
|
|
|
# 安全地获取任务列表
|
|
tasks = json.get('tasks', [])
|
|
if not tasks:
|
|
logger.error("未找到待处理任务")
|
|
return
|
|
|
|
# 将JSON字符串转换为Python字典
|
|
username = ''
|
|
instance_id = ''
|
|
task_id = ''
|
|
|
|
for task in tasks:
|
|
if task.get('status') == 0:
|
|
assignee = task.get('assignee', {})
|
|
username = assignee.get('username', '')
|
|
instance_id = task.get('instance_id', '')
|
|
task_id = task.get('task_id', '')
|
|
|
|
if username and instance_id and task_id:
|
|
break
|
|
|
|
if not username or not instance_id or not task_id:
|
|
logger.error("未找到有效的待处理任务信息")
|
|
return
|
|
|
|
task_data = {
|
|
"username": username,
|
|
"instance_id": instance_id,
|
|
"task_id": task_id,
|
|
}
|
|
|
|
try:
|
|
response = api_instance.workflow_task_approve(task_data)
|
|
logger.info(f"简道云工作流任务提交成功: {response}")
|
|
except Exception as e:
|
|
logger.error(f"简道云工作流任务提交失败: {e}")
|
|
|