|
|
@@ -149,18 +149,19 @@ namespace TeamAAS_VP.ViewModels.Statistics
|
|
|
var end = EndDate.HasValue ? EndDate.Value.Date.AddDays(1) : DateTime.MaxValue;
|
|
|
|
|
|
string productNumberFilter = null;
|
|
|
+ string productName = null;
|
|
|
if (!string.IsNullOrWhiteSpace(ProductNumber)) productNumberFilter = ProductNumber.Trim();
|
|
|
// if SelectedProduct is selected, use its Name as productNumber? The user requested select product name then time range; productNumber precise search should still be supported
|
|
|
- if (SelectedProduct != null && string.IsNullOrEmpty(productNumberFilter))
|
|
|
+ if (SelectedProduct != null)
|
|
|
{
|
|
|
// assume SelectedProduct.Name correspond to ProductNumber field used when storing
|
|
|
- productNumberFilter = SelectedProduct.Name;
|
|
|
+ productName = SelectedProduct.Name;
|
|
|
}
|
|
|
|
|
|
int pageIndex = PageIndex < 1 ? 1 : PageIndex;
|
|
|
int pageSize = PageSize < 1 ? 20 : PageSize;
|
|
|
|
|
|
- var res = await _systemDatabaseService.QueryLockResultsAsync(start, end, pageIndex, pageSize, productNumberFilter, ScrewNumber);
|
|
|
+ var res = await _systemDatabaseService.QueryLockResultsAsync(start, end, pageIndex, pageSize, productNumberFilter, productName, ScrewNumber);
|
|
|
Results = new ObservableCollection<LockResult>(res.Items);
|
|
|
TotalCount = res.TotalCount;
|
|
|
}
|
|
|
@@ -185,14 +186,15 @@ namespace TeamAAS_VP.ViewModels.Statistics
|
|
|
var end = EndDate.HasValue ? EndDate.Value.Date.AddDays(1) : DateTime.MaxValue;
|
|
|
|
|
|
string productNumberFilter = null;
|
|
|
+ string productName = null;
|
|
|
if (!string.IsNullOrWhiteSpace(ProductNumber)) productNumberFilter = ProductNumber.Trim();
|
|
|
- if (SelectedProduct != null && string.IsNullOrEmpty(productNumberFilter))
|
|
|
+ if (SelectedProduct != null)
|
|
|
{
|
|
|
- productNumberFilter = SelectedProduct.Name;
|
|
|
+ productName = SelectedProduct.Name;
|
|
|
}
|
|
|
|
|
|
// fetch all matching records (not paged)
|
|
|
- var all = await _systemDatabaseService.QueryAllLockResultsAsync(start, end, productNumberFilter, ScrewNumber);
|
|
|
+ var all = await _systemDatabaseService.QueryAllLockResultsAsync(start, end, productNumberFilter, productName, ScrewNumber);
|
|
|
if (all == null || !all.Any())
|
|
|
{
|
|
|
MessageBox.Show(Lang.没有找到符合条件的记录, Lang.提示, MessageBoxButton.OK, MessageBoxImage.Information);
|
|
|
@@ -212,12 +214,13 @@ namespace TeamAAS_VP.ViewModels.Statistics
|
|
|
// write in streaming manner to support large sets
|
|
|
using (var sw = new StreamWriter(path, false, Encoding.UTF8))
|
|
|
{
|
|
|
- sw.WriteLine("Id,Number,ProductNumber,Timestamp,LockTurns,LockTorque,LockDuration,LockPassed,ResultDetails,ScrewdriverProgramNumber,Pressure,TargetTorqueUpperLimit,TargetTorqueLowerLimit,TargetTurnsUpperLimit,TargetTurnsLowerLimit,TargetLockSpeed,StartPositionX,StartPositionY,StartPositionZ,EndPositionZ,LockDescentSpeed,FeederNumber,NozzleNumber,OperatorName,ProductImagePath,LockCurveImagePath");
|
|
|
+ sw.WriteLine("Id,Number,ProductName,ProductNumber,Timestamp,LockTurns,LockTorque,LockDuration,LockPassed,ResultDetails,ScrewdriverProgramNumber,Pressure,TargetTorqueUpperLimit,TargetTorqueLowerLimit,TargetTurnsUpperLimit,TargetTurnsLowerLimit,TargetLockSpeed,StartPositionX,StartPositionY,StartPositionZ,EndPositionZ,LockDescentSpeed,FeederNumber,NozzleNumber,OperatorName,ProductImagePath,LockCurveImagePath");
|
|
|
foreach (var r in all)
|
|
|
{
|
|
|
var line = string.Join(",",
|
|
|
EscapeCsv(r.Id.ToString()),
|
|
|
EscapeCsv(r.Number.ToString()),
|
|
|
+ EscapeCsv(r.ProductName),
|
|
|
EscapeCsv(r.ProductNumber),
|
|
|
EscapeCsv(r.Timestamp.ToString("yyyy-MM-dd HH:mm:ss")),
|
|
|
EscapeCsv(r.LockTurns.ToString()),
|