diff --git a/src/main/java/lingtao/net/service/ProductService.java b/src/main/java/lingtao/net/service/ProductService.java index b99aa78..4153518 100644 --- a/src/main/java/lingtao/net/service/ProductService.java +++ b/src/main/java/lingtao/net/service/ProductService.java @@ -7,10 +7,7 @@ import lingtao.net.bean.SysUser; import lingtao.net.dao.ProductMapper; import lingtao.net.dao.QuoteLogMapper; import lingtao.net.util.*; -import lingtao.net.vo.FunReturnVo; -import lingtao.net.vo.HuaFangPriceProcessItemsVo; -import lingtao.net.vo.HuaFangPriceRequstVo; -import lingtao.net.vo.HuaFangPriceResultVo; +import lingtao.net.vo.*; import org.apache.commons.collections.map.HashedMap; import org.apache.shiro.SecurityUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -1605,21 +1602,21 @@ public class ProductService { if ("300克".equals(dto.getKind())) { double sePrice = 5; - prices = new double[]{70, 140, 280, 350, 700, 1400, 2100, 3500, 7000}; + prices = new double[]{70, 135, 270, 335, 680, 1375, 2070, 3465, 6960}; if ((width <= 9 && length <= 5.4) || (length <= 9 && width <= 5.4)) { } else if (width < 10 && length < 10) { sePrice = 10; - prices = new double[]{128, 256, 512, 640, 1280, 2560, 3840, 6400, 12800}; + prices = new double[]{128, 251, 502, 625, 1260, 2535, 3810, 6365, 12760}; } else if ((width <= 10 && length <= 15) || (length <= 10 && width <= 15)) { - prices = new double[]{185, 370, 740, 925, 1850, 3700, 5550, 9250, 18500}; + prices = new double[]{185, 365, 730, 910, 1830, 3675, 5520, 9215, 18460}; sePrice = 15; } else if (width < 15 && length < 15) { - prices = new double[]{300, 600, 1200, 1500, 3000, 6000, 9000, 15000, 30000}; + prices = new double[]{300, 595, 1190, 1485, 2980, 5975, 8970, 14965, 29960}; sePrice = 20; // ((width <= 20 && length <= 15) || (length <= 20 && width <= 15)) } else { - prices = new double[]{450, 900, 1800, 2250, 4500, 9000, 13500, 22500, 45000}; + prices = new double[]{450, 895, 1790, 2235, 4480, 8975, 13470, 22465, 44960}; sePrice = 25; } @@ -2964,23 +2961,23 @@ public class ProductService { designFee = 16; designFee9 = 15; }*/ else if ((length - 4 <= 210 && width - 4 <= 140) || (length - 4 <= 140 && width - 4 <= 210)) { - designFee = 15; + designFee = 10; designFee9 = 15; } else if ((length - 4 <= 285 && width - 4 - 4 <= 210) || (length - 4 <= 210 && width - 4 <= 285)) { - designFee = 35; + designFee = 30; designFee9 = 40; } else if ((length - 4 <= 420 && width - 4 <= 285) || (length - 4 <= 285 && width - 4 <= 420)) { - designFee = 50; + designFee = 45; designFee9 = 60; } else { - designFee = 50; + designFee = 45; designFee9 = 80; } if ("腰封".equals(dto.getKind())) { zhang = 8; } if ("特种纸名片".equals(dto.getKind())) { - zhang = 18; + zhang = 16; } // 一张l/w 大的纸张能做多少个此类尺寸的产品 double max = 1; @@ -4366,12 +4363,96 @@ public class ProductService { return getTearingJoyPrice(dto, width, length); case "哑粉纸": return getYaFenPrice(dto, width, length); + case "UV打印亚克力": + return getUVDayinYKLPrice(dto, width, length); default: break; } return null; } + private List getUVDayinYKLPrice(Product dto, Double width, Double length) { + List craft_lists = dto.getCraft() == null ? new ArrayList<>() : Arrays.asList(dto.getCraft()); + List craft_list = new ArrayList<>(craft_lists); + List priceList = new ArrayList<>(); + int count = dto.getCount(); + int number = dto.getNumber(); + + ShengDaPriceRequstVo params = new ShengDaPriceRequstVo(); + params.setProductCategory("UVDAYINYAKELI"); + params.setPaper(dto.getKind()); + ShengDaPriceRequstItemVo baseCrafts = new ShengDaPriceRequstItemVo(); + + baseCrafts.setName("打印"); + Map basecraftsItem = new HashMap<>(); + basecraftsItem.put("类型", "标准款"); + baseCrafts.setParameters(basecraftsItem); + params.setBaseCrafts(Collections.singletonList(baseCrafts)); + + List partsVoList = new ArrayList<>(); + ShengDaPriceRequstPartsVo partsVo = new ShengDaPriceRequstPartsVo(); + partsVo.setName("板块"); + partsVo.setNum(count * number); + partsVo.setSizeUnit("CM"); + partsVo.setWidth(width); + partsVo.setHeight(length); + //印面 0不印 1单面 2双面 + partsVo.setPrintSide(0); + craft_list.remove("不印面"); + if (craft_list.contains("单面")) { + partsVo.setPrintSide(1); + craft_list.remove("单面"); + } + if (craft_list.contains("双面")) { + partsVo.setPrintSide(2); + craft_list.remove("双面"); + } + List crafts = new ArrayList<>(); + //固定分类 + ShengDaPriceRequstItemVo craft_diaoke = new ShengDaPriceRequstItemVo(); + craft_diaoke.setName("按设计文件雕刻"); + Map craft_diaokeItem = new HashMap<>(); + craft_diaokeItem.put("类型", "文件造型"); + craft_diaoke.setParameters(craft_diaokeItem); + crafts.add(craft_diaoke); + + for (String s : craft_list) { + ShengDaPriceRequstItemVo craftItem = new ShengDaPriceRequstItemVo(); + HashMap parameters = new HashMap<>(); + if ("3m胶".equals(s)) { + craftItem.setName("背胶"); + parameters.put("类型", "覆3M胶"); + craftItem.setParameters(parameters); + } else if ("打孔".equals(s)) { + craftItem.setName("打孔"); + String type = "按文件设计"; + if (craft_list.contains("广告钉") || craft_list.contains("镜钉")) { + type = "按钉子直径打孔"; + } + parameters.put("类型", type); + parameters.put("单块打孔个数", String.valueOf(Math.max(dto.getPcount() == null ? 0 : dto.getPcount(), 1))); + craftItem.setParameters(parameters); + } else { + craftItem.setName(s); + } + crafts.add(craftItem); + } + partsVo.setCrafts(crafts); + partsVoList.add(partsVo); + params.setParts(partsVoList); + + ShengDaPriceResultVo result = ShengDaPriceUtils.getPrice(params); + double price = Math.ceil(result.getData().getPrice() / (1 - 0.65)); + double designPrice = number * 5; + + Product product = new Product(); + product.setPrice(Math.ceil(Math.max(price, 30) + designPrice)); + product.setCount(dto.getCount()); + product.setNumber(dto.getNumber()); + priceList.add(product); + return priceList; + } + private List getsmPVCPrice(Product dto, Double width, Double length, String role) { List craft_list = dto.getCraft() == null ? new ArrayList<>() : Arrays.asList(dto.getCraft()); List priceList = new ArrayList<>(); diff --git a/src/main/java/lingtao/net/util/ShengDaPriceUtils.java b/src/main/java/lingtao/net/util/ShengDaPriceUtils.java new file mode 100644 index 0000000..983ada2 --- /dev/null +++ b/src/main/java/lingtao/net/util/ShengDaPriceUtils.java @@ -0,0 +1,33 @@ +package lingtao.net.util; + +import com.alibaba.fastjson.JSONObject; +import lingtao.net.vo.*; + +import java.time.LocalDateTime; +import java.util.HashMap; +import java.util.Map; + +public class ShengDaPriceUtils { + + private static final String AppId = "3a1ab376af58ec4e918b4c506480efdf"; + private static final String AppSecret = "e06KAvT6ugHpQd5zjHukfMJBH0dxfA74gWk9o1lsLqOMTYExFVvWuTh0twMQvNBF"; + //UV打印亚克力 + private static final String productId = "UVDAYINYAKELI"; + + public static String getToken() { + String tokenString = HttpUtils.sendGetRequest("http://47.114.150.226:88/Handler/apiShengda.ashx?t=apiGetToken"); + System.out.println("获取token返回:" + tokenString); + ShengDaTokenVo huaFangTokenVo = JSONObject.parseObject(tokenString, ShengDaTokenVo.class); + return huaFangTokenVo.getResult(); + } + + + public static ShengDaPriceResultVo getPrice(ShengDaPriceRequstVo params) { + Map heards = new HashMap<>(); + heards.put("Authorization", "Bearer " + getToken()); + String resultText = HttpUtils.sendPostRequest("https://open.sd2000.com/api/app/calculate", JSONObject.toJSONString(params), heards); + ShengDaPriceResultVo result = JSONObject.parseObject(resultText, ShengDaPriceResultVo.class); + return result; + } + +} diff --git a/src/main/java/lingtao/net/vo/ShengDaPriceRequstItemVo.java b/src/main/java/lingtao/net/vo/ShengDaPriceRequstItemVo.java new file mode 100644 index 0000000..98482c4 --- /dev/null +++ b/src/main/java/lingtao/net/vo/ShengDaPriceRequstItemVo.java @@ -0,0 +1,13 @@ +package lingtao.net.vo; + +import lombok.Data; + +import java.util.Map; + +@Data +public class ShengDaPriceRequstItemVo { + + private String name; + + private Map parameters; +} diff --git a/src/main/java/lingtao/net/vo/ShengDaPriceRequstPartsVo.java b/src/main/java/lingtao/net/vo/ShengDaPriceRequstPartsVo.java new file mode 100644 index 0000000..70b7e0a --- /dev/null +++ b/src/main/java/lingtao/net/vo/ShengDaPriceRequstPartsVo.java @@ -0,0 +1,16 @@ +package lingtao.net.vo; + +import lombok.Data; + +import java.util.List; + +@Data +public class ShengDaPriceRequstPartsVo { + private List crafts; + private String name; + private Integer num; + private String sizeUnit; + private Double height; + private Double width; + private Integer printSide; +} diff --git a/src/main/java/lingtao/net/vo/ShengDaPriceRequstVo.java b/src/main/java/lingtao/net/vo/ShengDaPriceRequstVo.java new file mode 100644 index 0000000..8e396db --- /dev/null +++ b/src/main/java/lingtao/net/vo/ShengDaPriceRequstVo.java @@ -0,0 +1,17 @@ +package lingtao.net.vo; + +import lombok.Data; + +import java.util.List; + +@Data +public class ShengDaPriceRequstVo { + + private String productCategory; + + private String paper; + + private List baseCrafts; + + private List parts; +} diff --git a/src/main/java/lingtao/net/vo/ShengDaPriceResultVo.java b/src/main/java/lingtao/net/vo/ShengDaPriceResultVo.java new file mode 100644 index 0000000..c597416 --- /dev/null +++ b/src/main/java/lingtao/net/vo/ShengDaPriceResultVo.java @@ -0,0 +1,19 @@ +package lingtao.net.vo; + +import lombok.Data; + +import java.math.BigDecimal; + +@Data +public class ShengDaPriceResultVo { + private Integer errCode; + private String errMsg; + private ResultData data; + + @Data + public class ResultData { + private String productCategoryId; + private String productCategoryName; + private Double price; + } +} diff --git a/src/main/java/lingtao/net/vo/ShengDaTokenVo.java b/src/main/java/lingtao/net/vo/ShengDaTokenVo.java new file mode 100644 index 0000000..252dd35 --- /dev/null +++ b/src/main/java/lingtao/net/vo/ShengDaTokenVo.java @@ -0,0 +1,9 @@ +package lingtao.net.vo; + +import lombok.Data; + +@Data +public class ShengDaTokenVo { + private String type; + private String result; +} diff --git a/src/main/webapp/views/product/printedAcrylic.jsp b/src/main/webapp/views/product/printedAcrylic.jsp new file mode 100644 index 0000000..becb813 --- /dev/null +++ b/src/main/webapp/views/product/printedAcrylic.jsp @@ -0,0 +1,380 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" + pageEncoding="UTF-8" %> +<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> + + + + + Insert title here + <%@include file="/views/common.jsp" %> + + + +
+
+

亚克力

+
+
+ +

+ 材质 +

+
+ +
+

+ 尺寸(CM/厘米) +

+
+ +
+

+ 数量(个) +

+ +
+ +
+

+ 款数 +

+
+ +
+

+ 客户旺旺 +

+
+ +
+

+ 工艺 +

+
+
+ 印面工艺: + + + +
+
+ 打印效果: + + +
+ +
+ 背覆工艺: + +
+
+ 打孔工艺: + + + + +
+
+
+
+ + +
+

计算结果- + +

+
+ + <%@include file="../acountExpressFee.jsp" %> +
+
+
+
+
+
+
+ +
+
+ +<%@include file="/views/copyResult.jsp" %> + + \ No newline at end of file