diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/service/ProductService.java b/src/main/java/com/chaozhanggui/system/cashierservice/service/ProductService.java index 9ef636d..9c6f777 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/service/ProductService.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/ProductService.java @@ -233,7 +233,8 @@ public class ProductService { // 重组有效规格数据 String tagSnap = skuResult != null ? skuResult.getTagSnap() : null; - List tbProductSkus = tbProductSkuMapper.selectGroundingByProId(querySpecDTO.getProductId()); +// List tbProductSkus = tbProductSkuMapper.selectGroundingByProId(querySpecDTO.getProductId()); + List tbProductSkus = tbProductSkuMapper.selectSku(String.valueOf(querySpecDTO.getProductId())); JSONArray finalSnap = new JSONArray(); // if (tagSnap != null) { @@ -315,11 +316,17 @@ public class ProductService { } ArrayList> specList = new ArrayList<>(); + HashMap unGroundingMap = new HashMap<>(); tbProductSkus.forEach(item -> { - HashMap itemMap = new HashMap<>(); - itemMap.put("specSnap", item.getSpecSnap()); - itemMap.put("skuId", item.getId()); - specList.add(itemMap); + if (item.getIsGrounding() == 1) { + HashMap itemMap = new HashMap<>(); + itemMap.put("specSnap", item.getSpecSnap()); + itemMap.put("skuId", item.getId()); + itemMap.put("info", item); + specList.add(itemMap); + }else { + unGroundingMap.put(item.getSpecSnap(), item); + } }); @@ -329,6 +336,13 @@ public class ProductService { for (HashMap spec : specList) { if (res.equals(spec.get("specSnap").toString())) { spec.put("isGrounding", true); + TbProductSku sku = (TbProductSku) spec.get("info"); + if (sku != null) { + checkPauseSale(tbProduct, new ArrayList<>(Collections.singletonList(sku)), true); + spec.put("isPauseSale", tbProduct.getIsPauseSale()); + }else { + spec.put("isPauseSale", 1); + } found = true; break; } @@ -338,6 +352,13 @@ public class ProductService { itemMap.put("specSnap", res); itemMap.put("skuId", null); itemMap.put("isGrounding", false); + TbProductSku sku = unGroundingMap.get("specSnap"); + if (sku != null) { + checkPauseSale(tbProduct, Collections.singletonList(sku), true); + itemMap.put("isPauseSale", tbProduct.getIsPauseSale()); + }else { + itemMap.put("isPauseSale", 1); + } otherVal.add(itemMap); } } @@ -387,7 +408,7 @@ public class ProductService { List tbProductSkus = tbProductSkuMapper.selectGroundingByProId(it.getId()); TbProductSkuResult skuResult = tbProductSkuResultMapper.selectByPrimaryKey(it.getId()); //判断库存及耗材 - checkPauseSale(it,tbProductSkus); + checkPauseSale(it,tbProductSkus, false); AtomicDouble sum = new AtomicDouble(0.0); BigDecimal lowerPrice = null; @@ -418,14 +439,23 @@ public class ProductService { } } - public void checkPauseSale(TbProduct tbProduct, List skus) { + public void checkPauseSale(TbProduct tbProduct, List skus, boolean isSingle) { if (tbProduct.getIsStock() == 1) {//库存开关 1开启 if (Integer.valueOf(tbProduct.getIsDistribute()).equals(1)) {//共享库存 1开启 if (tbProduct.getStockNumber() != null && tbProduct.getStockNumber() <= 0) { tbProduct.setIsPauseSale(Byte.parseByte("1"));//售罄 1暂停 return; } + + if (isSingle && tbProduct.getIsPauseSale() == 1) { + return; + } } else { + if (isSingle && !skus.stream().filter(res -> res.getIsPauseSale().equals(1)).collect(Collectors.toList()).isEmpty()) { + tbProduct.setIsPauseSale(Byte.parseByte("1"));//售罄 1暂停 + return; + } + if (!tbProduct.getTypeEnum().equals("sku")) { if (skus.stream().anyMatch(sku -> sku.getStockNumber() != null && sku.getStockNumber() <= 0)){ tbProduct.setIsPauseSale(Byte.parseByte("1"));//售罄 1暂停