Files
tms-erp-api/blade-service
weicw-dshsa f2b6ca2834 🐛 行政区划导入补事务实现整批回滚,缓存清理移到成功路径
问题:RegionServiceImpl.importRegion 是唯一没有 @Transactional 的导入板块,
循环内吞掉异常后正常 return,已落库行直接提交。且 cacheChanged 标志导致
「先清缓存、再提交事务」:循环内已有行 submit 成功 → 后面行失败 → 方法
正常返回 → 惰性树缓存被清/重算成失败批次的中间状态,库回滚后缓存脏掉。

改动:
- 服务层:补 @Transactional(rollbackFor = Exception.class);错误收集完后
  抛 ImportFailureException(org.springblade.common.excel)触发整批回滚。
- 缓存语义重构:submit 拆出 clearCache 参数(公开 submit(region) 行为不变,
  手工新增仍即时清缓存);导入路径传 false 不逐行清缓存,
  统一移到方法末尾成功路径上——异常抛出后不可达,失败批次缓存保持原状。
- 控制器:改 catch 异常导出(exportFailureReasonOnly)+ 补上传文件校验。

验证:mvn install -DskipTests 通过;行政区划回归 25/25
(tests/fixtures/region/),Redis 断言覆盖:成功路径缓存被清、
失败路径缓存键原样保留、基线行不被失败批次污染。
2026-09-25 08:20:06 +08:00
..
2026-07-10 22:08:46 +08:00
2026-08-18 15:18:15 +08:00
2026-09-20 16:36:31 +08:00
2026-08-04 02:49:59 +08:00