修复产量为0时子页面图表和明细仍显示无意义数据

main
haoliang 1 month ago
parent 3fe20a24a2
commit 60dc26a26f

@ -120,7 +120,7 @@ namespace CncRepository.Impl
{
using (var conn = CreateConnection())
{
string sql = @"SELECT COALESCE(SUM(dp.end_total_count - dp.base_total_count), 0) AS TotalQuantity, COUNT(DISTINCT dp.machine_id) AS RunningMachineCount FROM cnc_daily_production dp LEFT JOIN cnc_machine m ON dp.machine_id = m.id WHERE dp.production_date BETWEEN @Start AND @End";
string sql = @"SELECT COALESCE(SUM(dp.end_total_count - dp.base_total_count), 0) AS TotalQuantity, COUNT(DISTINCT dp.machine_id) AS RunningMachineCount FROM cnc_daily_production dp LEFT JOIN cnc_machine m ON dp.machine_id = m.id WHERE 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 (workshopId.HasValue) { sql += " AND m.workshop_id = @WorkshopId"; parameters.Add("WorkshopId", workshopId.Value); }
@ -144,7 +144,7 @@ namespace CncRepository.Impl
parameters.Add("Start", startDate); parameters.Add("End", endDate);
if (workshopId.HasValue) { sql += " AND m.workshop_id = @WorkshopId"; parameters.Add("WorkshopId", workshopId.Value); }
if (machineId.HasValue) { sql += " AND dp.machine_id = @MachineId"; parameters.Add("MachineId", machineId.Value); }
sql += " GROUP BY dp.machine_id, dp.program_name, m.name ORDER BY TotalQuantity DESC";
sql += " AND (dp.end_total_count > dp.base_total_count) GROUP BY dp.machine_id, dp.program_name, m.name HAVING SUM(dp.end_total_count - dp.base_total_count) > 0 ORDER BY TotalQuantity DESC";
var items = conn.Query<MachineProductionListItem>(sql, parameters).ToList();
for (int i = 0; i < items.Count; i++) { items[i].Rank = i + 1; items[i].DayStatus = items[i].DayStatus ?? ""; }
return items;
@ -155,7 +155,7 @@ namespace CncRepository.Impl
{
using (var conn = CreateConnection())
{
string sql = @"SELECT COALESCE(SUM(dp.end_total_count - dp.base_total_count), 0) AS TotalQuantity, COUNT(DISTINCT w.id) AS ActiveWorkerCount FROM cnc_daily_production dp JOIN cnc_worker_machine wm ON dp.machine_id = wm.machine_id JOIN cnc_worker w ON wm.worker_id = w.id WHERE dp.production_date BETWEEN @Start AND @End";
string sql = @"SELECT COALESCE(SUM(dp.end_total_count - dp.base_total_count), 0) AS TotalQuantity, COUNT(DISTINCT w.id) AS ActiveWorkerCount FROM cnc_daily_production dp JOIN cnc_worker_machine wm ON dp.machine_id = wm.machine_id JOIN cnc_worker w ON wm.worker_id = w.id WHERE dp.production_date BETWEEN @Start AND @End AND dp.end_total_count > dp.base_total_count";
var result = conn.QuerySingleOrDefault<WorkerProductionSummaryResponse>(sql, new { Start = startDate, End = endDate });
if (result == null) return new WorkerProductionSummaryResponse();
if (result.ActiveWorkerCount > 0) result.AvgPerWorker = Math.Round((decimal)result.TotalQuantity / result.ActiveWorkerCount, 1);
@ -169,7 +169,7 @@ namespace CncRepository.Impl
{
using (var conn = CreateConnection())
{
string sql = @"SELECT w.name AS WorkerName, COUNT(DISTINCT wm.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 JOIN cnc_worker_machine wm ON wm.worker_id = w.id LEFT JOIN cnc_daily_production dp ON dp.machine_id = wm.machine_id AND dp.production_date BETWEEN @Start AND @End";
string sql = @"SELECT w.name AS WorkerName, COUNT(DISTINCT wm.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 JOIN cnc_worker_machine wm ON wm.worker_id = w.id LEFT JOIN cnc_daily_production dp ON dp.machine_id = wm.machine_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); }
@ -184,7 +184,7 @@ namespace CncRepository.Impl
{
using (var conn = CreateConnection())
{
string sql = @"SELECT COALESCE(SUM(dp.end_total_count - dp.base_total_count), 0) AS TotalQuantity, COUNT(DISTINCT dp.program_name) AS RunningProgramCount FROM cnc_daily_production dp LEFT JOIN cnc_machine m ON dp.machine_id = m.id WHERE dp.production_date BETWEEN @Start AND @End";
string sql = @"SELECT COALESCE(SUM(dp.end_total_count - dp.base_total_count), 0) AS TotalQuantity, COUNT(DISTINCT dp.program_name) AS RunningProgramCount FROM cnc_daily_production dp LEFT JOIN cnc_machine m ON dp.machine_id = m.id WHERE 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 (workshopId.HasValue) { sql += " AND m.workshop_id = @WorkshopId"; parameters.Add("WorkshopId", workshopId.Value); }
@ -207,7 +207,7 @@ namespace CncRepository.Impl
var parameters = new DynamicParameters();
parameters.Add("Start", startDate); parameters.Add("End", endDate);
if (!string.IsNullOrWhiteSpace(programName)) { sql += " AND dp.program_name = @ProgramName"; parameters.Add("ProgramName", programName); }
sql += " GROUP BY dp.program_name ORDER BY TotalQuantity DESC";
sql += " AND (dp.end_total_count > dp.base_total_count) GROUP BY dp.program_name HAVING SUM(dp.end_total_count - dp.base_total_count) > 0 ORDER BY TotalQuantity DESC";
var items = conn.Query<ProgramProductionListItem>(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 (items[i].MachineCount > 0) items[i].AvgPerMachine = Math.Round((decimal)items[i].TotalQuantity / items[i].MachineCount, 1); if (grandTotal > 0) items[i].Percentage = Math.Round((decimal)items[i].TotalQuantity / grandTotal * 100, 1); } }
return items;

Loading…
Cancel
Save