5.5 KiB
5.5 KiB
设计文档
概述
本设计重构业务流程,将订单从"生成工单"的起点改为"从工单生成"的终点。订单变为只读展示,仅用于客户结算。
架构
新的业务流程
样品 → 生成工单 → 筛选工单 → 生成订单(结算用)
数据流向
1. 样品管理 → 选择样品 → 生成工单
2. 工单管理 → 筛选工单 → 批量选择 → 生成订单
3. 订单管理 → 只读展示 → 查看工单来源
组件和接口
1. 订单页面改造(只读模式)
前端修改:
- 隐藏所有编辑按钮(新增、修改、删除、生成工单)
- 保留查看、导出、打印功能
- 添加"关联工单"列显示工单数量
- 订单详情页显示关联工单列表
后端修改:
- 保留查询接口
- 保留导出接口
- 添加查询关联工单接口
2. 工单页面增强
前端新增功能:
- 添加"生成订单"按钮(批量操作)
- 添加工单筛选条件
- 添加多选功能
- 添加订单生成对话框
后端新增接口:
POST /work_order/generate_order
{
"work_order_ids": [1, 2, 3],
"customer_id": 123,
"memo": "备注"
}
3. 样品生成工单调整
前端修改:
- 移除自动生成订单的逻辑
- 仅显示工单生成成功提示
后端修改:
- 移除生成订单的代码
- 仅创建工单
数据模型
订单表增加字段
ALTER TABLE test_order ADD COLUMN work_order_ids TEXT COMMENT '关联的工单ID列表(JSON数组)';
工单表增加字段
ALTER TABLE work_order ADD COLUMN order_id INTEGER COMMENT '关联的订单ID';
正确性属性
属性是指在系统所有有效执行中都应该成立的特征或行为——本质上是关于系统应该做什么的正式声明。属性作为人类可读规范和机器可验证正确性保证之间的桥梁。
属性 1: 订单只读性
对于任何 订单页面的编辑操作,系统都应该拒绝或隐藏该操作 验证: 需求 1.1, 1.2, 1.3, 1.4
属性 2: 工单订单关联性
对于任何 从工单生成的订单,订单中的work_order_ids应该包含所有选中的工单ID 验证: 需求 3.2, 3.5
属性 3: 工单唯一订单关联
对于任何 工单,其order_id字段最多只能关联一个订单 验证: 需求 3.5
属性 4: 样品工单独立性
对于任何 从样品生成的工单,不应该自动生成订单 验证: 需求 5.4, 5.5
错误处理
1. 重复生成订单
- 场景: 选中的工单已经关联了订单
- 处理: 显示警告,列出已关联订单的工单,询问是否继续
2. 不同客户的工单
- 场景: 选中的工单属于不同客户
- 处理: 显示错误提示,要求选择同一客户的工单
3. 空工单列表
- 场景: 用户未选择任何工单就点击生成订单
- 处理: 禁用按钮或显示提示
测试策略
单元测试
-
订单只读测试
- 验证编辑按钮被隐藏
- 验证编辑接口返回错误
-
工单生成订单测试
- 测试单个工单生成订单
- 测试多个工单批量生成订单
- 测试关联关系正确建立
集成测试
-
完整流程测试
- 样品 → 工单 → 订单的完整流程
- 验证数据关联正确
-
边界测试
- 已关联订单的工单再次生成
- 不同客户工单混合选择
UI设计
订单列表页面
┌─────────────────────────────────────────────────┐
│ 订单管理(只读) │
├─────────────────────────────────────────────────┤
│ [搜索] [重置] [导出] [打印] │
├─────────────────────────────────────────────────┤
│ 订单号 | 客户 | 工单数 | 金额 | 状态 | 操作 │
│ ORD001 | 客户A | 3个 | 1000 | 已完成 | [查看] │
└─────────────────────────────────────────────────┘
工单列表页面
┌─────────────────────────────────────────────────┐
│ 工单管理 │
├─────────────────────────────────────────────────┤
│ [搜索] [重置] [生成订单] │
├─────────────────────────────────────────────────┤
│ □ | 工单号 | 客户 | 样品 | 状态 | 订单 | 操作 │
│ ☑ | WO001 | 客户A | 样品1 | 完成 | - | [查看] │
│ ☑ | WO002 | 客户A | 样品2 | 完成 | - | [查看] │
└─────────────────────────────────────────────────┘
实施步骤
- 数据库迁移 - 添加新字段
- 订单页面改造 - 改为只读模式
- 工单页面增强 - 添加生成订单功能
- 样品生成工单调整 - 移除自动生成订单
- 测试验证 - 完整流程测试