|
|
|
|
@ -137,7 +137,11 @@ namespace CncRepository.Impl.Dashboard
|
|
|
|
|
var sql = @"
|
|
|
|
|
SELECT m.id AS MachineId,
|
|
|
|
|
m.name AS MachineName,
|
|
|
|
|
COALESCE(SUM(ad.day_quantity), 0) AS Quantity
|
|
|
|
|
COALESCE(SUM(ad.day_quantity), 0) AS Quantity,
|
|
|
|
|
CAST(m.is_online AS SIGNED) AS Status,
|
|
|
|
|
(SELECT seg.program_name FROM cnc_production_segment seg
|
|
|
|
|
WHERE seg.machine_id = m.id AND seg.production_date = CURDATE()
|
|
|
|
|
ORDER BY seg.id DESC LIMIT 1) AS Program
|
|
|
|
|
FROM cnc_machine m
|
|
|
|
|
LEFT JOIN (
|
|
|
|
|
SELECT machine_id, production_date, day_quantity FROM (
|
|
|
|
|
@ -158,10 +162,13 @@ namespace CncRepository.Impl.Dashboard
|
|
|
|
|
)
|
|
|
|
|
GROUP BY seg.machine_id, seg.production_date
|
|
|
|
|
) ad ON ad.machine_id = m.id
|
|
|
|
|
GROUP BY m.id, m.name
|
|
|
|
|
GROUP BY m.id, m.name, m.is_online
|
|
|
|
|
ORDER BY Quantity DESC
|
|
|
|
|
LIMIT @Top";
|
|
|
|
|
return conn.Query<MachineRankResponse>(sql, new { StartDate = startDate, EndDate = endDate, Top = top }).ToList();
|
|
|
|
|
var rows = conn.Query<MachineRankResponse>(sql, new { StartDate = startDate, EndDate = endDate, Top = top }).ToList();
|
|
|
|
|
// 填充排名
|
|
|
|
|
for (int i = 0; i < rows.Count; i++) rows[i].Rank = i + 1;
|
|
|
|
|
return rows;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@ -172,7 +179,8 @@ namespace CncRepository.Impl.Dashboard
|
|
|
|
|
{
|
|
|
|
|
var sql = @"
|
|
|
|
|
SELECT w.name AS WorkerName,
|
|
|
|
|
COALESCE(SUM(ad.day_quantity), 0) AS Quantity
|
|
|
|
|
COUNT(DISTINCT wm.machine_id) AS MachineCount,
|
|
|
|
|
COALESCE(SUM(ad.day_quantity), 0) AS TotalQuantity
|
|
|
|
|
FROM cnc_worker w
|
|
|
|
|
LEFT JOIN cnc_worker_machine wm ON wm.worker_id = w.id
|
|
|
|
|
LEFT JOIN (
|
|
|
|
|
@ -195,9 +203,12 @@ namespace CncRepository.Impl.Dashboard
|
|
|
|
|
GROUP BY seg.machine_id, seg.production_date
|
|
|
|
|
) ad ON ad.machine_id = wm.machine_id
|
|
|
|
|
GROUP BY w.id, w.name
|
|
|
|
|
ORDER BY Quantity DESC
|
|
|
|
|
ORDER BY TotalQuantity DESC
|
|
|
|
|
LIMIT @Top";
|
|
|
|
|
return conn.Query<WorkerRankResponse>(sql, new { StartDate = startDate, EndDate = endDate, Top = top }).ToList();
|
|
|
|
|
var rows = conn.Query<WorkerRankResponse>(sql, new { StartDate = startDate, EndDate = endDate, Top = top }).ToList();
|
|
|
|
|
// 填充排名
|
|
|
|
|
for (int i = 0; i < rows.Count; i++) rows[i].Rank = i + 1;
|
|
|
|
|
return rows;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@ -232,13 +243,15 @@ namespace CncRepository.Impl.Dashboard
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>机床状态分布(示意性实现,需要根据实际状态表结构调整)</summary>
|
|
|
|
|
public List<dynamic> GetMachineStatusDistribution()
|
|
|
|
|
/// <summary>机床状态分布</summary>
|
|
|
|
|
public object GetMachineStatusDistribution()
|
|
|
|
|
{
|
|
|
|
|
using (var conn = CreateConnection())
|
|
|
|
|
{
|
|
|
|
|
var sql = @"SELECT last_device_status AS Status, COUNT(1) AS Count FROM cnc_machine GROUP BY last_device_status";
|
|
|
|
|
return conn.Query(sql).ToList();
|
|
|
|
|
var online = conn.ExecuteScalar<int>("SELECT COUNT(1) FROM cnc_machine WHERE is_enabled = 1 AND is_online = 1");
|
|
|
|
|
var offline = conn.ExecuteScalar<int>("SELECT COUNT(1) FROM cnc_machine WHERE is_enabled = 1 AND is_online = 0");
|
|
|
|
|
var disabled = conn.ExecuteScalar<int>("SELECT COUNT(1) FROM cnc_machine WHERE is_enabled = 0");
|
|
|
|
|
return new { online, offline, disabled };
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@ -247,8 +260,12 @@ namespace CncRepository.Impl.Dashboard
|
|
|
|
|
{
|
|
|
|
|
using (var conn = CreateConnection())
|
|
|
|
|
{
|
|
|
|
|
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 等字段
|
|
|
|
|
var sql = @"SELECT a.id AS Id, a.created_at AS CreatedAt, a.alert_type AS AlertType,
|
|
|
|
|
COALESCE(m.name, '') AS MachineName, a.title AS Title,
|
|
|
|
|
CAST(a.is_resolved AS SIGNED) AS IsResolved
|
|
|
|
|
FROM cnc_alert a
|
|
|
|
|
LEFT JOIN cnc_machine m ON m.id = a.machine_id
|
|
|
|
|
ORDER BY a.created_at DESC LIMIT @Count";
|
|
|
|
|
return conn.Query<AlertListItem>(sql, new { Count = count }).ToList();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|