|
|
@@ -244,8 +244,13 @@ class SampleService:
|
|
|
if table_type and table_type in TABLE_MAP:
|
|
|
# 如果指定了类型,使用 LEFT JOIN 关联查询,以便搜索子表字段
|
|
|
sub_table = TABLE_MAP[table_type]
|
|
|
- from_sql = f"t_samp_document_main m LEFT JOIN {sub_table} s ON m.id = s.id"
|
|
|
- fields_sql = "m.*, s.*" # 获取所有字段,包括子表字段
|
|
|
+ from_sql = f"""
|
|
|
+ t_samp_document_main m
|
|
|
+ LEFT JOIN {sub_table} s ON m.id = s.id
|
|
|
+ LEFT JOIN t_sys_user u1 ON m.created_by = u1.id
|
|
|
+ LEFT JOIN t_sys_user u2 ON m.updated_by = u2.id
|
|
|
+ """
|
|
|
+ fields_sql = "m.*, s.*, u1.username as creator_name, u2.username as updater_name, m.id as id"
|
|
|
where_clauses.append("m.source_type = %s")
|
|
|
params.append(table_type)
|
|
|
order_sql = "m.created_time DESC"
|
|
|
@@ -265,14 +270,11 @@ class SampleService:
|
|
|
if level_4_classification:
|
|
|
where_clauses.append("s.level_4_classification = %s")
|
|
|
params.append(level_4_classification)
|
|
|
-
|
|
|
- # 特殊处理 id 冲突,确保返回的是主表 m.id
|
|
|
- fields_sql = "m.*, s.*, m.id as id"
|
|
|
else:
|
|
|
- from_sql = "t_samp_document_main"
|
|
|
- fields_sql = "*"
|
|
|
- order_sql = "created_time DESC"
|
|
|
- title_field = "title"
|
|
|
+ from_sql = "t_samp_document_main m LEFT JOIN t_sys_user u1 ON m.created_by = u1.id LEFT JOIN t_sys_user u2 ON m.updated_by = u2.id"
|
|
|
+ fields_sql = "m.*, u1.username as creator_name, u2.username as updater_name"
|
|
|
+ order_sql = "m.created_time DESC"
|
|
|
+ title_field = "m.title"
|
|
|
|
|
|
if whether_to_enter is not None:
|
|
|
# 按照 search_replace_blocks 的逻辑,这里使用 conversion_status 过滤
|
|
|
@@ -355,8 +357,14 @@ class SampleService:
|
|
|
cursor = conn.cursor()
|
|
|
|
|
|
try:
|
|
|
- # 1. 查询主表
|
|
|
- cursor.execute("SELECT * FROM t_samp_document_main WHERE id = %s", (doc_id,))
|
|
|
+ # 1. 查询主表 (关联用户表获取姓名)
|
|
|
+ cursor.execute("""
|
|
|
+ SELECT m.*, u1.username as creator_name, u2.username as updater_name
|
|
|
+ FROM t_samp_document_main m
|
|
|
+ LEFT JOIN t_sys_user u1 ON m.created_by = u1.id
|
|
|
+ LEFT JOIN t_sys_user u2 ON m.updated_by = u2.id
|
|
|
+ WHERE m.id = %s
|
|
|
+ """, (doc_id,))
|
|
|
doc = cursor.fetchone()
|
|
|
if not doc:
|
|
|
return None
|
|
|
@@ -470,18 +478,56 @@ class SampleService:
|
|
|
# 2. 插入子表 (仅存储业务字段)
|
|
|
if table_type == 'basis':
|
|
|
cursor.execute(
|
|
|
- f"INSERT INTO {table_name} (id, chinese_name, standard_number, issuing_authority, release_date, document_type, professional_field, validity, note, created_by, created_time, updated_time) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, NOW(), NOW())",
|
|
|
- (doc_id, doc_data.get('title'), doc_data.get('standard_no'), doc_data.get('issuing_authority'), release_date, doc_data.get('document_type'), doc_data.get('professional_field'), doc_data.get('validity'), doc_data.get('note'), user_id)
|
|
|
+ f"""
|
|
|
+ INSERT INTO {table_name} (
|
|
|
+ id, chinese_name, english_name, standard_number, issuing_authority,
|
|
|
+ release_date, implementation_date, drafting_unit, approving_department,
|
|
|
+ participating_units, document_type, professional_field, engineering_phase,
|
|
|
+ validity, reference_basis, source_url, note,
|
|
|
+ created_by, updated_by, created_time, updated_time
|
|
|
+ ) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, NOW(), NOW())
|
|
|
+ """,
|
|
|
+ (
|
|
|
+ doc_id, doc_data.get('title'), doc_data.get('english_name'), doc_data.get('standard_no'),
|
|
|
+ doc_data.get('issuing_authority'), release_date, self._to_date(doc_data.get('implementation_date')),
|
|
|
+ doc_data.get('drafting_unit'), doc_data.get('approving_department'), doc_data.get('participating_units'),
|
|
|
+ doc_data.get('document_type'), doc_data.get('professional_field'), doc_data.get('engineering_phase'),
|
|
|
+ doc_data.get('validity'), doc_data.get('reference_basis'), doc_data.get('source_url'), doc_data.get('note'),
|
|
|
+ user_id, user_id
|
|
|
+ )
|
|
|
)
|
|
|
elif table_type == 'work':
|
|
|
cursor.execute(
|
|
|
- f"INSERT INTO {table_name} (id, plan_name, project_name, project_section, compiling_unit, compiling_date, plan_summary, compilation_basis, plan_category, level_1_classification, level_2_classification, level_3_classification, level_4_classification, note, created_by, created_time, updated_time) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, NOW(), NOW())",
|
|
|
- (doc_id, doc_data.get('title'), doc_data.get('project_name'), doc_data.get('project_section'), doc_data.get('issuing_authority'), release_date, doc_data.get('plan_summary'), doc_data.get('compilation_basis'), doc_data.get('plan_category'), doc_data.get('level_1_classification'), doc_data.get('level_2_classification'), doc_data.get('level_3_classification'), doc_data.get('level_4_classification'), doc_data.get('note'), user_id)
|
|
|
+ f"""
|
|
|
+ INSERT INTO {table_name} (
|
|
|
+ id, plan_name, project_name, project_section, compiling_unit,
|
|
|
+ compiling_date, plan_summary, compilation_basis, plan_category,
|
|
|
+ level_1_classification, level_2_classification, level_3_classification, level_4_classification,
|
|
|
+ note, created_by, updated_by, created_time, updated_time
|
|
|
+ ) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, NOW(), NOW())
|
|
|
+ """,
|
|
|
+ (
|
|
|
+ doc_id, doc_data.get('title'), doc_data.get('project_name'), doc_data.get('project_section'),
|
|
|
+ doc_data.get('issuing_authority'), release_date, doc_data.get('plan_summary'),
|
|
|
+ doc_data.get('compilation_basis'), doc_data.get('plan_category'), doc_data.get('level_1_classification'),
|
|
|
+ doc_data.get('level_2_classification'), doc_data.get('level_3_classification'), doc_data.get('level_4_classification'),
|
|
|
+ doc_data.get('note'), user_id, user_id
|
|
|
+ )
|
|
|
)
|
|
|
elif table_type == 'job':
|
|
|
cursor.execute(
|
|
|
- f"INSERT INTO {table_name} (id, file_name, issuing_department, document_type, publish_date, note, created_by, created_time, updated_time) VALUES (%s, %s, %s, %s, %s, %s, %s, NOW(), NOW())",
|
|
|
- (doc_id, doc_data.get('title'), doc_data.get('issuing_authority'), doc_data.get('document_type'), release_date, doc_data.get('note'), user_id)
|
|
|
+ f"""
|
|
|
+ INSERT INTO {table_name} (
|
|
|
+ id, file_name, issuing_department, document_type, publish_date,
|
|
|
+ effective_start_date, effective_end_date, note,
|
|
|
+ created_by, updated_by, created_time, updated_time
|
|
|
+ ) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, NOW(), NOW())
|
|
|
+ """,
|
|
|
+ (
|
|
|
+ doc_id, doc_data.get('title'), doc_data.get('issuing_authority'), doc_data.get('document_type'),
|
|
|
+ release_date, self._to_date(doc_data.get('effective_start_date')), self._to_date(doc_data.get('effective_end_date')),
|
|
|
+ doc_data.get('note'), user_id, user_id
|
|
|
+ )
|
|
|
)
|
|
|
|
|
|
# 3. 添加到任务管理中心 (类型为 data)
|
|
|
@@ -536,18 +582,54 @@ class SampleService:
|
|
|
# 2. 更新子表
|
|
|
if table_type == 'basis':
|
|
|
cursor.execute(
|
|
|
- f"UPDATE {table_name} SET chinese_name = %s, standard_number = %s, issuing_authority = %s, release_date = %s, document_type = %s, professional_field = %s, validity = %s, note = %s, updated_by = %s, updated_time = NOW() WHERE id = %s",
|
|
|
- (doc_data.get('title'), doc_data.get('standard_no'), doc_data.get('issuing_authority'), release_date, doc_data.get('document_type'), doc_data.get('professional_field'), doc_data.get('validity'), doc_data.get('note'), updater_id, doc_id)
|
|
|
+ f"""
|
|
|
+ UPDATE {table_name} SET
|
|
|
+ chinese_name = %s, english_name = %s, standard_number = %s, issuing_authority = %s,
|
|
|
+ release_date = %s, implementation_date = %s, drafting_unit = %s, approving_department = %s,
|
|
|
+ participating_units = %s, document_type = %s, professional_field = %s, engineering_phase = %s,
|
|
|
+ validity = %s, reference_basis = %s, source_url = %s, note = %s,
|
|
|
+ updated_by = %s, updated_time = NOW()
|
|
|
+ WHERE id = %s
|
|
|
+ """,
|
|
|
+ (
|
|
|
+ doc_data.get('title'), doc_data.get('english_name'), doc_data.get('standard_no'), doc_data.get('issuing_authority'),
|
|
|
+ release_date, self._to_date(doc_data.get('implementation_date')), doc_data.get('drafting_unit'), doc_data.get('approving_department'),
|
|
|
+ doc_data.get('participating_units'), doc_data.get('document_type'), doc_data.get('professional_field'), doc_data.get('engineering_phase'),
|
|
|
+ doc_data.get('validity'), doc_data.get('reference_basis'), doc_data.get('source_url'), doc_data.get('note'),
|
|
|
+ updater_id, doc_id
|
|
|
+ )
|
|
|
)
|
|
|
elif table_type == 'work':
|
|
|
cursor.execute(
|
|
|
- f"UPDATE {table_name} SET plan_name = %s, project_name = %s, project_section = %s, compiling_unit = %s, compiling_date = %s, plan_summary = %s, compilation_basis = %s, plan_category = %s, level_1_classification = %s, level_2_classification = %s, level_3_classification = %s, level_4_classification = %s, note = %s, updated_by = %s, updated_time = NOW() WHERE id = %s",
|
|
|
- (doc_data.get('title'), doc_data.get('project_name'), doc_data.get('project_section'), doc_data.get('issuing_authority'), release_date, doc_data.get('plan_summary'), doc_data.get('compilation_basis'), doc_data.get('plan_category'), doc_data.get('level_1_classification'), doc_data.get('level_2_classification'), doc_data.get('level_3_classification'), doc_data.get('level_4_classification'), doc_data.get('note'), updater_id, doc_id)
|
|
|
+ f"""
|
|
|
+ UPDATE {table_name} SET
|
|
|
+ plan_name = %s, project_name = %s, project_section = %s, compiling_unit = %s,
|
|
|
+ compiling_date = %s, plan_summary = %s, compilation_basis = %s, plan_category = %s,
|
|
|
+ level_1_classification = %s, level_2_classification = %s, level_3_classification = %s, level_4_classification = %s,
|
|
|
+ note = %s, updated_by = %s, updated_time = NOW()
|
|
|
+ WHERE id = %s
|
|
|
+ """,
|
|
|
+ (
|
|
|
+ doc_data.get('title'), doc_data.get('project_name'), doc_data.get('project_section'), doc_data.get('issuing_authority'),
|
|
|
+ release_date, doc_data.get('plan_summary'), doc_data.get('compilation_basis'), doc_data.get('plan_category'),
|
|
|
+ doc_data.get('level_1_classification'), doc_data.get('level_2_classification'), doc_data.get('level_3_classification'), doc_data.get('level_4_classification'),
|
|
|
+ doc_data.get('note'), updater_id, doc_id
|
|
|
+ )
|
|
|
)
|
|
|
elif table_type == 'job':
|
|
|
cursor.execute(
|
|
|
- f"UPDATE {table_name} SET file_name = %s, issuing_department = %s, document_type = %s, publish_date = %s, note = %s, updated_by = %s, updated_time = NOW() WHERE id = %s",
|
|
|
- (doc_data.get('title'), doc_data.get('issuing_authority'), doc_data.get('document_type'), release_date, doc_data.get('note'), updater_id, doc_id)
|
|
|
+ f"""
|
|
|
+ UPDATE {table_name} SET
|
|
|
+ file_name = %s, issuing_department = %s, document_type = %s, publish_date = %s,
|
|
|
+ effective_start_date = %s, effective_end_date = %s, note = %s,
|
|
|
+ updated_by = %s, updated_time = NOW()
|
|
|
+ WHERE id = %s
|
|
|
+ """,
|
|
|
+ (
|
|
|
+ doc_data.get('title'), doc_data.get('issuing_authority'), doc_data.get('document_type'), release_date,
|
|
|
+ self._to_date(doc_data.get('effective_start_date')), self._to_date(doc_data.get('effective_end_date')), doc_data.get('note'),
|
|
|
+ updater_id, doc_id
|
|
|
+ )
|
|
|
)
|
|
|
|
|
|
conn.commit()
|
|
|
@@ -588,8 +670,9 @@ class SampleService:
|
|
|
fields = """
|
|
|
s.id, s.chinese_name as title, s.standard_number as standard_no,
|
|
|
s.issuing_authority, s.release_date, s.document_type,
|
|
|
- s.professional_field, s.validity, s.note, s.created_by, s.created_time,
|
|
|
- s.updated_by, s.updated_time,
|
|
|
+ s.professional_field, s.validity, s.note,
|
|
|
+ s.created_by, u1.username as creator_name, s.created_time,
|
|
|
+ s.updated_by, u2.username as updater_name, s.updated_time,
|
|
|
m.file_url, m.conversion_status, m.md_url, m.json_url
|
|
|
"""
|
|
|
field_map = {
|
|
|
@@ -611,7 +694,9 @@ class SampleService:
|
|
|
s.plan_summary, s.compilation_basis,
|
|
|
s.plan_category, s.level_1_classification, s.level_2_classification,
|
|
|
s.level_3_classification, s.level_4_classification,
|
|
|
- s.note, s.created_by, s.created_time, s.updated_by, s.updated_time,
|
|
|
+ s.note,
|
|
|
+ s.created_by, u1.username as creator_name, s.created_time,
|
|
|
+ s.updated_by, u2.username as updater_name, s.updated_time,
|
|
|
m.file_url, m.conversion_status, m.md_url, m.json_url
|
|
|
"""
|
|
|
field_map = {
|
|
|
@@ -630,7 +715,9 @@ class SampleService:
|
|
|
s.id, s.file_name as title, NULL as standard_no,
|
|
|
s.issuing_department as issuing_authority, s.publish_date as release_date,
|
|
|
s.document_type, NULL as professional_field, NULL as validity,
|
|
|
- s.note, s.created_by, s.created_time, s.updated_by, s.updated_time,
|
|
|
+ s.note,
|
|
|
+ s.created_by, u1.username as creator_name, s.created_time,
|
|
|
+ s.updated_by, u2.username as updater_name, s.updated_time,
|
|
|
m.file_url, m.conversion_status, m.md_url, m.json_url
|
|
|
"""
|
|
|
field_map = {
|
|
|
@@ -670,11 +757,13 @@ class SampleService:
|
|
|
where_sql = " WHERE " + " AND ".join(where_clauses) if where_clauses else ""
|
|
|
offset = (page - 1) * size
|
|
|
|
|
|
- # 使用 LEFT JOIN 关联主表
|
|
|
+ # 使用 LEFT JOIN 关联主表和用户表获取姓名
|
|
|
sql = f"""
|
|
|
SELECT {fields}
|
|
|
FROM {table_name} s
|
|
|
LEFT JOIN t_samp_document_main m ON s.id = m.id
|
|
|
+ LEFT JOIN t_sys_user u1 ON s.created_by = u1.id
|
|
|
+ LEFT JOIN t_sys_user u2 ON s.updated_by = u2.id
|
|
|
{where_sql}
|
|
|
ORDER BY s.created_time DESC
|
|
|
LIMIT %s OFFSET %s
|
|
|
@@ -829,14 +918,52 @@ class SampleService:
|
|
|
|
|
|
# 2. 插入子表 (移除 file_url,因为它现在只存储在主表中)
|
|
|
if type == 'basis':
|
|
|
- sql = f"INSERT INTO {table_name} (id, chinese_name, standard_number, issuing_authority, release_date, document_type, professional_field, validity, note, created_by, created_time, updated_time) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, NOW(), NOW())"
|
|
|
- params = (doc_id, data.get('title'), data.get('standard_no'), data.get('issuing_authority'), self._to_date(data.get('release_date')), data.get('document_type'), data.get('professional_field'), data.get('validity', '现行'), data.get('note'), user_id)
|
|
|
+ sql = f"""
|
|
|
+ INSERT INTO {table_name} (
|
|
|
+ id, chinese_name, english_name, standard_number, issuing_authority,
|
|
|
+ release_date, implementation_date, drafting_unit, approving_department,
|
|
|
+ participating_units, document_type, professional_field, engineering_phase,
|
|
|
+ validity, reference_basis, source_url, note,
|
|
|
+ created_by, updated_by, created_time, updated_time
|
|
|
+ ) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, NOW(), NOW())
|
|
|
+ """
|
|
|
+ params = (
|
|
|
+ doc_id, data.get('title'), data.get('english_name'), data.get('standard_no'),
|
|
|
+ data.get('issuing_authority'), self._to_date(data.get('release_date')), self._to_date(data.get('implementation_date')),
|
|
|
+ data.get('drafting_unit'), data.get('approving_department'), data.get('participating_units'),
|
|
|
+ data.get('document_type'), data.get('professional_field'), data.get('engineering_phase'),
|
|
|
+ data.get('validity', '现行'), data.get('reference_basis'), data.get('source_url'), data.get('note'),
|
|
|
+ user_id, user_id
|
|
|
+ )
|
|
|
elif type == 'work':
|
|
|
- sql = f"INSERT INTO {table_name} (id, plan_name, project_name, project_section, compiling_unit, compiling_date, plan_summary, compilation_basis, plan_category, level_1_classification, level_2_classification, level_3_classification, level_4_classification, note, created_by, created_time, updated_time) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, NOW(), NOW())"
|
|
|
- params = (doc_id, data.get('title'), data.get('project_name'), data.get('project_section'), data.get('issuing_authority'), self._to_date(data.get('release_date')), data.get('plan_summary'), data.get('compilation_basis'), data.get('plan_category'), data.get('level_1_classification'), data.get('level_2_classification'), data.get('level_3_classification'), data.get('level_4_classification'), data.get('note'), user_id)
|
|
|
+ sql = f"""
|
|
|
+ INSERT INTO {table_name} (
|
|
|
+ id, plan_name, project_name, project_section, compiling_unit,
|
|
|
+ compiling_date, plan_summary, compilation_basis, plan_category,
|
|
|
+ level_1_classification, level_2_classification, level_3_classification, level_4_classification,
|
|
|
+ note, created_by, updated_by, created_time, updated_time
|
|
|
+ ) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, NOW(), NOW())
|
|
|
+ """
|
|
|
+ params = (
|
|
|
+ doc_id, data.get('title'), data.get('project_name'), data.get('project_section'),
|
|
|
+ data.get('issuing_authority'), self._to_date(data.get('release_date')), data.get('plan_summary'),
|
|
|
+ data.get('compilation_basis'), data.get('plan_category'), data.get('level_1_classification'),
|
|
|
+ data.get('level_2_classification'), data.get('level_3_classification'), data.get('level_4_classification'),
|
|
|
+ data.get('note'), user_id, user_id
|
|
|
+ )
|
|
|
elif type == 'job':
|
|
|
- sql = f"INSERT INTO {table_name} (id, file_name, issuing_department, document_type, publish_date, note, created_by, created_time, updated_time) VALUES (%s, %s, %s, %s, %s, %s, %s, NOW(), NOW())"
|
|
|
- params = (doc_id, data.get('title'), data.get('issuing_authority'), data.get('document_type'), self._to_date(data.get('release_date')), data.get('note'), user_id)
|
|
|
+ sql = f"""
|
|
|
+ INSERT INTO {table_name} (
|
|
|
+ id, file_name, issuing_department, document_type, publish_date,
|
|
|
+ effective_start_date, effective_end_date, note,
|
|
|
+ created_by, updated_by, created_time, updated_time
|
|
|
+ ) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, NOW(), NOW())
|
|
|
+ """
|
|
|
+ params = (
|
|
|
+ doc_id, data.get('title'), data.get('issuing_authority'), data.get('document_type'),
|
|
|
+ self._to_date(data.get('release_date')), self._to_date(data.get('effective_start_date')), self._to_date(data.get('effective_end_date')),
|
|
|
+ data.get('note'), user_id, user_id
|
|
|
+ )
|
|
|
else:
|
|
|
return False, "不支持的类型"
|
|
|
|
|
|
@@ -916,7 +1043,8 @@ class SampleService:
|
|
|
"""
|
|
|
|
|
|
params = (
|
|
|
- data.get('title'), data.get('project_name'), data.get('project_section'), data.get('issuing_authority'), self._to_date(data.get('release_date')),
|
|
|
+ data.get('title'), data.get('project_name'), data.get('project_section'),
|
|
|
+ data.get('issuing_authority'), self._to_date(data.get('release_date')),
|
|
|
data.get('plan_summary'), data.get('compilation_basis'), data.get('plan_category'),
|
|
|
data.get('level_1_classification'), data.get('level_2_classification'), data.get('level_3_classification'), data.get('level_4_classification'),
|
|
|
data.get('note'), updater_id, info_id
|