From e46e515666a75006dae008b3a0937a167b9a9949 Mon Sep 17 00:00:00 2001 From: wangw <1594593906@qq.com> Date: Fri, 11 Apr 2025 15:21:54 +0800 Subject: [PATCH] =?UTF-8?q?=E5=85=B3=E8=81=94=E5=85=B3=E7=B3=BB=E5=90=8C?= =?UTF-8?q?=E6=AD=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/ShopSyncServiceImpl.java | 42 +++++++++++++++---- 1 file changed, 33 insertions(+), 9 deletions(-) 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 cabe79964..5c6b31835 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 @@ -549,8 +549,13 @@ public class ShopSyncServiceImpl implements ShopSyncService { public Map syncGroup(Long sourceShopId, Long pointShopId, Map pros, List> mainMapList) { Map groupMap = new HashMap<>(); - List pointGroup = groupService.queryChain().select(ProdGroup::getSyncId).eq(ProdGroup::getShopId, pointShopId) - .isNotNull(ProdGroup::getSyncId).listAs(Long.class); + List pointGroup = new ArrayList<>(); + List pointList = groupService.queryChain().eq(ProdGroup::getShopId, pointShopId) + .isNotNull(ProdGroup::getSyncId).list(); + for (ProdGroup prodGroup : pointList) { + pointGroup.add(prodGroup.getSyncId()); + groupMap.put(prodGroup.getSyncId(), prodGroup.getId()); + } List list = groupService.queryChain().eq(ProdGroup::getShopId, sourceShopId).list(); if (CollUtil.isEmpty(list)) { log.info("分组同步,分组数据为空"); @@ -567,14 +572,33 @@ public class ShopSyncServiceImpl implements ShopSyncService { groupMap.put(prodGroup.getId(), tbProductGroupNew.getId()); } } - List groupRelations = prodGroupRelationService.queryChain().in(ProdGroupRelation::getProdGroupId, groupMap.keySet()).list(); - for (ProdGroupRelation prodGroupRelation : groupRelations) { - prodGroupRelation.setProdGroupId(groupMap.get(prodGroupRelation.getProdGroupId())); - prodGroupRelation.setProductId(pros.get(prodGroupRelation.getProductId())); + if (CollUtil.isNotEmpty(groupMap)) { + List groupRelations = prodGroupRelationService.queryChain().in(ProdGroupRelation::getProdGroupId, groupMap.keySet()).list(); + List upList = new ArrayList<>(); + List addList = new ArrayList<>(); + for (ProdGroupRelation prodGroupRelation : groupRelations) { + prodGroupRelation.setProdGroupId(groupMap.get(prodGroupRelation.getProdGroupId())); + prodGroupRelation.setProductId(pros.get(prodGroupRelation.getProductId())); + ProdGroupRelation oldRelation = prodGroupRelationService.queryChain() + .eq(ProdGroupRelation::getProdGroupId, prodGroupRelation.getProdGroupId()) + .eq(ProdGroupRelation::getProductId, prodGroupRelation.getProductId()).one(); + if (oldRelation == null) { + addList.add(prodGroupRelation); + } else { + if (oldRelation.getSort().equals(prodGroupRelation.getSort())) { + upList.add(prodGroupRelation); + } + } + } + if (CollUtil.isNotEmpty(addList)) { + prodGroupRelationService.saveBatch(addList, 100); + } + if (CollUtil.isNotEmpty(upList)) { + prodGroupRelationService.updateBatch(addList, 100); + } } - prodGroupRelationService.saveOrUpdateBatch(groupRelations, 100); - log.info("分组同步,源{}个,已有{}个,同步{}个", list.size(), pointGroup.size(), groupMap.size()); - buildNotice(mainMapList, "分组同步", groupMap.size(), null, null); + log.info("分组同步,源{}个,已有{}个,同步{}个", list.size(), pointGroup.size(), groupMap.size() - pointGroup.size()); + buildNotice(mainMapList, "分组同步", groupMap.size() - pointGroup.size(), null, null); return groupMap; }