|
|
@@ -1,3 +1,4 @@
|
|
|
+using NPOI.Util;
|
|
|
using SqlSugar;
|
|
|
using System;
|
|
|
using System.Collections.Generic;
|
|
|
@@ -24,10 +25,9 @@ namespace TeamAAS_VP.Data
|
|
|
public SystemDatabaseService(ISqlSugarClient db)
|
|
|
{
|
|
|
_db = db;
|
|
|
+ //GenerateTestDataAsync();
|
|
|
}
|
|
|
|
|
|
-
|
|
|
-
|
|
|
#region 用户
|
|
|
// User CRUD
|
|
|
|
|
|
@@ -590,6 +590,20 @@ namespace TeamAAS_VP.Data
|
|
|
return dict;
|
|
|
}
|
|
|
|
|
|
+ /// <summary>
|
|
|
+ /// 分页查询生产记录
|
|
|
+ /// </summary>
|
|
|
+ public async Task<(IEnumerable<ProductionRecord> Items, int TotalCount)> QueryProductionRecordsPagedAsync(DateTime start, DateTime end, int pageIndex, int pageSize, string productName = null, string category = null)
|
|
|
+ {
|
|
|
+ if (pageIndex < 1) pageIndex = 1;
|
|
|
+ if (pageSize < 1) pageSize = 20;
|
|
|
+ var q = _db.Queryable<ProductionRecord>().Where(r => r.Timestamp >= start && r.Timestamp < end);
|
|
|
+ if (!string.IsNullOrEmpty(productName)) q = q.Where(r => r.ProductName == productName);
|
|
|
+ if (!string.IsNullOrEmpty(category)) q = q.Where(r => r.Category == category);
|
|
|
+ var total = await q.CountAsync();
|
|
|
+ var list = await q.OrderBy(r => r.Timestamp, OrderByType.Desc).ToPageListAsync(pageIndex, pageSize);
|
|
|
+ return (list, total);
|
|
|
+ }
|
|
|
#endregion
|
|
|
|
|
|
#region 报警记录
|
|
|
@@ -719,6 +733,23 @@ namespace TeamAAS_VP.Data
|
|
|
return list;
|
|
|
}
|
|
|
|
|
|
+ /// <summary>
|
|
|
+ /// 分页查询螺丝供料器批次记录
|
|
|
+ /// </summary>
|
|
|
+ public async Task<(IEnumerable<ScrewFeederBatchRecord> Items, int TotalCount)> QueryScrewFeederBatchRecordsPagedAsync(DateTime? start = null, DateTime? end = null, string batchNumber = null, int? feederNumber = null, int pageIndex = 1, int pageSize = 20)
|
|
|
+ {
|
|
|
+ if (pageIndex < 1) pageIndex = 1;
|
|
|
+ if (pageSize < 1) pageSize = 20;
|
|
|
+ var q = _db.Queryable<ScrewFeederBatchRecord>();
|
|
|
+ if (start.HasValue) q = q.Where(r => r.ChangeTime >= start.Value);
|
|
|
+ if (end.HasValue) q = q.Where(r => r.ChangeTime <= end.Value);
|
|
|
+ if (!string.IsNullOrEmpty(batchNumber)) q = q.Where(r => r.BatchNumber == batchNumber);
|
|
|
+ if (feederNumber.HasValue) q = q.Where(r => r.FeederNumber == feederNumber.Value);
|
|
|
+ var total = await q.CountAsync();
|
|
|
+ var list = await q.OrderBy(r => r.ChangeTime, OrderByType.Desc).ToPageListAsync(pageIndex, pageSize);
|
|
|
+ return (list, total);
|
|
|
+ }
|
|
|
+
|
|
|
/// <summary>
|
|
|
/// 获取指定供料器编号的最新一条批次更换记录
|
|
|
/// </summary>
|
|
|
@@ -770,6 +801,24 @@ namespace TeamAAS_VP.Data
|
|
|
var list = await q.OrderBy(r => r.CaptureTime, OrderByType.Desc).ToListAsync();
|
|
|
return list;
|
|
|
}
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 分页查询拍照记录
|
|
|
+ /// </summary>
|
|
|
+ public async Task<(IEnumerable<PhotoCaptureRecord> Items, int TotalCount)> QueryPhotoCapturesPagedAsync(string recipeName = null, string cameraName = null, string productSN = null, DateTime? start = null, DateTime? end = null, int pageIndex = 1, int pageSize = 20)
|
|
|
+ {
|
|
|
+ if (pageIndex < 1) pageIndex = 1;
|
|
|
+ if (pageSize < 1) pageSize = 20;
|
|
|
+ var q = _db.Queryable<PhotoCaptureRecord>();
|
|
|
+ if (!string.IsNullOrEmpty(recipeName)) q = q.Where(r => r.RecipeName == recipeName);
|
|
|
+ if (!string.IsNullOrEmpty(cameraName)) q = q.Where(r => r.CameraName == cameraName);
|
|
|
+ if (!string.IsNullOrEmpty(productSN)) q = q.Where(r => r.ProductSN == productSN);
|
|
|
+ if (start.HasValue) q = q.Where(r => r.CaptureTime >= start.Value);
|
|
|
+ if (end.HasValue) q = q.Where(r => r.CaptureTime <= end.Value);
|
|
|
+ var total = await q.CountAsync();
|
|
|
+ var list = await q.OrderBy(r => r.CaptureTime, OrderByType.Desc).ToPageListAsync(pageIndex, pageSize);
|
|
|
+ return (list, total);
|
|
|
+ }
|
|
|
#endregion
|
|
|
|
|
|
#region 披头更换记录
|
|
|
@@ -804,6 +853,22 @@ namespace TeamAAS_VP.Data
|
|
|
return list;
|
|
|
}
|
|
|
|
|
|
+ /// <summary>
|
|
|
+ /// 分页查询披头更换记录
|
|
|
+ /// </summary>
|
|
|
+ public async Task<(IEnumerable<HeadChangeRecord> Items, int TotalCount)> QueryHeadChangeRecordsPagedAsync(DateTime? start = null, DateTime? end = null, string headBatchNumber = null, int pageIndex = 1, int pageSize = 20)
|
|
|
+ {
|
|
|
+ if (pageIndex < 1) pageIndex = 1;
|
|
|
+ if (pageSize < 1) pageSize = 20;
|
|
|
+ var q = _db.Queryable<HeadChangeRecord>();
|
|
|
+ if (start.HasValue) q = q.Where(r => r.ChangeTime >= start.Value);
|
|
|
+ if (end.HasValue) q = q.Where(r => r.ChangeTime <= end.Value);
|
|
|
+ if (!string.IsNullOrEmpty(headBatchNumber)) q = q.Where(r => r.HeadBatchNumber == headBatchNumber);
|
|
|
+ var total = await q.CountAsync();
|
|
|
+ var list = await q.OrderBy(r => r.ChangeTime, OrderByType.Desc).ToPageListAsync(pageIndex, pageSize);
|
|
|
+ return (list, total);
|
|
|
+ }
|
|
|
+
|
|
|
/// <summary>
|
|
|
/// 获取最新的一条披头更换记录
|
|
|
/// </summary>
|
|
|
@@ -932,6 +997,97 @@ namespace TeamAAS_VP.Data
|
|
|
throw;
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 分页查询喷嘴更换记录
|
|
|
+ /// </summary>
|
|
|
+ public async Task<(IEnumerable<NozzleChangeRecord> Items, int TotalCount)> QueryNozzleChangeRecordsPagedAsync(DateTime? start = null, DateTime? end = null, string nozzleBatchNumber = null, int pageIndex = 1, int pageSize = 20)
|
|
|
+ {
|
|
|
+ if (pageIndex < 1) pageIndex = 1;
|
|
|
+ if (pageSize < 1) pageSize = 20;
|
|
|
+ var q = _db.Queryable<NozzleChangeRecord>();
|
|
|
+ if (start.HasValue) q = q.Where(r => r.ChangeTime >= start.Value);
|
|
|
+ if (end.HasValue) q = q.Where(r => r.ChangeTime <= end.Value);
|
|
|
+ if (!string.IsNullOrEmpty(nozzleBatchNumber)) q = q.Where(r => r.NozzleBatchNumber == nozzleBatchNumber);
|
|
|
+ var total = await q.CountAsync();
|
|
|
+ var list = await q.OrderBy(r => r.ChangeTime, OrderByType.Desc).ToPageListAsync(pageIndex, pageSize);
|
|
|
+ return (list, total);
|
|
|
+ }
|
|
|
+ #endregion
|
|
|
+
|
|
|
+
|
|
|
+ #region 生成测试数据
|
|
|
+
|
|
|
+ //定义一个方法来生成一些测试的数据,测试数据库写入和查询功能
|
|
|
+ public async Task GenerateTestDataAsync()
|
|
|
+ {
|
|
|
+ //生成一些喷嘴更换记录的测试数据
|
|
|
+ for (int i = 0; i < 10; i++)
|
|
|
+ {
|
|
|
+ var record = new NozzleChangeRecord
|
|
|
+ {
|
|
|
+ ChangeTime = DateTime.UtcNow.AddMinutes(-i * 10),
|
|
|
+ NozzleBatchNumber = $"Batch-{i}",
|
|
|
+ CurrentLockCount = i,
|
|
|
+ OperatorName = $"Operator-{i}"
|
|
|
+ };
|
|
|
+ await RecordNozzleChangeAsync(record);
|
|
|
+ }
|
|
|
+
|
|
|
+ //生成一些披头更换记录的测试数据
|
|
|
+ for (int i = 0; i < 10; i++)
|
|
|
+ {
|
|
|
+ var record = new HeadChangeRecord
|
|
|
+ {
|
|
|
+ ChangeTime = DateTime.UtcNow.AddMinutes(-i * 15),
|
|
|
+ HeadBatchNumber = $"HeadBatch-{i}",
|
|
|
+ CurrentLockCount = i,
|
|
|
+ OperatorName = $"HeadOperator-{i}"
|
|
|
+ };
|
|
|
+ await RecordHeadChangeAsync(record);
|
|
|
+ }
|
|
|
+
|
|
|
+ //生成一些螺丝供料器批次更换记录的测试数据
|
|
|
+ for (int i = 0; i < 10; i++)
|
|
|
+ {
|
|
|
+ var record = new ScrewFeederBatchRecord
|
|
|
+ {
|
|
|
+ ChangeTime = DateTime.UtcNow.AddMinutes(-i * 20),
|
|
|
+ BatchNumber = $"ScrewBatch-{i}",
|
|
|
+ FeederNumber = i + 1
|
|
|
+ };
|
|
|
+ await RecordScrewFeederBatchAsync(record);
|
|
|
+ }
|
|
|
+
|
|
|
+ //生成一些生产记录的测试数据
|
|
|
+ for (int i = 0; i < 50; i++)
|
|
|
+ {
|
|
|
+ var record = new ProductionRecord
|
|
|
+ {
|
|
|
+ Id = Guid.NewGuid(),
|
|
|
+ ProductName = "产品1",
|
|
|
+ Category = (i % 2 == 0) ? "OK" : "NG",
|
|
|
+ Quantity = 1,
|
|
|
+ Timestamp = DateTime.UtcNow.AddMinutes(-i * 5),
|
|
|
+ UserName = "TestUser",
|
|
|
+ Remark = $"TotalSeconds:1.10"
|
|
|
+ };
|
|
|
+ await RecordProductionAsync(record);
|
|
|
+ }
|
|
|
+
|
|
|
+ //生成一些锁付结果的测试数据
|
|
|
+ for (int i = 0; i < 200; i++)
|
|
|
+ {
|
|
|
+ var result = new LockResult(i % 4, $"PN-{i % 5}", 10.5f, 0.3f, (i % 3 != 0))
|
|
|
+ {
|
|
|
+ ProductName = "产品1",
|
|
|
+ Timestamp = DateTime.UtcNow.AddMinutes(-i * 3),
|
|
|
+ };
|
|
|
+ await RecordLockResultAsync(result);
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
#endregion
|
|
|
}
|
|
|
}
|