当前位置:   article > 正文

包裹分箱 算法

分箱算法 +1
包裹 分箱简单算法 算出临界值 分箱数量加1
/**
*预估分箱算法
* @return
*/
  private Tuple2<BigDecimal,Integer>  calculateFareAndNums(List<BigDecimal> list,PxChannelPrice price){        if(list==null||list.isEmpty()){            Tuple2.of(BigDecimal.ZERO,0);        }        Collections.sort((List<BigDecimal>) list, new Comparator<BigDecimal>() {            @Override            public int compare(BigDecimal o1, BigDecimal o2) {                return o2.compareTo(o1);            }        });        BigDecimal taxSum = BigDecimal.ZERO;//税费        BigDecimal taxLmt = new BigDecimal(50);//税费限制        int  bagCnt = 0;//分包数量        for (int i = 0;i<list.size();i++){            BigDecimal decimal = list.get(i);            if(decimal.compareTo(taxLmt)>-1){                bagCnt++;            }else {                if(taxSum.add(decimal).compareTo(taxLmt)>-1){                    bagCnt++;                    taxSum = decimal;                }else{                    taxSum = taxSum.add(decimal);                }            }        }        if(taxSum.compareTo(BigDecimal.ZERO)==1){            bagCnt++;        }        return Tuple2.of(new BigDecimal(bagCnt).multiply(price.getInitialWeightPrice()),bagCnt); }public class Tuple2<V1, V2> {    private final V1 v1;    private final V2 v2;    public Tuple2(V1 t1, V2 t2) {        this.v1 = t1;        this.v2 = t2;    }    public static <V1, V2> Tuple2<V1, V2> of(V1 v1, V2 v2) {        return new Tuple2<>(v1, v2);    }    public V1 _1() {        return v1;    }    public V2 _2() {        return v2;    }    @Override    public String toString() {        return "(" + v1 + "," + v2 + ')';    }    @Override    public boolean equals(Object o) {        if (this == o)            return true;        if (o == null || getClass() != o.getClass())            return false;        Tuple2<?, ?> tuple2 = (Tuple2<?, ?>) o;        if (!v1.equals(tuple2.v1))            return false;        return v2.equals(tuple2.v2);    }    @Override    public int hashCode() {        int result = v1.hashCode();        result = 31 * result + v2.hashCode();        return result;    }}
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/木道寻08/article/detail/995584
推荐阅读
相关标签
  

闽ICP备14008679号