Compare commits
6 Commits
add1cd95be
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
| 2e71f68428 | |||
| 388edd1ada | |||
| 6057a71315 | |||
| 12de1b61e0 | |||
| 95700bfb8c | |||
| 013729003a |
@@ -69,6 +69,13 @@ namespace ExportModule.ViewModels
|
|||||||
get => _totalCount;
|
get => _totalCount;
|
||||||
set => SetProperty(ref _totalCount, value);
|
set => SetProperty(ref _totalCount, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private TestReportModel? _selectedTestReport;
|
||||||
|
public TestReportModel? SelectedTestReport
|
||||||
|
{
|
||||||
|
get => _selectedTestReport;
|
||||||
|
set => SetProperty(ref _selectedTestReport, value);
|
||||||
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region 命令
|
#region 命令
|
||||||
@@ -144,24 +151,21 @@ namespace ExportModule.ViewModels
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 导出 Excel(根据当前筛选条件导出完整实体数据)
|
/// 导出 Excel:根据用户在表格中选中的 TestReportModel.TestRoundId 查询并导出完整步骤数据
|
||||||
/// </summary>
|
/// </summary>
|
||||||
private async Task OnExport()
|
private async Task OnExport()
|
||||||
{
|
{
|
||||||
DateTime? queryEnd = EndTime;
|
if (SelectedTestReport == null)
|
||||||
if (queryEnd.HasValue)
|
|
||||||
{
|
{
|
||||||
queryEnd = queryEnd.Value.Date.AddDays(1).AddSeconds(-1);
|
ShowErrorMessageBox("请先在列表中选择一条测试记录。", () => { });
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
string? scope = SelectedScope == "全部" ? null : SelectedScope;
|
|
||||||
|
|
||||||
// 查询全量实体数据
|
|
||||||
StatusMessage = "正在查询导出数据...";
|
StatusMessage = "正在查询导出数据...";
|
||||||
var entityResult = await _testReportService.GetEntitiesByFilter(StartTime, queryEnd, scope);
|
var entityResult = await _testReportService.GetByTestRoundIdAsync(SelectedTestReport.TestRoundId);
|
||||||
if (!entityResult.IsSuccess || entityResult.Data == null || entityResult.Data.Count == 0)
|
if (!entityResult.IsSuccess || entityResult.Data == null || entityResult.Data.Count == 0)
|
||||||
{
|
{
|
||||||
ShowErrorMessageBox("没有数据可导出,请先查询或调整筛选条件。", () => { });
|
ShowErrorMessageBox("未找到该测试记录的详细步骤数据。", () => { });
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -169,15 +173,15 @@ namespace ExportModule.ViewModels
|
|||||||
{
|
{
|
||||||
Filter = "Excel 工作簿 (*.xlsx)|*.xlsx|所有文件 (*.*)|*.*",
|
Filter = "Excel 工作簿 (*.xlsx)|*.xlsx|所有文件 (*.*)|*.*",
|
||||||
DefaultExt = ".xlsx",
|
DefaultExt = ".xlsx",
|
||||||
FileName = $"测试报告_{DateTime.Now:yyyyMMdd_HHmmss}.xlsx"
|
FileName = $"测试报告_{SelectedTestReport.Scope}_{SelectedTestReport.StartTime:yyyyMMdd_HHmmss}.xlsx"
|
||||||
};
|
};
|
||||||
|
|
||||||
if (dialog.ShowDialog() != true) return;
|
if (dialog.ShowDialog() != true) return;
|
||||||
|
|
||||||
var entities = entityResult.Data;
|
var entities = entityResult.Data;
|
||||||
StatusMessage = $"正在导出 {entities.Count} 条记录...";
|
StatusMessage = $"正在导出 {entities.Count} 条步骤记录...";
|
||||||
await Task.Run(() => ExportToExcel(dialog.FileName, entities));
|
await Task.Run(() => ExportToExcel(dialog.FileName, entities));
|
||||||
ShowInfoMessageBox($"导出完成,共 {entities.Count} 条记录,已保存至:{dialog.FileName}", () => { });
|
ShowInfoMessageBox($"导出完成,共 {entities.Count} 条步骤记录,已保存至:{dialog.FileName}", () => { });
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|||||||
@@ -135,6 +135,7 @@
|
|||||||
Background="White"
|
Background="White"
|
||||||
AlternatingRowBackground="#F5F7FA"
|
AlternatingRowBackground="#F5F7FA"
|
||||||
SelectionMode="Single"
|
SelectionMode="Single"
|
||||||
|
SelectedItem="{Binding SelectedTestReport}"
|
||||||
Margin="8">
|
Margin="8">
|
||||||
<DataGrid.Columns>
|
<DataGrid.Columns>
|
||||||
<DataGridTextColumn Header="TestRoundId"
|
<DataGridTextColumn Header="TestRoundId"
|
||||||
|
|||||||
@@ -93,7 +93,20 @@ namespace TestingModule.ViewModels.Dialogs
|
|||||||
var index = Program.Parameters
|
var index = Program.Parameters
|
||||||
.Select((x, i) => new { x, i })
|
.Select((x, i) => new { x, i })
|
||||||
.FirstOrDefault(p => p.x.ID == _ScopedContext.SelectedParameter.ID)?.i;
|
.FirstOrDefault(p => p.x.ID == _ScopedContext.SelectedParameter.ID)?.i;
|
||||||
|
if (!_ScopedContext.SelectedParameter.IsEditable)
|
||||||
|
{
|
||||||
|
//公共变量只允许更改ParameterCategory为Input,Temp
|
||||||
|
if (Program.Parameters[index.Value].Value != Parameter.Value
|
||||||
|
|| Program.Parameters[index.Value].UpperLimit != Parameter.UpperLimit
|
||||||
|
|| Program.Parameters[index.Value].LowerLimit != Parameter.LowerLimit
|
||||||
|
|| Program.Parameters[index.Value].Name != Parameter.Name
|
||||||
|
|| Parameter.Category == ParameterCategory.Output
|
||||||
|
|| Program.Parameters[index.Value].Type != Parameter.Type)
|
||||||
|
{
|
||||||
|
RequestClose.Invoke(ButtonResult.Yes);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
if (index.HasValue)
|
if (index.HasValue)
|
||||||
{
|
{
|
||||||
Program.Parameters[index.Value] = Parameter;
|
Program.Parameters[index.Value] = Parameter;
|
||||||
|
|||||||
@@ -190,13 +190,13 @@ namespace TestingModule.ViewModels
|
|||||||
|
|
||||||
private void ParameterDelete()
|
private void ParameterDelete()
|
||||||
{
|
{
|
||||||
if (!_globalInfo.IsAdmin) return;
|
if (!_globalInfo.IsAdmin || !SelectedParameter.IsEditable) return;
|
||||||
Program.Parameters.Remove(SelectedParameter);
|
Program.Parameters.Remove(SelectedParameter);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void ParameterEdit()
|
private void ParameterEdit()
|
||||||
{
|
{
|
||||||
if (!_globalInfo.IsAdmin||!SelectedParameter.IsEditable) return;
|
if (!_globalInfo.IsAdmin) return;
|
||||||
var param = new DialogParameters
|
var param = new DialogParameters
|
||||||
{
|
{
|
||||||
{ "Mode",SelectedParameter==null?"ADD":"Edit" },
|
{ "Mode",SelectedParameter==null?"ADD":"Edit" },
|
||||||
@@ -207,10 +207,11 @@ namespace TestingModule.ViewModels
|
|||||||
if (r.Result == ButtonResult.OK)
|
if (r.Result == ButtonResult.OK)
|
||||||
{
|
{
|
||||||
_eventAggregator.GetEvent<ParamsChangedEvent>().Publish();
|
_eventAggregator.GetEvent<ParamsChangedEvent>().Publish();
|
||||||
|
ShowInfoMessageBox("保存成功", () => { });
|
||||||
}
|
}
|
||||||
else
|
else if (r.Result == ButtonResult.Yes)
|
||||||
{
|
{
|
||||||
|
ShowErrorMessageBox("公共变量只能设置变量类型(Input,Temp)", ()=>{ });
|
||||||
}
|
}
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -44,7 +44,7 @@ namespace UIShare.ViewModelBase
|
|||||||
var dialogParams = new DialogParameters();
|
var dialogParams = new DialogParameters();
|
||||||
dialogParams.Add("Title", "错误");
|
dialogParams.Add("Title", "错误");
|
||||||
dialogParams.Add("Message", Message);
|
dialogParams.Add("Message", Message);
|
||||||
dialogParams.Add("Icon", "info");
|
dialogParams.Add("Icon", "error");
|
||||||
dialogParams.Add("ShowOk", true);
|
dialogParams.Add("ShowOk", true);
|
||||||
_dialogService.ShowDialog("MessageBox", dialogParams, result =>
|
_dialogService.ShowDialog("MessageBox", dialogParams, result =>
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ namespace ZLGUSBCANFD
|
|||||||
// 每个通道分配独立的 DBC 引擎句柄与锁,彻底解决台架间DBC冲突与锁竞争
|
// 每个通道分配独立的 DBC 引擎句柄与锁,彻底解决台架间DBC冲突与锁竞争
|
||||||
private readonly uint[] _dbcHandles;
|
private readonly uint[] _dbcHandles;
|
||||||
private readonly bool[] _isDbcLoadedArray;
|
private readonly bool[] _isDbcLoadedArray;
|
||||||
private readonly object[] _channelLocks; // 通道级细粒度锁
|
private readonly object[] _channelLocks; // 通道级细粒度锁
|
||||||
|
|
||||||
// 异步高性能接收线程控制
|
// 异步高性能接收线程控制
|
||||||
private volatile bool _isRunning = false;
|
private volatile bool _isRunning = false;
|
||||||
@@ -619,7 +619,7 @@ namespace ZLGUSBCANFD
|
|||||||
/// <param name="物理值">要写入的实际物理数值</param>
|
/// <param name="物理值">要写入的实际物理数值</param>
|
||||||
/// <param name="循环发送间隔毫秒">0 = 单次发送;>0 = 周期循环发送(单位毫秒)</param>
|
/// <param name="循环发送间隔毫秒">0 = 单次发送;>0 = 周期循环发送(单位毫秒)</param>
|
||||||
/// <returns>操作是否成功</returns>
|
/// <returns>操作是否成功</returns>
|
||||||
public virtual bool 设置报文(uint 通道号, string 帧IDStr, string 信号名称, double 物理值, int 循环发送间隔毫秒 = 0, bool 直接发送=false)
|
public virtual bool 设置报文(uint 通道号, string 帧IDStr, string 信号名称, double 物理值, int 循环发送间隔毫秒 = 0, bool 直接发送 = false)
|
||||||
{
|
{
|
||||||
if (!TryParseFrameId(帧IDStr, out uint 帧ID))
|
if (!TryParseFrameId(帧IDStr, out uint 帧ID))
|
||||||
{
|
{
|
||||||
@@ -877,7 +877,7 @@ namespace ZLGUSBCANFD
|
|||||||
}
|
}
|
||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
|
|
||||||
Marshal.FreeHGlobal(ptrDbcMsg);
|
Marshal.FreeHGlobal(ptrDbcMsg);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user