新增卡片工艺

This commit is contained in:
2026-04-23 15:13:55 +08:00
parent 5a713e8160
commit 3da5fa97a8
5 changed files with 197 additions and 45 deletions
@@ -1140,6 +1140,9 @@ public class ProductService {
if (craft_list.contains("内部模切")) {
carft_price += 15 * dto.getN_mq_num();
}
if (craft_list.contains("配印章")) {
carft_price += 10 * dto.getPo_number();
}
//腰封的模切费单独计算
product.setPrice(Math.ceil((product.getPrice() + carft_price) * number + Math.max(Math.ceil(moqiePrice * product.getCount() * number), moqiePrice > 0 ? 55 : 0)));
product.setWeight(df.format(number * length / 100 * width / 100 * product.getCount() * 0.3 * 0.86));
@@ -4272,21 +4275,7 @@ public class ProductService {
}
return priceList;
case "数码PVC":
// 价格按照大纸裁
priceList = ZsPrice.getSmPrice(count, length, width, priceList, number, dto.getCraft(), dto, role);
for (Product product : priceList) {
if (dto.getKindValue().equals("1") || dto.getKindValue().equals("2") || dto.getKindValue().equals("3")) {
wei = 0.38;
} else if (dto.getKindValue().equals("4") || dto.getKindValue().equals("5") || dto.getKindValue().equals("6")) {
wei = 0.84;
} else if (dto.getKindValue().equals("11") || dto.getKindValue().equals("12") || dto.getKindValue().equals("13")) {
wei = 0.76;
} else {
wei = 1;
}
product.setWeight(df.format(wei * length * width * product.getCount() / 10000 * number * 1.3));
}
return priceList;
return getsmPVCPrice(dto, width, length, role);
case "班旗":
priceList = new BqPrice().getPrice(count, length, priceList, number, dto.getCraftShua(), dto.getCraft());
List<String> craLists = !StringUtils.isEmpty(dto.getCraft()) ? Arrays.asList(dto.getCraft()) : new ArrayList<>();
@@ -4381,6 +4370,33 @@ public class ProductService {
return null;
}
private List<Product> getsmPVCPrice(Product dto, Double width, Double length, String role) {
List<String> craft_list = dto.getCraft() == null ? new ArrayList<>() : Arrays.asList(dto.getCraft());
List<Product> priceList = new ArrayList<>();
int count = dto.getCount();
int number = dto.getNumber();
double wei = 0;
// 价格按照大纸裁
priceList = ZsPrice.getSmPrice(count, length, width, priceList, number, dto.getCraft(), dto, role);
for (Product product : priceList) {
if (craft_list.contains("菜品夹")) {
product.setPrice(Math.ceil(product.getPrice() + dto.getStickNum() * 2));
}
if (dto.getKindValue().equals("1") || dto.getKindValue().equals("2") || dto.getKindValue().equals("3")) {
wei = 0.38;
} else if (dto.getKindValue().equals("4") || dto.getKindValue().equals("5") || dto.getKindValue().equals("6")) {
wei = 0.84;
} else if (dto.getKindValue().equals("11") || dto.getKindValue().equals("12") || dto.getKindValue().equals("13")) {
wei = 0.76;
} else {
wei = 1;
}
product.setWeight(df.format(wei * length * width * product.getCount() / 10000 * number * 1.3));
}
return priceList;
}
private List<Product> getYaFenPrice(Product dto, Double width, Double length) {
List<String> craft_list = dto.getCraft() == null ? new ArrayList<>() : Arrays.asList(dto.getCraft());
List<Product> priceList = new ArrayList<>();
@@ -5866,6 +5882,7 @@ public class ProductService {
//布钱 +人工+印刷+手提
Product pro = null;
double lastPrice = 0;
int lastCount = 0;
for (int i = 0; i < counts.length; i++) {
int itemCount = counts[i];
double basePrice = unit_prices[base][i];
@@ -5873,18 +5890,16 @@ public class ProductService {
if (itemCount < count) {
lastPrice = basePrice;
lastCount = itemCount;
continue;
}
if (priceList.size() > 2) {
break;
}
if (priceList.size() == 0 && itemCount != count) {
if (lastPrice > 0) {
basePrice = (lastPrice + basePrice) / 2;
}
pro = new Product();
pro.setCount(count);
pro.setPrice(Math.ceil(basePrice * count * number));
pro.setPrice(Math.ceil(new PriceUtils().calcByTargetN(lastCount, lastPrice, itemCount, basePrice, count) * number));
priceList.add(pro);
}
pro = new Product();
@@ -3613,6 +3613,34 @@ public class PriceUtils {
return price == 0 ? last_price : price;
}
public double calcByTargetN(int startN, double highPrice, int endN, double lowPrice, int targetN) {
// 高价商品个数线性插值
double a = startN * (double) (endN - targetN) / (endN - startN);
double b = targetN - a;
double total = a * highPrice + b * lowPrice;
return total;
}
public double TableCountCenterPrice(int area, double[] price_list, int[] areas) {
double price = 0;
int startIndex = 0;
int endIndex = 0;
for (int i = 0; i < areas.length; i++) {
if (area > areas[i]) {
startIndex = endIndex;
endIndex = Math.min(i + 1, areas.length - 1);
}
}
if (startIndex == endIndex && startIndex == 0) {
price = price_list[endIndex];
} else if (startIndex == endIndex) {
price = (price_list[endIndex] / areas[endIndex]) * area;
} else {
price = ((areas[endIndex] - (double) area) / (areas[endIndex] - areas[startIndex])) * price_list[startIndex] + (((double) area - areas[startIndex]) / (areas[endIndex] - areas[startIndex])) * price_list[endIndex];
}
return price;
}
public double TablePrice(double area, int[] price_list, double[] areas) {
double price = 0;
int startIndex = 0;