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 '来源项目名称';