Compare commits

...

3 Commits

1 changed files with 31 additions and 14 deletions

View File

@ -292,6 +292,9 @@ public class RetailOrderServiceImpl implements IRetailOrderService {
// // 2025.03.11 添加需求复购专区重消专区指定盒数商品每用户每月限购50件 // // 2025.03.11 添加需求复购专区重消专区指定盒数商品每用户每月限购50件
// this.checkWaresLimit(cuMember.getPkId(), orderParam.getSpecialArea(), waresDetailExtList, boxProductList); // this.checkWaresLimit(cuMember.getPkId(), orderParam.getSpecialArea(), waresDetailExtList, boxProductList);
// 设置已经累计盒数的商品列表
List<String> tmpBoxWares = new ArrayList<>();
// 遍历生成订单明细数据 // 遍历生成订单明细数据
for (BdWaresDetailExt waresDetailExt : waresDetailExtList) { for (BdWaresDetailExt waresDetailExt : waresDetailExtList) {
// // 价格KEY商品编号 + 价格 // // 价格KEY商品编号 + 价格
@ -319,15 +322,24 @@ public class RetailOrderServiceImpl implements IRetailOrderService {
// 雨汐团队复购重消盒数品 // 雨汐团队复购重消盒数品
if (tmpBoxWaresList.contains(waresDetailExt.getWaresCode())) { if (tmpBoxWaresList.contains(waresDetailExt.getWaresCode())) {
// 商品是盒数商品需要累计数量 // 商品是盒数商品需要累计数量
if (!tmpBoxWares.contains(waresDetailExt.getWaresCode())) {
boxNum = boxNum.add(waresDetailExt.getBoxNum().multiply(new BigDecimal(orderItems.getWaresQuantity()))); boxNum = boxNum.add(waresDetailExt.getBoxNum().multiply(new BigDecimal(orderItems.getWaresQuantity())));
tmpBoxWares.add(waresDetailExt.getWaresCode());
}
} }
} else { } else {
// 商品是盒数商品需要累计数量 // 商品是盒数商品需要累计数量
if (!tmpBoxWares.contains(waresDetailExt.getWaresCode())) {
boxNum = boxNum.add(waresDetailExt.getBoxNum().multiply(new BigDecimal(orderItems.getWaresQuantity()))); boxNum = boxNum.add(waresDetailExt.getBoxNum().multiply(new BigDecimal(orderItems.getWaresQuantity())));
tmpBoxWares.add(waresDetailExt.getWaresCode());
}
} }
} else { } else {
// 商品是盒数商品需要累计数量 // 商品是盒数商品需要累计数量
if (!tmpBoxWares.contains(waresDetailExt.getWaresCode())) {
boxNum = boxNum.add(waresDetailExt.getBoxNum().multiply(new BigDecimal(orderItems.getWaresQuantity()))); boxNum = boxNum.add(waresDetailExt.getBoxNum().multiply(new BigDecimal(orderItems.getWaresQuantity())));
tmpBoxWares.add(waresDetailExt.getWaresCode());
}
} }
} }
@ -789,8 +801,10 @@ public class RetailOrderServiceImpl implements IRetailOrderService {
// 订单商品拆分数据 // 订单商品拆分数据
List<SaOrderWares> orderWaresList = new ArrayList<>(); List<SaOrderWares> orderWaresList = new ArrayList<>();
// 订单商品mapkey商品主键-商品价格value商品数量 // 订单商品拆分mapkey商品主键value商品数量
Map<String, BigDecimal> orderWaresMap = new HashMap<>(); Map<Integer, BigDecimal> orderWaresMap = new HashMap<>();
// 订单商品价格拆分mapkey商品主键value商品价格
Map<Integer, BigDecimal> orderWaresPriceMap = new HashMap<>();
// 商品销量数据 // 商品销量数据
List<WaresNumberParam> waresNumberList = new ArrayList<>(); List<WaresNumberParam> waresNumberList = new ArrayList<>();
// 商品销量mapkey商品主键value商品数量 // 商品销量mapkey商品主键value商品数量
@ -812,14 +826,17 @@ public class RetailOrderServiceImpl implements IRetailOrderService {
// 指定商品拆分 并且 非赠品 // 指定商品拆分 并且 非赠品
if (boxProductList.contains(saOrderItems.getWareCode()) if (boxProductList.contains(saOrderItems.getWareCode())
&& EYesNo.NO.getIntValue() == saOrderItems.getIsGift()) { && EYesNo.NO.getIntValue() == saOrderItems.getIsGift()) {
// 盒数 = 商品上传盒数 * 商品数量
BigDecimal boxNum = saOrderItems.getWaresBoxNum().multiply(new BigDecimal(saOrderItems.getWaresQuantity())); BigDecimal boxNum = saOrderItems.getWaresBoxNum().multiply(new BigDecimal(saOrderItems.getWaresQuantity()));
// key: 商品ID-商品价格产品价格*产品数量 orderWaresMap.put(saOrderItems.getPkWares(), boxNum);
String key = saOrderItems.getPkWares() + "-" + (saOrderItems.getPrice().multiply(new BigDecimal(saOrderItems.getQuantity())));
if (orderWaresMap.containsKey(key)) { // 价格 = 产品上传价格 * 产品数量不存在直接放入存在则进行累加
BigDecimal tmpBoxNum = orderWaresMap.get(key).add(boxNum); BigDecimal waresPrice = saOrderItems.getPrice().multiply(new BigDecimal(saOrderItems.getQuantity()));
orderWaresMap.put(key, tmpBoxNum); if (orderWaresPriceMap.containsKey(saOrderItems.getPkWares())) {
BigDecimal tmpWaresPrice = orderWaresPriceMap.get(saOrderItems.getPkWares());
orderWaresPriceMap.put(saOrderItems.getPkWares(), tmpWaresPrice.add(waresPrice));
} else { } else {
orderWaresMap.put(key, boxNum); orderWaresPriceMap.put(saOrderItems.getPkWares(), waresPrice);
} }
waresLimitMap.merge(saOrderItems.getPkWares(), saOrderItems.getWaresQuantity(), Integer::sum); waresLimitMap.merge(saOrderItems.getPkWares(), saOrderItems.getWaresQuantity(), Integer::sum);
@ -831,11 +848,11 @@ public class RetailOrderServiceImpl implements IRetailOrderService {
if (orderWaresMap.size() > 0) { if (orderWaresMap.size() > 0) {
// 处理订单商品拆分数据 // 处理订单商品拆分数据
for (String key : orderWaresMap.keySet()) { for (Integer key : orderWaresMap.keySet()) {
SaOrderWares saOrderWares = SaOrderWares.builder() SaOrderWares saOrderWares = SaOrderWares.builder()
.pkOrder(saOrderExt.getPkId()) .pkOrder(saOrderExt.getPkId())
.pkWares(Integer.parseInt(key.split("-")[0])) .pkWares(key)
.waresPrice(new BigDecimal(key.split("-")[1])) .waresPrice(orderWaresPriceMap.get(key))
.waresQuantity(orderWaresMap.get(key)) .waresQuantity(orderWaresMap.get(key))
.build(); .build();
saOrderWares.setPkCreator(saOrderExt.getPkCreator()); saOrderWares.setPkCreator(saOrderExt.getPkCreator());