Intershop 如何访问单个计算产品线项目的所有子组计算项目

Intershop 如何访问单个计算产品线项目的所有子组计算项目,intershop,Intershop,我的规则集中有两个自定义的计算规则,一个用于单个物价指数价格,另一个用于总计: 在“calculatePostpaidPrices”中,我创建了多个ComputedDurationItem(自定义定义的类),它们作为子组存储在单个ComputedProductLineItem上。 这种关系可以在这里观察到: 现在,在第二条规则“calculatePostpaidTotals”(左侧)中,我试图从第一条规则中获取单个PLI的所有持续时间项目,现在该怎么做(右侧是运行良好的计算结果视图): 请

我的规则集中有两个自定义的计算规则,一个用于单个物价指数价格,另一个用于总计:

在“calculatePostpaidPrices”中,我创建了多个ComputedDurationItem(自定义定义的类),它们作为子组存储在单个ComputedProductLineItem上。 这种关系可以在这里观察到:

现在,在第二条规则“calculatePostpaidTotals”(左侧)中,我试图从第一条规则中获取单个PLI的所有持续时间项目,现在该怎么做(右侧是运行良好的计算结果视图):

请注意,该子组与本食谱中的职责配方子组相同:
但是,本食谱中没有关于如何在下一个计算规则中检索职责(属于子组)的示例。

在查看了一些内置平台计算规则后,我求助于创建以下方法:

 private Map<ComputedProductLineItem, Collection<ComputedDurationItem>> mapDurationItemsToComputedPLIs(
CalculationRule<ComputedItem, ComputedItem, LineItemCtnr>.Input input) {
Map<ComputedProductLineItem, Collection<ComputedDurationItem>> durationsMap = new HashMap<>();
Collection<ComputedDurationItem> durationItems = input.getItems(durationsSubGroup);

for (ComputedDurationItem durationItem : durationItems) {
  ComputedProductLineItem parentPLI = input.getItem(this.durationsSubGroup.getParentCell(durationItem));

  if (!durationsMap.containsKey(parentPLI))
    durationsMap.put(parentPLI, new ArrayList<ComputedDurationItem>(1));

  durationsMap.get(parentPLI).add(durationItem);
}

return durationsMap;  
}
private Map durationItemsToComputedPLIS(
计算规则。输入){
Map durationsMap=new HashMap();
Collection durationItems=input.getItems(durationsSubGroup);
for(计算工期项目工期项目:工期项目){
ComputedProductLineItem parentPLI=input.getItem(this.durationsSubGroup.getParentCell(durationItem));
如果(!durationsMap.containsKey(parentPLI))
durationsMap.put(parentPLI,newarraylist(1));
durationsMap.get(parentPLI.add)(durationItem);
}
返回持续时间map;
}
然后我使用创建的映射只获取特定PLI的持续时间项。 基本上,这里的情况是,您无法获取PLI的“子”项,但您可以获取DurationItem的父项或子组中的任何其他项,这些项在该方法中使用