diff --git a/src/CncRepository/Impl/AlertRepository.cs b/src/CncRepository/Impl/AlertRepository.cs
index 8011b1f..043bc6f 100644
--- a/src/CncRepository/Impl/AlertRepository.cs
+++ b/src/CncRepository/Impl/AlertRepository.cs
@@ -14,11 +14,14 @@ namespace CncRepository.Impl
{
public AlertRepository(string connectionString) : base(connectionString) { }
+ /// Alert SELECT列映射模板(snake_case列名 → PascalCase属性名)
+ private const string SelectColumns = @"id as Id, alert_type as AlertType, machine_id as MachineId, collect_address_id as CollectAddressId, title as Title, detail as Detail, is_resolved as IsResolved, resolved_at as ResolvedAt, created_at as CreatedAt";
+
public Alert GetById(long id)
{
using (var conn = CreateConnection())
{
- string sql = "SELECT * FROM cnc_alert WHERE Id = @Id";
+ string sql = $"SELECT {SelectColumns} FROM cnc_alert WHERE id = @Id";
return conn.QuerySingleOrDefault(sql, new { Id = id });
}
}
@@ -27,19 +30,19 @@ namespace CncRepository.Impl
{
using (var conn = CreateConnection())
{
- string sql = @"SELECT a.Id, a.CreatedAt, a.AlertType, a.Title, m.Name AS MachineName, a.Detail, a.IsResolved, a.ResolvedAt
- FROM cnc_alert a LEFT JOIN cnc_machine m ON a.MachineId = m.Id
+ string sql = @"SELECT a.id, a.created_at, a.alert_type, a.title, m.name AS MachineName, a.detail, a.is_resolved, a.resolved_at
+ FROM cnc_alert a LEFT JOIN cnc_machine m ON a.machine_id = m.id
WHERE 1=1";
- string countSql = @"SELECT COUNT(*) FROM cnc_alert a LEFT JOIN cnc_machine m ON a.MachineId = m.Id WHERE 1=1";
+ string countSql = @"SELECT COUNT(*) FROM cnc_alert a LEFT JOIN cnc_machine m ON a.machine_id = m.id WHERE 1=1";
var p = new DynamicParameters();
- if (!string.IsNullOrEmpty(query.AlertType)) { sql += " AND a.AlertType = @AlertType"; countSql += " AND a.AlertType = @AlertType"; p.Add("AlertType", query.AlertType); }
- if (query.IsResolved.HasValue) { sql += " AND a.IsResolved = @IsResolved"; countSql += " AND a.IsResolved = @IsResolved"; p.Add("IsResolved", query.IsResolved.Value); }
- if (query.MachineId.HasValue) { sql += " AND a.MachineId = @MachineId"; countSql += " AND a.MachineId = @MachineId"; p.Add("MachineId", query.MachineId.Value); }
- if (query.StartDate.HasValue) { sql += " AND a.CreatedAt >= @Start"; countSql += " AND a.CreatedAt >= @Start"; p.Add("Start", query.StartDate.Value); }
- if (query.EndDate.HasValue) { sql += " AND a.CreatedAt <= @End"; countSql += " AND a.CreatedAt <= @End"; p.Add("End", query.EndDate.Value); }
+ if (!string.IsNullOrEmpty(query.AlertType)) { sql += " AND a.alert_type = @AlertType"; countSql += " AND a.alert_type = @AlertType"; p.Add("AlertType", query.AlertType); }
+ if (query.IsResolved.HasValue) { sql += " AND a.is_resolved = @IsResolved"; countSql += " AND a.is_resolved = @IsResolved"; p.Add("IsResolved", query.IsResolved.Value); }
+ if (query.MachineId.HasValue) { sql += " AND a.machine_id = @MachineId"; countSql += " AND a.machine_id = @MachineId"; p.Add("MachineId", query.MachineId.Value); }
+ if (query.StartDate.HasValue) { sql += " AND a.created_at >= @Start"; countSql += " AND a.created_at >= @Start"; p.Add("Start", query.StartDate.Value); }
+ if (query.EndDate.HasValue) { sql += " AND a.created_at <= @End"; countSql += " AND a.created_at <= @End"; p.Add("End", query.EndDate.Value); }
int offset = (query.Page - 1) * query.PageSize;
- sql += " ORDER BY a.CreatedAt DESC LIMIT @Limit OFFSET @Offset";
+ sql += " ORDER BY a.created_at DESC LIMIT @Limit OFFSET @Offset";
p.Add("Limit", query.PageSize);
p.Add("Offset", offset);
@@ -53,7 +56,7 @@ namespace CncRepository.Impl
{
using (var conn = CreateConnection())
{
- string sql = @"INSERT INTO cnc_alert (AlertType, MachineId, CollectAddressId, Title, Detail, IsResolved, ResolvedAt, CreatedAt)
+ string sql = @"INSERT INTO cnc_alert (alert_type, machine_id, collect_address_id, title, detail, is_resolved, resolved_at, created_at)
VALUES (@AlertType, @MachineId, @CollectAddressId, @Title, @Detail, @IsResolved, @ResolvedAt, @CreatedAt); SELECT LAST_INSERT_ID();";
return conn.ExecuteScalar(sql, entity);
}
@@ -63,7 +66,7 @@ namespace CncRepository.Impl
{
using (var conn = CreateConnection())
{
- string sql = "UPDATE cnc_alert SET IsResolved = 1, ResolvedAt = NOW() WHERE Id = @Id";
+ string sql = "UPDATE cnc_alert SET is_resolved = 1, resolved_at = NOW() WHERE id = @Id";
int affected = conn.Execute(sql, new { Id = id });
return affected > 0;
}
@@ -73,7 +76,7 @@ namespace CncRepository.Impl
{
using (var conn = CreateConnection())
{
- string sql = "UPDATE cnc_alert SET IsResolved = 1, ResolvedAt = NOW() WHERE Id IN @Ids";
+ string sql = "UPDATE cnc_alert SET is_resolved = 1, resolved_at = NOW() WHERE id IN @Ids";
return conn.Execute(sql, new { Ids = ids });
}
}
diff --git a/src/CncRepository/Impl/BrandFieldMappingRepository.cs b/src/CncRepository/Impl/BrandFieldMappingRepository.cs
index e882185..4ba8606 100644
--- a/src/CncRepository/Impl/BrandFieldMappingRepository.cs
+++ b/src/CncRepository/Impl/BrandFieldMappingRepository.cs
@@ -19,8 +19,8 @@ namespace CncRepository.Impl
{
using (var conn = CreateConnection())
{
- var sql = @"SELECT Id as Id, BrandId as BrandId, StandardField as StandardField, FieldName as FieldName, MatchBy as MatchBy, DataType as DataType, IsRequired as IsRequired, CreatedAt as CreatedAt
- FROM cnc_brand_field_mapping WHERE BrandId = @BrandId ORDER BY Id";
+ var sql = @"SELECT id as Id, brand_id as BrandId, standard_field as StandardField, field_name as FieldName, match_by as MatchBy, data_type as DataType, is_required as IsRequired, created_at as CreatedAt
+ FROM cnc_brand_field_mapping WHERE brand_id = @BrandId ORDER BY id";
return conn.Query(sql, new { BrandId = brandId }).ToList();
}
}
@@ -29,8 +29,8 @@ namespace CncRepository.Impl
{
using (var conn = CreateConnection())
{
- var sql = @"SELECT Id as Id, BrandId as BrandId, StandardField as StandardField, FieldName as FieldName, MatchBy as MatchBy, DataType as DataType, IsRequired as IsRequired, CreatedAt as CreatedAt
- FROM cnc_brand_field_mapping WHERE Id = @Id";
+ var sql = @"SELECT id as Id, brand_id as BrandId, standard_field as StandardField, field_name as FieldName, match_by as MatchBy, data_type as DataType, is_required as IsRequired, created_at as CreatedAt
+ FROM cnc_brand_field_mapping WHERE id = @Id";
return conn.QuerySingleOrDefault(sql, new { Id = id });
}
}
@@ -39,7 +39,7 @@ namespace CncRepository.Impl
{
using (var conn = CreateConnection())
{
- var sql = @"INSERT INTO cnc_brand_field_mapping (BrandId, StandardField, FieldName, MatchBy, DataType, IsRequired, CreatedAt)
+ var sql = @"INSERT INTO cnc_brand_field_mapping (brand_id, standard_field, field_name, match_by, data_type, is_required, created_at)
VALUES (@BrandId, @StandardField, @FieldName, @MatchBy, @DataType, @IsRequired, @CreatedAt);
SELECT LAST_INSERT_ID();";
return conn.QuerySingle(sql, entity);
@@ -50,7 +50,7 @@ namespace CncRepository.Impl
{
using (var conn = CreateConnection())
{
- var sql = @"UPDATE cnc_brand_field_mapping SET BrandId = @BrandId, StandardField = @StandardField, FieldName = @FieldName, MatchBy = @MatchBy, DataType = @DataType, IsRequired = @IsRequired, CreatedAt = @CreatedAt WHERE Id = @Id";
+ var sql = @"UPDATE cnc_brand_field_mapping SET brand_id = @BrandId, standard_field = @StandardField, field_name = @FieldName, match_by = @MatchBy, data_type = @DataType, is_required = @IsRequired, created_at = @CreatedAt WHERE id = @Id";
return conn.Execute(sql, entity) > 0;
}
}
@@ -59,7 +59,7 @@ namespace CncRepository.Impl
{
using (var conn = CreateConnection())
{
- var sql = @"DELETE FROM cnc_brand_field_mapping WHERE BrandId = @BrandId";
+ var sql = @"DELETE FROM cnc_brand_field_mapping WHERE brand_id = @BrandId";
return conn.Execute(sql, new { BrandId = brandId }) > 0;
}
}
@@ -73,7 +73,7 @@ namespace CncRepository.Impl
try
{
int count = 0;
- var sql = @"INSERT INTO cnc_brand_field_mapping (BrandId, StandardField, FieldName, MatchBy, DataType, IsRequired, CreatedAt)
+ var sql = @"INSERT INTO cnc_brand_field_mapping (brand_id, standard_field, field_name, match_by, data_type, is_required, created_at)
VALUES (@BrandId, @StandardField, @FieldName, @MatchBy, @DataType, @IsRequired, @CreatedAt);
SELECT LAST_INSERT_ID();";
foreach (var m in mappings)
diff --git a/src/CncRepository/Impl/BrandRepository.cs b/src/CncRepository/Impl/BrandRepository.cs
index ab3cfb7..4514d73 100644
--- a/src/CncRepository/Impl/BrandRepository.cs
+++ b/src/CncRepository/Impl/BrandRepository.cs
@@ -18,8 +18,8 @@ namespace CncRepository.Impl
{
using (var conn = CreateConnection())
{
- var sql = @"SELECT Id as Id, BrandName as BrandName, DeviceField as DeviceField, TagsPath as TagsPath, IsEnabled as IsEnabled, CreatedAt as CreatedAt, UpdatedAt as UpdatedAt
- FROM cnc_brand WHERE Id = @Id";
+ var sql = @"SELECT id as Id, brand_name as BrandName, device_field as DeviceField, tags_path as TagsPath, is_enabled as IsEnabled, created_at as CreatedAt, updated_at as UpdatedAt
+ FROM cnc_brand WHERE id = @Id";
return conn.QuerySingleOrDefault(sql, new { Id = id });
}
}
@@ -28,7 +28,7 @@ namespace CncRepository.Impl
{
using (var conn = CreateConnection())
{
- var sql = @"SELECT Id as Id, BrandName as BrandName, DeviceField as DeviceField, TagsPath as TagsPath, IsEnabled as IsEnabled, CreatedAt as CreatedAt, UpdatedAt as UpdatedAt FROM cnc_brand ORDER BY Id";
+ var sql = @"SELECT id as Id, brand_name as BrandName, device_field as DeviceField, tags_path as TagsPath, is_enabled as IsEnabled, created_at as CreatedAt, updated_at as UpdatedAt FROM cnc_brand ORDER BY id";
return conn.Query(sql).ToList();
}
}
@@ -37,7 +37,7 @@ namespace CncRepository.Impl
{
using (var conn = CreateConnection())
{
- var sql = @"INSERT INTO cnc_brand (BrandName, DeviceField, TagsPath, IsEnabled, CreatedAt, UpdatedAt)
+ var sql = @"INSERT INTO cnc_brand (brand_name, device_field, tags_path, is_enabled, created_at, updated_at)
VALUES (@BrandName, @DeviceField, @TagsPath, @IsEnabled, @CreatedAt, @UpdatedAt);
SELECT LAST_INSERT_ID();";
return conn.QuerySingle(sql, entity);
@@ -48,7 +48,7 @@ namespace CncRepository.Impl
{
using (var conn = CreateConnection())
{
- var sql = @"UPDATE cnc_brand SET BrandName = @BrandName, DeviceField = @DeviceField, TagsPath = @TagsPath, IsEnabled = @IsEnabled, UpdatedAt = @UpdatedAt WHERE Id = @Id";
+ var sql = @"UPDATE cnc_brand SET brand_name = @BrandName, device_field = @DeviceField, tags_path = @TagsPath, is_enabled = @IsEnabled, updated_at = @UpdatedAt WHERE id = @Id";
return conn.Execute(sql, entity) > 0;
}
}
@@ -57,7 +57,7 @@ namespace CncRepository.Impl
{
using (var conn = CreateConnection())
{
- var sql = @"DELETE FROM cnc_brand WHERE Id = @Id";
+ var sql = @"DELETE FROM cnc_brand WHERE id = @Id";
return conn.Execute(sql, new { Id = id }) > 0;
}
}
@@ -66,7 +66,7 @@ namespace CncRepository.Impl
{
using (var conn = CreateConnection())
{
- var sql = @"UPDATE cnc_brand SET IsEnabled = CASE WHEN IsEnabled = 1 THEN 0 ELSE 1 END, UpdatedAt = NOW() WHERE Id = @Id";
+ var sql = @"UPDATE cnc_brand SET is_enabled = CASE WHEN is_enabled = 1 THEN 0 ELSE 1 END, updated_at = NOW() WHERE id = @Id";
return conn.Execute(sql, new { Id = id }) > 0;
}
}
@@ -75,7 +75,7 @@ namespace CncRepository.Impl
{
using (var conn = CreateConnection())
{
- var sql = @"SELECT COUNT(*) FROM cnc_brand_field_mapping WHERE BrandId = @BrandId";
+ var sql = @"SELECT COUNT(*) FROM cnc_brand_field_mapping WHERE brand_id = @BrandId";
return conn.ExecuteScalar(sql, new { BrandId = brandId });
}
}
@@ -84,7 +84,7 @@ namespace CncRepository.Impl
{
using (var conn = CreateConnection())
{
- var sql = @"SELECT COUNT(*) FROM cnc_collect_address WHERE BrandId = @BrandId";
+ var sql = @"SELECT COUNT(*) FROM cnc_collect_address WHERE brand_id = @BrandId";
return conn.ExecuteScalar(sql, new { BrandId = brandId });
}
}
diff --git a/src/CncRepository/Impl/CollectAddressRepository.cs b/src/CncRepository/Impl/CollectAddressRepository.cs
index 41159f7..f6d2ecb 100644
--- a/src/CncRepository/Impl/CollectAddressRepository.cs
+++ b/src/CncRepository/Impl/CollectAddressRepository.cs
@@ -16,11 +16,14 @@ namespace CncRepository.Impl
{
public CollectAddressRepository(string connectionString) : base(connectionString) { }
+ /// 采集地址SELECT列映射模板
+ private const string SelectColumns = @"id as Id, name as Name, url as Url, brand_id as BrandId, collect_interval as CollectInterval, is_enabled as IsEnabled, last_collect_time as LastCollectTime, last_collect_status as LastCollectStatus, fail_count as FailCount, created_at as CreatedAt, updated_at as UpdatedAt";
+
public CollectAddress GetById(int id)
{
using (var conn = CreateConnection())
{
- var sql = @"SELECT Id as Id, Name as Name, Url as Url, BrandId as BrandId, CollectInterval as CollectInterval, IsEnabled as IsEnabled, LastCollectTime as LastCollectTime, LastCollectStatus as LastCollectStatus, FailCount as FailCount, CreatedAt as CreatedAt, UpdatedAt as UpdatedAt FROM cnc_collect_address WHERE Id = @Id";
+ var sql = $"SELECT {SelectColumns} FROM cnc_collect_address WHERE id = @Id";
return conn.QuerySingleOrDefault(sql, new { Id = id });
}
}
@@ -33,29 +36,29 @@ namespace CncRepository.Impl
var parameters = new DynamicParameters();
if (!string.IsNullOrWhiteSpace(query.Keyword))
{
- where += " AND (ca.Name LIKE @Keyword OR ca.Url LIKE @Keyword)";
+ where += " AND (ca.name LIKE @Keyword OR ca.url LIKE @Keyword)";
parameters.Add("Keyword", $"%{query.Keyword}%");
}
if (query.BrandId.HasValue)
{
- where += " AND ca.BrandId = @BrandId";
+ where += " AND ca.brand_id = @BrandId";
parameters.Add("BrandId", query.BrandId.Value);
}
if (query.IsEnabled.HasValue)
{
- where += " AND ca.IsEnabled = @IsEnabled";
+ where += " AND ca.is_enabled = @IsEnabled";
parameters.Add("IsEnabled", query.IsEnabled.Value);
}
var limit = query.PageSize;
var offset = query.Offset;
- var sql = @"SELECT ca.Id as Id, ca.Name as Name, ca.Url as Url, ca.BrandId as BrandId, b.BrandName as BrandName, ca.CollectInterval as CollectInterval, ca.IsEnabled as IsEnabled, ca.LastCollectTime as LastCollectTime,
- (SELECT COUNT(*) FROM cnc_machine m WHERE m.CollectAddressId = ca.Id) as MachineCount
- FROM cnc_collect_address ca LEFT JOIN cnc_brand b ON ca.BrandId = b.Id" + where + @" ORDER BY ca.Id DESC LIMIT @Limit OFFSET @Offset";
+ var sql = @"SELECT ca.id as Id, ca.name as Name, ca.url as Url, ca.brand_id as BrandId, b.brand_name as BrandName, ca.collect_interval as CollectInterval, ca.is_enabled as IsEnabled, ca.last_collect_time as LastCollectTime,
+ (SELECT COUNT(*) FROM cnc_machine m WHERE m.collect_address_id = ca.id) as MachineCount
+ FROM cnc_collect_address ca LEFT JOIN cnc_brand b ON ca.brand_id = b.id" + where + @" ORDER BY ca.id DESC LIMIT @Limit OFFSET @Offset";
parameters.Add("Limit", limit);
parameters.Add("Offset", offset);
- var totalSql = @"SELECT COUNT(*) FROM cnc_collect_address ca LEFT JOIN cnc_brand b ON ca.BrandId = b.Id" + where;
+ var totalSql = @"SELECT COUNT(*) FROM cnc_collect_address ca LEFT JOIN cnc_brand b ON ca.brand_id = b.id" + where;
var total = conn.ExecuteScalar(totalSql, parameters);
var items = conn.Query(sql, parameters).ToList();
@@ -73,7 +76,7 @@ namespace CncRepository.Impl
{
using (var conn = CreateConnection())
{
- var sql = @"INSERT INTO cnc_collect_address (Name, Url, BrandId, CollectInterval, IsEnabled, CreatedAt, UpdatedAt)
+ var sql = @"INSERT INTO cnc_collect_address (name, url, brand_id, collect_interval, is_enabled, created_at, updated_at)
VALUES (@Name, @Url, @BrandId, @CollectInterval, @IsEnabled, @CreatedAt, @UpdatedAt);
SELECT LAST_INSERT_ID();";
return conn.QuerySingle(sql, entity);
@@ -84,7 +87,7 @@ namespace CncRepository.Impl
{
using (var conn = CreateConnection())
{
- var sql = @"UPDATE cnc_collect_address SET Name = @Name, Url = @Url, BrandId = @BrandId, CollectInterval = @CollectInterval, IsEnabled = @IsEnabled, UpdatedAt = @UpdatedAt WHERE Id = @Id";
+ var sql = @"UPDATE cnc_collect_address SET name = @Name, url = @Url, brand_id = @BrandId, collect_interval = @CollectInterval, is_enabled = @IsEnabled, updated_at = @UpdatedAt WHERE id = @Id";
return conn.Execute(sql, entity) > 0;
}
}
@@ -93,7 +96,7 @@ namespace CncRepository.Impl
{
using (var conn = CreateConnection())
{
- var sql = @"DELETE FROM cnc_collect_address WHERE Id = @Id";
+ var sql = @"DELETE FROM cnc_collect_address WHERE id = @Id";
return conn.Execute(sql, new { Id = id }) > 0;
}
}
@@ -102,7 +105,7 @@ namespace CncRepository.Impl
{
using (var conn = CreateConnection())
{
- var sql = @"UPDATE cnc_collect_address SET IsEnabled = CASE WHEN IsEnabled = 1 THEN 0 ELSE 1 END, UpdatedAt = NOW() WHERE Id = @Id";
+ var sql = @"UPDATE cnc_collect_address SET is_enabled = CASE WHEN is_enabled = 1 THEN 0 ELSE 1 END, updated_at = NOW() WHERE id = @Id";
return conn.Execute(sql, new { Id = id }) > 0;
}
}
@@ -111,7 +114,7 @@ namespace CncRepository.Impl
{
using (var conn = CreateConnection())
{
- var sql = @"SELECT Id as Id, Name as Name, Url as Url, BrandId as BrandId, CollectInterval as CollectInterval, IsEnabled as IsEnabled, LastCollectTime as LastCollectTime, LastCollectStatus as LastCollectStatus, FailCount as FailCount, CreatedAt as CreatedAt, UpdatedAt as UpdatedAt FROM cnc_collect_address WHERE IsEnabled = 1";
+ var sql = $"SELECT {SelectColumns} FROM cnc_collect_address WHERE is_enabled = 1";
return conn.Query(sql).ToList();
}
}
@@ -120,7 +123,7 @@ namespace CncRepository.Impl
{
using (var conn = CreateConnection())
{
- var sql = @"SELECT COUNT(*) FROM cnc_machine WHERE CollectAddressId = @CollectAddressId";
+ var sql = @"SELECT COUNT(*) FROM cnc_machine WHERE collect_address_id = @CollectAddressId";
return conn.ExecuteScalar(sql, new { CollectAddressId = collectAddressId });
}
}
diff --git a/src/CncRepository/Impl/DailyProductionRepository.cs b/src/CncRepository/Impl/DailyProductionRepository.cs
index 109c1aa..e1e4e68 100644
--- a/src/CncRepository/Impl/DailyProductionRepository.cs
+++ b/src/CncRepository/Impl/DailyProductionRepository.cs
@@ -5,8 +5,6 @@ using Dapper;
using CncModels.Entity;
using CncModels.Dto.Production;
using CncModels.Dto;
-using CncModels.Dto.Production;
-using CncRepository.Base;
using CncRepository.Base;
using CncRepository.Interface;
@@ -23,7 +21,7 @@ namespace CncRepository.Impl
{
using (var conn = CreateConnection())
{
- string sql = "SELECT * FROM cnc_daily_production WHERE Id = @Id";
+ string sql = "SELECT * FROM cnc_daily_production WHERE id = @Id";
return conn.QuerySingleOrDefault(sql, new { Id = id });
}
}
@@ -32,21 +30,21 @@ namespace CncRepository.Impl
{
using (var conn = CreateConnection())
{
- string baseSql = @"SELECT dp.Id, dp.MachineId, m.Name AS MachineName, dp.ProductionDate, dp.ProgramName, dp.TotalQuantity, dp.SegmentCount, dp.TotalRunTime, dp.TotalCuttingTime, dp.TotalCycleTime, dp.WorkerId AS WorkerId
+ string baseSql = @"SELECT dp.id, dp.machine_id, m.name AS MachineName, dp.production_date, dp.program_name, dp.total_quantity, dp.segment_count, dp.total_run_time, dp.total_cutting_time, dp.total_cycle_time, dp.worker_id AS WorkerId
FROM cnc_daily_production dp
- LEFT JOIN cnc_machine m ON dp.MachineId = m.Id
+ LEFT JOIN cnc_machine m ON dp.machine_id = m.id
WHERE 1=1";
- string countSql = @"SELECT COUNT(*) FROM cnc_daily_production dp LEFT JOIN cnc_machine m ON dp.MachineId = m.Id WHERE 1=1";
+ string countSql = @"SELECT COUNT(*) FROM cnc_daily_production dp LEFT JOIN cnc_machine m ON dp.machine_id = m.id WHERE 1=1";
var parameters = new DynamicParameters();
if (query?.Date.HasValue == true)
{
- baseSql += " AND dp.ProductionDate = @Date";
- countSql += " AND dp.ProductionDate = @Date";
+ baseSql += " AND dp.production_date = @Date";
+ countSql += " AND dp.production_date = @Date";
parameters.Add("Date", query.Date);
}
int offset = (query.Page - 1) * query.PageSize;
- string paging = " ORDER BY dp.ProductionDate DESC LIMIT @Limit OFFSET @Offset";
+ string paging = " ORDER BY dp.production_date DESC LIMIT @Limit OFFSET @Offset";
parameters.Add("Limit", query.PageSize);
parameters.Add("Offset", offset);
@@ -66,7 +64,7 @@ namespace CncRepository.Impl
{
using (var conn = CreateConnection())
{
- string sql = "SELECT * FROM cnc_daily_production WHERE MachineId = @MachineId AND ProductionDate = @Date";
+ string sql = "SELECT * FROM cnc_daily_production WHERE machine_id = @MachineId AND production_date = @Date";
return conn.Query(sql, new { MachineId = machineId, Date = date }).ToList();
}
}
@@ -75,7 +73,7 @@ namespace CncRepository.Impl
{
using (var conn = CreateConnection())
{
- string sql = @"SELECT dp.* FROM cnc_daily_production dp LEFT JOIN cnc_machine m ON dp.MachineId = m.Id WHERE dp.ProductionDate BETWEEN @Start AND @End ORDER BY dp.ProductionDate DESC";
+ string sql = @"SELECT dp.* FROM cnc_daily_production dp LEFT JOIN cnc_machine m ON dp.machine_id = m.id WHERE dp.production_date BETWEEN @Start AND @End ORDER BY dp.production_date DESC";
return conn.Query(sql, new { Start = startDate, End = endDate }).ToList();
}
}
@@ -84,10 +82,10 @@ namespace CncRepository.Impl
{
using (var conn = CreateConnection())
{
- string sql = @"SELECT SUM(dp.TotalQuantity) FROM cnc_daily_production dp LEFT JOIN cnc_machine m ON dp.MachineId = m.Id WHERE dp.ProductionDate BETWEEN @Start AND @End";
+ string sql = @"SELECT SUM(dp.total_quantity) FROM cnc_daily_production dp LEFT JOIN cnc_machine m ON dp.machine_id = m.id WHERE dp.production_date BETWEEN @Start AND @End";
if (workshopId.HasValue)
{
- sql += " AND m.WorkshopId = @WorkshopId";
+ sql += " AND m.workshop_id = @WorkshopId";
return conn.ExecuteScalar(sql, new { Start = startDate, End = endDate, WorkshopId = workshopId.Value });
}
return conn.ExecuteScalar(sql, new { Start = startDate, End = endDate });
@@ -98,7 +96,7 @@ namespace CncRepository.Impl
{
using (var conn = CreateConnection())
{
- string sql = @"SELECT SUM(TotalQuantity) FROM cnc_daily_production WHERE WorkerId = @WorkerId AND ProductionDate BETWEEN @Start AND @End";
+ string sql = @"SELECT SUM(total_quantity) FROM cnc_daily_production WHERE worker_id = @WorkerId AND production_date BETWEEN @Start AND @End";
var res = conn.ExecuteScalar(sql, new { WorkerId = workerId, Start = startDate, End = endDate });
return res ?? 0m;
}
@@ -108,12 +106,12 @@ namespace CncRepository.Impl
{
using (var conn = CreateConnection())
{
- string sql = @"SELECT m.Id AS Id, m.Id AS MachineId, m.Name AS MachineName, SUM(dp.TotalQuantity) AS TotalQuantity, NULL AS ProgramName, NULL AS ProductionDate, NULL AS SegmentCount, NULL AS TotalRunTime, NULL AS TotalCuttingTime, NULL AS TotalCycleTime
+ string sql = @"SELECT m.id AS Id, m.id AS MachineId, m.name AS MachineName, SUM(dp.total_quantity) AS TotalQuantity, NULL AS ProgramName, NULL AS ProductionDate, NULL AS SegmentCount, NULL AS TotalRunTime, NULL AS TotalCuttingTime, NULL AS TotalCycleTime
FROM cnc_daily_production dp
- JOIN cnc_machine m ON dp.MachineId = m.Id
- WHERE dp.ProductionDate BETWEEN @Start AND @End
- GROUP BY m.Id, m.Name
- ORDER BY SUM(dp.TotalQuantity) DESC LIMIT @Top";
+ JOIN cnc_machine m ON dp.machine_id = m.id
+ WHERE dp.production_date BETWEEN @Start AND @End
+ GROUP BY m.id, m.name
+ ORDER BY SUM(dp.total_quantity) DESC LIMIT @Top";
return conn.Query(sql, new { Start = startDate, End = endDate, Top = top }).ToList();
}
}
@@ -122,11 +120,11 @@ namespace CncRepository.Impl
{
using (var conn = CreateConnection())
{
- string sql = @"SELECT 0 AS Id, NULL AS MachineId, NULL AS MachineName, SUM(TotalQuantity) AS TotalQuantity, WorkerId AS WorkerId, NULL AS ProductionDate, NULL AS ProgramName, NULL AS SegmentCount, NULL AS TotalRunTime, NULL AS TotalCuttingTime, NULL AS TotalCycleTime
+ string sql = @"SELECT 0 AS Id, NULL AS MachineId, NULL AS MachineName, SUM(total_quantity) AS TotalQuantity, worker_id AS WorkerId, NULL AS ProductionDate, NULL AS ProgramName, NULL AS SegmentCount, NULL AS TotalRunTime, NULL AS TotalCuttingTime, NULL AS TotalCycleTime
FROM cnc_daily_production
- WHERE ProductionDate BETWEEN @Start AND @End AND WorkerId IS NOT NULL
- GROUP BY WorkerId
- ORDER BY SUM(TotalQuantity) DESC LIMIT @Top";
+ WHERE production_date BETWEEN @Start AND @End AND worker_id IS NOT NULL
+ GROUP BY worker_id
+ ORDER BY SUM(total_quantity) DESC LIMIT @Top";
return conn.Query(sql, new { Start = startDate, End = endDate, Top = top }).ToList();
}
}
diff --git a/src/CncRepository/Impl/Dashboard/DashboardRepository.cs b/src/CncRepository/Impl/Dashboard/DashboardRepository.cs
index 3ebe421..ec5733e 100644
--- a/src/CncRepository/Impl/Dashboard/DashboardRepository.cs
+++ b/src/CncRepository/Impl/Dashboard/DashboardRepository.cs
@@ -137,7 +137,7 @@ namespace CncRepository.Impl.Dashboard
{
using (var conn = CreateConnection())
{
- var sql = @"SELECT Id, Title AS Message, Severity, CreatedAt FROM cnc_alert ORDER BY CreatedAt DESC LIMIT @Count";
+ var sql = @"SELECT id, title AS Message, alert_type AS Severity, created_at FROM cnc_alert ORDER BY created_at DESC LIMIT @Count";
// 如果 cnc_alert 不存在 Title/Severity,后续可调整为 Message/Level 等字段
return conn.Query(sql, new { Count = count }).ToList();
}
diff --git a/src/CncRepository/Impl/Log/CollectRawRepository.cs b/src/CncRepository/Impl/Log/CollectRawRepository.cs
index 8f3da4e..8314ded 100644
--- a/src/CncRepository/Impl/Log/CollectRawRepository.cs
+++ b/src/CncRepository/Impl/Log/CollectRawRepository.cs
@@ -6,7 +6,6 @@ using Dapper;
using CncModels.Entity;
using CncModels.Dto;
using CncRepository.Base;
-using CncRepository.Base;
using CncRepository.Interface;
namespace CncRepository.Impl.Log
@@ -18,24 +17,14 @@ namespace CncRepository.Impl.Log
{
public CollectRawRepository(string connectionString) : base(connectionString) { }
+ private const string SelectColumns = @"id as Id, collect_address_id as CollectAddressId, request_time as RequestTime, response_time as ResponseTime, response_duration as ResponseDuration, is_success as IsSuccess, status_code as StatusCode, raw_json as RawJson, error_message as ErrorMessage, created_at as CreatedAt";
+
/// 通过 Id 获取原始记录
public CollectRaw GetById(long id)
{
using (var conn = CreateConnection())
{
- return conn.QueryFirstOrDefault(@"
- SELECT Id,
- CollectAddressId AS CollectAddressId,
- RequestTime AS RequestTime,
- ResponseTime AS ResponseTime,
- ResponseDuration AS ResponseDuration,
- IsSuccess AS IsSuccess,
- StatusCode AS StatusCode,
- RawJson AS RawJson,
- ErrorMessage AS ErrorMessage,
- CreatedAt AS CreatedAt
- FROM log_collect_raw
- WHERE Id = @Id", new { Id = id });
+ return conn.QueryFirstOrDefault($"SELECT {SelectColumns} FROM log_collect_raw WHERE id = @Id", new { Id = id });
}
}
@@ -45,23 +34,9 @@ namespace CncRepository.Impl.Log
using (var conn = CreateConnection())
{
int skip = Math.Max(0, (page - 1) * pageSize);
- var items = conn.Query(@"
- SELECT Id AS Id,
- CollectAddressId AS CollectAddressId,
- RequestTime AS RequestTime,
- ResponseTime AS ResponseTime,
- ResponseDuration AS ResponseDuration,
- IsSuccess AS IsSuccess,
- StatusCode AS StatusCode,
- RawJson AS RawJson,
- ErrorMessage AS ErrorMessage,
- CreatedAt AS CreatedAt
- FROM log_collect_raw
- WHERE CollectAddressId = @CollectAddressId
- ORDER BY CreatedAt DESC
- LIMIT @PageSize OFFSET @Skip", new { CollectAddressId = collectAddressId, PageSize = pageSize, Skip = skip }).AsList();
+ var items = conn.Query($"SELECT {SelectColumns} FROM log_collect_raw WHERE collect_address_id = @CollectAddressId ORDER BY created_at DESC LIMIT @PageSize OFFSET @Skip", new { CollectAddressId = collectAddressId, PageSize = pageSize, Skip = skip }).AsList();
- int total = conn.ExecuteScalar(@"SELECT COUNT(1) FROM log_collect_raw WHERE CollectAddressId = @CollectAddressId", new { CollectAddressId = collectAddressId });
+ int total = conn.ExecuteScalar(@"SELECT COUNT(1) FROM log_collect_raw WHERE collect_address_id = @CollectAddressId", new { CollectAddressId = collectAddressId });
return new PagedResult { Items = items.ToList(), Total = total, Page = page, PageSize = pageSize };
}
}
@@ -71,21 +46,7 @@ namespace CncRepository.Impl.Log
{
using (var conn = CreateConnection())
{
- return conn.QueryFirstOrDefault(@"
- SELECT Id AS Id,
- CollectAddressId AS CollectAddressId,
- RequestTime AS RequestTime,
- ResponseTime AS ResponseTime,
- ResponseDuration AS ResponseDuration,
- IsSuccess AS IsSuccess,
- StatusCode AS StatusCode,
- RawJson AS RawJson,
- ErrorMessage AS ErrorMessage,
- CreatedAt AS CreatedAt
- FROM log_collect_raw
- WHERE CollectAddressId = @CollectAddressId
- ORDER BY CreatedAt DESC
- LIMIT 1", new { CollectAddressId = collectAddressId });
+ return conn.QueryFirstOrDefault($"SELECT {SelectColumns} FROM log_collect_raw WHERE collect_address_id = @CollectAddressId ORDER BY created_at DESC LIMIT 1", new { CollectAddressId = collectAddressId });
}
}
@@ -96,39 +57,14 @@ namespace CncRepository.Impl.Log
{
var sql = @"
INSERT INTO log_collect_raw (
- CollectAddressId,
- RequestTime,
- ResponseTime,
- ResponseDuration,
- IsSuccess,
- StatusCode,
- RawJson,
- ErrorMessage,
- CreatedAt
+ collect_address_id, request_time, response_time, response_duration,
+ is_success, status_code, raw_json, error_message, created_at
) VALUES (
- @CollectAddressId,
- @RequestTime,
- @ResponseTime,
- @ResponseDuration,
- @IsSuccess,
- @StatusCode,
- @RawJson,
- @ErrorMessage,
- @CreatedAt
+ @CollectAddressId, @RequestTime, @ResponseTime, @ResponseDuration,
+ @IsSuccess, @StatusCode, @RawJson, @ErrorMessage, @CreatedAt
);
SELECT LAST_INSERT_ID();";
- return conn.ExecuteScalar(sql, new
- {
- CollectAddressId = entity.CollectAddressId,
- RequestTime = entity.RequestTime,
- ResponseTime = entity.ResponseTime,
- ResponseDuration = entity.ResponseDuration,
- IsSuccess = entity.IsSuccess,
- StatusCode = entity.StatusCode,
- RawJson = entity.RawJson,
- ErrorMessage = entity.ErrorMessage,
- CreatedAt = entity.CreatedAt
- });
+ return conn.ExecuteScalar(sql, entity);
}
}
@@ -137,7 +73,7 @@ namespace CncRepository.Impl.Log
{
using (var conn = CreateConnection())
{
- return conn.Execute(@"DELETE FROM log_collect_raw WHERE CreatedAt < @Date", new { Date = date });
+ return conn.Execute(@"DELETE FROM log_collect_raw WHERE created_at < @Date", new { Date = date });
}
}
}
diff --git a/src/CncRepository/Impl/Log/CollectorHeartbeatRepository.cs b/src/CncRepository/Impl/Log/CollectorHeartbeatRepository.cs
index 28e83a3..94f83df 100644
--- a/src/CncRepository/Impl/Log/CollectorHeartbeatRepository.cs
+++ b/src/CncRepository/Impl/Log/CollectorHeartbeatRepository.cs
@@ -14,6 +14,8 @@ namespace CncRepository.Impl.Log
{
public CollectorHeartbeatRepository(string connectionString) : base(connectionString) { }
+ private const string SelectColumns = @"id as Id, service_id as ServiceId, status as Status, collect_address_id as CollectAddressId, last_collect_time as LastCollectTime, success_count as SuccessCount, fail_count as FailCount, uptime_seconds as UptimeSeconds, detail as Detail, created_at as CreatedAt";
+
/// 写入心跳
public long Create(CollectorHeartbeat entity)
{
@@ -21,23 +23,12 @@ namespace CncRepository.Impl.Log
{
var sql = @"
INSERT INTO log_collector_heartbeat (
- ServiceId, Status, CollectAddressId, LastCollectTime, SuccessCount, FailCount, UptimeSeconds, Detail, CreatedAt
+ service_id, status, collect_address_id, last_collect_time, success_count, fail_count, uptime_seconds, detail, created_at
) VALUES (
@ServiceId, @Status, @CollectAddressId, @LastCollectTime, @SuccessCount, @FailCount, @UptimeSeconds, @Detail, @CreatedAt
);
SELECT LAST_INSERT_ID();";
- return conn.ExecuteScalar(sql, new
- {
- ServiceId = entity.ServiceId,
- Status = entity.Status,
- CollectAddressId = entity.CollectAddressId,
- LastCollectTime = entity.LastCollectTime,
- SuccessCount = entity.SuccessCount,
- FailCount = entity.FailCount,
- UptimeSeconds = entity.UptimeSeconds,
- Detail = entity.Detail,
- CreatedAt = entity.CreatedAt
- });
+ return conn.ExecuteScalar(sql, entity);
}
}
@@ -46,13 +37,7 @@ namespace CncRepository.Impl.Log
{
using (var conn = CreateConnection())
{
- return conn.QueryFirstOrDefault(@"
- SELECT Id, ServiceId AS ServiceId, Status AS Status, CollectAddressId AS CollectAddressId, LastCollectTime AS LastCollectTime,
- SuccessCount AS SuccessCount, FailCount AS FailCount, UptimeSeconds AS UptimeSeconds, Detail AS Detail, CreatedAt AS CreatedAt
- FROM log_collector_heartbeat
- WHERE ServiceId = @ServiceId
- ORDER BY CreatedAt DESC
- LIMIT 1", new { ServiceId = serviceId });
+ return conn.QueryFirstOrDefault($"SELECT {SelectColumns} FROM log_collector_heartbeat WHERE service_id = @ServiceId ORDER BY created_at DESC LIMIT 1", new { ServiceId = serviceId });
}
}
@@ -61,7 +46,7 @@ namespace CncRepository.Impl.Log
{
using (var conn = CreateConnection())
{
- return conn.Execute(@"DELETE FROM log_collector_heartbeat WHERE CreatedAt < @Date", new { Date = date });
+ return conn.Execute(@"DELETE FROM log_collector_heartbeat WHERE created_at < @Date", new { Date = date });
}
}
}
diff --git a/src/CncRepository/Impl/MachineDailyStatusRepository.cs b/src/CncRepository/Impl/MachineDailyStatusRepository.cs
index e1c2830..5e8b378 100644
--- a/src/CncRepository/Impl/MachineDailyStatusRepository.cs
+++ b/src/CncRepository/Impl/MachineDailyStatusRepository.cs
@@ -16,7 +16,7 @@ namespace CncRepository.Impl
{
using (var conn = CreateConnection())
{
- string sql = "SELECT * FROM cnc_machine_daily_status WHERE MachineId = @MachineId AND ProductionDate = @Date";
+ string sql = "SELECT * FROM cnc_machine_daily_status WHERE machine_id = @MachineId AND production_date = @Date";
return conn.QuerySingleOrDefault(sql, new { MachineId = machineId, Date = date });
}
}
@@ -25,9 +25,9 @@ namespace CncRepository.Impl
{
using (var conn = CreateConnection())
{
- string sql = @"INSERT INTO cnc_machine_daily_status (MachineId, ProductionDate, DataStatus, CreatedAt, UpdatedAt)
+ string sql = @"INSERT INTO cnc_machine_daily_status (machine_id, production_date, data_status, created_at, updated_at)
VALUES (@MachineId, @ProductionDate, @DataStatus, @CreatedAt, @UpdatedAt)
- ON DUPLICATE KEY UPDATE DataStatus = @DataStatus, UpdatedAt = @UpdatedAt";
+ ON DUPLICATE KEY UPDATE data_status = @DataStatus, updated_at = @UpdatedAt";
return conn.Execute(sql, entity);
}
}
@@ -36,7 +36,7 @@ namespace CncRepository.Impl
{
using (var conn = CreateConnection())
{
- string sql = "SELECT * FROM cnc_machine_daily_status WHERE ProductionDate = @Date";
+ string sql = "SELECT * FROM cnc_machine_daily_status WHERE production_date = @Date";
return conn.Query(sql, new { Date = date }).AsList();
}
}
@@ -45,7 +45,7 @@ namespace CncRepository.Impl
{
using (var conn = CreateConnection())
{
- string sql = "SELECT COUNT(*) FROM cnc_machine_daily_status WHERE ProductionDate = @Date AND DataStatus = @Status";
+ string sql = "SELECT COUNT(*) FROM cnc_machine_daily_status WHERE production_date = @Date AND data_status = @Status";
return conn.ExecuteScalar(sql, new { Date = date, Status = dataStatus });
}
}
diff --git a/src/CncRepository/Impl/MachineRepository.cs b/src/CncRepository/Impl/MachineRepository.cs
index ab86f42..d1add94 100644
--- a/src/CncRepository/Impl/MachineRepository.cs
+++ b/src/CncRepository/Impl/MachineRepository.cs
@@ -16,11 +16,14 @@ namespace CncRepository.Impl
{
public MachineRepository(string connectionString) : base(connectionString) { }
+ /// 机床SELECT列映射模板(snake_case列名 → PascalCase属性名)
+ private const string SelectColumns = @"id as Id, device_code as DeviceCode, name as Name, workshop_id as WorkshopId, collect_address_id as CollectAddressId, ip_address as IpAddress, brand_id as BrandId, is_enabled as IsEnabled, is_online as IsOnline, last_ping_time as LastPingTime, last_collect_time as LastCollectTime, last_device_status as LastDeviceStatus, last_run_status as LastRunStatus, last_program_name as LastProgramName, last_part_count as LastPartCount, last_operate_mode as LastOperateMode, last_machining_status as LastMachiningStatus, created_at as CreatedAt, updated_at as UpdatedAt";
+
public Machine GetById(int id)
{
using (var conn = CreateConnection())
{
- var sql = @"SELECT Id as Id, DeviceCode as DeviceCode, Name as Name, WorkshopId as WorkshopId, CollectAddressId as CollectAddressId, IpAddress as IpAddress, BrandId as BrandId, IsEnabled as IsEnabled, IsOnline as IsOnline, LastPingTime as LastPingTime, LastCollectTime as LastCollectTime, LastDeviceStatus as LastDeviceStatus, LastRunStatus as LastRunStatus, LastProgramName as LastProgramName, LastPartCount as LastPartCount, LastOperateMode as LastOperateMode, LastMachiningStatus as LastMachiningStatus, CreatedAt as CreatedAt, UpdatedAt as UpdatedAt FROM cnc_machine WHERE Id = @Id";
+ var sql = $"SELECT {SelectColumns} FROM cnc_machine WHERE id = @Id";
return conn.QuerySingleOrDefault(sql, new { Id = id });
}
}
@@ -33,32 +36,32 @@ namespace CncRepository.Impl
var p = new DynamicParameters();
if (!string.IsNullOrWhiteSpace(query.Keyword))
{
- where += " AND (m.Name LIKE @Keyword OR m.DeviceCode LIKE @Keyword)";
+ where += " AND (m.name LIKE @Keyword OR m.device_code LIKE @Keyword)";
p.Add("Keyword", $"%{query.Keyword}%");
}
if (query.WorkshopId.HasValue)
{
- where += " AND m.WorkshopId = @WorkshopId";
+ where += " AND m.workshop_id = @WorkshopId";
p.Add("WorkshopId", query.WorkshopId.Value);
}
if (query.IsOnline.HasValue)
{
- where += " AND m.IsOnline = @IsOnline";
+ where += " AND m.is_online = @IsOnline";
p.Add("IsOnline", query.IsOnline.Value);
}
if (query.BrandId.HasValue)
{
- where += " AND m.BrandId = @BrandId";
+ where += " AND m.brand_id = @BrandId";
p.Add("BrandId", query.BrandId.Value);
}
var limit = query.PageSize;
var offset = query.Offset;
- var sql = @"SELECT m.Id as Id, m.DeviceCode as DeviceCode, m.Name as Name, m.WorkshopId as WorkshopId, ws.Name as WorkshopName, m.CollectAddressId as CollectAddressId, m.BrandId as BrandId, b.BrandName as BrandName, m.IpAddress as IpAddress, m.IsEnabled as IsEnabled, m.IsOnline as IsOnline, m.LastProgramName as LastProgramName, m.LastCollectTime as LastCollectTime, w.Id as WorkerId, w.Name as WorkerName
+ var sql = @"SELECT m.id as Id, m.device_code as DeviceCode, m.name as Name, m.workshop_id as WorkshopId, ws.name as WorkshopName, m.collect_address_id as CollectAddressId, m.brand_id as BrandId, b.brand_name as BrandName, m.ip_address as IpAddress, m.is_enabled as IsEnabled, m.is_online as IsOnline, m.last_program_name as LastProgramName, m.last_collect_time as LastCollectTime, w.id as WorkerId, w.name as WorkerName
FROM cnc_machine m
- LEFT JOIN cnc_workshop ws ON m.WorkshopId = ws.Id
- LEFT JOIN cnc_brand b ON m.BrandId = b.Id
- LEFT JOIN cnc_worker_machine wm ON m.Id = wm.MachineId
- LEFT JOIN cnc_worker w ON wm.WorkerId = w.Id" + where + @" ORDER BY m.Id DESC LIMIT @Limit OFFSET @Offset";
+ LEFT JOIN cnc_workshop ws ON m.workshop_id = ws.id
+ LEFT JOIN cnc_brand b ON m.brand_id = b.id
+ LEFT JOIN cnc_worker_machine wm ON m.id = wm.machine_id
+ LEFT JOIN cnc_worker w ON wm.worker_id = w.id" + where + @" ORDER BY m.id DESC LIMIT @Limit OFFSET @Offset";
p.Add("Limit", limit);
p.Add("Offset", offset);
var totalSql = @"SELECT COUNT(*) FROM cnc_machine m" + where + @"";
@@ -78,7 +81,7 @@ namespace CncRepository.Impl
{
using (var conn = CreateConnection())
{
- var sql = @"INSERT INTO cnc_machine (DeviceCode, Name, WorkshopId, CollectAddressId, IpAddress, BrandId, IsEnabled, IsOnline, CreatedAt, UpdatedAt)
+ var sql = @"INSERT INTO cnc_machine (device_code, name, workshop_id, collect_address_id, ip_address, brand_id, is_enabled, is_online, created_at, updated_at)
VALUES (@DeviceCode, @Name, @WorkshopId, @CollectAddressId, @IpAddress, @BrandId, @IsEnabled, @IsOnline, @CreatedAt, @UpdatedAt);
SELECT LAST_INSERT_ID();";
return conn.QuerySingle(sql, entity);
@@ -89,7 +92,7 @@ namespace CncRepository.Impl
{
using (var conn = CreateConnection())
{
- var sql = @"UPDATE cnc_machine SET DeviceCode = @DeviceCode, Name = @Name, WorkshopId = @WorkshopId, CollectAddressId = @CollectAddressId, IpAddress = @IpAddress, BrandId = @BrandId, IsEnabled = @IsEnabled, IsOnline = @IsOnline, UpdatedAt = @UpdatedAt, LastProgramName = @LastProgramName, LastCollectTime = @LastCollectTime, LastDeviceStatus = @LastDeviceStatus, LastRunStatus = @LastRunStatus, LastMachiningStatus = @LastMachiningStatus WHERE Id = @Id";
+ var sql = @"UPDATE cnc_machine SET device_code = @DeviceCode, name = @Name, workshop_id = @WorkshopId, collect_address_id = @CollectAddressId, ip_address = @IpAddress, brand_id = @BrandId, is_enabled = @IsEnabled, is_online = @IsOnline, updated_at = @UpdatedAt, last_program_name = @LastProgramName, last_collect_time = @LastCollectTime, last_device_status = @LastDeviceStatus, last_run_status = @LastRunStatus, last_machining_status = @LastMachiningStatus WHERE id = @Id";
return conn.Execute(sql, entity) > 0;
}
}
@@ -98,7 +101,7 @@ namespace CncRepository.Impl
{
using (var conn = CreateConnection())
{
- var sql = @"DELETE FROM cnc_machine WHERE Id = @Id";
+ var sql = @"DELETE FROM cnc_machine WHERE id = @Id";
return conn.Execute(sql, new { Id = id }) > 0;
}
}
@@ -107,7 +110,7 @@ namespace CncRepository.Impl
{
using (var conn = CreateConnection())
{
- var sql = @"UPDATE cnc_machine SET IsEnabled = CASE WHEN IsEnabled = 1 THEN 0 ELSE 1 END, UpdatedAt = NOW() WHERE Id = @Id";
+ var sql = @"UPDATE cnc_machine SET is_enabled = CASE WHEN is_enabled = 1 THEN 0 ELSE 1 END, updated_at = NOW() WHERE id = @Id";
return conn.Execute(sql, new { Id = id }) > 0;
}
}
@@ -116,7 +119,7 @@ namespace CncRepository.Impl
{
using (var conn = CreateConnection())
{
- var sql = @"SELECT Id as Id, DeviceCode as DeviceCode, Name as Name, WorkshopId as WorkshopId, CollectAddressId as CollectAddressId, IpAddress as IpAddress, BrandId as BrandId, IsEnabled as IsEnabled, IsOnline as IsOnline, LastPingTime as LastPingTime, LastCollectTime as LastCollectTime, LastDeviceStatus as LastDeviceStatus, LastRunStatus as LastRunStatus, LastProgramName as LastProgramName, LastPartCount as LastPartCount, LastOperateMode as LastOperateMode, LastMachiningStatus as LastMachiningStatus, CreatedAt as CreatedAt, UpdatedAt as UpdatedAt FROM cnc_machine WHERE DeviceCode = @DeviceCode";
+ var sql = $"SELECT {SelectColumns} FROM cnc_machine WHERE device_code = @DeviceCode";
return conn.QuerySingleOrDefault(sql, new { DeviceCode = deviceCode });
}
}
@@ -125,7 +128,7 @@ namespace CncRepository.Impl
{
using (var conn = CreateConnection())
{
- var sql = @"SELECT Id as Id, DeviceCode as DeviceCode, Name as Name, WorkshopId as WorkshopId, CollectAddressId as CollectAddressId, IpAddress as IpAddress, BrandId as BrandId, IsEnabled as IsEnabled, IsOnline as IsOnline, LastPingTime as LastPingTime, LastCollectTime as LastCollectTime, LastDeviceStatus as LastDeviceStatus, LastRunStatus as LastRunStatus, LastProgramName as LastProgramName, LastPartCount as LastPartCount, LastOperateMode as LastOperateMode, LastMachiningStatus as LastMachiningStatus, CreatedAt as CreatedAt, UpdatedAt as UpdatedAt FROM cnc_machine WHERE CollectAddressId = @CollectAddressId AND IsEnabled = 1";
+ var sql = $"SELECT {SelectColumns} FROM cnc_machine WHERE collect_address_id = @CollectAddressId AND is_enabled = 1";
return conn.Query(sql, new { CollectAddressId = collectAddressId }).ToList();
}
}
@@ -134,7 +137,7 @@ namespace CncRepository.Impl
{
using (var conn = CreateConnection())
{
- var sql = @"SELECT Id as Id, DeviceCode as DeviceCode, Name as Name, WorkshopId as WorkshopId, CollectAddressId as CollectAddressId, IpAddress as IpAddress, BrandId as BrandId, IsEnabled as IsEnabled, IsOnline as IsOnline, LastPingTime as LastPingTime, LastCollectTime as LastCollectTime, LastDeviceStatus as LastDeviceStatus, LastRunStatus as LastRunStatus, LastProgramName as LastProgramName, LastPartCount as LastPartCount, LastOperateMode as LastOperateMode, LastMachiningStatus as LastMachiningStatus, CreatedAt as CreatedAt, UpdatedAt as UpdatedAt FROM cnc_machine WHERE IsEnabled = 1 AND IsOnline = 1";
+ var sql = $"SELECT {SelectColumns} FROM cnc_machine WHERE is_enabled = 1 AND is_online = 1";
return conn.Query(sql).ToList();
}
}
@@ -143,7 +146,7 @@ namespace CncRepository.Impl
{
using (var conn = CreateConnection())
{
- var sql = @"UPDATE cnc_machine SET IsOnline = @IsOnline, UpdatedAt = NOW() WHERE Id = @Id";
+ var sql = @"UPDATE cnc_machine SET is_online = @IsOnline, updated_at = NOW() WHERE id = @Id";
conn.Execute(sql, new { Id = id, IsOnline = isOnline ? 1 : 0 });
}
}
@@ -152,7 +155,7 @@ namespace CncRepository.Impl
{
using (var conn = CreateConnection())
{
- var sql = @"UPDATE cnc_machine SET LastCollectTime = @LastCollectTime, LastProgramName = @LastProgramName, LastMachiningStatus = @LastMachiningStatus, UpdatedAt = NOW() WHERE Id = @Id";
+ var sql = @"UPDATE cnc_machine SET last_collect_time = @LastCollectTime, last_program_name = @LastProgramName, last_machining_status = @LastMachiningStatus, updated_at = NOW() WHERE id = @Id";
var param = new
{
Id = id,
diff --git a/src/CncRepository/Impl/ProductionAdjustmentRepository.cs b/src/CncRepository/Impl/ProductionAdjustmentRepository.cs
index 1590692..90f1a63 100644
--- a/src/CncRepository/Impl/ProductionAdjustmentRepository.cs
+++ b/src/CncRepository/Impl/ProductionAdjustmentRepository.cs
@@ -17,7 +17,7 @@ namespace CncRepository.Impl
{
using (var conn = CreateConnection())
{
- string sql = @"INSERT INTO cnc_production_adjustment (TargetTable, TargetId, FieldName, OldValue, NewValue, Reason, OperatorIp, CreatedAt)
+ string sql = @"INSERT INTO cnc_production_adjustment (target_table, target_id, field_name, old_value, new_value, reason, operator_ip, created_at)
VALUES (@TargetTable, @TargetId, @FieldName, @OldValue, @NewValue, @Reason, @OperatorIp, @CreatedAt);";
return conn.Execute(sql, entity);
}
@@ -28,17 +28,17 @@ namespace CncRepository.Impl
using (var conn = CreateConnection())
{
string sqlBase = "SELECT * FROM cnc_production_adjustment WHERE 1=1";
- if (!string.IsNullOrEmpty(targetTable)) sqlBase += " AND TargetTable = @TargetTable";
- if (startDate.HasValue) sqlBase += " AND CreatedAt >= @StartDate";
- if (endDate.HasValue) sqlBase += " AND CreatedAt <= @EndDate";
- if (!string.IsNullOrEmpty(keyword)) sqlBase += " AND (CAST(TargetId AS CHAR) LIKE @Keyword OR FieldName LIKE @Keyword)";
+ if (!string.IsNullOrEmpty(targetTable)) sqlBase += " AND target_table = @TargetTable";
+ if (startDate.HasValue) sqlBase += " AND created_at >= @StartDate";
+ if (endDate.HasValue) sqlBase += " AND created_at <= @EndDate";
+ if (!string.IsNullOrEmpty(keyword)) sqlBase += " AND (CAST(target_id AS CHAR) LIKE @Keyword OR field_name LIKE @Keyword)";
int offset = (page - 1) * pageSize;
string sqlCount = "SELECT COUNT(*) FROM cnc_production_adjustment WHERE 1=1" +
- (string.IsNullOrEmpty(targetTable) ? string.Empty : " AND TargetTable = @TargetTable") +
- (startDate.HasValue ? " AND CreatedAt >= @StartDate" : "") +
- (endDate.HasValue ? " AND CreatedAt <= @EndDate" : "") +
- (!string.IsNullOrEmpty(keyword) ? " AND (CAST(TargetId AS CHAR) LIKE @Keyword OR FieldName LIKE @Keyword)" : "");
- string sqlPage = sqlBase + " ORDER BY CreatedAt DESC LIMIT @Limit OFFSET @Offset";
+ (string.IsNullOrEmpty(targetTable) ? string.Empty : " AND target_table = @TargetTable") +
+ (startDate.HasValue ? " AND created_at >= @StartDate" : "") +
+ (endDate.HasValue ? " AND created_at <= @EndDate" : "") +
+ (!string.IsNullOrEmpty(keyword) ? " AND (CAST(target_id AS CHAR) LIKE @Keyword OR field_name LIKE @Keyword)" : "");
+ string sqlPage = sqlBase + " ORDER BY created_at DESC LIMIT @Limit OFFSET @Offset";
var param = new { TargetTable = targetTable, StartDate = startDate, EndDate = endDate, Keyword = ("%" + keyword + "%"), Limit = pageSize, Offset = offset };
var items = conn.Query(sqlPage, param).AsList();
int total = conn.ExecuteScalar(sqlCount, param);
diff --git a/src/CncRepository/Impl/ProductionSegmentRepository.cs b/src/CncRepository/Impl/ProductionSegmentRepository.cs
index e4fb9bf..66b41aa 100644
--- a/src/CncRepository/Impl/ProductionSegmentRepository.cs
+++ b/src/CncRepository/Impl/ProductionSegmentRepository.cs
@@ -11,55 +11,61 @@ namespace CncRepository.Impl
public class ProductionSegmentRepository : BusinessRepository, IProductionSegmentRepository
{
public ProductionSegmentRepository(string connectionString) : base(connectionString) { }
+
public ProductionSegment GetById(long id)
{
using (var conn = CreateConnection())
{
- string sql = "SELECT * FROM cnc_production_segment WHERE Id = @Id";
+ string sql = "SELECT * FROM cnc_production_segment WHERE id = @Id";
return conn.QuerySingleOrDefault(sql, new { Id = id });
}
}
+
public ProductionSegment GetActiveSegment(int machineId)
{
using (var conn = CreateConnection())
{
- string sql = "SELECT * FROM cnc_production_segment WHERE MachineId = @MachineId AND IsSettled = 0 AND EndTime IS NULL ORDER BY StartTime DESC LIMIT 1";
+ string sql = "SELECT * FROM cnc_production_segment WHERE machine_id = @MachineId AND is_settled = 0 AND end_time IS NULL ORDER BY start_time DESC LIMIT 1";
return conn.QuerySingleOrDefault(sql, new { MachineId = machineId });
}
}
+
public List GetByMachineAndDate(int machineId, DateTime date)
{
using (var conn = CreateConnection())
{
- string sql = "SELECT * FROM cnc_production_segment WHERE MachineId = @MachineId AND DATE(StartTime) = DATE(@Date)";
+ string sql = "SELECT * FROM cnc_production_segment WHERE machine_id = @MachineId AND DATE(start_time) = DATE(@Date)";
return conn.Query(sql, new { MachineId = machineId, Date = date }).AsList();
}
}
+
public int Create(ProductionSegment entity)
{
using (var conn = CreateConnection())
{
- string sql = @"INSERT INTO cnc_production_segment (MachineId, ProgramName, ProductionDate, StartTime, StartPartCount, EndPartCount, Quantity, IsSettled, CloseReason, EndTime, CreatedAt, UpdatedAt)
+ string sql = @"INSERT INTO cnc_production_segment (machine_id, program_name, production_date, start_time, start_part_count, end_part_count, quantity, is_settled, close_reason, end_time, created_at, updated_at)
VALUES (@MachineId, @ProgramName, @ProductionDate, @StartTime, @StartPartCount, @EndPartCount, @Quantity, @IsSettled, @CloseReason, @EndTime, @CreatedAt, @UpdatedAt); SELECT LAST_INSERT_ID();";
return conn.ExecuteScalar(sql, entity);
}
}
+
public bool CloseSegment(long id, decimal? endPartCount, decimal? quantity, string closeReason, DateTime endTime)
{
using (var conn = CreateConnection())
{
string sql = @"UPDATE cnc_production_segment
- SET EndPartCount = @EndPartCount, Quantity = @Quantity, CloseReason = @CloseReason, EndTime = @EndTime
- WHERE Id = @Id";
+ SET end_part_count = @EndPartCount, quantity = @Quantity, close_reason = @CloseReason, end_time = @EndTime
+ WHERE id = @Id";
int affected = conn.Execute(sql, new { Id = id, EndPartCount = endPartCount, Quantity = quantity, CloseReason = closeReason, EndTime = endTime });
return affected > 0;
}
}
+
public bool SettleByDate(DateTime date)
{
using (var conn = CreateConnection())
{
- string sql = @"UPDATE cnc_production_segment SET IsSettled = 1, CloseReason = 'end_of_day' WHERE DATE(StartTime) = DATE(@Date) AND IsSettled = 0";
+ string sql = @"UPDATE cnc_production_segment SET is_settled = 1, close_reason = 'end_of_day' WHERE DATE(start_time) = DATE(@Date) AND is_settled = 0";
int affected = conn.Execute(sql, new { Date = date });
return affected > 0;
}
diff --git a/src/CncRepository/Impl/ScreenConfigRepository.cs b/src/CncRepository/Impl/ScreenConfigRepository.cs
index 54403b5..b587aa2 100644
--- a/src/CncRepository/Impl/ScreenConfigRepository.cs
+++ b/src/CncRepository/Impl/ScreenConfigRepository.cs
@@ -24,7 +24,7 @@ namespace CncRepository.Impl
{
using (var conn = CreateConnection())
{
- string sql = "SELECT * FROM cnc_screen_config WHERE IsEnabled = 1 ORDER BY SortOrder ASC";
+ string sql = "SELECT * FROM cnc_screen_config WHERE is_enabled = 1 ORDER BY sort_order ASC";
return conn.Query(sql).AsList();
}
}
@@ -33,7 +33,7 @@ namespace CncRepository.Impl
{
using (var conn = CreateConnection())
{
- string sql = "SELECT * FROM cnc_screen_config WHERE Id = @Id";
+ string sql = "SELECT * FROM cnc_screen_config WHERE id = @Id";
return conn.QuerySingleOrDefault(sql, new { Id = id });
}
}
@@ -42,7 +42,7 @@ namespace CncRepository.Impl
{
using (var conn = CreateConnection())
{
- string sql = @"INSERT INTO cnc_screen_config (CardKey, CardType, Title, Metric, Dimension, SortOrder, IsEnabled, ChartConfig, CreatedAt, UpdatedAt)
+ string sql = @"INSERT INTO cnc_screen_config (card_key, card_type, title, metric, dimension, sort_order, is_enabled, chart_config, created_at, updated_at)
VALUES (@CardKey, @CardType, @Title, @Metric, @Dimension, @SortOrder, @IsEnabled, @ChartConfig, @CreatedAt, @UpdatedAt); SELECT LAST_INSERT_ID();";
return conn.ExecuteScalar(sql, entity);
}
@@ -52,7 +52,7 @@ namespace CncRepository.Impl
{
using (var conn = CreateConnection())
{
- string sql = @"UPDATE cnc_screen_config SET CardKey = @CardKey, CardType = @CardType, Title = @Title, Metric = @Metric, Dimension = @Dimension, SortOrder = @SortOrder, IsEnabled = @IsEnabled, ChartConfig = @ChartConfig, UpdatedAt = @UpdatedAt WHERE Id = @Id";
+ string sql = @"UPDATE cnc_screen_config SET card_key = @CardKey, card_type = @CardType, title = @Title, metric = @Metric, dimension = @Dimension, sort_order = @SortOrder, is_enabled = @IsEnabled, chart_config = @ChartConfig, updated_at = @UpdatedAt WHERE id = @Id";
int affected = conn.Execute(sql, entity);
return affected > 0;
}
@@ -62,7 +62,7 @@ namespace CncRepository.Impl
{
using (var conn = CreateConnection())
{
- string sql = "DELETE FROM cnc_screen_config WHERE Id = @Id";
+ string sql = "DELETE FROM cnc_screen_config WHERE id = @Id";
return conn.Execute(sql, new { Id = id }) > 0;
}
}
@@ -71,7 +71,7 @@ namespace CncRepository.Impl
{
using (var conn = CreateConnection())
{
- string sql = "UPDATE cnc_screen_config SET IsEnabled = CASE WHEN IsEnabled = 1 THEN 0 ELSE 1 END, UpdatedAt = NOW() WHERE Id = @Id";
+ string sql = "UPDATE cnc_screen_config SET is_enabled = CASE WHEN is_enabled = 1 THEN 0 ELSE 1 END, updated_at = NOW() WHERE id = @Id";
int affected = conn.Execute(sql, new { Id = id });
return affected > 0;
}
diff --git a/src/CncRepository/Impl/ScreenFilterRepository.cs b/src/CncRepository/Impl/ScreenFilterRepository.cs
index eee975a..ed5a5c9 100644
--- a/src/CncRepository/Impl/ScreenFilterRepository.cs
+++ b/src/CncRepository/Impl/ScreenFilterRepository.cs
@@ -15,7 +15,7 @@ namespace CncRepository.Impl
{
using (var conn = CreateConnection())
{
- string sql = "SELECT * FROM cnc_screen_filter WHERE ScreenKey = @ScreenKey ORDER BY SortOrder ASC";
+ string sql = "SELECT * FROM cnc_screen_filter WHERE screen_key = @ScreenKey ORDER BY sort_order ASC";
return conn.Query(sql, new { ScreenKey = screenKey }).AsList();
}
}
@@ -24,7 +24,7 @@ namespace CncRepository.Impl
{
using (var conn = CreateConnection())
{
- string sql = @"INSERT INTO cnc_screen_filter (ScreenKey, FilterType, FilterValue, IsDefault, SortOrder) VALUES (@ScreenKey, @FilterType, @FilterValue, @IsDefault, @SortOrder); SELECT LAST_INSERT_ID();";
+ string sql = @"INSERT INTO cnc_screen_filter (screen_key, filter_type, filter_value, is_default, sort_order) VALUES (@ScreenKey, @FilterType, @FilterValue, @IsDefault, @SortOrder); SELECT LAST_INSERT_ID();";
return conn.ExecuteScalar(sql, entity);
}
}
@@ -33,7 +33,7 @@ namespace CncRepository.Impl
{
using (var conn = CreateConnection())
{
- string sql = @"UPDATE cnc_screen_filter SET ScreenKey = @ScreenKey, FilterType = @FilterType, FilterValue = @FilterValue, IsDefault = @IsDefault, SortOrder = @SortOrder WHERE Id = @Id";
+ string sql = @"UPDATE cnc_screen_filter SET screen_key = @ScreenKey, filter_type = @FilterType, filter_value = @FilterValue, is_default = @IsDefault, sort_order = @SortOrder WHERE id = @Id";
int affected = conn.Execute(sql, entity);
return affected > 0;
}
@@ -43,7 +43,7 @@ namespace CncRepository.Impl
{
using (var conn = CreateConnection())
{
- string sql = "DELETE FROM cnc_screen_filter WHERE Id = @Id";
+ string sql = "DELETE FROM cnc_screen_filter WHERE id = @Id";
return conn.Execute(sql, new { Id = id }) > 0;
}
}
diff --git a/src/CncRepository/Impl/SysConfigRepository.cs b/src/CncRepository/Impl/SysConfigRepository.cs
index 6fbc729..aaa1e94 100644
--- a/src/CncRepository/Impl/SysConfigRepository.cs
+++ b/src/CncRepository/Impl/SysConfigRepository.cs
@@ -20,8 +20,8 @@ namespace CncRepository.Impl
{
using (var conn = CreateConnection())
{
- var sql = @"SELECT Id as Id, ConfigKey as ConfigKey, ConfigValue as ConfigValue, ValueType as ValueType, Description as Description, UpdatedAt as UpdatedAt
- FROM cnc_sys_config WHERE ConfigKey = @ConfigKey LIMIT 1";
+ var sql = @"SELECT id as Id, config_key as ConfigKey, config_value as ConfigValue, value_type as ValueType, description as Description, updated_at as UpdatedAt
+ FROM cnc_sys_config WHERE config_key = @ConfigKey LIMIT 1";
return conn.QuerySingleOrDefault(sql, new { ConfigKey = configKey });
}
}
@@ -31,7 +31,7 @@ namespace CncRepository.Impl
{
using (var conn = CreateConnection())
{
- var sql = @"SELECT Id as Id, ConfigKey as ConfigKey, ConfigValue as ConfigValue, ValueType as ValueType, Description as Description, UpdatedAt as UpdatedAt FROM cnc_sys_config ORDER BY Id";
+ var sql = @"SELECT id as Id, config_key as ConfigKey, config_value as ConfigValue, value_type as ValueType, description as Description, updated_at as UpdatedAt FROM cnc_sys_config ORDER BY id";
return conn.Query(sql).ToList();
}
}
@@ -41,7 +41,7 @@ namespace CncRepository.Impl
{
using (var conn = CreateConnection())
{
- var sql = @"UPDATE cnc_sys_config SET ConfigValue = @ConfigValue, UpdatedAt = NOW() WHERE Id = @Id";
+ var sql = @"UPDATE cnc_sys_config SET config_value = @ConfigValue, updated_at = NOW() WHERE id = @Id";
var affected = conn.Execute(sql, new { Id = id, ConfigValue = configValue });
return affected > 0;
}
diff --git a/src/CncRepository/Impl/SystemLogRepository.cs b/src/CncRepository/Impl/SystemLogRepository.cs
index 8d83540..86b647b 100644
--- a/src/CncRepository/Impl/SystemLogRepository.cs
+++ b/src/CncRepository/Impl/SystemLogRepository.cs
@@ -18,18 +18,18 @@ namespace CncRepository.Impl
{
using (var conn = CreateConnection())
{
- string sql = @"SELECT Id, CreatedAt, LogLevel, Source, Message, StackTrace, ExtraData
+ string sql = @"SELECT id, created_at, log_level, source, message, stack_trace, extra_data
FROM log_system
WHERE 1=1";
string countSql = @"SELECT COUNT(*) FROM log_system WHERE 1=1";
- if (!string.IsNullOrEmpty(query.LogLevel)) { sql += " AND LogLevel = @LogLevel"; countSql += " AND LogLevel = @LogLevel"; }
- if (!string.IsNullOrEmpty(query.Source)) { sql += " AND Source = @Source"; countSql += " AND Source = @Source"; }
- if (!string.IsNullOrEmpty(query.StartDate)) { sql += " AND CreatedAt >= @Start"; countSql += " AND CreatedAt >= @Start"; }
- if (!string.IsNullOrEmpty(query.EndDate)) { sql += " AND CreatedAt <= @End"; countSql += " AND CreatedAt <= @End"; }
- if (!string.IsNullOrEmpty(query.Keyword)) { sql += " AND Message LIKE @Keyword"; countSql += " AND Message LIKE @Keyword"; }
+ if (!string.IsNullOrEmpty(query.LogLevel)) { sql += " AND log_level = @LogLevel"; countSql += " AND log_level = @LogLevel"; }
+ if (!string.IsNullOrEmpty(query.Source)) { sql += " AND source = @Source"; countSql += " AND source = @Source"; }
+ if (!string.IsNullOrEmpty(query.StartDate)) { sql += " AND created_at >= @Start"; countSql += " AND created_at >= @Start"; }
+ if (!string.IsNullOrEmpty(query.EndDate)) { sql += " AND created_at <= @End"; countSql += " AND created_at <= @End"; }
+ if (!string.IsNullOrEmpty(query.Keyword)) { sql += " AND message LIKE @Keyword"; countSql += " AND message LIKE @Keyword"; }
var p = new { LogLevel = query.LogLevel, Source = query.Source, Start = query.StartDate, End = query.EndDate, Keyword = ("%" + query.Keyword + "%") };
int offset = (query.Page - 1) * query.PageSize;
- sql += " ORDER BY CreatedAt DESC LIMIT @Limit OFFSET @Offset";
+ sql += " ORDER BY created_at DESC LIMIT @Limit OFFSET @Offset";
var list = conn.Query(sql, p).AsList();
int total = conn.ExecuteScalar(countSql, p);
return new PagedResult { Items = list, Total = total, Page = query.Page, PageSize = query.PageSize };
@@ -40,7 +40,7 @@ namespace CncRepository.Impl
{
using (var conn = CreateConnection())
{
- string sql = @"INSERT INTO log_system (LogLevel, Source, Message, StackTrace, ExtraData, CreatedAt)
+ string sql = @"INSERT INTO log_system (log_level, source, message, stack_trace, extra_data, created_at)
VALUES (@LogLevel, @Source, @Message, @StackTrace, @ExtraData, @CreatedAt);";
return conn.Execute(sql, entity);
}
diff --git a/src/CncRepository/Impl/WorkerDailySummaryRepository.cs b/src/CncRepository/Impl/WorkerDailySummaryRepository.cs
index 6459693..1cbc61b 100644
--- a/src/CncRepository/Impl/WorkerDailySummaryRepository.cs
+++ b/src/CncRepository/Impl/WorkerDailySummaryRepository.cs
@@ -16,7 +16,7 @@ namespace CncRepository.Impl
{
using (var conn = CreateConnection())
{
- string sql = "SELECT * FROM cnc_worker_daily_summary WHERE WorkerId = @WorkerId AND ProductionDate = @Date";
+ string sql = "SELECT * FROM cnc_worker_daily_summary WHERE worker_id = @WorkerId AND production_date = @Date";
return conn.QuerySingleOrDefault(sql, new { WorkerId = workerId, Date = date });
}
}
@@ -25,7 +25,7 @@ namespace CncRepository.Impl
{
using (var conn = CreateConnection())
{
- string sql = "SELECT * FROM cnc_worker_daily_summary WHERE ProductionDate BETWEEN @Start AND @End";
+ string sql = "SELECT * FROM cnc_worker_daily_summary WHERE production_date BETWEEN @Start AND @End";
return conn.Query(sql, new { Start = startDate, End = endDate }).AsList();
}
}
@@ -34,9 +34,9 @@ namespace CncRepository.Impl
{
using (var conn = CreateConnection())
{
- string sql = @"INSERT INTO cnc_worker_daily_summary (WorkerId, ProductionDate, TotalQuantity, MachineCount, ProgramCount, IsAdjusted, AdjustedQuantity, CreatedAt, UpdatedAt)
+ string sql = @"INSERT INTO cnc_worker_daily_summary (worker_id, production_date, total_quantity, machine_count, program_count, is_adjusted, adjusted_quantity, created_at, updated_at)
VALUES (@WorkerId, @ProductionDate, @TotalQuantity, @MachineCount, @ProgramCount, @IsAdjusted, @AdjustedQuantity, @CreatedAt, @UpdatedAt)
- ON DUPLICATE KEY UPDATE TotalQuantity = @TotalQuantity, MachineCount = @MachineCount, ProgramCount = @ProgramCount, UpdatedAt = @UpdatedAt";
+ ON DUPLICATE KEY UPDATE total_quantity = @TotalQuantity, machine_count = @MachineCount, program_count = @ProgramCount, updated_at = @UpdatedAt";
return conn.Execute(sql, entity);
}
}
diff --git a/src/CncRepository/Impl/WorkerMachineRepository.cs b/src/CncRepository/Impl/WorkerMachineRepository.cs
index ce214e3..b37d594 100644
--- a/src/CncRepository/Impl/WorkerMachineRepository.cs
+++ b/src/CncRepository/Impl/WorkerMachineRepository.cs
@@ -14,11 +14,13 @@ namespace CncRepository.Impl
{
public WorkerMachineRepository(string connectionString) : base(connectionString) { }
+ private const string SelectColumns = @"id as Id, worker_id as WorkerId, machine_id as MachineId, created_at as CreatedAt";
+
public WorkerMachine GetByMachineId(int machineId)
{
using (var conn = CreateConnection())
{
- var sql = @"SELECT Id as Id, WorkerId as WorkerId, MachineId as MachineId, CreatedAt as CreatedAt FROM cnc_worker_machine WHERE MachineId = @MachineId";
+ var sql = $"SELECT {SelectColumns} FROM cnc_worker_machine WHERE machine_id = @MachineId";
return conn.QuerySingleOrDefault(sql, new { MachineId = machineId });
}
}
@@ -27,7 +29,7 @@ namespace CncRepository.Impl
{
using (var conn = CreateConnection())
{
- var sql = @"SELECT Id as Id, WorkerId as WorkerId, MachineId as MachineId, CreatedAt as CreatedAt FROM cnc_worker_machine WHERE WorkerId = @WorkerId";
+ var sql = $"SELECT {SelectColumns} FROM cnc_worker_machine WHERE worker_id = @WorkerId";
return conn.Query(sql, new { WorkerId = workerId }).ToList();
}
}
@@ -36,7 +38,7 @@ namespace CncRepository.Impl
{
using (var conn = CreateConnection())
{
- var sql = @"INSERT INTO cnc_worker_machine (WorkerId, MachineId, CreatedAt) VALUES (@WorkerId, @MachineId, NOW()); SELECT LAST_INSERT_ID();";
+ var sql = @"INSERT INTO cnc_worker_machine (worker_id, machine_id, created_at) VALUES (@WorkerId, @MachineId, NOW()); SELECT LAST_INSERT_ID();";
return conn.QuerySingle(sql, new { WorkerId = workerId, MachineId = machineId });
}
}
@@ -45,7 +47,7 @@ namespace CncRepository.Impl
{
using (var conn = CreateConnection())
{
- var sql = @"DELETE FROM cnc_worker_machine WHERE MachineId = @MachineId";
+ var sql = @"DELETE FROM cnc_worker_machine WHERE machine_id = @MachineId";
return conn.Execute(sql, new { MachineId = machineId }) > 0;
}
}
@@ -54,7 +56,7 @@ namespace CncRepository.Impl
{
using (var conn = CreateConnection())
{
- var sql = @"DELETE FROM cnc_worker_machine WHERE WorkerId = @WorkerId";
+ var sql = @"DELETE FROM cnc_worker_machine WHERE worker_id = @WorkerId";
return conn.Execute(sql, new { WorkerId = workerId }) > 0;
}
}
diff --git a/src/CncRepository/Impl/WorkerRepository.cs b/src/CncRepository/Impl/WorkerRepository.cs
index 19ad69d..fd62983 100644
--- a/src/CncRepository/Impl/WorkerRepository.cs
+++ b/src/CncRepository/Impl/WorkerRepository.cs
@@ -16,11 +16,14 @@ namespace CncRepository.Impl
{
public WorkerRepository(string connectionString) : base(connectionString) { }
+ /// 工人SELECT列映射模板
+ private const string SelectColumns = @"id as Id, name as Name, code as Code, is_enabled as IsEnabled, created_at as CreatedAt, updated_at as UpdatedAt";
+
public Worker GetById(int id)
{
using (var conn = CreateConnection())
{
- var sql = @"SELECT Id as Id, Name as Name, Code as Code, IsEnabled as IsEnabled, CreatedAt as CreatedAt, UpdatedAt as UpdatedAt FROM cnc_worker WHERE Id = @Id";
+ var sql = $"SELECT {SelectColumns} FROM cnc_worker WHERE id = @Id";
return conn.QuerySingleOrDefault(sql, new { Id = id });
}
}
@@ -33,20 +36,20 @@ namespace CncRepository.Impl
var p = new DynamicParameters();
if (!string.IsNullOrWhiteSpace(query.Keyword))
{
- where += " AND (w.Name LIKE @Keyword OR w.Code LIKE @Keyword)";
+ where += " AND (w.name LIKE @Keyword OR w.code LIKE @Keyword)";
p.Add("Keyword", $"%{query.Keyword}%");
}
if (query.IsEnabled.HasValue)
{
- where += " AND w.IsEnabled = @IsEnabled";
+ where += " AND w.is_enabled = @IsEnabled";
p.Add("IsEnabled", query.IsEnabled.Value);
}
var limit = query.PageSize;
var offset = query.Offset;
- var sql = @"SELECT w.Id as Id, w.Code as Code, w.Name as Name, w.IsEnabled as IsEnabled,
- (SELECT COUNT(*) FROM cnc_worker_machine wm WHERE wm.WorkerId = w.Id) as MachineCount,
- (SELECT GROUP_CONCAT(m.Name SEPARATOR ', ') FROM cnc_worker_machine wm JOIN cnc_machine m ON wm.MachineId = m.Id WHERE wm.WorkerId = w.Id) as MachineNames
- FROM cnc_worker w" + where + @" ORDER BY w.Id DESC LIMIT @Limit OFFSET @Offset";
+ var sql = @"SELECT w.id as Id, w.code as Code, w.name as Name, w.is_enabled as IsEnabled,
+ (SELECT COUNT(*) FROM cnc_worker_machine wm WHERE wm.worker_id = w.id) as MachineCount,
+ (SELECT GROUP_CONCAT(m.name SEPARATOR ', ') FROM cnc_worker_machine wm JOIN cnc_machine m ON wm.machine_id = m.id WHERE wm.worker_id = w.id) as MachineNames
+ FROM cnc_worker w" + where + @" ORDER BY w.id DESC LIMIT @Limit OFFSET @Offset";
p.Add("Limit", limit);
p.Add("Offset", offset);
var totalSql = @"SELECT COUNT(*) FROM cnc_worker w" + where;
@@ -66,7 +69,7 @@ namespace CncRepository.Impl
{
using (var conn = CreateConnection())
{
- var sql = @"INSERT INTO cnc_worker (Name, Code, IsEnabled, CreatedAt, UpdatedAt) VALUES (@Name, @Code, @IsEnabled, @CreatedAt, @UpdatedAt); SELECT LAST_INSERT_ID();";
+ var sql = @"INSERT INTO cnc_worker (name, code, is_enabled, created_at, updated_at) VALUES (@Name, @Code, @IsEnabled, @CreatedAt, @UpdatedAt); SELECT LAST_INSERT_ID();";
return conn.QuerySingle(sql, entity);
}
}
@@ -75,7 +78,7 @@ namespace CncRepository.Impl
{
using (var conn = CreateConnection())
{
- var sql = @"UPDATE cnc_worker SET Name = @Name, Code = @Code, IsEnabled = @IsEnabled, UpdatedAt = @UpdatedAt WHERE Id = @Id";
+ var sql = @"UPDATE cnc_worker SET name = @Name, code = @Code, is_enabled = @IsEnabled, updated_at = @UpdatedAt WHERE id = @Id";
return conn.Execute(sql, entity) > 0;
}
}
@@ -84,7 +87,7 @@ namespace CncRepository.Impl
{
using (var conn = CreateConnection())
{
- var sql = @"DELETE FROM cnc_worker WHERE Id = @Id";
+ var sql = @"DELETE FROM cnc_worker WHERE id = @Id";
return conn.Execute(sql, new { Id = id }) > 0;
}
}
@@ -93,7 +96,7 @@ namespace CncRepository.Impl
{
using (var conn = CreateConnection())
{
- var sql = @"UPDATE cnc_worker SET IsEnabled = CASE WHEN IsEnabled = 1 THEN 0 ELSE 1 END, UpdatedAt = NOW() WHERE Id = @Id";
+ var sql = @"UPDATE cnc_worker SET is_enabled = CASE WHEN is_enabled = 1 THEN 0 ELSE 1 END, updated_at = NOW() WHERE id = @Id";
return conn.Execute(sql, new { Id = id }) > 0;
}
}
@@ -102,7 +105,7 @@ namespace CncRepository.Impl
{
using (var conn = CreateConnection())
{
- var sql = @"SELECT Id as Id, Name as Name, Code as Code, IsEnabled as IsEnabled, CreatedAt as CreatedAt, UpdatedAt as UpdatedAt FROM cnc_worker WHERE Code = @Code";
+ var sql = $"SELECT {SelectColumns} FROM cnc_worker WHERE code = @Code";
return conn.QuerySingleOrDefault(sql, new { Code = code });
}
}
@@ -111,7 +114,7 @@ namespace CncRepository.Impl
{
using (var conn = CreateConnection())
{
- var sql = @"SELECT Id as Id, Name as Name, Code as Code, IsEnabled as IsEnabled, CreatedAt as CreatedAt, UpdatedAt as UpdatedAt FROM cnc_worker ORDER BY Id";
+ var sql = $"SELECT {SelectColumns} FROM cnc_worker ORDER BY id";
return conn.Query(sql).ToList();
}
}
diff --git a/src/CncRepository/Impl/WorkshopRepository.cs b/src/CncRepository/Impl/WorkshopRepository.cs
index 3c7f126..2acb0a5 100644
--- a/src/CncRepository/Impl/WorkshopRepository.cs
+++ b/src/CncRepository/Impl/WorkshopRepository.cs
@@ -20,7 +20,7 @@ namespace CncRepository.Impl
{
using (var conn = CreateConnection())
{
- var sql = @"SELECT Id as Id, Name as Name, SortOrder as SortOrder, IsEnabled as IsEnabled, CreatedAt as CreatedAt, UpdatedAt as UpdatedAt FROM cnc_workshop WHERE Id = @Id";
+ var sql = @"SELECT id as Id, name as Name, sort_order as SortOrder, is_enabled as IsEnabled, created_at as CreatedAt, updated_at as UpdatedAt FROM cnc_workshop WHERE id = @Id";
return conn.QuerySingleOrDefault(sql, new { Id = id });
}
}
@@ -29,7 +29,7 @@ namespace CncRepository.Impl
{
using (var conn = CreateConnection())
{
- var sql = @"SELECT Id as Id, Name as Name, SortOrder as SortOrder, IsEnabled as IsEnabled, CreatedAt as CreatedAt, UpdatedAt as UpdatedAt FROM cnc_workshop ORDER BY SortOrder ASC";
+ var sql = @"SELECT id as Id, name as Name, sort_order as SortOrder, is_enabled as IsEnabled, created_at as CreatedAt, updated_at as UpdatedAt FROM cnc_workshop ORDER BY sort_order ASC";
return conn.Query(sql).ToList();
}
}
@@ -42,12 +42,12 @@ namespace CncRepository.Impl
var param = new DynamicParameters();
if (!string.IsNullOrWhiteSpace(keyword))
{
- where = " WHERE Name LIKE @Keyword";
+ where = " WHERE name LIKE @Keyword";
param.Add("Keyword", $"%{keyword}%");
}
var limit = 20;
- var sql = $@"SELECT Id as Id, Name as Name, SortOrder as SortOrder, IsEnabled as IsEnabled, CreatedAt as CreatedAt, UpdatedAt as UpdatedAt
- FROM cnc_workshop {where} ORDER BY SortOrder ASC LIMIT {limit} OFFSET 0";
+ var sql = $@"SELECT id as Id, name as Name, sort_order as SortOrder, is_enabled as IsEnabled, created_at as CreatedAt, updated_at as UpdatedAt
+ FROM cnc_workshop {where} ORDER BY sort_order ASC LIMIT {limit} OFFSET 0";
var totalSql = $@"SELECT COUNT(*) FROM cnc_workshop {where}";
var items = conn.Query(sql, param).ToList();
var total = conn.ExecuteScalar(totalSql, param);
@@ -65,7 +65,7 @@ namespace CncRepository.Impl
{
using (var conn = CreateConnection())
{
- var sql = @"INSERT INTO cnc_workshop (Name, SortOrder, IsEnabled, CreatedAt, UpdatedAt)
+ var sql = @"INSERT INTO cnc_workshop (name, sort_order, is_enabled, created_at, updated_at)
VALUES (@Name, @SortOrder, @IsEnabled, @CreatedAt, @UpdatedAt);
SELECT LAST_INSERT_ID();";
return conn.QuerySingle(sql, entity);
@@ -76,7 +76,7 @@ namespace CncRepository.Impl
{
using (var conn = CreateConnection())
{
- var sql = @"UPDATE cnc_workshop SET Name = @Name, SortOrder = @SortOrder, IsEnabled = @IsEnabled, UpdatedAt = @UpdatedAt WHERE Id = @Id";
+ var sql = @"UPDATE cnc_workshop SET name = @Name, sort_order = @SortOrder, is_enabled = @IsEnabled, updated_at = @UpdatedAt WHERE id = @Id";
return conn.Execute(sql, entity) > 0;
}
}
@@ -85,7 +85,7 @@ namespace CncRepository.Impl
{
using (var conn = CreateConnection())
{
- var sql = @"DELETE FROM cnc_workshop WHERE Id = @Id";
+ var sql = @"DELETE FROM cnc_workshop WHERE id = @Id";
return conn.Execute(sql, new { Id = id }) > 0;
}
}
@@ -94,7 +94,7 @@ namespace CncRepository.Impl
{
using (var conn = CreateConnection())
{
- var sql = @"UPDATE cnc_workshop SET IsEnabled = CASE WHEN IsEnabled = 1 THEN 0 ELSE 1 END, UpdatedAt = NOW() WHERE Id = @Id";
+ var sql = @"UPDATE cnc_workshop SET is_enabled = CASE WHEN is_enabled = 1 THEN 0 ELSE 1 END, updated_at = NOW() WHERE id = @Id";
return conn.Execute(sql, new { Id = id }) > 0;
}
}
@@ -103,7 +103,7 @@ namespace CncRepository.Impl
{
using (var conn = CreateConnection())
{
- var sql = @"SELECT COUNT(*) FROM cnc_machine WHERE WorkshopId = @WorkshopId";
+ var sql = @"SELECT COUNT(*) FROM cnc_machine WHERE workshop_id = @WorkshopId";
return conn.ExecuteScalar(sql, new { WorkshopId = workshopId });
}
}
diff --git a/tests/CncRepository.Tests/AlertRepositoryTests.cs b/tests/CncRepository.Tests/AlertRepositoryTests.cs
new file mode 100644
index 0000000..69bc09b
--- /dev/null
+++ b/tests/CncRepository.Tests/AlertRepositoryTests.cs
@@ -0,0 +1,106 @@
+using System;
+using System.Linq;
+using CncModels.Dto.Alert;
+using CncModels.Entity;
+using CncRepository.Impl;
+using Xunit;
+
+namespace CncRepository.Tests
+{
+ ///
+ /// 告警仓储测试
+ ///
+ [Collection("Database")]
+ public class AlertRepositoryTests : IDisposable
+ {
+ private readonly AlertRepository _repo;
+
+ public AlertRepositoryTests()
+ {
+ _repo = new AlertRepository(TestDb.ConnectionString);
+ TestDb.TruncateAll();
+ }
+
+ public void Dispose()
+ {
+ TestDb.TruncateAll();
+ }
+
+ private Alert CreateTestAlert(string alertType = "collect_fail")
+ {
+ return new Alert
+ {
+ AlertType = alertType,
+ Title = "测试告警",
+ MachineId = null,
+ CollectAddressId = null,
+ Detail = "测试详情",
+ IsResolved = 0,
+ CreatedAt = DateTime.Now
+ };
+ }
+
+ [Fact]
+ public void Create_新增告警_返回自增ID()
+ {
+ var id = _repo.Create(CreateTestAlert());
+ Assert.True(id > 0);
+ }
+
+ [Fact]
+ public void GetById_存在的ID_返回告警()
+ {
+ var id = _repo.Create(CreateTestAlert());
+ var result = _repo.GetById(id);
+ Assert.NotNull(result);
+ Assert.Equal("collect_fail", result.AlertType);
+ Assert.Equal(0, result.IsResolved);
+ }
+
+ [Fact]
+ public void GetList_分页查询_返回分页结果()
+ {
+ for (int i = 0; i < 5; i++)
+ _repo.Create(CreateTestAlert());
+ var query = new AlertQuery { Page = 1, PageSize = 3 };
+ var result = _repo.GetList(query);
+ Assert.Equal(5, result.Total);
+ Assert.Equal(3, result.Items.Count);
+ }
+
+ [Fact]
+ public void Resolve_处理告警_返回true()
+ {
+ var id = _repo.Create(CreateTestAlert());
+ var result = _repo.Resolve(id);
+ Assert.True(result);
+ var alert = _repo.GetById(id);
+ Assert.Equal(1, alert.IsResolved);
+ }
+
+ [Fact]
+ public void BatchResolve_批量处理_返回处理数量()
+ {
+ var id1 = _repo.Create(CreateTestAlert());
+ var id2 = _repo.Create(CreateTestAlert());
+ var id3 = _repo.Create(CreateTestAlert());
+ var count = _repo.BatchResolve(new System.Collections.Generic.List { id1, id2 });
+ Assert.Equal(2, count);
+ Assert.Equal(1, _repo.GetById(id1).IsResolved);
+ Assert.Equal(1, _repo.GetById(id2).IsResolved);
+ Assert.Equal(0, _repo.GetById(id3).IsResolved);
+ }
+
+ [Fact]
+ public void GetStatistics_返回未处理统计()
+ {
+ _repo.Create(CreateTestAlert("collect_fail"));
+ _repo.Create(CreateTestAlert("collect_fail"));
+ _repo.Create(CreateTestAlert("device_offline"));
+ var stats = _repo.GetStatistics();
+ Assert.True(stats.UnresolvedCount >= 3);
+ Assert.True(stats.UnresolvedByType.ContainsKey("collect_fail"));
+ Assert.True(stats.UnresolvedByType["collect_fail"] >= 2);
+ }
+ }
+}
diff --git a/tests/CncRepository.Tests/BrandRepositoryTests.cs b/tests/CncRepository.Tests/BrandRepositoryTests.cs
new file mode 100644
index 0000000..8050d58
--- /dev/null
+++ b/tests/CncRepository.Tests/BrandRepositoryTests.cs
@@ -0,0 +1,106 @@
+using System;
+using System.Linq;
+using CncModels.Entity;
+using CncRepository.Impl;
+using Xunit;
+
+namespace CncRepository.Tests
+{
+ ///
+ /// 品牌仓储测试
+ ///
+ [Collection("Database")]
+ public class BrandRepositoryTests : IDisposable
+ {
+ private readonly BrandRepository _repo;
+
+ public BrandRepositoryTests()
+ {
+ _repo = new BrandRepository(TestDb.ConnectionString);
+ TestDb.TruncateAll();
+ }
+
+ public void Dispose()
+ {
+ TestDb.TruncateAll();
+ }
+
+ [Fact]
+ public void GetAll_返回所有品牌()
+ {
+ var result = _repo.GetAll();
+ Assert.NotNull(result);
+ Assert.True(result.Count >= 1);
+ Assert.Equal("FANUC", result[0].BrandName);
+ }
+
+ [Fact]
+ public void GetById_存在的ID_返回品牌()
+ {
+ var result = _repo.GetById(1);
+ Assert.NotNull(result);
+ Assert.Equal("FANUC", result.BrandName);
+ }
+
+ [Fact]
+ public void Create_新增品牌_返回自增ID()
+ {
+ var entity = new Brand
+ {
+ BrandName = "Siemens",
+ DeviceField = "device",
+ TagsPath = "tags",
+ IsEnabled = 1,
+ CreatedAt = DateTime.Now,
+ UpdatedAt = DateTime.Now
+ };
+ var id = _repo.Create(entity);
+ Assert.True(id > 0);
+ Assert.Equal("Siemens", _repo.GetById(id).BrandName);
+ }
+
+ [Fact]
+ public void Update_修改品牌_返回true()
+ {
+ var entity = _repo.GetById(1);
+ entity.BrandName = "FANUC-修改";
+ entity.UpdatedAt = DateTime.Now;
+ var result = _repo.Update(entity);
+ Assert.True(result);
+ }
+
+ [Fact]
+ public void Delete_存在的ID_返回true()
+ {
+ var id = _repo.Create(new Brand
+ {
+ BrandName = "待删除", DeviceField = "d", TagsPath = "t", IsEnabled = 1,
+ CreatedAt = DateTime.Now, UpdatedAt = DateTime.Now
+ });
+ Assert.True(_repo.Delete(id));
+ }
+
+ [Fact]
+ public void ToggleEnabled_切换启用状态()
+ {
+ var before = _repo.GetById(1).IsEnabled;
+ _repo.ToggleEnabled(1);
+ var after = _repo.GetById(1).IsEnabled;
+ Assert.NotEqual(before, after);
+ }
+
+ [Fact]
+ public void GetFieldMappingCount_返回字段映射数量()
+ {
+ var count = _repo.GetFieldMappingCount(1);
+ Assert.True(count >= 0);
+ }
+
+ [Fact]
+ public void GetCollectAddressCount_返回关联地址数量()
+ {
+ var count = _repo.GetCollectAddressCount(1);
+ Assert.True(count >= 0);
+ }
+ }
+}
diff --git a/tests/CncRepository.Tests/DatabaseCollection.cs b/tests/CncRepository.Tests/DatabaseCollection.cs
new file mode 100644
index 0000000..1464ead
--- /dev/null
+++ b/tests/CncRepository.Tests/DatabaseCollection.cs
@@ -0,0 +1,10 @@
+using Xunit;
+
+namespace CncRepository.Tests
+{
+ ///
+ /// 数据库测试集合定义 —— 所有测试类共享同一个数据库,必须串行执行
+ ///
+ [CollectionDefinition("Database", DisableParallelization = true)]
+ public class DatabaseCollection { }
+}
diff --git a/tests/CncRepository.Tests/MachineRepositoryTests.cs b/tests/CncRepository.Tests/MachineRepositoryTests.cs
new file mode 100644
index 0000000..c007420
--- /dev/null
+++ b/tests/CncRepository.Tests/MachineRepositoryTests.cs
@@ -0,0 +1,138 @@
+using System;
+using System.Linq;
+using CncModels.Dto;
+using CncModels.Dto.Machine;
+using CncModels.Entity;
+using CncRepository.Impl;
+using Xunit;
+
+namespace CncRepository.Tests
+{
+ ///
+ /// 机床仓储测试
+ ///
+ [Collection("Database")]
+ public class MachineRepositoryTests : IDisposable
+ {
+ private readonly MachineRepository _repo;
+
+ public MachineRepositoryTests()
+ {
+ _repo = new MachineRepository(TestDb.ConnectionString);
+ TestDb.TruncateAll();
+ // 插入一个采集地址供机床引用
+ TestDb.Execute(@"INSERT INTO cnc_collect_address (id, name, url, brand_id, collect_interval, is_enabled, created_at, updated_at)
+ VALUES (1, '测试地址', 'http://10.1.1.1/', 1, 30, 1, NOW(), NOW())");
+ }
+
+ public void Dispose()
+ {
+ TestDb.TruncateAll();
+ }
+
+ private Machine CreateTestMachine(string deviceCode = "TEST_001")
+ {
+ return new Machine
+ {
+ DeviceCode = deviceCode,
+ Name = "测试机床",
+ WorkshopId = 1,
+ CollectAddressId = 1,
+ BrandId = 1,
+ IpAddress = "10.1.1.8",
+ IsEnabled = 1,
+ IsOnline = 0,
+ CreatedAt = DateTime.Now,
+ UpdatedAt = DateTime.Now
+ };
+ }
+
+ [Fact]
+ public void Create_新增机床_返回自增ID()
+ {
+ var entity = CreateTestMachine();
+ var id = _repo.Create(entity);
+ Assert.True(id > 0);
+ }
+
+ [Fact]
+ public void GetById_存在的ID_返回机床实体()
+ {
+ var id = _repo.Create(CreateTestMachine());
+ var result = _repo.GetById(id);
+ Assert.NotNull(result);
+ Assert.Equal("TEST_001", result.DeviceCode);
+ Assert.Equal("测试机床", result.Name);
+ }
+
+ [Fact]
+ public void GetById_不存在的ID_返回null()
+ {
+ var result = _repo.GetById(99999);
+ Assert.Null(result);
+ }
+
+ [Fact]
+ public void GetByDeviceCode_存在的编码_返回机床()
+ {
+ _repo.Create(CreateTestMachine("UNIQUE_CODE"));
+ var result = _repo.GetByDeviceCode("UNIQUE_CODE");
+ Assert.NotNull(result);
+ Assert.Equal("UNIQUE_CODE", result.DeviceCode);
+ }
+
+ [Fact]
+ public void GetList_分页查询_返回分页结果()
+ {
+ // 插入几条数据
+ for (int i = 1; i <= 3; i++)
+ {
+ _repo.Create(CreateTestMachine($"CODE_{i:D3}"));
+ }
+ var query = new MachineQuery { Page = 1, PageSize = 2 };
+ var result = _repo.GetList(query);
+ Assert.True(result.Total >= 3);
+ Assert.True(result.Items.Count <= 2);
+ }
+
+ [Fact]
+ public void Update_修改机床_返回true()
+ {
+ var id = _repo.Create(CreateTestMachine());
+ var entity = _repo.GetById(id);
+ entity.Name = "修改后";
+ entity.UpdatedAt = DateTime.Now;
+ var result = _repo.Update(entity);
+ Assert.True(result);
+ Assert.Equal("修改后", _repo.GetById(id).Name);
+ }
+
+ [Fact]
+ public void Delete_存在的ID_返回true()
+ {
+ var id = _repo.Create(CreateTestMachine("DEL_001"));
+ var result = _repo.Delete(id);
+ Assert.True(result);
+ Assert.Null(_repo.GetById(id));
+ }
+
+ [Fact]
+ public void ToggleEnabled_切换启用状态()
+ {
+ var id = _repo.Create(CreateTestMachine());
+ var before = _repo.GetById(id).IsEnabled;
+ _repo.ToggleEnabled(id);
+ var after = _repo.GetById(id).IsEnabled;
+ Assert.NotEqual(before, after);
+ }
+
+ [Fact]
+ public void GetEnabledByAddressId_返回该地址下启用的机床()
+ {
+ _repo.Create(CreateTestMachine("ADDR_001"));
+ var result = _repo.GetEnabledByAddressId(1);
+ Assert.NotNull(result);
+ Assert.True(result.Count > 0);
+ }
+ }
+}
diff --git a/tests/CncRepository.Tests/SysConfigRepositoryTests.cs b/tests/CncRepository.Tests/SysConfigRepositoryTests.cs
new file mode 100644
index 0000000..b42656d
--- /dev/null
+++ b/tests/CncRepository.Tests/SysConfigRepositoryTests.cs
@@ -0,0 +1,62 @@
+using System;
+using CncModels.Entity;
+using CncRepository.Impl;
+using Xunit;
+
+namespace CncRepository.Tests
+{
+ ///
+ /// 系统配置仓储测试
+ ///
+ [Collection("Database")]
+ public class SysConfigRepositoryTests : IDisposable
+ {
+ private readonly SysConfigRepository _repo;
+
+ public SysConfigRepositoryTests()
+ {
+ _repo = new SysConfigRepository(TestDb.ConnectionString);
+ TestDb.TruncateAll();
+ // TruncateAll已插入admin_username/admin_password_hash,这里只需加test_key
+ TestDb.Execute(@"INSERT IGNORE INTO cnc_sys_config (config_key, config_value, value_type, description, updated_at)
+ VALUES ('test_key', 'test_value', 'string', '测试配置', NOW())");
+ }
+
+ public void Dispose()
+ {
+ TestDb.TruncateAll();
+ }
+
+ [Fact]
+ public void GetByKey_存在的Key_返回配置()
+ {
+ var result = _repo.GetByKey("test_key");
+ Assert.NotNull(result);
+ Assert.Equal("test_value", result.ConfigValue);
+ }
+
+ [Fact]
+ public void GetByKey_不存在的Key_返回null()
+ {
+ var result = _repo.GetByKey("nonexistent_key");
+ Assert.Null(result);
+ }
+
+ [Fact]
+ public void GetAll_返回所有配置()
+ {
+ var result = _repo.GetAll();
+ Assert.NotNull(result);
+ Assert.True(result.Count >= 2);
+ }
+
+ [Fact]
+ public void UpdateValue_修改配置值_返回true()
+ {
+ var cfg = _repo.GetByKey("test_key");
+ var result = _repo.UpdateValue(cfg.Id, "new_value");
+ Assert.True(result);
+ Assert.Equal("new_value", _repo.GetByKey("test_key").ConfigValue);
+ }
+ }
+}
diff --git a/tests/CncRepository.Tests/TestDb.cs b/tests/CncRepository.Tests/TestDb.cs
new file mode 100644
index 0000000..2b48253
--- /dev/null
+++ b/tests/CncRepository.Tests/TestDb.cs
@@ -0,0 +1,104 @@
+using System;
+using Dapper;
+using MySqlConnector;
+
+namespace CncRepository.Tests
+{
+ ///
+ /// 测试数据库连接辅助类
+ /// 所有测试共享 cnc_test 库,每条测试后清理数据
+ /// 使用 DELETE FROM 代替 TRUNCATE,避免外键约束阻止DDL操作
+ ///
+ public static class TestDb
+ {
+ /// 测试库连接串
+ public static readonly string ConnectionString =
+ "Server=localhost;Database=cnc_test;Uid=root;Pwd=root;Charset=utf8mb4;SslMode=None;";
+
+ ///
+ /// 清空所有测试表(按外键依赖倒序DELETE,然后重置自增)
+ ///
+ public static void TruncateAll()
+ {
+ using (var conn = new MySqlConnection(ConnectionString))
+ {
+ // 按外键依赖倒序:先删子表,再删父表
+ var tables = new[]
+ {
+ "cnc_worker_machine",
+ "cnc_production_segment",
+ "cnc_machine_daily_status",
+ "cnc_worker_daily_summary",
+ "cnc_daily_production",
+ "cnc_production_adjustment",
+ "cnc_alert",
+ "cnc_machine",
+ "cnc_collect_address",
+ "cnc_brand_field_mapping",
+ "cnc_screen_filter",
+ "cnc_screen_config",
+ "cnc_worker",
+ "cnc_sys_config",
+ "cnc_workshop",
+ "cnc_brand"
+ };
+
+ // 禁用外键检查以允许DELETE和重置AUTO_INCREMENT
+ conn.Execute("SET FOREIGN_KEY_CHECKS = 0");
+ foreach (var table in tables)
+ {
+ conn.Execute($"DELETE FROM {table}");
+ conn.Execute($"ALTER TABLE {table} AUTO_INCREMENT = 1");
+ }
+ conn.Execute("SET FOREIGN_KEY_CHECKS = 1");
+ }
+
+ // 重新插入种子数据
+ SeedData();
+ }
+
+ ///
+ /// 插入基础种子数据
+ ///
+ public static void SeedData()
+ {
+ using (var conn = new MySqlConnection(ConnectionString))
+ {
+ // 品牌
+ conn.Execute(@"INSERT IGNORE INTO cnc_brand (id, brand_name, device_field, tags_path, is_enabled, created_at, updated_at)
+ VALUES (1, 'FANUC', 'device', 'tags', 1, NOW(), NOW())");
+
+ // 车间
+ conn.Execute(@"INSERT IGNORE INTO cnc_workshop (id, name, sort_order, is_enabled, created_at, updated_at)
+ VALUES (1, 'A栋', 1, 1, NOW(), NOW()), (2, 'B栋', 2, 1, NOW(), NOW())");
+
+ // 系统配置(admin账号)
+ conn.Execute(@"INSERT IGNORE INTO cnc_sys_config (config_key, config_value, value_type, description, updated_at)
+ VALUES ('admin_username', 'admin', 'string', '管理员用户名', NOW()),
+ ('admin_password_hash', '$2a$11$dummyhashfortesting', 'string', '管理员密码哈希', NOW())");
+ }
+ }
+
+ ///
+ /// 执行SQL并返回受影响行数
+ ///
+ public static int Execute(string sql, object param = null)
+ {
+ using (var conn = new MySqlConnection(ConnectionString))
+ {
+ return conn.Execute(sql, param);
+ }
+ }
+
+ ///
+ /// 查询单个值
+ ///
+ public static T QuerySingle(string sql, object param = null)
+ {
+ using (var conn = new MySqlConnection(ConnectionString))
+ {
+ return conn.QuerySingle(sql, param);
+ }
+ }
+ }
+}
diff --git a/tests/CncRepository.Tests/WorkshopRepositoryTests.cs b/tests/CncRepository.Tests/WorkshopRepositoryTests.cs
new file mode 100644
index 0000000..925fc19
--- /dev/null
+++ b/tests/CncRepository.Tests/WorkshopRepositoryTests.cs
@@ -0,0 +1,132 @@
+using System;
+using System.Linq;
+using CncModels.Dto;
+using CncModels.Dto.Settings;
+using CncModels.Entity;
+using CncRepository.Impl;
+using Xunit;
+
+namespace CncRepository.Tests
+{
+ ///
+ /// 车间仓储测试
+ ///
+ [Collection("Database")]
+ public class WorkshopRepositoryTests : IDisposable
+ {
+ private readonly WorkshopRepository _repo;
+
+ public WorkshopRepositoryTests()
+ {
+ _repo = new WorkshopRepository(TestDb.ConnectionString);
+ TestDb.TruncateAll();
+ }
+
+ public void Dispose()
+ {
+ TestDb.TruncateAll();
+ }
+
+ [Fact]
+ public void GetAll_返回所有车间()
+ {
+ var result = _repo.GetAll();
+ Assert.NotNull(result);
+ Assert.True(result.Count >= 2, "种子数据至少有2个车间");
+ }
+
+ [Fact]
+ public void GetById_存在的ID_返回车间实体()
+ {
+ var result = _repo.GetById(1);
+ Assert.NotNull(result);
+ Assert.Equal("A栋", result.Name);
+ Assert.Equal(1, result.SortOrder);
+ }
+
+ [Fact]
+ public void GetById_不存在的ID_返回null()
+ {
+ var result = _repo.GetById(99999);
+ Assert.Null(result);
+ }
+
+ [Fact]
+ public void GetList_无关键字_返回分页结果()
+ {
+ var result = _repo.GetList(null);
+ Assert.NotNull(result);
+ Assert.True(result.Total >= 2);
+ Assert.NotNull(result.Items);
+ }
+
+ [Fact]
+ public void GetList_关键字搜索_返回匹配结果()
+ {
+ var result = _repo.GetList("A");
+ Assert.True(result.Items.All(w => w.Name.Contains("A")));
+ }
+
+ [Fact]
+ public void Create_新增车间_返回自增ID()
+ {
+ var entity = new Workshop
+ {
+ Name = "C栋",
+ SortOrder = 3,
+ IsEnabled = 1,
+ CreatedAt = DateTime.Now,
+ UpdatedAt = DateTime.Now
+ };
+ var id = _repo.Create(entity);
+ Assert.True(id > 0);
+
+ var created = _repo.GetById(id);
+ Assert.Equal("C栋", created.Name);
+ }
+
+ [Fact]
+ public void Update_修改车间_返回true()
+ {
+ var entity = _repo.GetById(1);
+ entity.Name = "A栋-修改";
+ entity.UpdatedAt = DateTime.Now;
+ var result = _repo.Update(entity);
+ Assert.True(result);
+
+ var updated = _repo.GetById(1);
+ Assert.Equal("A栋-修改", updated.Name);
+ }
+
+ [Fact]
+ public void Delete_存在的ID_返回true()
+ {
+ // 先插入一个独立的车间
+ var id = _repo.Create(new Workshop
+ {
+ Name = "待删除", SortOrder = 99, IsEnabled = 1,
+ CreatedAt = DateTime.Now, UpdatedAt = DateTime.Now
+ });
+ var result = _repo.Delete(id);
+ Assert.True(result);
+ Assert.Null(_repo.GetById(id));
+ }
+
+ [Fact]
+ public void ToggleEnabled_切换启用状态()
+ {
+ var before = _repo.GetById(1);
+ var beforeState = before.IsEnabled;
+ _repo.ToggleEnabled(1);
+ var after = _repo.GetById(1);
+ Assert.NotEqual(beforeState, after.IsEnabled);
+ }
+
+ [Fact]
+ public void GetMachineCount_无机床_返回0()
+ {
+ var count = _repo.GetMachineCount(1);
+ Assert.Equal(0, count);
+ }
+ }
+}