stringsql=@"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";
stringsql=@"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";
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";
stringsql=@"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";
stringsql=@"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";
stringsql=@"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";
stringsql=@"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";
if(workerId.HasValue){sql+=" AND w.id = @WorkerId";parameters.Add("WorkerId",workerId.Value);}
@ -184,7 +184,7 @@ namespace CncRepository.Impl
{
using(varconn=CreateConnection())
{
stringsql=@"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";
stringsql=@"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";
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";