diff --git a/src/main/java/com/wb/domainserver/domain/gcone/goods/purchs/service/BOOrderService.java b/src/main/java/com/wb/domainserver/domain/gcone/goods/purchs/service/BOOrderService.java index 08f3cbc1..bd982e6b 100644 --- a/src/main/java/com/wb/domainserver/domain/gcone/goods/purchs/service/BOOrderService.java +++ b/src/main/java/com/wb/domainserver/domain/gcone/goods/purchs/service/BOOrderService.java @@ -159,6 +159,8 @@ public class BOOrderService { DlvyGroupList.add(item); }); + BigDecimal bundleDlvyAmtYSlepricSum = new BigDecimal(0); // 조건부 무료배송 묶음 O : 상품금액 합 + DlvyGroupList.sort(Comparator.comparing((DataMap map) -> (BigInteger) map.get("goodsInnb")).thenComparing((DataMap map) -> (BigInteger) map.get("goodsOptnInnb")) .thenComparing((DataMap map) -> (BigInteger) map.get("dlvyGroupInnb"))); // 정렬 // 배송그룹고유번호별 상품목록 @@ -184,6 +186,8 @@ public class BOOrderService { BigDecimal itemDlvyAmt = itemDftDlvyAmt; // 배송비 String itemDlvyAreaAditAt = (String) shippingGrouping.get("dlvyAreaAditAt"); // 도서산간 추가 배송비 조건 BigDecimal itemAreaAditDlvyAmt = (BigDecimal) shippingGrouping.get("areaAditDlvyAmt"); // 도서산간 추가 배송비 + String itemBundleDlvyUseAt = (String) shippingGrouping.get("bundleDlvyUseAt"); // 묶음배송 사용여부 + BigDecimal itemBundleDlvyCndAmt = (BigDecimal) shippingGrouping.get("bundleDlvyCndAmt"); // 묶음배송 사용금액 String itemAmtCndUseAt = (String) shippingGrouping.get("amtCndUseAt"); // 금액조건 BigDecimal itemAmtCndAditAmt = (BigDecimal) shippingGrouping.get("amtCndAditAmt"); String itemCntCndUseAt = (String) shippingGrouping.get("cntCndUseAt"); // 수량조건 @@ -194,34 +198,15 @@ public class BOOrderService { itemDlvyAmt = itemDftDlvyAmt; // 배송비 itemDlvyAreaAditAt = (String) shippingGrouping.get("dlvyAreaAditAt2"); // 도서산간 추가 배송비 조건 itemAreaAditDlvyAmt = (BigDecimal) shippingGrouping.get("areaAditDlvyAmt2"); // 도서산간 추가 배송비 + itemBundleDlvyUseAt = (String) shippingGrouping.get("bundleDlvyUseAt2"); // 묶음배송 사용여부 + itemBundleDlvyCndAmt = (BigDecimal) shippingGrouping.get("bundleDlvyCndAmt2"); // 묶음배송 사용금액 itemAmtCndUseAt = (String) shippingGrouping.get("amtCndUseAt2"); // 금액조건 itemAmtCndAditAmt = (BigDecimal) shippingGrouping.get("amtCndAditAmt"); itemCntCndUseAt = (String) shippingGrouping.get("cntCndUseAt2"); // 수량조건 itemCntCndAditAmt = (BigDecimal) shippingGrouping.get("cntCndAditAmt2"); // 수량 } - - -// // 무료배송(조건부) -// if ("01".equals(itemDlvyGroupDvCd)) { -// -// // 추가배송비 계산 (MUL) -// if (!StringUtils.isEmpty(itemDlvyAreaAditAt) && "Y".equals(itemDlvyAreaAditAt)) { -// if (!StringUtils.isEmpty(defaultAdressAt) && "Y".equals(defaultAdressAt)) { -// itemDlvyAmt = itemDlvyAmt.add(itemAreaAditDlvyAmt); // 유료 배송 도서산간 추가 배송비 -// } -// } -// -// } else if ("02".equals(itemDlvyGroupDvCd)) { // 무료 배송일 경우 -// -// // 추가배송비 계산 (MUL) -// if (!StringUtils.isEmpty(itemDlvyAreaAditAt) && "Y".equals(itemDlvyAreaAditAt)) { -// if (!StringUtils.isEmpty(defaultAdressAt) && "Y".equals(defaultAdressAt)) { -// itemDlvyAmt = itemDlvyAmt.add(itemAreaAditDlvyAmt); // 유료 배송 도서산간 추가 배송비 -// } -// } -// -// } else if ("03".equals(itemDlvyGroupDvCd)) { // 유료배송 +// else if ("03".equals(itemDlvyGroupDvCd)) { // 유료배송 if ("03".equals(itemDlvyGroupDvCd) || subsvcAt) { // 유료배송 // 추가배송비 계산 (MUL) @@ -378,34 +363,69 @@ public class BOOrderService { // } // DlvyGroupDvCd 무료배송, 유료배송 } else { // 조건부 무료 or 무료 배송일 경우 - // 추가배송비 계산 (MUL) - if (!StringUtils.isEmpty(itemDlvyAreaAditAt) && "Y".equals(itemDlvyAreaAditAt)) { - if (!StringUtils.isEmpty(defaultAdressAt) && "Y".equals(defaultAdressAt)) { - itemDlvyAmt = itemDlvyAmt.add(itemAreaAditDlvyAmt); // 유료 배송 도서산간 추가 배송비 + + // 무료배송(조건부) + if ("01".equals(itemDlvyGroupDvCd)) { + + List itemGoodsList = new ArrayList<>(); + + for (DataMap goodsMap : goodsByDlvyGroupList) { + + BigDecimal subSlepric = new BigDecimal(String.valueOf(goodsMap.get("subSlepric"))); // 판매가 * 수량 + + // 금액 조건 + if ("Y".equals(itemAmtCndUseAt)) { + // subSlepric(금액)이 무료배송 금액조건보다 클 경우 [상품 기준] + if (subSlepric.compareTo(itemAmtCndAditAmt) > 0) { + itemDlvyAmt = new BigDecimal(0); + } + } + + // 수량 조건 + if ("Y".equals(itemCntCndUseAt)) { + BigDecimal qy = new BigDecimal(String.valueOf(goodsMap.get("qy"))); // 수량 + + // qy(수량)이 무료배송 수량조건보다 클 경우 [상품 기준] + if (qy.compareTo(itemCntCndAditAmt) > 0) { + itemDlvyAmt = new BigDecimal(0); + } + } + + // 묶음배송 조건 사용여부 [상품리스트 전체 기준] + if ("Y".equals(itemBundleDlvyUseAt)) { // 묶음 O + + // 묶음배송 사용여부 Y && 상품건수 1개 이상 + if (goodsByDlvyGroupList.size() > 0) { + // 묶음배송 조건금액이 있으면 + if (itemBundleDlvyCndAmt != null && itemBundleDlvyCndAmt.compareTo(BigDecimal.ZERO) > 0) { + + bundleDlvyAmtYSlepricSum = bundleDlvyAmtYSlepricSum.add(subSlepric); + + // bundleDlvyAmtYSlepricSum 값이 itemBundleDlvyCndAmt 보다 크거나 같으면( 묶음배송 무료조건을 만족하면) + if (bundleDlvyAmtYSlepricSum.compareTo(itemBundleDlvyCndAmt) >= 0) { + itemDlvyAmt = new BigDecimal(0); + } + } + } + } + + // multi shipping -> goodsList int값으로 변환 + goodsMap.put("goodsInnb", new BigInteger(String.valueOf(goodsMap.get("goodsInnb"))).intValue()); + goodsMap.put("goodsOptnInnb", new BigInteger(String.valueOf(goodsMap.get("goodsOptnInnb"))).intValue()); + goodsMap.put("dlvyGroupInnb", new BigInteger(String.valueOf(goodsMap.get("dlvyGroupInnb"))).intValue()); + goodsMap.put("qy", new BigInteger(String.valueOf(goodsMap.get("qy"))).intValue()); + + goodsMap.put("dscntApplyAmt", new BigInteger(String.valueOf(goodsMap.get("dscntApplyAmt"))).intValue()); + goodsMap.put("slepric", new BigInteger(String.valueOf(goodsMap.get("slepric"))).intValue()); + goodsMap.put("subSlepric", new BigInteger(String.valueOf(goodsMap.get("subSlepric"))).intValue()); + goodsMap.put("dscntAmt", new BigInteger(String.valueOf(goodsMap.get("dscntAmt"))).intValue()); + goodsMap.put("mbrInnb", new BigInteger(String.valueOf(goodsMap.get("mbrInnb"))).intValue()); + + itemGoodsList.add(new LinkedHashMap<>(goodsMap)); + } - } - List itemGoodsList = new ArrayList<>(); - - for (DataMap goodsMap : goodsByDlvyGroupList) { -// BigDecimal qy = (BigDecimal) goodsMap.get("qy"); // 수량 - - goodsMap.put("goodsInnb", new BigInteger(String.valueOf(goodsMap.get("goodsInnb"))).intValue()); - goodsMap.put("goodsOptnInnb", new BigInteger(String.valueOf(goodsMap.get("goodsOptnInnb"))).intValue()); - goodsMap.put("dlvyGroupInnb", new BigInteger(String.valueOf(goodsMap.get("dlvyGroupInnb"))).intValue()); - goodsMap.put("qy", new BigInteger(String.valueOf(goodsMap.get("qy"))).intValue()); - - goodsMap.put("dscntApplyAmt", new BigInteger(String.valueOf(goodsMap.get("dscntApplyAmt"))).intValue()); - goodsMap.put("slepric", new BigInteger(String.valueOf(goodsMap.get("slepric"))).intValue()); - goodsMap.put("subSlepric", new BigInteger(String.valueOf(goodsMap.get("subSlepric"))).intValue()); - goodsMap.put("dscntAmt", new BigInteger(String.valueOf(goodsMap.get("dscntAmt"))).intValue()); - goodsMap.put("mbrInnb", new BigInteger(String.valueOf(goodsMap.get("mbrInnb"))).intValue()); - - itemGoodsList.add(new LinkedHashMap<>(goodsMap)); - - } - - List itempPrsntList = new ArrayList<>(); + List itempPrsntList = new ArrayList<>(); // if(!prsntList.isEmpty()){ // itempPrsntList.add(prsntList.get(i)); // for (LinkedHashMap itemPrsntMap : itempPrsntList) { @@ -413,32 +433,103 @@ public class BOOrderService { // } // } - LinkedHashMap dlvyMap = new LinkedHashMap<>(); + // 추가배송비 계산 (MUL) + if (!StringUtils.isEmpty(itemDlvyAreaAditAt) && "Y".equals(itemDlvyAreaAditAt)) { + if (!StringUtils.isEmpty(defaultAdressAt) && "Y".equals(defaultAdressAt)) { + itemDlvyAmt = itemDlvyAmt.add(itemAreaAditDlvyAmt); // 유료 배송 도서산간 추가 배송비 + } + } - dlvyMap.put("dftDlvyAmt", itemDftDlvyAmt.intValue()); - dlvyMap.put("dlvyAmt", itemDlvyAmt.intValue()); - dlvyMap.put("couponInnb", 0); - dlvyMap.put("dwldCouponInnb", 0); - dlvyMap.put("dplctDscntAt", ""); - dlvyMap.put("otrCouponSmtmUseAt", ""); - dlvyMap.put("mngrFreeDlvyUseAt", "N"); - dlvyMap.put("dlvylcAreaCd", shipping.get("dlvylcAreaCd")); - dlvyMap.put("cstmclerCd", shipping.get("cstmclerCd")); - dlvyMap.put("dlvylcZip", shipping.get("dlvylcZip")); - dlvyMap.put("prefcd", shipping.get("prefcd")); - dlvyMap.put("recpntNm", shipping.get("recpntNm")); - dlvyMap.put("recpntMbtlnb", shipping.get("recpntMbtlnb")); - dlvyMap.put("dlvylcAdresDvCd", shipping.get("dlvylcAdresDvCd")); - dlvyMap.put("dlvylcLnbAdres", shipping.get("dlvylcLnbAdres")); - dlvyMap.put("dlvylcRnmAdres", shipping.get("dlvylcRnmAdres")); - dlvyMap.put("dlvylcAdresDtl", shipping.get("dlvylcAdresDtl")); - dlvyMap.put("dlvyMssageCn", shipping.get("dlvyMssageCn")); - dlvyMap.put("goodsList", itemGoodsList); - dlvyMap.put("prsntList", itempPrsntList); //prsntList.get(i)); + LinkedHashMap dlvyMap = new LinkedHashMap<>(); - dlvylcListMulti.add(dlvyMap); + dlvyMap.put("dftDlvyAmt", itemDftDlvyAmt.intValue()); + dlvyMap.put("dlvyAmt", itemDlvyAmt.intValue()); + dlvyMap.put("couponInnb", 0); + dlvyMap.put("dwldCouponInnb", 0); + dlvyMap.put("dplctDscntAt", ""); + dlvyMap.put("otrCouponSmtmUseAt", ""); + dlvyMap.put("mngrFreeDlvyUseAt", "N"); + dlvyMap.put("dlvylcAreaCd", shipping.get("dlvylcAreaCd")); + dlvyMap.put("cstmclerCd", shipping.get("cstmclerCd")); + dlvyMap.put("dlvylcZip", shipping.get("dlvylcZip")); + dlvyMap.put("prefcd", shipping.get("prefcd")); + dlvyMap.put("recpntNm", shipping.get("recpntNm")); + dlvyMap.put("recpntMbtlnb", shipping.get("recpntMbtlnb")); + dlvyMap.put("dlvylcAdresDvCd", shipping.get("dlvylcAdresDvCd")); + dlvyMap.put("dlvylcLnbAdres", shipping.get("dlvylcLnbAdres")); + dlvyMap.put("dlvylcRnmAdres", shipping.get("dlvylcRnmAdres")); + dlvyMap.put("dlvylcAdresDtl", shipping.get("dlvylcAdresDtl")); + dlvyMap.put("dlvyMssageCn", shipping.get("dlvyMssageCn")); + dlvyMap.put("goodsList", itemGoodsList); + dlvyMap.put("prsntList", itempPrsntList); //prsntList.get(i)); - } + dlvylcListMulti.add(dlvyMap); + + } else if ("02".equals(itemDlvyGroupDvCd)) { // 무료 배송일 경우 + + // 추가배송비 계산 (MUL) + if (!StringUtils.isEmpty(itemDlvyAreaAditAt) && "Y".equals(itemDlvyAreaAditAt)) { + if (!StringUtils.isEmpty(defaultAdressAt) && "Y".equals(defaultAdressAt)) { + itemDlvyAmt = itemDlvyAmt.add(itemAreaAditDlvyAmt); // 유료 배송 도서산간 추가 배송비 + } + } + + List itemGoodsList = new ArrayList<>(); + + for (DataMap goodsMap : goodsByDlvyGroupList) { +// BigDecimal qy = (BigDecimal) goodsMap.get("qy"); // 수량 + + goodsMap.put("goodsInnb", new BigInteger(String.valueOf(goodsMap.get("goodsInnb"))).intValue()); + goodsMap.put("goodsOptnInnb", new BigInteger(String.valueOf(goodsMap.get("goodsOptnInnb"))).intValue()); + goodsMap.put("dlvyGroupInnb", new BigInteger(String.valueOf(goodsMap.get("dlvyGroupInnb"))).intValue()); + goodsMap.put("qy", new BigInteger(String.valueOf(goodsMap.get("qy"))).intValue()); + + goodsMap.put("dscntApplyAmt", new BigInteger(String.valueOf(goodsMap.get("dscntApplyAmt"))).intValue()); + goodsMap.put("slepric", new BigInteger(String.valueOf(goodsMap.get("slepric"))).intValue()); + goodsMap.put("subSlepric", new BigInteger(String.valueOf(goodsMap.get("subSlepric"))).intValue()); + goodsMap.put("dscntAmt", new BigInteger(String.valueOf(goodsMap.get("dscntAmt"))).intValue()); + goodsMap.put("mbrInnb", new BigInteger(String.valueOf(goodsMap.get("mbrInnb"))).intValue()); + + itemGoodsList.add(new LinkedHashMap<>(goodsMap)); + + } + + List itempPrsntList = new ArrayList<>(); +// if(!prsntList.isEmpty()){ +// itempPrsntList.add(prsntList.get(i)); +// for (LinkedHashMap itemPrsntMap : itempPrsntList) { +// itemPrsntMap.put("qy", qy.intValue()); +// } +// } + + LinkedHashMap dlvyMap = new LinkedHashMap<>(); + + dlvyMap.put("dftDlvyAmt", itemDftDlvyAmt.intValue()); + dlvyMap.put("dlvyAmt", itemDlvyAmt.intValue()); + dlvyMap.put("couponInnb", 0); + dlvyMap.put("dwldCouponInnb", 0); + dlvyMap.put("dplctDscntAt", ""); + dlvyMap.put("otrCouponSmtmUseAt", ""); + dlvyMap.put("mngrFreeDlvyUseAt", "N"); + dlvyMap.put("dlvylcAreaCd", shipping.get("dlvylcAreaCd")); + dlvyMap.put("cstmclerCd", shipping.get("cstmclerCd")); + dlvyMap.put("dlvylcZip", shipping.get("dlvylcZip")); + dlvyMap.put("prefcd", shipping.get("prefcd")); + dlvyMap.put("recpntNm", shipping.get("recpntNm")); + dlvyMap.put("recpntMbtlnb", shipping.get("recpntMbtlnb")); + dlvyMap.put("dlvylcAdresDvCd", shipping.get("dlvylcAdresDvCd")); + dlvyMap.put("dlvylcLnbAdres", shipping.get("dlvylcLnbAdres")); + dlvyMap.put("dlvylcRnmAdres", shipping.get("dlvylcRnmAdres")); + dlvyMap.put("dlvylcAdresDtl", shipping.get("dlvylcAdresDtl")); + dlvyMap.put("dlvyMssageCn", shipping.get("dlvyMssageCn")); + dlvyMap.put("goodsList", itemGoodsList); + dlvyMap.put("prsntList", itempPrsntList); //prsntList.get(i)); + + dlvylcListMulti.add(dlvyMap); + + } + + } // 조건부 무료 or 무료 배송일 경우 // dlvyAmtByDlvyGroupList.add(dlvyGroupMap); // 배송그룹별 배송비 목록 } // for : dlvyGroupEtry