Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
            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));
                    }
                }
            }
Ejemplo n.º 3
0
        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);
            }
        }
Ejemplo n.º 4
0
        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);
        }