Пример #1
0
        RemoveCompletedAndDecrementSchedules(
            MazakSchedules mazakData,
            bool DecrementPriorityOnDownload)
        {
            //remove all completed production
            var transSet   = new MazakWriteData();
            var savedParts = new HashSet <string>();

            foreach (var schRow in mazakData.Schedules)
            {
                var newSchRow = schRow.Clone();
                if (schRow.PlanQuantity == schRow.CompleteQuantity)
                {
                    newSchRow.Command = MazakWriteCommand.Delete;
                    transSet.Schedules.Add(newSchRow);
                }
                else
                {
                    savedParts.Add(schRow.PartName);

                    if (DecrementPriorityOnDownload)
                    {
                        newSchRow.Command  = MazakWriteCommand.ScheduleSafeEdit;
                        newSchRow.Priority = Math.Max(newSchRow.Priority - 10, 1);
                        newSchRow.Processes.Clear(); // no edit to processes, just priority
                        transSet.Schedules.Add(newSchRow);
                    }
                }
            }
            return(transSet, savedParts);
        }
Пример #2
0
        public void DeleteCompletedAndDecrementSchedules()
        {
            var schedules = new MazakSchedules()
            {
                Schedules = new[] {
                    new MazakScheduleRow()
                    {
                        Id               = 1,
                        PartName         = "part1:1:1",
                        Comment          = MazakPart.CreateComment("uniq1", new [] { 1 }, false),
                        PlanQuantity     = 15,
                        CompleteQuantity = 15,
                        Priority         = 50,
                        Processes        =
                        {
                            new MazakScheduleProcessRow()
                            {
                                MazakScheduleRowId = 1,
                                FixedMachineFlag   = 1,
                                ProcessNumber      = 1
                            }
                        }
                    },
                    new MazakScheduleRow()
                    {
                        Id               = 2,
                        PartName         = "part2:1:1",
                        Comment          = MazakPart.CreateComment("uniq2", new [] { 1 }, false),
                        PlanQuantity     = 15,
                        CompleteQuantity = 10,
                        Priority         = 50,
                        Processes        =
                        {
                            new MazakScheduleProcessRow()
                            {
                                MazakScheduleRowId      = 1,
                                FixedMachineFlag        = 1,
                                ProcessNumber           = 1,
                                ProcessMaterialQuantity = 3,
                                ProcessExecuteQuantity  = 2
                            }
                        }
                    }
                }
            };

            var(actions, tokeep) = BuildMazakSchedules.RemoveCompletedAndDecrementSchedules(schedules, DecrementPriorityOnDownload: true);

            schedules.Schedules.First().Command = MazakWriteCommand.Delete;
            schedules.Schedules.Skip(1).First().Command  = MazakWriteCommand.ScheduleSafeEdit;
            schedules.Schedules.Skip(1).First().Priority = 40;
            schedules.Schedules.Skip(1).First().Processes.Clear();

            actions.Schedules.Should().BeEquivalentTo(schedules.Schedules);
            actions.Parts.Should().BeEmpty();
            actions.Fixtures.Should().BeEmpty();
            actions.Pallets.Should().BeEmpty();

            tokeep.Should().BeEquivalentTo(new[] { "part2:1:1" });
        }