Files
quote_price/src/main/java/lingtao/net/util/YaJinStickersPrice.java
T
2025-02-20 15:14:38 +08:00

117 lines
3.2 KiB
Java

package lingtao.net.util;
import java.util.ArrayList;
import java.util.List;
import lingtao.net.bean.Product;
/**
* 哑金/哑银不干胶价格
*/
public class YaJinStickersPrice {
int countArr[] = { 500, 1000, 2000, 3000, 4000, 5000, 10000 };
// 根据尺寸计算价格
public List<Product> accountPriceBySize(Double width, Double length, int count, int[] priceArr1, int[] priceArr2,
int[] priceArr3) {
List<Product> list = new ArrayList<Product>();
if ((length <= 6 && width <= 5) || (length <= 5 && width <= 6) || (length <= 10 && width <= 3)
|| (length <= 3 && width <= 10)) {
list = getPrice(count, priceArr1);
} else if ((length <= 8 && width <= 8) || (length <= 10 && width <= 6) || (length <= 6 && width <= 10)) {
list = getPrice(count, priceArr2);
} else if ((length <= 11 && width <= 11) || (length <= 12 && width <= 8) || (length <= 8 && width <= 12)
|| (length <= 20) && (width <= 4) || (width <= 20) && (length <= 4)) {
list = getPrice(count, priceArr3);
} else {
return null;
}
return list;
}
// 6*5cm以下及10*3cm以下
// 6*5cm-8*8cm;10-3cm-10*6cm以内
// 8*8cm-11*11cm;10*6-12*8CM;20*4以内
private List<Product> getPrice(int count, int[] priceArr) {
Product pro = new Product();
List<Product> list = new ArrayList<Product>();
// 数量大于10000
if (count > countArr[countArr.length - 1]) {
pro.setCount(count);
// 10000个的单价*数量
pro.setPrice(Math.ceil(count * priceArr[countArr.length - 1] / countArr[countArr.length - 1]));
list.add(pro);
}
for (int i = 0; i < countArr.length; i++) {
if (countArr[i] < count) {
continue;
}
pro = new Product();
pro.setCount(countArr[i]);
pro.setPrice(Math.ceil(priceArr[i]));
list.add(pro);
}
return list;
}
// 哑金不干胶不带凹凸
public List<Product> getPriceNoAoTu(Double length, Double width, int count) {
double l = 404;
double w = 289;
double price = 0.0;
List<Product> list = new ArrayList<Product>();
Product pro = new Product();
// 换成毫米每边+2
length = length * 10 + 4;
width = width * 10 + 4;
if ((length > l || width > w) && (length > w || width > l))
return null;
// 一张A4纸 大的400*285 能做多少个此类尺寸的不干胶
double max = Math.max(Math.floor(l / length) * Math.floor(w / width),
Math.floor(l / width) * Math.floor(w / length));
// 报的数量需要多少张大纸
int num = (int) Math.ceil(count / max);
if (max <= 20) {
price = 65;
} else if (max <= 50) {
price = 75;
} else if (max <= 100) {
price = 85;
} else if (max <= 200) {
price = 100;
} else if (max <= 300) {
price = 110;
} else {
price = 150;
}
if (max <= 200) {
/*price = price + (num - 1) * 12;
// if (num > 10) {
// price = price + (num - 1) * 10;
// } else {
// price = price + (num - 1) * 20;
// }*/
if(num < 50) {
price = price + (num - 1 ) * 12;
}else if(num <= 100) {
price = price + (num - 1 ) * 10;
}else {
price = price + (num - 1 ) * 6;
}
} else {
if (num > 10) {
price = price + (num - 1) * 10;
} else {
price = price + (num - 1) * 30;
}
}
pro.setCount(count);
pro.setPrice(price);
list.add(pro);
return list;
}
}