be02a5e942
本批是 16 个模块收尾,两个特殊模块: 1) 运输对账(importVehicles / importCargoes)——最严重的一例: 既无 setRollbackOnly 也不抛异常。方法开头 resetExternal(id) 清空既有外部账单, 循环末尾无条件插入本批正确行,然后 return failures。一旦有失败行: 旧外部账单已被清空、新账单只插入了部分——数据损坏且不可恢复。 改法:任一行失败时抛 ImportFailureException(rows),让 resetExternal 清空 与本批插入在同一事务内一起回滚。另把失败原因写回原行(异常携带原表 rows, 只写 Vehicle/CargoReconciliationFailureExcel 副本会丢原因)。 控制器改 catch 异常导出原表全量(用 export 保留按列标红)。 2) 运输计划(importTransportPlan)——失败明细只返回 errorMap.values()(仅错误行)。 改为抛 ImportFailureException(data) 携带原表全量;控制器 catch 后导出。 验证:mvn install -DskipTests 通过;全项目 12 个导入回归脚本 379 项断言全绿。 全项目已无 TransactionAspectSupport...setRollbackOnly() 调用残留。 注:运输对账需先建对账草稿(多张前置表)才能端到端回归, 本批仅完成代码改造与编译验证,回归用例待补(见后续说明)。