From 36576fab78d5fcf19240164b341de0132705c3a0 Mon Sep 17 00:00:00 2001
From: wkc <978997012@qq.com>
Date: Sun, 29 Mar 2026 09:45:54 +0800
Subject: [PATCH] =?UTF-8?q?=E8=A1=A5=E5=85=85=E5=8E=86=E5=8F=B2=E5=AF=BC?=
=?UTF-8?q?=E5=85=A5=E6=96=87=E4=BB=B6=E8=AE=B0=E5=BD=95=E5=AD=97=E6=AE=B5?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../domain/entity/CcdiFileUploadRecord.java | 9 +++++++++
.../ccdi/project/CcdiBankStatementMapper.xml | 6 ++++--
.../project/CcdiFileUploadRecordMapper.xml | 13 +++++++++----
.../mapper/CcdiBankStatementMapperXmlTest.java | 18 ++++++++++++++++++
...03-29-project-import-history-plan-record.md | 10 ++++++++++
...ile-upload-history-import-source-fields.sql | 4 ++++
6 files changed, 54 insertions(+), 6 deletions(-)
create mode 100644 sql/migration/2026-03-29-add-file-upload-history-import-source-fields.sql
diff --git a/ccdi-project/src/main/java/com/ruoyi/ccdi/project/domain/entity/CcdiFileUploadRecord.java b/ccdi-project/src/main/java/com/ruoyi/ccdi/project/domain/entity/CcdiFileUploadRecord.java
index bde85efd..6d3558a0 100644
--- a/ccdi-project/src/main/java/com/ruoyi/ccdi/project/domain/entity/CcdiFileUploadRecord.java
+++ b/ccdi-project/src/main/java/com/ruoyi/ccdi/project/domain/entity/CcdiFileUploadRecord.java
@@ -44,6 +44,15 @@ public class CcdiFileUploadRecord implements Serializable {
/** 文件状态:uploading-上传中,parsing-解析中,parsed_success-解析成功,parsed_failed-解析失败 */
private String fileStatus;
+ /** 来源类型 */
+ private String sourceType;
+
+ /** 来源项目ID */
+ private Long sourceProjectId;
+
+ /** 来源项目名称 */
+ private String sourceProjectName;
+
/** 主体名称(多个用逗号分隔) */
private String enterpriseNames;
diff --git a/ccdi-project/src/main/resources/mapper/ccdi/project/CcdiBankStatementMapper.xml b/ccdi-project/src/main/resources/mapper/ccdi/project/CcdiBankStatementMapper.xml
index 92df3289..2bc53df8 100644
--- a/ccdi-project/src/main/resources/mapper/ccdi/project/CcdiBankStatementMapper.xml
+++ b/ccdi-project/src/main/resources/mapper/ccdi/project/CcdiBankStatementMapper.xml
@@ -328,10 +328,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
bs.cret_no AS cretNo,
bs.CREATE_DATE AS createDate,
fur.file_name AS originalFileName,
- fur.upload_time AS uploadTime
+ fur.upload_time AS uploadTime,
+ fur.source_project_name AS sourceProjectName
FROM ccdi_bank_statement bs
LEFT JOIN (
- SELECT latest_record.project_id, latest_record.log_id, latest_record.file_name, latest_record.upload_time
+ SELECT latest_record.project_id, latest_record.log_id, latest_record.file_name, latest_record.upload_time,
+ latest_record.source_project_name
FROM ccdi_file_upload_record latest_record
INNER JOIN (
SELECT project_id, log_id, MAX(id) AS max_id
diff --git a/ccdi-project/src/main/resources/mapper/ccdi/project/CcdiFileUploadRecordMapper.xml b/ccdi-project/src/main/resources/mapper/ccdi/project/CcdiFileUploadRecordMapper.xml
index 2177c0fb..1f6458b5 100644
--- a/ccdi-project/src/main/resources/mapper/ccdi/project/CcdiFileUploadRecordMapper.xml
+++ b/ccdi-project/src/main/resources/mapper/ccdi/project/CcdiFileUploadRecordMapper.xml
@@ -12,6 +12,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+
+
+
@@ -21,8 +24,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
select id, project_id, lsfx_project_id, log_id, file_name, file_size,
- file_status, enterprise_names, account_nos, error_message,
- upload_time, upload_user
+ file_status, source_type, source_project_id, source_project_name,
+ enterprise_names, account_nos, error_message, upload_time, upload_user
from ccdi_file_upload_record
@@ -30,13 +33,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
insert into ccdi_file_upload_record (
project_id, lsfx_project_id, file_name, file_size, file_status,
+ source_type, source_project_id, source_project_name,
enterprise_names, account_nos, upload_time, upload_user
) values
(
#{item.projectId}, #{item.lsfxProjectId}, #{item.fileName},
- #{item.fileSize}, #{item.fileStatus}, #{item.enterpriseNames},
- #{item.accountNos}, #{item.uploadTime}, #{item.uploadUser}
+ #{item.fileSize}, #{item.fileStatus}, #{item.sourceType},
+ #{item.sourceProjectId}, #{item.sourceProjectName},
+ #{item.enterpriseNames}, #{item.accountNos}, #{item.uploadTime}, #{item.uploadUser}
)
diff --git a/ccdi-project/src/test/java/com/ruoyi/ccdi/project/mapper/CcdiBankStatementMapperXmlTest.java b/ccdi-project/src/test/java/com/ruoyi/ccdi/project/mapper/CcdiBankStatementMapperXmlTest.java
index 1406d7c1..16d693d9 100644
--- a/ccdi-project/src/test/java/com/ruoyi/ccdi/project/mapper/CcdiBankStatementMapperXmlTest.java
+++ b/ccdi-project/src/test/java/com/ruoyi/ccdi/project/mapper/CcdiBankStatementMapperXmlTest.java
@@ -132,6 +132,24 @@ class CcdiBankStatementMapperXmlTest {
}
}
+ @Test
+ void fileUploadRecordMapper_shouldContainHistoryImportSourceFields() throws Exception {
+ try (InputStream inputStream = getClass().getClassLoader()
+ .getResourceAsStream("mapper/ccdi/project/CcdiFileUploadRecordMapper.xml")) {
+ String xml = new String(inputStream.readAllBytes(), StandardCharsets.UTF_8);
+
+ assertTrue(xml.contains("source_type"), xml);
+ assertTrue(xml.contains("source_project_id"), xml);
+ assertTrue(xml.contains("source_project_name"), xml);
+ }
+
+ try (InputStream inputStream = getClass().getClassLoader().getResourceAsStream(RESOURCE)) {
+ String xml = new String(inputStream.readAllBytes(), StandardCharsets.UTF_8);
+
+ assertTrue(xml.contains("fur.source_project_name"), xml);
+ }
+ }
+
@Test
void insertBatch_shouldAvoidUpdatingAutoIncrementPrimaryKeyInDuplicateBranch() throws Exception {
try (InputStream inputStream = getClass().getClassLoader().getResourceAsStream(RESOURCE)) {
diff --git a/docs/reports/implementation/2026-03-29-project-import-history-plan-record.md b/docs/reports/implementation/2026-03-29-project-import-history-plan-record.md
index fab900b5..b03d7749 100644
--- a/docs/reports/implementation/2026-03-29-project-import-history-plan-record.md
+++ b/docs/reports/implementation/2026-03-29-project-import-history-plan-record.md
@@ -17,3 +17,13 @@
- 按仓库约束,本次未启用 subagent
- 已人工检查计划与设计文档的一致性,确认未引入未被批准的新方案
+
+## 执行记录
+
+### 2026-03-29 Task 1 后端数据结构预置
+
+- 新增迁移脚本 `sql/migration/2026-03-29-add-file-upload-history-import-source-fields.sql`,为 `ccdi_file_upload_record` 增加 `source_type`、`source_project_id`、`source_project_name`
+- 扩展 `CcdiFileUploadRecord` 实体与 `CcdiFileUploadRecordMapper.xml`,补齐来源字段映射、查询列和批量插入列
+- 调整 `CcdiBankStatementMapper.xml` 详情查询,补充 `fur.source_project_name` 查询痕迹,为后续历史导入来源展示预留字段
+- 新增 `CcdiBankStatementMapperXmlTest` 断言,先验证缺少来源字段时失败,再验证补齐后通过
+- 验证命令:`mvn -pl ccdi-project -am -Dtest=CcdiBankStatementMapperXmlTest -Dsurefire.failIfNoSpecifiedTests=false test`
diff --git a/sql/migration/2026-03-29-add-file-upload-history-import-source-fields.sql b/sql/migration/2026-03-29-add-file-upload-history-import-source-fields.sql
new file mode 100644
index 00000000..3592e9ee
--- /dev/null
+++ b/sql/migration/2026-03-29-add-file-upload-history-import-source-fields.sql
@@ -0,0 +1,4 @@
+ALTER TABLE ccdi_file_upload_record
+ ADD COLUMN source_type varchar(32) DEFAULT 'UPLOAD' COMMENT '来源类型',
+ ADD COLUMN source_project_id bigint NULL COMMENT '来源项目ID',
+ ADD COLUMN source_project_name varchar(100) NULL COMMENT '来源项目名称';