Предположим, у меня есть две таблицы Соглашения и Заказы со следующей структурой.
Таблица соглашений
Product_ID Seller next_Supplier SellingPrice
1001 M s1 90
1001 s1 s2 100
1001 s1 s3 105
1001 s1 s4 125
1001 s2 s21 110
1001 s3 s31 120
1001 s4 s41 150
Думайте об этом как о проблеме цепочки поставок, когда на каждом уровне есть разные поставщики, и поставщик возьмет у Производителя М и договорится о передаче продукта поставщику следующего уровня. Таблица соглашений содержит соглашение между различными поставщиками, такие как s1 заключил соглашение о предоставлении продукта s2 за 100 долл. США (поставщик следующего уровня для s1) заключил соглашение о передаче продукта s21 за 110 долл. США. соглашение о передаче продукта s3 и s4 по определенной цене.
Таблица заказов
Product_ID Seller Buyer SellingPrice
1001 s21 c 125
1001 s31 c 150
1001 s41 c 200
Теперь, наконец, поставщик s21 обнаружил покупателя c и продал ему продукт по 125 долларов. Теперь, когда продукт был продан, вам нужно написать код Java о том, как деньги будут распределены среди поставщиков в иерархии. Для Ex - s21 даст 110 долларов s2, а s2 - 100 долларов для s1, а s1, наконец, даст 90 долларов для производителя M.
Я написал код для этого, но это итеративное решение Ниже приведен код.
List<Agreement> agreementList; // [select* from Agreement]
List<Order> ordersList; // [select* from Orders]
for(Order o : ordersList){
String seller = o.Seller;
for(Agreement a : agreementList) {
if(a.next_Supplier == seller) {
System.out.println(a.next_Supplier + " will give " + a.sellingprice + " to " + a.seller);
seller = a.Seller;
}
}
}
Я хочу решить это рекурсивно. Но не знаю, как этого добиться. Любое решение будет высоко оценено.