增加项目的各个功能

This commit is contained in:
qiaoxinjiu
2026-05-07 19:21:19 +08:00
parent aba1618f89
commit ee6cd4ae66
121 changed files with 9346 additions and 43 deletions

View File

@@ -0,0 +1,63 @@
# encoding: UTF-8
from datetime import datetime
from common.dataBuilderExecutor import DataBuilderExecutor
from ..dao.dataBuilderDao import DataBuilderDao
from ..model.dataBuilderModel import DataBuilder, DataTask
class DataBuilderService(object):
@staticmethod
def create(session, model_cls, add_info):
return DataBuilderDao.create(session, model_cls, add_info)
@staticmethod
def update_by_id(session, model_cls, obj_id, update_info, soft_delete=True):
return DataBuilderDao.update_by_id(session, model_cls, obj_id, update_info, soft_delete)
@staticmethod
def get_by_id(session, model_cls, obj_id, soft_delete=True):
return DataBuilderDao.get_by_id(session, model_cls, obj_id, soft_delete)
@staticmethod
def list_by_filters(session, model_cls, filter_list, page_num=1, page_size=20, order_column=None):
return DataBuilderDao.list_by_filters(session, model_cls, filter_list, int(page_num), int(page_size), order_column)
@staticmethod
def delete_by_id(session, model_cls, obj_id):
return DataBuilderDao.delete_by_id(session, model_cls, obj_id)
@staticmethod
def execute_builder(session, builder_id, params=None, created_by=None):
builder = DataBuilderDao.get_by_id(session, DataBuilder, builder_id)
if not builder:
return {}, '未查询到对应造数器!'
params = params or {}
task_info = {
'builder_id': builder.id,
'project_id': builder.project_id,
'params': params,
'status': 1,
'created_by': created_by
}
# 先写入执行中任务,保证失败时也能追踪任务记录。
task_id, err_msg = DataBuilderDao.create(session, DataTask, task_info)
if err_msg:
return {}, err_msg
try:
# 当前 MVP 只做同步模板渲染执行,后续可在 executor 内扩展 http/db step。
executor = DataBuilderExecutor(builder.definition or {}, {})
result_data = executor.execute(params)
DataBuilderDao.update_by_id(session, DataTask, task_id, {
'status': 2,
'result_data': result_data,
'completed_time': datetime.now()
}, soft_delete=False)
return {'taskId': task_id, 'data': result_data}, ''
except Exception as e:
DataBuilderDao.update_by_id(session, DataTask, task_id, {
'status': 3,
'error_message': str(e),
'completed_time': datetime.now()
}, soft_delete=False)
return {}, f'执行造数失败!{e}'