diff --git a/mall-common/src/main/java/com/suisung/mall/common/modules/product/ShopProductBase.java b/mall-common/src/main/java/com/suisung/mall/common/modules/product/ShopProductBase.java index 85af88fb..eff57040 100644 --- a/mall-common/src/main/java/com/suisung/mall/common/modules/product/ShopProductBase.java +++ b/mall-common/src/main/java/com/suisung/mall/common/modules/product/ShopProductBase.java @@ -182,5 +182,12 @@ public class ShopProductBase implements Serializable{ @TableField(exist = false) private Integer categoryId; + @ApiModelProperty(value = "规格") + @TableField(exist = false) + private String specItem; + + @ApiModelProperty(value = "规格单位") + @TableField(exist = false) + private String specUnit; } diff --git a/mall-common/src/main/java/com/suisung/mall/common/utils/ProductTitleUtil.java b/mall-common/src/main/java/com/suisung/mall/common/utils/ProductTitleUtil.java index 00e0fc2d..a0dc5797 100644 --- a/mall-common/src/main/java/com/suisung/mall/common/utils/ProductTitleUtil.java +++ b/mall-common/src/main/java/com/suisung/mall/common/utils/ProductTitleUtil.java @@ -87,7 +87,7 @@ public class ProductTitleUtil { //特殊商品 public static final Set SPECIAL_NAME = Collections.unmodifiableSet(new HashSet<>( - Arrays.asList("水饺", "面条", "包子","卷纸","卫生纸","紫菜汤","猪肉包","叉烧包","香菇青菜包","面包") + Arrays.asList("水饺", "面条", "包子","卷纸","卫生纸","紫菜汤","猪肉包","叉烧包","香菇青菜包","面包","黑米") )); static { diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/number/service/impl/ShopNumberSeqServiceImpl.java b/mall-shop/src/main/java/com/suisung/mall/shop/number/service/impl/ShopNumberSeqServiceImpl.java index 68ff001a..501c0492 100644 --- a/mall-shop/src/main/java/com/suisung/mall/shop/number/service/impl/ShopNumberSeqServiceImpl.java +++ b/mall-shop/src/main/java/com/suisung/mall/shop/number/service/impl/ShopNumberSeqServiceImpl.java @@ -255,6 +255,7 @@ public class ShopNumberSeqServiceImpl extends BaseServiceImpl queryWrapper= new QueryWrapper<>(); queryWrapper.select("max(spec_item_id) as spec_item_id"); @@ -282,6 +283,7 @@ public class ShopNumberSeqServiceImpl extends BaseServiceImpl indexQueryWrapper = new QueryWrapper<>(); indexQueryWrapper.eq("product_number", product_number); + indexQueryWrapper.eq("store_id",store_id); ShopProductIndex temp_info_row = shopProductIndexService.findOne(indexQueryWrapper); if (temp_info_row != null && !ObjectUtil.equal(temp_info_row.getProduct_id(), productId)) { // 商品货号已经存在,不可重 @@ -5605,11 +5606,11 @@ public class ShopProductBaseServiceImpl extends BaseServiceImpl { CommonResult findPageProductMapping(ProductMapping productMapping,Integer pageNum,Integer pageSize); - void computeProductMapping(List shopProductBaseList,Integer storeId, boolean isUpdate); + /** + * + * @param shopProductBaseList + * @param storeId + * @param isUpdate + * @param isFilter 1:只更新未匹配商品规格,0:更新全部商品规格 + */ + void computeProductMapping(List shopProductBaseList,Integer storeId, boolean isUpdate,String isFilter); Map getProductMapping(Integer storeId); diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/sync/service/impl/ProductMappingServiceImpl.java b/mall-shop/src/main/java/com/suisung/mall/shop/sync/service/impl/ProductMappingServiceImpl.java index 6c7e0bc2..b8af0e7a 100644 --- a/mall-shop/src/main/java/com/suisung/mall/shop/sync/service/impl/ProductMappingServiceImpl.java +++ b/mall-shop/src/main/java/com/suisung/mall/shop/sync/service/impl/ProductMappingServiceImpl.java @@ -123,14 +123,17 @@ public class ProductMappingServiceImpl extends BaseServiceImpl shopProductBaseList,Integer storeId,boolean isUpdate) { - shopProductBaseList= shopProductBaseList.stream().filter(base ->StateCode.PRODUCT_STATE_OFF_THE_SHELF_UNCHECK==(base.getProduct_state_id())).collect(Collectors.toList()); - if (CollUtil.isEmpty(shopProductBaseList)) { - log.info("没有规格数据要处理"); - return; + public void computeProductMapping(List shopProductBaseList,Integer storeId,boolean isUpdate,String isFilter) { + if(DicEnum.YESORNO_1.getCode().equals(isFilter)){ + shopProductBaseList= shopProductBaseList.stream().filter(base ->StateCode.PRODUCT_STATE_OFF_THE_SHELF_UNCHECK==(base.getProduct_state_id())).collect(Collectors.toList()); + if (CollUtil.isEmpty(shopProductBaseList)) { + log.info("没有规格数据要处理"); + return; + } } Map shopProductSpecItemMap = shopProductSpecItemService.getExistItem(storeId); Map productMappingMap = this.getProductMapping(storeId); + Map ShopBaseProductSpecMap = baseProductSpecService.getShopBaseProductSpecMap(storeId); dealData(shopProductBaseList,shopProductSpecItemMap,ShopBaseProductSpecMap,productMappingMap,isUpdate); } @@ -189,41 +192,47 @@ public class ProductMappingServiceImpl extends BaseServiceImpl integers= shopNumberSeqService.getBatchSpecItemId(addShopProductSpecItemList.size()); - int index=0; - for (int i = 0; i < shopProductBaseList.size(); i++){ - if(index==integers.size()){ - break; - } - ShopProductSpecItem shopProductSpecItem=processShopProductSpecItem(shopProductBaseList.get(i),shopProductItems.get(i).getCategory_id(),shopProductSpecItemMap,ShopBaseProductSpecMap,productMappingMap,integers.get(index)); - if(shopProductSpecItem!=null){ - if(!shopProductSpecItem.isUpdate()){ - addShopProductSpecItemList.set(index,shopProductSpecItem); - index++; + if(!addShopProductSpecItemList.isEmpty()){ + List integers= shopNumberSeqService.getBatchSpecItemId(addShopProductSpecItemList.size()); + int index=0; + for (int i = 0; i < shopProductBaseList.size(); i++){ + if(index==integers.size()){ + break; } - proccessItemAndInfo(shopProductItems.get(i),shopProductInfoList.get(i),shopProductSpecItem,isUpdate); - } + ShopProductSpecItem shopProductSpecItem=processShopProductSpecItem(shopProductBaseList.get(i),shopProductItems.get(i).getCategory_id(),shopProductSpecItemMap,ShopBaseProductSpecMap,productMappingMap,integers.get(index)); + if(shopProductSpecItem!=null){ + if(!shopProductSpecItem.isUpdate()){ + addShopProductSpecItemList.set(index,shopProductSpecItem); + index++; + } + proccessItemAndInfo(shopProductItems.get(i),shopProductInfoList.get(i),shopProductSpecItem,isUpdate); + + } + } } - } - if(CollUtil.isNotEmpty(addShopProductSpecItemList)){ - shopProductSpecItemService.saveBatch(addShopProductSpecItemList,addShopProductSpecItemList.size()); - } - if(CollUtil.isNotEmpty(updateShopProductSpecItemList)){ - shopProductSpecItemService.updateBatchById(updateShopProductSpecItemList); - } - if(CollUtil.isNotEmpty(updateShopProductBaseList)){ - shopProductBaseService.updateBatchById(updateShopProductBaseList); - saveShopProductIndexList(updateShopProductBaseList); - } - if(CollUtil.isNotEmpty(updateShopProductItemList)){ - shopProductItemService.updateBatchById(updateShopProductItemList); - } - if(CollUtil.isNotEmpty(updateShopProductInfoList)){ - shopProductInfoService.updateBatchById(updateShopProductInfoList); - } + + if(CollUtil.isNotEmpty(addShopProductSpecItemList)){ + shopProductSpecItemService.saveBatch(addShopProductSpecItemList,addShopProductSpecItemList.size()); + } + synchronized (this){ + if(CollUtil.isNotEmpty(updateShopProductSpecItemList)){ + shopProductSpecItemService.updateBatchById(updateShopProductSpecItemList,updateShopProductSpecItemList.size()); + } + } + if(CollUtil.isNotEmpty(updateShopProductBaseList)){ + shopProductBaseService.updateBatchById(updateShopProductBaseList,updateShopProductBaseList.size()); + saveShopProductIndexList(updateShopProductBaseList); + } + if(CollUtil.isNotEmpty(updateShopProductItemList)){ + shopProductItemService.updateBatchById(updateShopProductItemList,updateShopProductItemList.size()); + } + if(CollUtil.isNotEmpty(updateShopProductInfoList)){ + shopProductInfoService.updateBatchById(updateShopProductInfoList,updateShopProductInfoList.size()); + } + } + /** * @param item */ @@ -279,7 +288,7 @@ public class ProductMappingServiceImpl extends BaseServiceImpl { shopProductIndex.setProduct_state_id(StateCode.PRODUCT_STATE_OFF_THE_SHELF); }); - shopProductIndexService.updateBatchById(updateShopProductIndexList); + shopProductIndexService.updateBatchById(updateShopProductIndexList,updateShopProductIndexList.size()); } /** @@ -330,16 +339,23 @@ public class ProductMappingServiceImpl extends BaseServiceImpl> items=new ArrayList<>(); Map item=new HashMap<>(); item.put("name",addShopProductSpecItem.getSpec_item_name());//规格列表 @@ -408,7 +422,7 @@ public class ProductMappingServiceImpl extends BaseServiceImpl { - this.computeProductMapping(shopProductBaseService.lists(queryWrapper, finalI,SHOPBASEPAGE).getRecords(), finalStoreId,false); + this.computeProductMapping(shopProductBaseService.lists(queryWrapper, finalI,SHOPBASEPAGE).getRecords(), finalStoreId,false,DicEnum.YESORNO_1.getCode()); return "成功" + finalI; })); } diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/sync/service/impl/SyncBaseThirdSxAbstract.java b/mall-shop/src/main/java/com/suisung/mall/shop/sync/service/impl/SyncBaseThirdSxAbstract.java index 2a1e1480..12921194 100644 --- a/mall-shop/src/main/java/com/suisung/mall/shop/sync/service/impl/SyncBaseThirdSxAbstract.java +++ b/mall-shop/src/main/java/com/suisung/mall/shop/sync/service/impl/SyncBaseThirdSxAbstract.java @@ -771,6 +771,10 @@ public abstract class SyncBaseThirdSxAbstract{ shopProductBase.setUnit_price(BigDecimal.valueOf(jsonObj.getDouble("retail_price"))); }else { shopProductBase.setShop_weight(stock); + if(null!= jsonObj.getJSONArray("product_spec")){ + shopProductBase.setSpecItem((String) jsonObj.getJSONArray("product_spec").get(0));//规格 + shopProductBase.setSpecUnit(jsonObj.getStr("unit"));//规格单位 + } shopProductBase.setProduct_state_id(StateCode.PRODUCT_STATE_OFF_THE_SHELF);//默认是下架 shopProductBase.setUnit_price(BigDecimal.valueOf(jsonObj.getDouble("retail_price"))); } diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/sync/service/impl/SyncShopImageServiceImpl.java b/mall-shop/src/main/java/com/suisung/mall/shop/sync/service/impl/SyncShopImageServiceImpl.java index 868e00d7..5200211e 100644 --- a/mall-shop/src/main/java/com/suisung/mall/shop/sync/service/impl/SyncShopImageServiceImpl.java +++ b/mall-shop/src/main/java/com/suisung/mall/shop/sync/service/impl/SyncShopImageServiceImpl.java @@ -80,7 +80,7 @@ public class SyncShopImageServiceImpl implements SyncShopImageService { @Override public void syncMapingShopImages(Integer storeId) { mappingProductImages(MAPPING_BARCODE,storeId); - mappingProductImages(MAPPING_PRODUCTSHORTNAME,storeId); + // mappingProductImages(MAPPING_PRODUCTSHORTNAME,storeId); mappingProductImages(MAPPING_PRODUCTNAME,storeId); } diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/sync/service/impl/SyncThirdDataServiceImpl.java b/mall-shop/src/main/java/com/suisung/mall/shop/sync/service/impl/SyncThirdDataServiceImpl.java index 14e037c2..72e2f248 100644 --- a/mall-shop/src/main/java/com/suisung/mall/shop/sync/service/impl/SyncThirdDataServiceImpl.java +++ b/mall-shop/src/main/java/com/suisung/mall/shop/sync/service/impl/SyncThirdDataServiceImpl.java @@ -571,6 +571,7 @@ public class SyncThirdDataServiceImpl extends SyncBaseThirdSxAbstract implements syncPrimaryKey(); shopNumberSeqService.clearKey(); shopBaseProductCategoryService.clearCategoryCache(storeId); + shopNumberSeqService.clearKeyStoreItemSepcId(); ExecutorService executor = Executors.newFixedThreadPool(6); List> futures = new ArrayList<>(); // 提交任务 @@ -626,6 +627,7 @@ public class SyncThirdDataServiceImpl extends SyncBaseThirdSxAbstract implements //记录到数据库 syncPrimaryKey(); shopNumberSeqService.clearKey(); + shopNumberSeqService.clearKeyStoreItemSepcId(); shopBaseProductCategoryService.clearCategoryCache(storeId); shopProductSpecItemService.clearExistItem(Integer.valueOf(storeId)); baseProductSpecService.clearShopBaseProductSpecMap(Integer.valueOf(storeId));