package policy.price;
|
|
import java.math.BigDecimal;
|
import java.util.ArrayList;
|
import java.util.List;
|
|
public class PriceSelector {
|
|
private int priorityNo;
|
private List<PriceLine> priceList;
|
|
|
public PriceSelector() {
|
priceList = new ArrayList<PriceLine>();
|
priorityNo = -1;
|
}
|
|
public void loadOne(PriceLine priceLine) {
|
if (priceLine == null) {
|
return;
|
}
|
|
int linePriorityNo = priceLine.getPriorityNo();
|
|
//1. 如果行优先级低于当前优先级, 直接退出
|
if (linePriorityNo < priorityNo) {
|
return;
|
}
|
|
//2. 如果行优先级高于当前优先级,需要清空当前列表,添加行
|
if (linePriorityNo > priorityNo) {
|
priorityNo = linePriorityNo;
|
priceList.clear();
|
}
|
|
priceList.add(priceLine);
|
}
|
|
public List<PriceLine> getPriceList() {
|
return priceList;
|
}
|
|
public BigDecimal getLowerPrice() {
|
int size = priceList.size();
|
|
if (size == 0) {
|
return null;
|
}
|
|
if (size == 1) {
|
BigDecimal result = priceList.get(0).getPrice();
|
return new BigDecimal(result.toString());
|
}
|
else {
|
BigDecimal result = priceList.get(0).getPrice();
|
BigDecimal current = null;
|
|
for (PriceLine line: priceList) {
|
current = line.getPrice();
|
|
if (result.compareTo(current) > 0) {
|
result = current;
|
}
|
}
|
|
return new BigDecimal(result.toString());
|
}
|
}
|
|
}
|