新增钻带刀序多种排序功能及相关文档
本次提交主要内容如下: - 新增“排序功能”菜单,支持重排刀序、生成/应用排序种子、按参考钻带重排等多种排序方式,提升刀具顺序管理灵活性。 - 支持用户选择参考钻带文件或排序种子文件,自动重排当前刀具顺序,并提供详细的匹配校验、警告提示和重排前后对比确认。 - 新增生成通用排序种子文件(General_sort.txt)功能,便于批量产品排序。 - 优化界面布局,提升信息展示美观性和空间利用率。 - 增加异常处理和详细注释,提升健壮性和可维护性。 - 新增多个文档,详细说明“使用指定钻带的刀序”功能的实现、使用方法、演示流程及开发过程中的问题修复,便于开发和用户理解。 - 新增两个排序种子文件示例(General_sort.txt、s40024079g0-a2-cs-jp-sort.txt),用于刀具顺序自动重排。 - 其他无实际代码变更的文件未影响功能。 本次改动极大提升了钻带刀具顺序管理的自动化、灵活性和用户体验,适用于多样化的生产场景。
This commit is contained in:
134
Docs/重复确认窗口问题修复说明.md
Normal file
134
Docs/重复确认窗口问题修复说明.md
Normal 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. **增强了功能灵活性**:可以根据场景选择是否跳过确认
|
||||
|
||||
这个修复不仅解决了当前的问题,还为未来的功能扩展提供了更好的架构基础。
|
||||
Reference in New Issue
Block a user