diff --git a/src/CncRepository/Impl/DailyProductionRepository.cs b/src/CncRepository/Impl/DailyProductionRepository.cs index 25d7db1..fb6dc35 100644 --- a/src/CncRepository/Impl/DailyProductionRepository.cs +++ b/src/CncRepository/Impl/DailyProductionRepository.cs @@ -178,10 +178,11 @@ namespace CncRepository.Impl var orderBy = string.Equals(sortOrder, "asc", StringComparison.OrdinalIgnoreCase) ? "ASC" : "DESC"; using (var conn = CreateConnection()) { - string sql = $@"SELECT w.name AS WorkerName, COUNT(DISTINCT dp.machine_id) AS MachineCount, COUNT(DISTINCT dp.program_name) AS ProgramCount, COALESCE(SUM(dp.end_total_count - dp.base_total_count), 0) AS TotalQuantity FROM cnc_worker w LEFT JOIN cnc_daily_production dp ON dp.worker_id = w.id AND dp.production_date BETWEEN @Start AND @End AND dp.end_total_count > dp.base_total_count GROUP BY w.id, w.name ORDER BY TotalQuantity {orderBy}"; + string sql = $@"SELECT w.name AS WorkerName, COUNT(DISTINCT dp.machine_id) AS MachineCount, COUNT(DISTINCT dp.program_name) AS ProgramCount, COALESCE(SUM(dp.end_total_count - dp.base_total_count), 0) AS TotalQuantity FROM cnc_worker w LEFT JOIN cnc_daily_production dp ON dp.worker_id = w.id AND dp.production_date BETWEEN @Start AND @End AND dp.end_total_count > dp.base_total_count"; var parameters = new DynamicParameters(); parameters.Add("Start", startDate); parameters.Add("End", endDate); - if (workerId.HasValue) { sql += " AND w.id = @WorkerId"; parameters.Add("WorkerId", workerId.Value); } + if (workerId.HasValue) { sql += " WHERE w.id = @WorkerId"; parameters.Add("WorkerId", workerId.Value); } + sql += $" GROUP BY w.id, w.name ORDER BY TotalQuantity {orderBy}"; var items = conn.Query(sql, parameters).ToList(); if (items.Count > 0) { int grandTotal = items.Sum(x => x.TotalQuantity); for (int i = 0; i < items.Count; i++) { items[i].Rank = i + 1; if (grandTotal > 0) items[i].Percentage = Math.Round((decimal)items[i].TotalQuantity / grandTotal * 100, 1); } } return items;