我正在开发一个 xpages 应用程序,我想在其中显示每个客户端总交易量的前 5 名。
我有一个购买任意数量产品的客户列表。我想根据购买的产品总量对客户进行分类。 我使用按客户分类的“Top5” View 。
我使用文档集合来计算客户的总数量。
我可以按降序对数量进行分类,并选择前 5 个。但这不允许我从 View 中检索产品和客户的名称。
var cls3 = @DbColumn("","Top5",1);
sessionScope.put("clientsList3",cls3);
var db=session.getCurrentDatabase();
var view7=db.getView("Top5")
var dataa =[] ;
var top =[];
for(var r = 0; r < clientsList3.length; r++){
var Cli = @Trim(@Text(clientsList3[r]));
var VolumeTotal :NotesDocumentCollection = view7.getAllDocumentsByKey(Cli);
var vola = 0;
var array = new Array();
var prod = "";
if (VolumeTotal == 0) {array = 0;}
else{
var doca = VolumeTotal.getFirstDocument();
while (doca != null)
{vola = vola + doca.getItemValueInteger("TotalVolume_Intermediate");
doca = VolumeTotal.getNextDocument(doca);
}
array.push(vola);
}
dataa[r] = array;
dataa.sort(function(a, b) {return b - a;});
top = dataa.slice(0,5);
}
return dataa;
}
最佳答案
您确实想为此使用托管 bean,它使很多事情变得更加容易。您创建一个自定义类来为您执行比较操作:
public Class TopSeller implements Comparable {
String product;
public String getProduct() {
return this.product;
}
public void setProduct(String product) {
this.product = product;
}
// Add properties as needed
public int compareTo(Topseller theOther) {
// Your ranking code goes here
}
}
在该类中,您的compareTo函数确实提供了排名和排序。那么你只需要:
Set<TopSeller> allSeller = new TreeSet<TopSeller>();
...你就完成了。 Treeset 将提供准备好的排序结果,您只需将其绑定(bind)到 5 行的重复即可显示
关于javascript - 按 xpages 中的总值对文档集合进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22456735/