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

174 lines
6.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 重复架构问题清单
> 扫描时间2026-04-05
> 扫描范围:`/root/.openclaw/workspace/erp-java-backend/services/` 下 30 个微服务
> 最后更新2026-04-05修复已完成
---
## ✅ 检查任务1重复工具类
**结论:未发现大规模重复工具类**
- 未发现跨服务重复的 `DateUtils`、`StringUtils`、`JsonUtils` 等通用工具类
- 各服务有少量服务级工具类(如 `CronUtils`、`CsvUtils`、`ExcelUtils`),属于正常范围,无需提取
---
## ✅ 检查任务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业务相关无需提取
- `StockWarningDTO`、`SettlementDTO`、`PurchaseOrderDTO` 等属于业务DTO不可跨服务提取
---
## ✅ 检查任务3重复配置类已修复
### 3.1 OpenApiConfig — 27个副本 ✅ 已修复
**修复前**27个服务各维护一份几乎完全相同的 `OpenApiConfig`
**修复后**
- 提取到 `common/common-config` 模块的 `com.erp.common.config.OpenApiConfig`
- 所有服务删除本地 `OpenApiConfig.java`
- 通过 `application.yml``erp.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.ApiResponse``com.erp.common.core.model.ApiResponse`
- 所有服务中的 `com.erp.<service>.dto.PageResponse``com.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 需明确职责边界 |