public class Part {
private String nplatPrice;
private String estiPrice;
//get..和set..
...
}
再下面写一个集合循环递归方法,然后调用。
public class partServiceImpl implements partService {
public String importPrice(List<Part> partList,String nplatPrice) throws Exception {
String quotedPrice ="";
Double dNplatPrice= Double.parseDouble(nplatPrice);
Part part = new Part();
//递归调用最终的价格
if(partList.isEmpty()) {
log.info("partList数据为空!");
try{
part.setNplatPrice(dNplatPrice);
}catch (Exception e) {
part.setNplatPrice(new BigDecimal(0).setScale(0, BigDecimal.ROUND_DOWN).doubleValue());
}
} else {
int length = partList.size();
Double price = price(length, dNplatPrice, partList);
nplatPrice = new BigDecimal(price).setScale(0, BigDecimal.ROUND_DOWN).toString();
log.info("最终的上报数据为:"+nplatPrice);
try{
part.setNplatPrice(price);
}catch (Exception e) {
part.setNplatPrice(new BigDecimal(0).setScale(0, BigDecimal.ROUND_DOWN).doubleValue());
}
}
quotedPrice = (new BigDecimal(part.getNplatPrice()).setScale(0, BigDecimal.ROUND_DOWN)).toString();
return quotedPrice;
}
/**
* 递归最终的价----集合循环递归
* @param n 集合为个数
* @param nplatPrice 为当前的价
* @param partList 前面顺序储存的集合数据
* @return
*/
public Double price(int n,Double nplatPrice,List<Part> partList){
if(n>=1){
Double oldNplatPrice = partList.get(n-1).getNplatPrice(); //调用的配件表的nplat_price数据;
Double oldEstiPrice = partList.get(n-1).getEstiPrice(); //调用的配件表的esti_price数据;
if(oldEstiPrice==null) {
oldEstiPrice = new BigDecimal(0).setScale(0, BigDecimal.ROUND_DOWN).doubleValue();
}
if(nplatPrice-oldEstiPrice==0){
return price(n-1,oldNplatPrice,partList);
}else{
return nplatPrice;
}
}else{
return nplatPrice;
}
}
}