修复员工产量按workerId筛选SQL语法错误(AND在ORDER BY后)

main
haoliang 1 month ago
parent 77c7c18f76
commit 0cbb829ebf

@ -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<WorkerProductionListItem>(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;

Loading…
Cancel
Save