示例#1
0
        public override void StartPacking(MachinePacking packingMachine)
        {
            var packingProcess = Processes
                                 .OfType <ProcessPacking>()
                                 .FirstOrDefault();

            if (packingProcess == null)
            {
                throw new Exception("Order not for PACKING");
            }

            switch (CurrentProcess)
            {
            case ProcessRouting routing:
                if (!routing.EndTime.HasValue)
                {
                    throw new Exception($"Order is currently being routed on Router {routing.MachineRouter.Name}");
                }

                if (!IsRoutingOnly)
                {
                    throw new Exception("Order needs to be PRESSED and CLEANED before packing");
                }

                routing.IsCurrent = false;

                packingProcess.StartTime = DateTime.Now;
                packingProcess.MachineId = packingMachine.Id;
                packingProcess.IsCurrent = true;
                break;

            case ProcessCleaning cleaning:
                if (!cleaning.EndTime.HasValue)
                {
                    throw new Exception($"Order is currently being cleaned on Cleaning Machine {cleaning.MachineCleaning.Name}");
                }

                cleaning.IsCurrent = false;

                packingProcess.StartTime = DateTime.Now;
                packingProcess.MachineId = packingMachine.Id;
                packingProcess.IsCurrent = true;
                break;

            case ProcessPacking packing:
                if (packing.EndTime.HasValue)
                {
                    throw new Exception("Order has already been PACKED");
                }
                break;

            default:
                throw new Exception("Order not valid for PACKING");
            }
        }
示例#2
0
 public abstract void StartPacking(MachinePacking packingMachine);