套餐商品 实时同步

This commit is contained in:
wangw 2025-04-12 17:42:10 +08:00
parent 154a1a0930
commit c7a74d04c1
1 changed files with 25 additions and 23 deletions

View File

@ -825,31 +825,33 @@ public class ShopSyncServiceImpl implements ShopSyncService {
public void syncProductPackageBySourceShop(Product product, Long pointShopId) {
if (StrUtil.isNotBlank(product.getGroupSnap()) && product.getGroupSnap().length() > 5) {
ProductGroupVo proGroupVo = JSONObject.parseObject(product.getGroupSnap(), ProductGroupVo.class);
List<ProductGroupVo.Food> goodList = new ArrayList<>();
for (ProductGroupVo.Food goods : proGroupVo.getGoods()) {
if (goods.getProId() != null) {
Product sourceProduct = productService.queryChain().eq(Product::getShopId, pointShopId).eq(Product::getSyncId, goods.getProId()).one();
if (sourceProduct != null) {
goods.setProId(sourceProduct.getId());
goods.setProName(sourceProduct.getName());
List<ProductGroupVo> proGroupVos = JSON.parseArray(product.getGroupSnap(), ProductGroupVo.class);
for (ProductGroupVo proGroupVo : proGroupVos) {
List<ProductGroupVo.Food> goodList = new ArrayList<>();
for (ProductGroupVo.Food goods : proGroupVo.getGoods()) {
if (goods.getProId() != null) {
Product sourceProduct = productService.queryChain().eq(Product::getShopId, pointShopId).eq(Product::getSyncId, goods.getProId()).one();
if (sourceProduct != null) {
goods.setProId(sourceProduct.getId());
goods.setProName(sourceProduct.getName());
}
}
if (goods.getSkuId() != null) {
ProdSku sourceSku = skuService.queryChain().eq(ProdSku::getShopId, pointShopId).eq(ProdSku::getSyncId, goods.getSkuId()).one();
goods.setSkuId(sourceSku.getId());
goods.setSkuName(sourceSku.getSpecInfo());
}
goodList.add(goods);
}
proGroupVo.setCount(goodList.size());
proGroupVo.setGoods(goodList);
if (proGroupVo.getNumber() != null && proGroupVo.getNumber() > 0) {
if (proGroupVo.getNumber() > proGroupVo.getCount()) {
proGroupVo.setNumber(proGroupVo.getCount());
}
}
if (goods.getSkuId() != null) {
ProdSku sourceSku = skuService.queryChain().eq(ProdSku::getShopId, pointShopId).eq(ProdSku::getSyncId, goods.getSkuId()).one();
goods.setSkuId(sourceSku.getId());
goods.setSkuName(sourceSku.getSpecInfo());
}
goodList.add(goods);
}
proGroupVo.setCount(goodList.size());
proGroupVo.setGoods(goodList);
if (proGroupVo.getNumber() != null && proGroupVo.getNumber() > 0) {
if (proGroupVo.getNumber() > proGroupVo.getCount()) {
proGroupVo.setNumber(proGroupVo.getCount());
}
}
product.setGroupSnap(JSON.toJSONString(proGroupVo, JSONWriter.Feature.WriteMapNullValue));
product.setGroupSnap(JSON.toJSONString(proGroupVos, JSONWriter.Feature.WriteMapNullValue));
productService.saveOrUpdate(product);
}
}
@ -1142,7 +1144,7 @@ public class ShopSyncServiceImpl implements ShopSyncService {
prodConsRelationService.remove(QueryWrapper.create()
.eq(ProdConsRelation::getShopId, shopId)
.eq(ProdConsRelation::getProductId, product.getId()));
if(CollUtil.isNotEmpty(list)){
if (CollUtil.isNotEmpty(list)) {
Map<Long, BigDecimal> map = list.stream().collect(Collectors.toMap(ProdConsRelation::getConsInfoId, ProdConsRelation::getSurplusStock));
List<ConsInfo> newCons = consInfoService.queryChain()
.in(ConsInfo::getSyncId, map.keySet()).eq(ConsInfo::getShopId, shopId).list();