public void AddAll(EntityCollector otherEntityCollector)
        {
            if (otherEntityCollector == null)
            {
                return;
            }
            if (otherEntityCollector._demands.Any())
            {
                _demands.AddAll(otherEntityCollector._demands);
            }

            if (otherEntityCollector._providers.Any())
            {
                _providers.AddAll(otherEntityCollector._providers);
            }

            if (otherEntityCollector._demandToProviderTable.Any())
            {
                _demandToProviderTable.AddAll(otherEntityCollector._demandToProviderTable);
            }

            if (otherEntityCollector._providerToDemandTable.Any())
            {
                _providerToDemandTable.AddAll(otherEntityCollector._providerToDemandTable);
            }
        }
コード例 #2
0
        public Providers ProvidersGetAll()
        {
            Providers providers = new Providers();

            providers.AddAll(_productionOrders);
            providers.AddAll(_purchaseOrderParts);
            providers.AddAll(_stockExchangeProviders);
            return(providers);
        }
        public static void ApplyConfirmations()
        {
            IDbTransactionData dbTransactionData =
                ZppConfiguration.CacheManager.GetDbTransactionData();
            IAggregator aggregator = ZppConfiguration.CacheManager.GetAggregator();

            // ProductionOrder: 3 Zustände siehe DA
            Providers copyOfProductionOrders = new Providers();

            copyOfProductionOrders.AddAll(dbTransactionData.ProductionOrderGetAll());

            foreach (var provider in copyOfProductionOrders)
            {
                ProductionOrder productionOrder = (ProductionOrder)provider;
                State           state           = productionOrder.DetermineProductionOrderState();
                switch (state)
                {
                case State.Created:
                    HandleProductionOrderIsInStateCreated(productionOrder, aggregator,
                                                          dbTransactionData);
                    break;

                case State.InProgress:
                    HandleProductionOrderIsInProgress();
                    break;

                case State.Finished:
                    HandleProductionOrderIsFinished(productionOrder, aggregator,
                                                    dbTransactionData);
                    break;

                default: throw new MrpRunException("This state is not expected.");
                }
            }


            // Entferne alle Pfeile auf StockExchangeProvider zeigend
            // Entferne alle Pfeile von StockExchangeDemands weg zeigend
            //  --> übrig beleiben Pfeile zwischen StockExchangeProvider und StockExchangeDemands
            RemoveArrowsBelowStockExchangeDemandsAndAboveStockExchangeProviders(dbTransactionData,
                                                                                aggregator);

            /*
             *  foreach sed in beendeten und geschlossenen StockExchangeDemands
             *      Archiviere sed und seine parents (StockExchangeProvider)
             *        und die Pfeile dazwischen
             */
            ArchiveClosedStockExchangeDemandsAndItsParents(dbTransactionData, aggregator);

            // this can be the case of stockExchangeProvider had multiple child stockExchangeDemands
            ArchiveStockExchangeProvidersWithoutChilds(dbTransactionData, aggregator);

            ArchiveFinishedCustomerOrderPartsAndDeleteTheirArrows(dbTransactionData, aggregator);
            ArchiveFinishedPurchaseOrderPartsAndDeleteTheirArrows(dbTransactionData, aggregator);

            ArchivedCustomerOrdersWithoutCustomerOrderParts();
            ArchivedPurchaseOrdersWithoutPurchaseOrderParts();
        }
        private static void ArchiveStockExchangeProvidersWithoutChilds(
            IDbTransactionData dbTransactionData, IAggregator aggregator)
        {
            Providers copyOfStockExchangeProviders = new Providers();

            copyOfStockExchangeProviders.AddAll(dbTransactionData.StockExchangeProvidersGetAll());
            foreach (var stockExchangeProvider in copyOfStockExchangeProviders)
            {
                Demands stockExchangeDemands =
                    aggregator.GetAllChildDemandsOf(stockExchangeProvider);
                if (stockExchangeDemands == null || stockExchangeDemands.Any() == false)
                {
                    ArchiveDemandOrProvider(stockExchangeProvider, dbTransactionData, aggregator,
                                            false);
                }
            }
        }
        private static void ArchiveFinishedPurchaseOrderPartsAndDeleteTheirArrows(
            IDbTransactionData dbTransactionData, IAggregator aggregator)
        {
            Providers copyOfPurchaseOrderParts = new Providers();

            copyOfPurchaseOrderParts.AddAll(dbTransactionData.PurchaseOrderPartGetAll());
            foreach (var purchaseOrderPart in copyOfPurchaseOrderParts)
            {
                if (purchaseOrderPart.IsFinished())
                {
                    // delete arrow
                    List <ILinkDemandAndProvider> arrows =
                        aggregator.GetArrowsFrom(purchaseOrderPart);
                    if (arrows != null)
                    {
                        dbTransactionData.DeleteAllFrom(arrows);
                    }

                    // archive purchaseOrderPart
                    ArchiveDemandOrProvider(purchaseOrderPart, dbTransactionData, aggregator,
                                            false);
                }
            }
        }