package policy.price; import java.math.BigDecimal; import java.util.ArrayList; import java.util.List; public class PriceSelector { private int priorityNo; private List priceList; public PriceSelector() { priceList = new ArrayList(); 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 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()); } } }