private int CountCompletedOrMachiningStarted(MazakScheduleRow sch) { var cnt = sch.CompleteQuantity; foreach (var schProcRow in sch.Processes) { cnt += schProcRow.ProcessBadQuantity + schProcRow.ProcessExecuteQuantity; if (schProcRow.ProcessNumber > 1) { cnt += schProcRow.ProcessMaterialQuantity; } } return(cnt); }
public MazakSchedule(HoldPattern parent, MazakScheduleRow s) { _parent = parent; _schRow = s; if (MazakPart.IsSailPart(_schRow.PartName)) { MazakPart.ParseComment(_schRow.Comment, out string unique, out var paths, out var manual); var job = parent.jobDB.LoadJob(unique); if (job != null) { HoldEntireJob = job.HoldEntireJob; HoldMachining = job.HoldMachining(process: 1, path: paths.PathForProc(proc: 1)); } } }
private static void AddCompletedToJob(MazakScheduleRow schRow, InProcessJob job, MazakPart.IProcToPath procToPath) { job.SetCompleted(job.NumProcesses, procToPath.PathForProc(job.NumProcesses), schRow.CompleteQuantity); //in-proc and material for each process var counts = new Dictionary <int, int>(); //key is process, value is in-proc + mat foreach (var schProcRow in schRow.Processes) { counts[schProcRow.ProcessNumber] = schProcRow.ProcessBadQuantity + schProcRow.ProcessExecuteQuantity + schProcRow.ProcessMaterialQuantity; } for (int proc = 1; proc < job.NumProcesses; proc++) { var cnt = counts .Where(x => x.Key > proc) .Select(x => x.Value) .Sum(); job.SetCompleted(proc, procToPath.PathForProc(proc), cnt + schRow.CompleteQuantity); } }
private static void SchedulePart( MazakWriteData transSet, int SchID, string mazakPartName, string mazakComment, int numProcess, JobPlan part, int proc1path, int earlierConflicts, bool UseStartingOffsetForDueDate) { var newSchRow = new MazakScheduleRow(); newSchRow.Command = MazakWriteCommand.Add; newSchRow.Id = SchID; newSchRow.PartName = mazakPartName; newSchRow.PlanQuantity = part.GetPlannedCyclesOnFirstProcess(proc1path); newSchRow.CompleteQuantity = 0; newSchRow.FixForMachine = 0; newSchRow.MissingFixture = 0; newSchRow.MissingProgram = 0; newSchRow.MissingTool = 0; newSchRow.MixScheduleID = 0; newSchRow.ProcessingPriority = 0; newSchRow.Comment = mazakComment; if (UseStartingOffsetForDueDate) { if (part.GetSimulatedStartingTimeUTC(1, proc1path) != DateTime.MinValue) { var start = part.GetSimulatedStartingTimeUTC(1, proc1path); newSchRow.DueDate = start.ToLocalTime().Date; newSchRow.Priority = 91 + Math.Min(earlierConflicts, 9); } else { newSchRow.DueDate = DateTime.Today; newSchRow.Priority = 91; } } else { newSchRow.Priority = 75; newSchRow.DueDate = DateTime.Parse("1/1/2008 12:00:00 AM"); } bool entireHold = false; if (part.HoldEntireJob != null) { entireHold = part.HoldEntireJob.IsJobOnHold; } bool machiningHold = false; if (part.HoldMachining(1, proc1path) != null) { machiningHold = part.HoldMachining(1, proc1path).IsJobOnHold; } newSchRow.HoldMode = (int)HoldPattern.CalculateHoldMode(entireHold, machiningHold); int matQty = newSchRow.PlanQuantity; if (!string.IsNullOrEmpty(part.GetInputQueue(process: 1, path: proc1path))) { matQty = 0; } //need to add all the ScheduleProcess rows for (int i = 1; i <= numProcess; i++) { var newSchProcRow = new MazakScheduleProcessRow(); newSchProcRow.MazakScheduleRowId = SchID; newSchProcRow.ProcessNumber = i; if (i == 1) { newSchProcRow.ProcessMaterialQuantity = matQty; } else { newSchProcRow.ProcessMaterialQuantity = 0; } newSchProcRow.ProcessBadQuantity = 0; newSchProcRow.ProcessExecuteQuantity = 0; newSchProcRow.ProcessMachine = 0; newSchRow.Processes.Add(newSchProcRow); } transSet.Schedules.Add(newSchRow); }