erp-java/docs/重复架构问题清单.md

6.7 KiB
Raw Blame History

重复架构问题清单

扫描时间2026-04-05 扫描范围:/root/.openclaw/workspace/erp-java-backend/services/ 下 30 个微服务 最后更新2026-04-05修复已完成


检查任务1重复工具类

结论:未发现大规模重复工具类

  • 未发现跨服务重复的 DateUtilsStringUtilsJsonUtils 等通用工具类
  • 各服务有少量服务级工具类(如 CronUtilsCsvUtilsExcelUtils),属于正常范围,无需提取

检查任务2重复DTO已修复

2.1 ApiResponse — 13个副本 已修复

修复前13个服务各维护一份 ApiResponse

修复后

  • 所有服务统一使用 com.erp.common.core.model.ApiResponse(来自 common-core 模块)
  • 所有本地 ApiResponse.java 文件已删除
  • 受影响服务aftersale-service, ai-service, approval-flow-service, inventory-service, logistics-service, order-service, platform-sync-service, print-service, purchase-service, reconciliation-service, supplier-service, warehouse-service, waybill-service

2.2 PageResponse — 11个副本 已修复

修复前11个服务各维护一份 PageResponse

修复后

  • 所有服务统一使用 com.erp.common.core.model.PageResponse(来自 common-core 模块)
  • 所有本地 PageResponse.java 文件已删除
  • 受影响服务:同上(去掉了 platform-sync-service 和 waybill-service

2.3 各服务特有DTO业务相关无需提取

  • StockWarningDTOSettlementDTOPurchaseOrderDTO 等属于业务DTO不可跨服务提取

检查任务3重复配置类已修复

3.1 OpenApiConfig — 27个副本 已修复

修复前27个服务各维护一份几乎完全相同的 OpenApiConfig

修复后

  • 提取到 common/common-config 模块的 com.erp.common.config.OpenApiConfig
  • 所有服务删除本地 OpenApiConfig.java
  • 通过 application.ymlerp.openapi.* 配置项动态设置服务名称和URL
  • 所有服务 pom.xml 添加 common-config 依赖

3.2 JacksonConfig — 3个副本 已修复

修复前finance-service, approval-flow-service, purchase-service 各有一份相同实现

修复后

  • 提取到 common/common-config 模块的 com.erp.common.config.JacksonConfig
  • 所有服务删除本地 JacksonConfig.java

3.3 RedisConfig — 3个副本 已统一

修复前

服务 实现
logistics-service Jackson2JsonRedisSerializer
scheduled-task-service GenericJackson2JsonRedisSerializer
system-tool-service StringRedisSerializer

修复后

  • 提取到 common/common-config 模块的 com.erp.common.config.RedisConfig
  • 提供统一的 RedisTemplate<String, Object> (Jackson2Json) 和 StringRedisTemplate
  • 各种序列化方案均可在 common-config 中找到,避免各服务自行实现混乱

3.4 MyBatisPlusConfig / MyBatisConfig — 保留

各服务的 MyBatisPlusConfig 包含服务特定的配置(如分页大小),保留在各自服务是合理的。


🔴 检查任务4跨服务共享数据库实体待治理

以下实体存在跨服务共享同一张表但各自维护独立实体的问题,建议作为下一轮架构优化任务处理

4.1 Stock — 4个实体3种表名

服务 表名 建议操作
inventory-service stocks 保留 inventory-service 为 Stock 主服务
warehouse-service stock 改用 Feign 调用 inventory-service
dashboard-service stocks 改用 Feign 调用 inventory-service
tenant-service stocks 多租户版需单独讨论

4.2 Warehouse — 3个实体2种表名

服务 表名 建议操作
inventory-service warehouses 保留 inventory-service 为精简版主服务
warehouse-service warehouse 完整版主服务
dashboard-service warehouses 改用 Feign 调用 warehouse-service

4.3 Order — 2个实体同表异构

服务 表名 建议操作
order-service orders 主服务,保留完整实体
dashboard-service orders 改用 Feign 调用 order-service

4.4 OrderItem — 2个实体同表异构

服务 表名 建议操作
order-service order_items 主服务
product-service order_items 删除本地实体,通过 Feign 调用 order-service

4.5 Supplier — 4个实体2种表名

服务 表名 建议操作
supplier-service suppliers 主服务,保留完整实体
product-service suppliers 删除本地实体,通过 Feign 调用 supplier-service
purchase-service supplier 删除本地实体,通过 Feign 调用 supplier-service
tenant-service suppliers 多租户版需单独讨论

4.6 ErpSku — 2个实体2种表名

服务 表名 建议操作
product-service erp_skus 主服务
sku-match-service erp_sku 删除本地实体,通过 Feign 调用 product-service

📋 本轮修复汇总

新增模块

模块 路径 内容
common-config common/common-config/ OpenApiConfig、JacksonConfig、RedisConfig

修改的服务23个

已添加 common-config 依赖: aftersale-service, ai-service, approval-flow-service, inventory-service, logistics-service, order-service, platform-sync-service, print-service, purchase-service, reconciliation-service, supplier-service, warehouse-service, waybill-service, scheduled-task-service, system-tool-service, dashboard-service, tenant-service, finance-service

已删除的重复文件:

  • 27个 OpenApiConfig.java
  • 3个 JacksonConfig.java
  • 3个 RedisConfig.java
  • 13个 ApiResponse.java
  • 11个 PageResponse.java

已更新的 import 语句:

  • 所有服务中的 com.erp.<service>.dto.ApiResponsecom.erp.common.core.model.ApiResponse
  • 所有服务中的 com.erp.<service>.dto.PageResponsecom.erp.common.core.model.PageResponse

📋 待处理P2级 - 下一轮架构优化)

优先级 问题 说明
P2-高 Stock 跨服务 inventory/warehouse/dashboard 需明确主服务,改用 Feign
P2-高 Order/OrderItem 跨服务 dashboard/product 需改用 Feign 调用 order-service
P2-高 Supplier 跨服务 product/purchase 需改用 Feign 调用 supplier-service
P2-中 ErpSku 跨服务 sku-match-service 需改用 Feign 调用 product-service
P2-中 Warehouse 跨服务 inventory/dashboard 需明确职责边界