diff --git a/cash-service/product-service/src/main/java/com/czg/service/product/service/impl/ProductRpcServiceImpl.java b/cash-service/product-service/src/main/java/com/czg/service/product/service/impl/ProductRpcServiceImpl.java index 03efe9d5..b55ca662 100644 --- a/cash-service/product-service/src/main/java/com/czg/service/product/service/impl/ProductRpcServiceImpl.java +++ b/cash-service/product-service/src/main/java/com/czg/service/product/service/impl/ProductRpcServiceImpl.java @@ -68,6 +68,7 @@ public class ProductRpcServiceImpl implements ProductRpcService { if (CollUtil.isEmpty(list)) { return; } + boolean isHasStockChangeToZero = false; for (ProductStockSubtractDTO dto : list) { Product product = productMapper.selectOneById(dto.getProductId()); if (product == null) { @@ -88,6 +89,9 @@ public class ProductRpcServiceImpl implements ProductRpcService { flow.setInOutItem(InOutItemEnum.ORDER_OUT.value()); flow.setOrderId(orderId); productStockFlowService.saveFlow(flow); + if (!isHasStockChangeToZero && NumberUtil.isLessOrEqual(flow.getAfterNumber(), BigDecimal.ZERO)) { + isHasStockChangeToZero = true; + } // 查询商品绑定耗材信息 List relationList = prodConsRelationMapper.selectListByQuery(QueryWrapper.create().eq(ProdConsRelation::getProductId, dto.getProductId())); if (CollUtil.isEmpty(relationList)) { @@ -131,7 +135,9 @@ public class ProductRpcServiceImpl implements ProductRpcService { consStockFlowService.saveFlow(consStockFlow); } } - ThreadUtil.execAsync(() -> rabbitPublisher.sendProductInfoChangeMsg(Convert.toStr(shopId))); + if (isHasStockChangeToZero) { + ThreadUtil.execAsync(() -> rabbitPublisher.sendProductInfoChangeMsg(Convert.toStr(shopId))); + } log.info("ProductService.--------------------------------------------库存更新成功"); } @@ -143,6 +149,7 @@ public class ProductRpcServiceImpl implements ProductRpcService { if (CollUtil.isEmpty(list)) { return; } + boolean isHasStockChangeToZero = false; for (ProductStockSubtractDTO dto : list) { Product product = productMapper.selectOneById(dto.getProductId()); productMapper.updateProductStockNum(dto.getProductId(), dto.getShopId(), "add", dto.getNum()); @@ -161,6 +168,9 @@ public class ProductRpcServiceImpl implements ProductRpcService { flow.setRemark("红冲订单取消/退菜/退单消耗的库存"); flow.setOrderId(orderId); productStockFlowService.saveFlow(flow); + if (!isHasStockChangeToZero && NumberUtil.isLessOrEqual(flow.getAfterNumber(), BigDecimal.ZERO)) { + isHasStockChangeToZero = true; + } // 查询商品绑定耗材信息 List relationList = prodConsRelationMapper.selectListByQuery(QueryWrapper.create().eq(ProdConsRelation::getProductId, dto.getProductId())); if (CollUtil.isEmpty(relationList)) { @@ -204,7 +214,9 @@ public class ProductRpcServiceImpl implements ProductRpcService { consStockFlowService.saveFlow(consStockFlow); } } - ThreadUtil.execAsync(() -> rabbitPublisher.sendProductInfoChangeMsg(Convert.toStr(shopId))); + if (isHasStockChangeToZero) { + ThreadUtil.execAsync(() -> rabbitPublisher.sendProductInfoChangeMsg(Convert.toStr(shopId))); + } log.info("ProductService.--------------------------------------------库存更新成功"); } @@ -215,6 +227,7 @@ public class ProductRpcServiceImpl implements ProductRpcService { if (CollUtil.isEmpty(list)) { return; } + boolean isHasStockChangeToZero = false; for (ProductStockSubtractDTO dto : list) { Product product = productMapper.selectOneById(dto.getProductId()); // 商品是否允许退款退货时归还库存 @@ -237,6 +250,9 @@ public class ProductRpcServiceImpl implements ProductRpcService { flow.setRemark("红冲订单取消/退菜/退单消耗的库存"); flow.setOrderId(orderId); productStockFlowService.saveFlow(flow); + if (!isHasStockChangeToZero && NumberUtil.isLessOrEqual(flow.getAfterNumber(), BigDecimal.ZERO)) { + isHasStockChangeToZero = true; + } // 查询商品绑定耗材信息 List relationList = prodConsRelationMapper.selectListByQuery(QueryWrapper.create().eq(ProdConsRelation::getProductId, dto.getProductId())); if (CollUtil.isEmpty(relationList)) { @@ -280,7 +296,9 @@ public class ProductRpcServiceImpl implements ProductRpcService { consStockFlowService.saveFlow(consStockFlow); } } - ThreadUtil.execAsync(() -> rabbitPublisher.sendProductInfoChangeMsg(Convert.toStr(shopId))); + if (isHasStockChangeToZero) { + ThreadUtil.execAsync(() -> rabbitPublisher.sendProductInfoChangeMsg(Convert.toStr(shopId))); + } log.info("ProductService.--------------------------------------------库存更新成功"); }