# 招投标信息维护实施记录 ## 本次改动 - 将信息维护下“采购交易管理”改为“招投标信息维护”,保留原有 `purchaseTransaction` 技术标识。 - 新增供应商明细子表 `ccdi_purchase_transaction_supplier`,支持维护全部参标供应商,并使用 `is_bid_winner` 标记中标方。 - 主表继续保留中标供应商摘要字段,新增/修改/导入时从供应商明细自动回填。 - 列表查询新增供应商数聚合;详情查询和项目专项核查采购详情新增供应商明细返回。 - 导入模板改为“招投标主信息 + 供应商明细”双 Sheet,并按 `purchaseId` 聚合校验。 - 前端页面改造为多供应商明细表单,详情弹窗与项目详情弹窗改为供应商明细表展示。 ## 关键文件 - 后端 - `ccdi-info-collection/src/main/java/com/ruoyi/info/collection/service/impl/CcdiPurchaseTransactionServiceImpl.java` - `ccdi-info-collection/src/main/java/com/ruoyi/info/collection/service/impl/CcdiPurchaseTransactionImportServiceImpl.java` - `ccdi-info-collection/src/main/resources/mapper/info/collection/CcdiPurchaseTransactionMapper.xml` - `ccdi-project/src/main/resources/mapper/ccdi/project/CcdiProjectSpecialCheckMapper.xml` - 前端 - `ruoyi-ui/src/views/ccdiPurchaseTransaction/index.vue` - `ruoyi-ui/src/views/ccdiProject/components/detail/ExtendedPurchaseDetailDialog.vue` - SQL - `sql/ccdi_purchase_transaction.sql` - `sql/ccdi_purchase_transaction_menu.sql` - `sql/migration/2026-04-22-bidding-info-maintenance-supplier-detail.sql` ## 验证结果 - 后端编译 - 命令:`mvn -pl ccdi-info-collection,ccdi-project -am -DskipTests compile` - 结果:通过。 - 前端构建 - 命令:`source ~/.nvm/nvm.sh && nvm use 14.21.3 >/dev/null && cd ruoyi-ui && npm run build:prod` - 结果:通过,仅有既有产物体积 warning。 - 数据迁移 - 命令:`bin/mysql_utf8_exec.sh sql/migration/2026-04-22-bidding-info-maintenance-supplier-detail.sql` - 结果:执行成功,本地联调库菜单名已更新为“招投标信息维护”。 - Playwright 实页验证 - 验证页面:`http://localhost:8080/maintain/purchaseTransaction` - 结果: - 菜单与面包屑显示“招投标信息维护” - 列表显示“中标供应商”“参与供应商数” - 新增弹窗显示供应商明细表,并可新增供应商行 - 详情弹窗显示供应商明细表与中标标识 - 联调过程中发现列表 SQL 因 join 后字段未加别名导致 `purchase_id is ambiguous`,已修复并复验通过。 ## 测试进程清理 - 已关闭 Playwright 浏览器会话。 - 已停止前端 `npm run dev` 进程。 - 已停止测试期间启动的后端进程。