saas1.6日志更新
This commit is contained in:
@@ -1,16 +1,20 @@
|
||||
from yd_api import YDAPI
|
||||
import pandas as pd
|
||||
from tqdm import tqdm
|
||||
import hashlib
|
||||
from datetime import datetime, timedelta
|
||||
import pandas as pd
|
||||
import mysql.connector
|
||||
from mysql.connector import Error
|
||||
import json
|
||||
from back_ground_module import CommonModule
|
||||
import numpy as np
|
||||
from config import Config
|
||||
from log_config import configure_task_logger, configure_error_task_logger
|
||||
|
||||
# 获取已经配置好的常规日志记录器
|
||||
logger = configure_task_logger()
|
||||
|
||||
# 获取已经配置好的错误任务日志记录器
|
||||
error_task_logger = configure_error_task_logger()
|
||||
common_module = CommonModule()
|
||||
|
||||
# 初始化 API 实例和 Token
|
||||
@@ -44,8 +48,6 @@ class TimeConsumingProcess():
|
||||
|
||||
PAGES_two = form_data_two.get('totalCount') // 100 + 1
|
||||
|
||||
# # 手动控制小于3w
|
||||
# PAGES_two = 290
|
||||
for a in tqdm(range(1, PAGES_two + 1)):
|
||||
try:
|
||||
form_data_two = api_instance.read_processes_instances(
|
||||
@@ -55,12 +57,12 @@ class TimeConsumingProcess():
|
||||
)
|
||||
all_process_list = all_process_list + form_data_two.get("data")
|
||||
except Exception as e:
|
||||
print(f"Error fetching page {a}: {e}")
|
||||
logger.warning(f"获取流程实例数据时出错: {e}")
|
||||
continue
|
||||
|
||||
return all_process_list
|
||||
|
||||
def extract_approval_records(self, process_instances):
|
||||
def extract_approval_records(self, process_instances: list):
|
||||
"""提取每条流程的审批记录"""
|
||||
all_data_list = []
|
||||
for data in tqdm(process_instances, desc="处理流程实例"):
|
||||
@@ -332,7 +334,6 @@ class TimeConsumingProcess():
|
||||
# 4. 额外检查:确保时间格式正确
|
||||
df = df[df['审批时间'].str.match(r'^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}$') | df['审批时间'].isnull()]
|
||||
|
||||
|
||||
# 生成插入语句
|
||||
try:
|
||||
columns = ', '.join(df.columns)
|
||||
@@ -358,28 +359,41 @@ class TimeConsumingProcess():
|
||||
|
||||
def main(self):
|
||||
task_start_time = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
|
||||
# Step 1: 获取流程实例
|
||||
process_instances = self.fetch_process_data()
|
||||
try:
|
||||
logger.info("开始执行宜搭流程耗时写入BI任务。")
|
||||
# Step 1: 获取流程实例
|
||||
process_instances = self.fetch_process_data()
|
||||
logger.info("获取流程实例成功。")
|
||||
|
||||
# Step 2: 提取审批记录
|
||||
all_data_list = self.extract_approval_records(process_instances)
|
||||
# Step 2: 提取审批记录
|
||||
all_data_list = self.extract_approval_records(process_instances)
|
||||
logger.info("提取审批记录成功。")
|
||||
|
||||
# Step 3: 按 '提交申请' 分组
|
||||
result_groups = self.group_by_process(all_data_list)
|
||||
# Step 3: 按 '提交申请' 分组
|
||||
result_groups = self.group_by_process(all_data_list)
|
||||
logger.info("按 '提交申请' 分组成功。")
|
||||
|
||||
# Step 4: 转换为宽表
|
||||
df_final, max_steps = self.transform_to_wide_table(result_groups)
|
||||
# Step 4: 转换为宽表
|
||||
df_final, max_steps = self.transform_to_wide_table(result_groups)
|
||||
logger.info("转换为宽表成功。")
|
||||
|
||||
# Step 5: 对流程进行分类并保存结果
|
||||
df_final1 = self.classify_flows(df_final, max_steps)
|
||||
# Step 5: 对流程进行分类并保存结果
|
||||
df_final1 = self.classify_flows(df_final, max_steps)
|
||||
logger.info("对流程进行分类并保存结果成功。")
|
||||
|
||||
# Step 6: 耗时计算
|
||||
df_final2 = self.time_calculate(df_final1)
|
||||
# Step 6: 耗时计算
|
||||
df_final2 = self.time_calculate(df_final1)
|
||||
logger.info("耗时计算成功。")
|
||||
|
||||
# Step 7: 向BI写入数据
|
||||
self.write_to_bi(df_final2)
|
||||
# Step 7: 向BI写入数据
|
||||
self.write_to_bi(df_final2)
|
||||
logger.info("向BI写入数据成功。")
|
||||
|
||||
common_module.send_task_status(task_start_time, "宜搭流程耗时写入BI")
|
||||
common_module.send_task_status(task_start_time, "宜搭流程耗时写入BI")
|
||||
logger.info("宜搭流程耗时写入BI任务执行成功。")
|
||||
except Exception as e:
|
||||
error_task_logger.error(f"宜搭流程耗时写入BI执行出错: {e}")
|
||||
common_module.send_task_error(task_start_time, "宜搭流程耗时写入BI", str(e))
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
|
||||
Reference in New Issue
Block a user