diff --git a/cash-service/product-service/src/main/java/com/czg/service/product/service/impl/ShopSyncServiceImpl.java b/cash-service/product-service/src/main/java/com/czg/service/product/service/impl/ShopSyncServiceImpl.java index 59bbd5c24..85c72d6d5 100644 --- a/cash-service/product-service/src/main/java/com/czg/service/product/service/impl/ShopSyncServiceImpl.java +++ b/cash-service/product-service/src/main/java/com/czg/service/product/service/impl/ShopSyncServiceImpl.java @@ -901,12 +901,34 @@ public class ShopSyncServiceImpl implements ShopSyncService { public void syncConsPro(Long sourceShopId, Long pointShopId, Map consMap, Map proMap) { List list = prodConsRelationService.queryChain().eq(ProdConsRelation::getShopId, sourceShopId).list(); + List upList = new ArrayList<>(); + List addList = new ArrayList<>(); for (ProdConsRelation prodConsRelation : list) { prodConsRelation.setShopId(pointShopId); prodConsRelation.setProductId(proMap.get(prodConsRelation.getProductId())); prodConsRelation.setConsInfoId(consMap.get(prodConsRelation.getConsInfoId())); + if (prodConsRelation.getProductId() == null || prodConsRelation.getConsInfoId() == null) { + log.info("关联关系同步失败 商品ID:{}或耗材ID:{}不存在", prodConsRelation.getProductId(), prodConsRelation.getConsInfoId()); + continue; + } + ProdConsRelation oldRelation = prodConsRelationService.queryChain() + .eq(ProdConsRelation::getShopId, pointShopId) + .eq(ProdConsRelation::getProductId, prodConsRelation.getProductId()) + .eq(ProdConsRelation::getConsInfoId, prodConsRelation.getConsInfoId()).one(); + if (oldRelation == null) { + addList.add(prodConsRelation); + } else { + if (oldRelation.getSurplusStock().compareTo(prodConsRelation.getSurplusStock()) != 0) { + upList.add(prodConsRelation); + } + } + } + if (CollUtil.isNotEmpty(addList)) { + prodConsRelationService.saveBatch(addList, 100); + } + if (CollUtil.isNotEmpty(upList)) { + prodConsRelationService.updateBatch(addList, 100); } - prodConsRelationService.saveOrUpdateBatch(list, 100); log.info("耗材与商品关联关系,同步{}个", list.size()); }