新增钻带刀序多种排序功能及相关文档

本次提交主要内容如下:

- 新增“排序功能”菜单,支持重排刀序、生成/应用排序种子、按参考钻带重排等多种排序方式,提升刀具顺序管理灵活性。
- 支持用户选择参考钻带文件或排序种子文件,自动重排当前刀具顺序,并提供详细的匹配校验、警告提示和重排前后对比确认。
- 新增生成通用排序种子文件(General_sort.txt)功能,便于批量产品排序。
- 优化界面布局,提升信息展示美观性和空间利用率。
- 增加异常处理和详细注释,提升健壮性和可维护性。
- 新增多个文档,详细说明“使用指定钻带的刀序”功能的实现、使用方法、演示流程及开发过程中的问题修复,便于开发和用户理解。
- 新增两个排序种子文件示例(General_sort.txt、s40024079g0-a2-cs-jp-sort.txt),用于刀具顺序自动重排。
- 其他无实际代码变更的文件未影响功能。

本次改动极大提升了钻带刀具顺序管理的自动化、灵活性和用户体验,适用于多样化的生产场景。
This commit is contained in:
2025-12-28 13:16:41 +08:00
parent 0eab0f42ee
commit 837cf6fb12
12 changed files with 1875 additions and 10264 deletions

View File

@@ -0,0 +1,134 @@
# 重复确认窗口问题修复说明
## 问题描述
`ReorderToolsByReferenceDrillTape`方法中,用户需要确认两次刀序重排操作:
1. **第一次确认**在第1839-1842行显示重排前后对比的确认窗口
2. **第二次确认**在第1858行调用`ReorderAndRenumberTools()`方法时又弹出了确认窗口
这导致用户体验不佳,需要重复确认同一个操作。
## 问题分析
### 根本原因
```csharp
// 在 ReorderToolsByReferenceDrillTape() 方法中
// 第一次确认:显示重排前后对比
var confirmationWindow = new ToolReorderConfirmationWindow(originalTools, reorderedTools);
confirmationWindow.ShowDialog();
// 用户确认后,调用 ReorderAndRenumberTools()
string reorderedDrillTape = ReorderAndRenumberTools(); // ❌ 这里又会弹出确认窗口
// 在 ReorderAndRenumberTools() 方法中
// 第二次确认:内部又创建了确认窗口
var confirmationWindow = new ToolReorderConfirmationWindow(originalTools, reorderedTools);
confirmationWindow.ShowDialog();
```
### 影响范围
- **用户体验**:需要重复确认,操作繁琐
- **逻辑混乱**:两次确认显示的内容基本相同
- **效率降低**:增加了不必要的操作步骤
## 解决方案
### 1. 修改方法签名
`ReorderAndRenumberTools()`方法添加`skipConfirmation`参数:
```csharp
// 修改前
public string ReorderAndRenumberTools(bool isApply = false)
// 修改后
public string ReorderAndRenumberTools(bool isApply = false, bool skipConfirmation = false)
```
### 2. 条件确认逻辑
`ReorderAndRenumberTools()`方法中添加条件判断:
```csharp
// 修改前:总是显示确认窗口
var confirmationWindow = new ToolReorderConfirmationWindow(originalTools, reorderedTools);
confirmationWindow.Owner = System.Windows.Application.Current.MainWindow;
confirmationWindow.ShowDialog();
if (!confirmationWindow.IsConfirmed)
throw new OperationCanceledException("取消刀序重排操作");
// 修改后:根据参数决定是否显示确认窗口
if (!skipConfirmation)
{
var confirmationWindow = new ToolReorderConfirmationWindow(originalTools, reorderedTools);
confirmationWindow.Owner = System.Windows.Application.Current.MainWindow;
confirmationWindow.ShowDialog();
if (!confirmationWindow.IsConfirmed)
throw new OperationCanceledException("取消刀序重排操作");
}
```
### 3. 调用时传入参数
`ReorderToolsByReferenceDrillTape()`方法中传入`skipConfirmation: true`
```csharp
// 修改前
string reorderedDrillTape = ReorderAndRenumberTools();
// 修改后
string reorderedDrillTape = ReorderAndRenumberTools(skipConfirmation: true);
```
## 修复效果
### 用户体验改进
**单次确认**:用户只需确认一次刀序重排操作
**逻辑清晰**:确认窗口显示重排前后对比,信息完整
**操作流畅**:减少了不必要的重复操作
### 功能保持
**向后兼容**:其他调用`ReorderAndRenumberTools()`的地方不受影响
**灵活性**:可以根据需要选择是否跳过确认
**代码复用**:保持了原有方法的通用性
## 代码变更总结
### 修改的文件
- **MainWindowViewModel.cs**:修改了`ReorderAndRenumberTools()`方法和调用处
### 修改的行数
- **方法签名**1行添加参数
- **确认逻辑**6行添加条件判断
- **方法调用**1行传入参数
- **总计**8行代码修改
### 测试验证
- ✅ 编译成功,无语法错误
- ✅ 逻辑正确,避免了重复确认
- ✅ 功能完整,保持了原有特性
## 设计原则
### 1. 单一职责
- 确认窗口只负责显示重排对比
- 重排逻辑只负责执行重排操作
- 参数控制是否显示确认窗口
### 2. 向后兼容
- 默认行为保持不变(`skipConfirmation = false`
- 现有调用方式不受影响
- 新功能通过可选参数提供
### 3. 用户体验优先
- 减少重复操作
- 保持信息完整性
- 提供操作灵活性
## 总结
通过添加`skipConfirmation`参数和条件确认逻辑,我们成功解决了重复确认窗口的问题。这个修复:
1. **提升了用户体验**:从两次确认减少到一次确认
2. **保持了代码质量**:向后兼容,逻辑清晰
3. **增强了功能灵活性**:可以根据场景选择是否跳过确认
这个修复不仅解决了当前的问题,还为未来的功能扩展提供了更好的架构基础。