|
|
@ -3,7 +3,7 @@ from sqlalchemy.ext.asyncio import AsyncSession |
|
|
|
from exceptions.exception import ServiceException |
|
|
|
from module_admin.dao.datastd_dao import DataStdDao |
|
|
|
from module_admin.entity.vo.common_vo import CrudResponseModel |
|
|
|
from module_admin.entity.vo.datastd_vo import DataStdCodeModel,DeleteDataStdModel,DataStdDictModel,DataStdMainModel,DataStdMainApprModel,DataStdDictApprModel |
|
|
|
from module_admin.entity.vo.datastd_vo import DataStdCodeModel,DeleteDataStdModel,DataStdDictModel,DataStdMainModel,DataStdMainApprModel,DataStdDictApprModel,DataStdCodeApprModel |
|
|
|
from utils.common_util import CamelCaseUtil |
|
|
|
import uuid |
|
|
|
from module_admin.entity.vo.approval_vo import ApplyModel |
|
|
@ -12,6 +12,7 @@ from collections import defaultdict |
|
|
|
from datetime import datetime |
|
|
|
from config.constant import CommonConstant |
|
|
|
from module_admin.entity.vo.data_ast_content_vo import DataCatalogPageQueryModel, DeleteDataCatalogModel,DataCatalogResponseWithChildren,DataCatalogMovedRequest,DataCatalogMergeRequest,DataCatalogChild,DataCatalogMoverelRequest |
|
|
|
from module_admin.entity.vo.user_vo import CurrentUserModel |
|
|
|
|
|
|
|
class DataStdService: |
|
|
|
""" |
|
|
@ -146,12 +147,12 @@ class DataStdService: |
|
|
|
await query_db.commit() |
|
|
|
|
|
|
|
|
|
|
|
return CrudResponseModel(is_success=True, message='删除列配置成功') |
|
|
|
return CrudResponseModel(is_success=True, message='删除标准代码成功') |
|
|
|
except Exception as e: |
|
|
|
await query_db.rollback() |
|
|
|
raise e |
|
|
|
else: |
|
|
|
raise ServiceException(message='传入列配置ID为空') |
|
|
|
raise ServiceException(message='传入标准代码ID为空') |
|
|
|
|
|
|
|
@classmethod |
|
|
|
async def add_std_code_with_items_services(cls, request, query_db: AsyncSession, code: DataStdCodeModel, code_item_list: list[DataStdCodeModel]): |
|
|
@ -190,6 +191,76 @@ class DataStdService: |
|
|
|
except Exception as e: |
|
|
|
await query_db.rollback() |
|
|
|
raise ServiceException(message=f"新增标准代码失败: {str(e)}") |
|
|
|
@classmethod |
|
|
|
async def add_std_code_with_items_appr( |
|
|
|
cls, |
|
|
|
code: DataStdCodeModel, |
|
|
|
code_item_list: list[DataStdCodeModel], |
|
|
|
query_db: AsyncSession, |
|
|
|
current_user: CurrentUserModel |
|
|
|
): |
|
|
|
# 设置标准代码的创建和更新时间 |
|
|
|
code.id = str(uuid.uuid4()) # 新生成 ID |
|
|
|
code.create_by = current_user.user.user_name |
|
|
|
code.create_time = datetime.now() |
|
|
|
code.update_by = current_user.user.user_name |
|
|
|
code.update_time = datetime.now() |
|
|
|
code.sys_name = '公司级' if 'company' == code.code_type else code.sys_name |
|
|
|
|
|
|
|
# 校验标准代码是否已存在于正式表中 |
|
|
|
if await cls.check_code_exists_in_official(query_db, code.code_num): |
|
|
|
raise ServiceException(message=f'标准代码{code.code_num}已经存在于正式表中,无法新增') |
|
|
|
|
|
|
|
# 先创建标准代码的审批记录 |
|
|
|
appr_model = DataStdCodeApprModel(**code.model_dump(exclude_unset=True, by_alias=True)) |
|
|
|
appr_model.changeType = "add" |
|
|
|
appr_model.compareId = code.id |
|
|
|
appr_model.oldInstId = code.id |
|
|
|
appr_model.approStatus = "waiting" |
|
|
|
appr_model.flowId = str(uuid.uuid4()) # 新生成 Flow ID |
|
|
|
|
|
|
|
# 将标准代码添加到审批表 |
|
|
|
await DataStdDao.add_std_code_appr(query_db, appr_model) |
|
|
|
|
|
|
|
# 创建审批申请 |
|
|
|
apply_model = ApplyModel() |
|
|
|
apply_model.businessType = "dataStdCode" |
|
|
|
apply_model.businessId = appr_model.flowId |
|
|
|
apply_model.applicant = appr_model.create_by |
|
|
|
await ApprovalService.apply_services(query_db, apply_model, 'dataStdCode') |
|
|
|
|
|
|
|
# 同时处理代码项的添加 |
|
|
|
for item in code_item_list: |
|
|
|
item.id = str(uuid.uuid4()) # 新生成 ID |
|
|
|
item.create_by = current_user.user.user_name |
|
|
|
item.create_time = datetime.now() |
|
|
|
item.update_by = current_user.user.user_name |
|
|
|
item.update_time = datetime.now() |
|
|
|
item.sys_name = '公司级' if 'company' == item.code_type else item.sys_name |
|
|
|
item.parent_id = code.id # 设置父级 ID |
|
|
|
|
|
|
|
# 校验代码项是否已存在于正式表中 |
|
|
|
if await cls.check_code_exists_in_official(query_db, item.code_num): |
|
|
|
raise ServiceException(message=f'代码项{item.code_num}已经存在于正式表中,无法新增') |
|
|
|
|
|
|
|
# 同样需要创建审批记录 |
|
|
|
item_appr_model = DataStdCodeApprModel(**item.model_dump(exclude_unset=True, by_alias=True)) |
|
|
|
item_appr_model.changeType = "add" |
|
|
|
item_appr_model.compareId = item.id |
|
|
|
item_appr_model.oldInstId = item.id |
|
|
|
item_appr_model.approStatus = "waiting" |
|
|
|
item_appr_model.flowId = appr_model.flowId # 使用相同的 Flow ID |
|
|
|
|
|
|
|
await DataStdDao.add_std_code_appr(query_db, item_appr_model) |
|
|
|
|
|
|
|
# 创建代码项的审批申请 |
|
|
|
apply_model.businessId = item_appr_model.flowId |
|
|
|
await ApprovalService.apply_services(query_db, apply_model, 'dataStdCode') |
|
|
|
|
|
|
|
return CrudResponseModel(is_success=True, message='新增标准代码和代码项成功') |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@classmethod |
|
|
|
async def edit_std_code_with_items_services(cls, request, query_db: AsyncSession, code: DataStdCodeModel, code_item_list: list[DataStdCodeModel]): |
|
|
|
""" |
|
|
|